Skip to content

feat(ci): surface cross-plugin skill leaf-name collisions as a registered decision #720

Description

@kyle-sexton

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions