Problem
143+ skills across 51 plugins share 8 leaf names:
| Leaf name |
Plugins |
setup |
33 |
audit |
6 |
check, clean, diagnose, plan, workflow, write |
2 each |
Every one is separately invocable — namespacing guarantees that. But the slash-command picker labels rows by the leaf name (#710), so a shared leaf name is invisible in the listing and distinguishable only by the description prefix.
Today a new collision is invisible until someone greps. Nothing enumerates them, nothing forces a decision, and the naming grammar's own collision rule (docs/PLUGIN-PHILOSOPHY.md:54-56) only governs siblings within one namespace — the cross-plugin case has no check at all.
Proposal
Mirror the established scripts/check-cross-plugin-source-drift.sh idiom exactly: a repo-wide discover/--check script plus a registry file.
- Discover (no args): list every leaf name owned by 2+ plugins.
--check: fail when a collision is unregistered — a new shared leaf name is a decision waiting to be made, not yet a violation. Also fail when a registry entry no longer collides, so the file cannot rot.
Seed the registry with the 8 current collisions, each carrying the grounds it was accepted on. setup is contract-mandated (PLUGIN-PHILOSOPHY.md:196-231); the rest were accepted under D19.
This is deliberately not a rename mandate. It makes each collision explicit and dated so the next one is a conscious call.
Related
Problem
143+ skills across 51 plugins share 8 leaf names:
setupauditcheck,clean,diagnose,plan,workflow,writeEvery one is separately invocable — namespacing guarantees that. But the slash-command picker labels rows by the leaf name (#710), so a shared leaf name is invisible in the listing and distinguishable only by the description prefix.
Today a new collision is invisible until someone greps. Nothing enumerates them, nothing forces a decision, and the naming grammar's own collision rule (
docs/PLUGIN-PHILOSOPHY.md:54-56) only governs siblings within one namespace — the cross-plugin case has no check at all.Proposal
Mirror the established
scripts/check-cross-plugin-source-drift.shidiom exactly: a repo-wide discover/--checkscript plus a registry file.--check: fail when a collision is unregistered — a new shared leaf name is a decision waiting to be made, not yet a violation. Also fail when a registry entry no longer collides, so the file cannot rot.Seed the registry with the 8 current collisions, each carrying the grounds it was accepted on.
setupis contract-mandated (PLUGIN-PHILOSOPHY.md:196-231); the rest were accepted under D19.This is deliberately not a rename mandate. It makes each collision explicit and dated so the next one is a conscious call.
Related