What
The self-adoption relay directories have drifted out of sync with skills/. The source tree has 71 skill directories; the relays don't:
| dir |
count |
missing |
skills/ |
71 |
— |
.agents/skills/ |
70 |
magpie-dependency-license-audit |
.claude/skills/ |
70 |
magpie-dependency-license-audit |
.github/skills/ |
70 |
magpie-dependency-license-audit |
.kiro/skills/ |
69 |
magpie-dependency-license-audit, magpie-report-framework-issue |
plugins/magpie-repo-health/ and plugins/magpie-utilities/ carry both skills correctly — only the relay surface drifted.
comm -23 <(ls skills | grep -v pyproject | sort) \
<(ls .kiro/skills | sed 's/^magpie-//' | sort)
# dependency-license-audit
# report-framework-issue
Why it matters
A skill with no relay is invisible to every harness that discovers skills through its agent dir — which is exactly the surface self-adoption exists for. dependency-license-audit shipped in #814 with an eval suite and a plugin entry, and has been unreachable from the agent dirs ever since; nobody noticed.
Nothing catches this. symlink-lint validates the symlinks that exist (no cycles, relay-through-canonical) but has no completeness rule, so a skill that never got its links is never flagged. prek and CI are green on this tree. The same failure class already bit once on the plugin surface (#1109, a new skill missing from plugins/) and got a deterministic check there (check-family-plugins); the relay surface has no equivalent, so this will recur the next time a skill lands without its symlinks.
Suggested fix
Two pieces, in order:
- Wire the missing links — canonical
.agents/skills/magpie-<skill> entries for the two skills, plus the relays in every wired agent dir.
- Add a completeness rule to
symlink-lint — every directory under skills/ must have its canonical .agents/skills/magpie-<skill> entry, and every wired agent dir must relay the full canonical set — with a test. Scoped to the framework's own working tree, so an adopter's legitimately-dangling links stay exempt exactly as they are for rules 1–2 today.
Worth doing as one change so the lint lands together with the last drift it would have caught.
Related
What
The self-adoption relay directories have drifted out of sync with
skills/. The source tree has 71 skill directories; the relays don't:skills/.agents/skills/magpie-dependency-license-audit.claude/skills/magpie-dependency-license-audit.github/skills/magpie-dependency-license-audit.kiro/skills/magpie-dependency-license-audit,magpie-report-framework-issueplugins/magpie-repo-health/andplugins/magpie-utilities/carry both skills correctly — only the relay surface drifted.Why it matters
A skill with no relay is invisible to every harness that discovers skills through its agent dir — which is exactly the surface self-adoption exists for.
dependency-license-auditshipped in #814 with an eval suite and a plugin entry, and has been unreachable from the agent dirs ever since; nobody noticed.Nothing catches this.
symlink-lintvalidates the symlinks that exist (no cycles, relay-through-canonical) but has no completeness rule, so a skill that never got its links is never flagged. prek and CI are green on this tree. The same failure class already bit once on the plugin surface (#1109, a new skill missing fromplugins/) and got a deterministic check there (check-family-plugins); the relay surface has no equivalent, so this will recur the next time a skill lands without its symlinks.Suggested fix
Two pieces, in order:
.agents/skills/magpie-<skill>entries for the two skills, plus the relays in every wired agent dir.symlink-lint— every directory underskills/must have its canonical.agents/skills/magpie-<skill>entry, and every wired agent dir must relay the full canonical set — with a test. Scoped to the framework's own working tree, so an adopter's legitimately-dangling links stay exempt exactly as they are for rules 1–2 today.Worth doing as one change so the lint lands together with the last drift it would have caught.
Related
dependency-license-audit(skill + evals + plugin entry; relays never created).tools/symlink-lint/README.md— the one-directional wiring contract the completeness rule would enforce.