Skill deduplication bug: local skills shown twice in skill menu
Description
Skills from ~/.claude/skills/ are appearing twice in the skill menu (when pressing / and typing a skill name), even though only one copy exists on disk.
Environment
- Claude Code version: 2.1.170
- OS: Linux (WSL2)
- Enabled plugins: voltagent-core-dev, voltagent-dev-exp, voltagent-qa-sec, voltagent-domains, voltagent-infra, voltagent-lang (from awesome-claude-code-subagents)
Reproduction Steps
- Have local skills in
~/.claude/skills/(e.g.,gh-issue-create,gh-issue-resolver) - Have Voltagent plugins enabled in
~/.claude/settings.json - Press
/in Claude Code - Type
ghto filter skills
Expected Behavior
Skills should appear once in the skill menu, with no duplicates.
Actual Behavior
When typing /gh, users see each skill listed twice:
gh-issue-createappears twicegh-issue-resolverappears twice
The system-reminder even shows both versions with different descriptions (one says "spawns sub-agents", the other says "spawns Volt sub-agents").
Investigation Results
Verified on disk:
- Local skills exist:
~/.claude/skills/gh-issue-createandgh-issue-resolver✓ - Only one copy per skill:
npx skills list | grep gh-issuereturns ONE entry per skill ✓ - Voltagent plugins don't contain these skills: Searched all plugin directories, no gh-issue skills found ✓
The duplication is not a filesystem issue — it's happening in Claude Code's skill indexing/discovery layer.
Root Cause Hypothesis
Claude Code's skill discovery mechanism is announcing the same skill twice from different sources:
- From the local
~/.claude/skills/directory - From enabled plugins (possibly with modified metadata like "Volt sub-agents")
Without proper deduplication, both announcements reach the skill menu.
Impact
This creates a confusing UX where users see phantom duplicates that don't actually exist on disk, and it's unclear which version will be used when invoked.