Plugin loader ignores skills array filter, causing duplicate skills
Bug Description
When installing multiple plugins from the same marketplace (e.g., document-skills and example-skills from anthropic-agent-skills), all skills appear duplicated with both plugin prefixes instead of being filtered according to each plugin's skills array in marketplace.json.
Expected Behavior
Based on the marketplace.json configuration:
{
"plugins": [
{
"name": "document-skills",
"skills": [
"./skills/xlsx",
"./skills/docx",
"./skills/pptx",
"./skills/pdf"
]
},
{
"name": "example-skills",
"skills": [
"./skills/algorithmic-art",
"./skills/brand-guidelines",
...
]
}
]
}
document-skills:*should only expose:xlsx,docx,pptx,pdfexample-skills:*should only expose:algorithmic-art,brand-guidelines, etc.
Actual Behavior
Both plugins expose ALL 16 skills, creating duplicates:
document-skills:pdf
document-skills:pptx
document-skills:xlsx
document-skills:docx
document-skills:algorithmic-art ← should not exist
document-skills:frontend-design ← should not exist
...
example-skills:pdf ← should not exist
example-skills:pptx ← should not exist
example-skills:xlsx ← should not exist
example-skills:docx ← should not exist
example-skills:algorithmic-art
example-skills:frontend-design
...
Root Cause
Investigation of the plugin cache directories shows:
- Both
~/.claude/plugins/cache/anthropic-agent-skills/document-skills/and~/.claude/plugins/cache/anthropic-agent-skills/example-skills/contain identical content - The entire repository (all 16 skills) is copied into both cache directories
- The
skillsarray filter inmarketplace.jsonis not being applied when loading skills - Both cached
marketplace.jsonfiles are identical and define both plugins
Steps to Reproduce
- Have both plugins enabled in
~/.claude/settings.json:
``json``
{
"enabledPlugins": {
"document-skills@anthropic-agent-skills": true,
"example-skills@anthropic-agent-skills": true
}
}
- Start Claude Code
- Observe the skill list shows duplicates (e.g., both
document-skills:pdfandexample-skills:pdf)
Environment
- OS: macOS (Darwin 25.2.0)
- Claude Code version: Latest as of 2025-01-27
- Plugin source:
~/.claude/skills/anthropic-skills/(Anthropic's official skills repo)
Workaround
Disable one of the plugins in settings to eliminate duplicates (though this means all skills appear under a single prefix).
Suggested Fix
The plugin loader should:
- Respect the
skillsarray filter when loading skills from each plugin - Only copy/expose the skills explicitly listed in each plugin's configuration
- OR create separate cache directories with only the relevant skills for each plugin
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗