{% extends "base.html" %} {% block title %}{{ name }}{% endblock %} {# One skill, in the order somebody works through it: where its copies are and which one loads, what is wrong, and what it says. The rail holds what flanner itself has on the skill — how often it was used, which versions are kept, what the team sent. Those are reference you glance at while reading the package, not steps in reading it, and underneath the manifest they sat three screens past the thing they describe. Same split as the plan viewer, for the same reason. #} {% block topbar_back %} {% endblock %} {% block topbar_main %}
{{ loaded.description }}
{% endif %} {% endif %} {# --- every copy ------------------------------------------------------ #} {# "Copies of this name" only described the page when there were several. On the common case - one copy - it asked a question nobody had, when the table is just saying where the skill is and who reads it. #}{% if ambiguous %} {{ ambiguous | join(' and ') }} loads more than one of these and does not resolve a name collision, so which one runs is not decided here. Give them different names, or delete the one you did not mean to keep. {% elif agents | length > 1 %} {{ agents | join(' and ') }} each load their own. A name held by two agents is two skills, not a collision — they are read from different directories by different programs. {% else %} The others are on disk and never read. Editing one of them is the usual cause of “my change did nothing”. {% endif %}
{% if change.differing %}{{ change.differing | length }} file(s) differ: {{ change.differing | join(', ') }}.{% endif %} {% if change.only_left %}Only in the copy that loads: {{ change.only_left | join(', ') }}.{% endif %} {% if change.only_right %}Only in this one: {{ change.only_right | join(', ') }}.{% endif %} {% if not change.manifest_diff %}The manifests are the same; the difference is elsewhere in the package.{% endif %}
{% for line in change.manifest_diff %}{% if line.startswith('+') %}{{ line }}{% elif line.startswith('-') %}{{ line }}{% elif line.startswith('@') %}{{ line }}{% else %}{{ line }}
{% endif %}{% endfor %}
{% if change.diff_truncated %}
Cut short. Past this the answer is that these are not the same package.
The manifest could not be read.
These are the files the package's hash covers. Nothing in one is executed by a scan, and flanner never writes into a directory an agent owns.
A change to a skill arrives as a proposal and is read before it is installed. Nothing an agent suggests edits a package on its own.