Skip to content

Plugin skills/ directory does not register slash commands — only commands/ works #41842

Description

@dtadpole

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

  1. 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
  1. Install or load the plugin (via marketplace or --plugin-dir)
  2. Run /reload-plugins — the skill count does not include skills from skills/
  3. Type /my-plugin:helloUnknown 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    staleIssue is inactive

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions