Plugin commands from external marketplaces missing namespace prefix in autocomplete
Description
Plugin commands from external (non-bundled) marketplaces are displayed without their namespace prefix in the autocomplete, while plugins from the bundled claude-code-plugins marketplace show the full <plugin-name>:<command-name> format.
Steps to Reproduce
- Install a plugin from the bundled
claude-code-pluginsmarketplace (e.g.,ralph-wiggum) - Install a plugin from an external/custom marketplace (e.g., a plugin called
my-plugin-devfrom a custom marketplace with git URL sources) - Type
/ralph-wiggumin the prompt — autocomplete shows:
````
/ralph-wiggum:help (ralph-wiggum) Explain Ralph Wiggum technique...
/ralph-wiggum:ralph-loop (ralph-wiggum) Start Ralph Wiggum loop...
/ralph-wiggum:cancel-ralph (ralph-wiggum) Cancel active Ralph Wiggum loop
- Type
/my-plugin-devor/my-plugin-dev:in the prompt — autocomplete shows:
````
/quickstart (my-plugin-dev) Detect project type and state...
- Only 1 of all commands in the plugin appears (the one whose description contains "my-plugin-dev")
- No namespace prefix on the command name
Expected Behavior
Both plugins should display their commands consistently with the namespace prefix:
/my-plugin-dev:quickstart (my-plugin-dev) Detect project type and state...
/my-plugin-dev:quality-review (my-plugin-dev) Assess code quality...
/my-plugin-dev:code-review (my-plugin-dev) Run comprehensive code review...
... (all 23 commands)
Root Cause Analysis
The difference appears related to how plugins are stored:
- Bundled marketplace (
claude-code-plugins): Plugin source code lives directly inside the marketplace repo atmarketplaces/claude-code-plugins/plugins/<name>/AND is cached tocache/claude-code-plugins/<name>/<version>/. Commands exist in two locations. - External marketplace: Only
marketplace.jsonwith git URLs lives in the marketplace repo. Plugin code is fetched and stored only in the cache atcache/<marketplace>/<name>/<version>/. Commands exist in one location.
This suggests the command registration path differs between bundled and external marketplace plugins, causing the namespace prefix to be applied inconsistently.
Environment
- Claude Code version: v2.1.81
- OS: macOS (Darwin 25.4.0)
- Both plugins have identical structure:
.claude-plugin/plugin.jsonwithnamefield,commands/directory with.mdfiles, similar frontmatter
Additional Context
- Both plugins are also installed at
scope: "user"ininstalled_plugins.json - The external marketplace plugin commands DO work when invoked as
/<namespace>:<command>, they just don't display that way in autocomplete - The Skill tool system prompt correctly lists all commands with namespace for both plugins — only the autocomplete UI is affected
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗