Commands from directory-based local marketplaces not discovered
[!NOTE] Issue created by Claude Code
Bug Description
Slash commands defined in plugins from directory-based local marketplaces are not discovered or shown in suggestions, while skills from the same plugins work correctly.
Environment
- OS: macOS (Darwin 24.6.0)
- Claude Code version: Latest (as of 2025-12-21)
Steps to Reproduce
- Create a local marketplace with
source.source: "directory"inknown_marketplaces.json:
"local-marketplace": {
"source": {
"source": "directory",
"path": "/Users/martin/claude-plugins"
},
"installLocation": "/Users/martin/claude-plugins"
}
- Create a plugin with commands in the standard structure:
pkm-assistant/
├── .claude-plugin/
│ └── plugin.json
├── commands/
│ └── find-connections.md # Has valid frontmatter with description
├── skills/
│ └── obsidian-knowledge/
│ └── SKILL.md # Works correctly
└── agents/
- Command file has valid frontmatter:
---
description: Discover related notes and suggest missing links
argument-hint: Optional note name or "vault" for vault-wide scan
---
- Install the plugin - it appears in
installed_plugins.jsonand is enabled in settings - The cache directory is created with symlinks to source files
- Try to invoke
/pkm-assistant:find-connectionsor use Skill tool
Expected Behavior
- Commands should appear in slash command suggestions
Skilltool should recognizepkm-assistant:find-connections
Actual Behavior
- Commands do NOT appear in suggestions
Skilltool returns:Unknown skill: pkm-assistant:find-connections- Skills from the same plugin (e.g.,
pkm-assistant:obsidian-knowledge) work correctly
Investigation Findings
| Marketplace Type | Skills | Commands |
|------------------|--------|----------|
| GitHub-based (claude-plugins-official) | ✅ Work | ✅ Work |
| Directory-based (local-marketplace) | ✅ Work | ❌ Not discovered |
Verified correct:
- Plugin structure matches official plugins
- Command frontmatter has required
descriptionfield - Cache symlinks resolve correctly (
filecommand shows "ASCII text") - Plugin is enabled in
settings.json - Plugin appears in
installed_plugins.json
Comparison with working plugin:
The commit-commands plugin from claude-plugins-official has identical structure and its commands work. The only difference is the marketplace source type.
Hypothesis
Command discovery logic may not be following symlinks or may handle directory-based marketplace sources differently than GitHub-based ones.
Workaround
Currently none found other than hosting plugins on GitHub instead of using local directory marketplace.
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗