[BUG] Plugin skills with user-invocable: true don't appear in slash command autocomplete menu
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report
- [x] I am using the latest version of Claude Code
What's Wrong?
There are two related issues with how plugin skills appear in the slash command autocomplete menu:
Issue 1: user-invocable: true frontmatter doesn't show skills in slash menu
Skills registered in a plugin's marketplace.json under the skills array with user-invocable: true in their SKILL.md frontmatter do not appear in the / autocomplete menu, even though the documentation implies they should be user-invocable.
Workaround found: Adding the skill's SKILL.md path to the commands array in marketplace.json makes them partially work (see Issue 2).
Issue 2: Skills added to commands array have inconsistent autocomplete behavior
When skill paths (e.g., ./skills/my-skill/SKILL.md) are added to the commands array as a workaround:
- They work when typed directly - typing
/my-skillhighlights and invokes the skill correctly - They don't appear in the autocomplete dropdown - when typing
/, only some skills show up (seemingly the first alphabetically) - They lose the plugin namespace prefix - commands from
./commands/folder get prefixed with the plugin name (e.g.,plugin-name:command), but skills added to the commands array show without any prefix
Observed behavior with 16 skills added to commands array:
- Only 1 skill (
amplitude, first alphabetically) appeared in autocomplete dropdown - All 16 skills worked when typed directly (e.g.,
/srehighlights correctly) - None of the 16 skills got the plugin namespace prefix
Commands in ./commands/ folder behave correctly:
- All 5 commands appeared in autocomplete dropdown
- All 5 commands got the plugin namespace prefix (e.g.,
rdc-os:setup)
What Should Happen?
- Skills with
user-invocable: trueshould automatically appear in the/autocomplete menu without needing to add them to thecommandsarray
- If skills are added to the
commandsarray as a workaround:
- ALL of them should appear in the autocomplete dropdown (not just the first one alphabetically)
- They should receive the plugin namespace prefix, consistent with commands from the
./commands/folder
Steps to Reproduce
- Create a plugin with the following structure:
````
plugin/
├── .claude-plugin/
│ └── marketplace.json
├── commands/
│ └── my-command.md
└── skills/
├── skill-a/
│ └── SKILL.md
└── skill-b/
└── SKILL.md
- In
marketplace.json, register skills and commands:
``json``
{
"plugins": [{
"name": "my-plugin",
"skills": [
"./skills/skill-a",
"./skills/skill-b"
],
"commands": [
"./commands/my-command.md"
]
}]
}
- In each SKILL.md, include frontmatter with
user-invocable: true:
``yaml``
---
name: skill-a
description: My skill description
version: 1.0.0
user-invocable: true
---
- Install/symlink the plugin and clear cache:
``bash``
rm -rf ~/.claude/plugins/cache/my-plugin/
- Start Claude Code and type
/
Expected: See my-plugin:skill-a, my-plugin:skill-b, and my-plugin:my-command in autocomplete
Actual: Only my-plugin:my-command appears. Skills don't appear despite user-invocable: true
- As a workaround, add skills to commands array:
``json``
"commands": [
"./commands/my-command.md",
"./skills/skill-a/SKILL.md",
"./skills/skill-b/SKILL.md"
]
- Clear cache and restart Claude Code, type
/
Expected: All items appear with consistent my-plugin: prefix
Actual:
my-plugin:my-commandappears (correct)skill-aappears without prefix (only if first alphabetically)skill-bdoesn't appear in dropdown but works when typed directly as/skill-b
Claude Model
Opus
Is this a regression?
I don't know
Claude Code Version
2.1.4 (Claude Code)
Platform
AWS Bedrock
Operating System
macOS
Terminal/Shell
VS Code integrated terminal
Additional Information
The inconsistency suggests that:
- The
user-invocable: truefrontmatter field isn't being read/respected for autocomplete menu population - Skills added to the
commandsarray are being treated differently than files in the./commands/folder - There may be a limit on how many items from the commands array are shown in autocomplete, or some filtering logic that's too aggressive
This makes it difficult to create plugins with user-invocable skills that are discoverable via the slash menu. The workaround of adding skills to the commands array only partially works and produces inconsistent UX.
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗