Bug Description
Plugin skills defined in skills/*/SKILL.md are loaded as Agent Skills (model invocation via the Skill tool works), but they are not registered as user-invocable slash commands. Typing /plugin-name:skill-name at the CLI prompt returns Unknown skill.
Only files in the commands/ directory register as slash commands. This contradicts the official documentation.
Steps to Reproduce
- Create a plugin with a skill in
skills/:
my-plugin/
├── .claude-plugin/
│ └── plugin.json # {"name": "my-plugin", "version": "1.0.0"}
└── skills/
└── hello/
└── SKILL.md # frontmatter: name, description
- Install or load the plugin (via marketplace or
--plugin-dir)
- Run
/reload-plugins — the skill count does not include skills from skills/
- Type
/my-plugin:hello → Unknown skill: my-plugin:hello
Expected Behavior
Per the Plugins documentation quickstart (Step 3–4):
Skills live in the skills/ directory. Each skill is a folder containing a SKILL.md file. The folder name becomes the skill name, prefixed with the plugin's namespace (hello/ in a plugin named my-first-plugin creates /my-first-plugin:hello).
The skill should be invocable as /my-plugin:hello.
Actual Behavior
/reload-plugins output counts only commands/*.md files in the "skills" total — skills/*/SKILL.md files are not counted
- The Skill tool (model-side invocation) works fine — the skills appear in the system prompt and Claude can invoke them
- But user-side
/ slash command invocation returns Unknown skill
Workaround
Adding a duplicate commands/hello.md file with the same content makes the slash command work. After adding commands/ files, the reload count increases and /plugin:skill resolves correctly.
This is not ideal because:
commands/ is marked as legacy in the Plugins reference: "Skill Markdown files (legacy; use skills/ for new skills)"
- Content must be duplicated between
commands/ and skills/ if both slash command and supporting-file features are needed
Environment
- Claude Code version: 2.1.89
- OS: Linux (Ubuntu)
Documentation References
Bug Description
Plugin skills defined in
skills/*/SKILL.mdare loaded as Agent Skills (model invocation via the Skill tool works), but they are not registered as user-invocable slash commands. Typing/plugin-name:skill-nameat the CLI prompt returnsUnknown skill.Only files in the
commands/directory register as slash commands. This contradicts the official documentation.Steps to Reproduce
skills/:--plugin-dir)/reload-plugins— the skill count does not include skills fromskills//my-plugin:hello→Unknown skill: my-plugin:helloExpected Behavior
Per the Plugins documentation quickstart (Step 3–4):
The skill should be invocable as
/my-plugin:hello.Actual Behavior
/reload-pluginsoutput counts onlycommands/*.mdfiles in the "skills" total —skills/*/SKILL.mdfiles are not counted/slash command invocation returnsUnknown skillWorkaround
Adding a duplicate
commands/hello.mdfile with the same content makes the slash command work. After addingcommands/files, the reload count increases and/plugin:skillresolves correctly.This is not ideal because:
commands/is marked as legacy in the Plugins reference: "Skill Markdown files (legacy; useskills/for new skills)"commands/andskills/if both slash command and supporting-file features are neededEnvironment
Documentation References
skills/creating/plugin:skilluser-invocablefield defaults totruecommands/as legacy