Plugin commands registered via commands/ get automatically namespaced with the plugin name (e.g., /ce:triage, /hookify:list), but skills registered via skills/*/SKILL.md do not get this prefix. They appear in slash command autocomplete without any namespace — just /assess-repo instead of /launch:assess-repo.
This creates collisions when multiple plugins define skills with similar names, and makes it harder for users to identify which plugin a skill belongs to. The (plugin-name) label appears in the description but the actual invocation name is unprefixed.
Currently the only workaround is to also create commands/ wrappers that delegate to the skill, but this duplicates definitions and the commands/ format is deprecated.
Acceptance Criteria
Notes
- Commands namespace pattern:
plugin-name/commands/foo.md → /plugin-name:foo
- Expected skills pattern:
plugin-name/skills/foo/SKILL.md → /plugin-name:foo
- Current skills behavior:
plugin-name/skills/foo/SKILL.md → /foo with (plugin-name) label
- The plugin name comes from the
name field in plugin.json
- This was discovered while building a multi-plugin repo (replicated-claude-marketplace) where
ce, launch, gtm, and support plugins coexist — skill name collisions become likely without namespacing
- Reference:
plugins/plugin-dev/skills/command-development/SKILL.md documents the command namespacing behavior
Plugin commands registered via
commands/get automatically namespaced with the plugin name (e.g.,/ce:triage,/hookify:list), but skills registered viaskills/*/SKILL.mddo not get this prefix. They appear in slash command autocomplete without any namespace — just/assess-repoinstead of/launch:assess-repo.This creates collisions when multiple plugins define skills with similar names, and makes it harder for users to identify which plugin a skill belongs to. The
(plugin-name)label appears in the description but the actual invocation name is unprefixed.Currently the only workaround is to also create
commands/wrappers that delegate to the skill, but this duplicates definitions and thecommands/format is deprecated.Acceptance Criteria
skills/*/SKILL.mdare prefixed with the plugin name in slash command autocomplete, matching thecommands/behavior (e.g.,/launch:assess-repoinstead of/assess-repo)Skilltool also accepts the prefixed form (e.g.,skill: "launch:assess-repo")Notes
plugin-name/commands/foo.md→/plugin-name:fooplugin-name/skills/foo/SKILL.md→/plugin-name:fooplugin-name/skills/foo/SKILL.md→/foowith(plugin-name)labelnamefield inplugin.jsonce,launch,gtm, andsupportplugins coexist — skill name collisions become likely without namespacingplugins/plugin-dev/skills/command-development/SKILL.mddocuments the command namespacing behavior