Bug Description
When a Claude Code plugin contains a .claude/ directory (for settings, hooks, etc.), the plugin's skills/ root directory is completely ignored during skill discovery. Skills are not loaded with the pluginName:skillName prefix.
Steps to Reproduce
-
Create a plugin with:
.claude-plugin/plugin.json (standard plugin manifest)
skills/my-skill/SKILL.md (plugin skills at root)
.claude/settings.json (project-level settings/hooks)
-
Install the plugin: claude plugin install <plugin>
-
Run /reload-plugins — skills from skills/ are not loaded
-
Remove .claude/ directory from the plugin cache
-
Run /reload-plugins — skills from skills/ are now loaded with pluginName: prefix
Expected Behavior
Plugin skills in skills/ should be discovered regardless of whether .claude/ directory exists. The .claude/ directory is used for settings/hooks and should coexist with plugin skills.
Actual Behavior
When .claude/ directory is present in a plugin, the skills/ root directory is ignored. Only .claude/skills/ is searched for skills (if it exists).
Evidence
Tested with 5 plugins on Claude Code v2.1.92:
| Plugin |
.claude/ dir |
Skills loaded? |
| oh-my-claudecode (4.10.2) |
❌ absent |
✅ Yes |
| my-skills (1.3.0) |
❌ absent |
✅ Yes |
| scheduler (0.2.0) |
❌ absent |
✅ Yes |
| codex (1.0.2) |
❌ absent |
✅ Yes |
| laplace-dev-hub (1.9.0) |
✅ present |
❌ No |
All plugins use the same skills/<name>/SKILL.md structure with identical frontmatter format.
What I've tried (none worked)
- Adding
"skills": "./skills/" to .claude-plugin/plugin.json
- Removing
.claude/skills/ subdirectory while keeping .claude/
- Creating symlink
.claude/skills -> ../skills
Workaround
None found. The .claude/ directory contains essential settings and hooks that cannot be removed.
Timeline
- Skills worked when plugin only had
skills/ (no .claude/ dir) — Feb 13, 2026
- Skills stopped working after
.claude/ directory was added — ~Feb 25, 2026
Environment
- Claude Code: v2.1.92
- macOS Darwin 25.2.0
- Plugin installed via marketplace (scope: user)
Bug Description
When a Claude Code plugin contains a
.claude/directory (for settings, hooks, etc.), the plugin'sskills/root directory is completely ignored during skill discovery. Skills are not loaded with thepluginName:skillNameprefix.Steps to Reproduce
Create a plugin with:
.claude-plugin/plugin.json(standard plugin manifest)skills/my-skill/SKILL.md(plugin skills at root).claude/settings.json(project-level settings/hooks)Install the plugin:
claude plugin install <plugin>Run
/reload-plugins— skills fromskills/are not loadedRemove
.claude/directory from the plugin cacheRun
/reload-plugins— skills fromskills/are now loaded withpluginName:prefixExpected Behavior
Plugin skills in
skills/should be discovered regardless of whether.claude/directory exists. The.claude/directory is used for settings/hooks and should coexist with plugin skills.Actual Behavior
When
.claude/directory is present in a plugin, theskills/root directory is ignored. Only.claude/skills/is searched for skills (if it exists).Evidence
Tested with 5 plugins on Claude Code v2.1.92:
.claude/dirAll plugins use the same
skills/<name>/SKILL.mdstructure with identical frontmatter format.What I've tried (none worked)
"skills": "./skills/"to.claude-plugin/plugin.json.claude/skills/subdirectory while keeping.claude/.claude/skills -> ../skillsWorkaround
None found. The
.claude/directory contains essential settings and hooks that cannot be removed.Timeline
skills/(no.claude/dir) — Feb 13, 2026.claude/directory was added — ~Feb 25, 2026Environment