Problem
Plugin commands from the dotfiles-marketplace are not being discovered by Claude Code, despite the plugin being installed and enabled.
Symptoms
- Plugin shows as "Enabled" in
/plugin UI
- Debug logs show:
Total plugin commands loaded: 0
- Commands like
/close-issue, /retro don't appear in autocomplete
- No errors in debug logs initially, but schema validation error appeared
Root Causes Discovered
This issue had THREE separate problems that all needed to be fixed:
Issue 1: Missing commands field in plugin.json
Problem: plugin.json didn't specify where to find command files
Fix: Added "commands": ["./commands/"] to plugin.json
PR: #1360
Issue 2: plugin.json in wrong location
Problem: marketplace.json said source: "." (repo root) but plugin.json was in .claude-plugin/ subdirectory
Fix: Moved plugin.json from .claude-plugin/plugin.json to repo root ./plugin.json
PR: #1361
Issue 3: Schema validation error
Problem: Source path used "." instead of "./"
Error: Invalid schema: plugins.0.source: Invalid input: must start with "./"
Fix: Changed source from "." to "./" in marketplace.json
PR: #1362
Final Working Structure
dotfiles/ (repo root)
├── .claude-plugin/
│ └── marketplace.json (source: "./")
├── plugin.json (commands: ["./commands/"])
└── commands/
├── close-issue.md (symlink)
├── create-issue.md (symlink)
├── retro.md (symlink)
└── extract-best-frame.md (symlink)
Key Learnings
- Symlinks work fine - they weren't the issue
- Schema is strict - relative paths MUST start with
"./" not "."
- Path resolution - plugin.json location must match marketplace source
- Debug logs are essential -
~/.claude/debug/*.txt shows "Total plugin commands loaded: 0"
Test Plan
After all three fixes:
- Run
/plugin → No schema errors
- Plugin shows in list as enabled
- Type
/close → /close-issue appears in autocomplete
- All 4 commands are available
Related Documentation
Problem
Plugin commands from the dotfiles-marketplace are not being discovered by Claude Code, despite the plugin being installed and enabled.
Symptoms
/pluginUITotal plugin commands loaded: 0/close-issue,/retrodon't appear in autocompleteRoot Causes Discovered
This issue had THREE separate problems that all needed to be fixed:
Issue 1: Missing
commandsfield in plugin.jsonProblem: plugin.json didn't specify where to find command files
Fix: Added
"commands": ["./commands/"]to plugin.jsonPR: #1360
Issue 2: plugin.json in wrong location
Problem: marketplace.json said
source: "."(repo root) but plugin.json was in.claude-plugin/subdirectoryFix: Moved plugin.json from
.claude-plugin/plugin.jsonto repo root./plugin.jsonPR: #1361
Issue 3: Schema validation error
Problem: Source path used
"."instead of"./"Error:
Invalid schema: plugins.0.source: Invalid input: must start with "./"Fix: Changed source from
"."to"./"in marketplace.jsonPR: #1362
Final Working Structure
Key Learnings
"./"not"."~/.claude/debug/*.txtshows "Total plugin commands loaded: 0"Test Plan
After all three fixes:
/plugin→ No schema errors/close→/close-issueappears in autocompleteRelated Documentation