Plugin installation creates symlinks in skills/ causing duplicate slash commands
Resolved 💬 3 comments Opened Feb 6, 2026 by yulonglin Closed Mar 7, 2026
Description
Plugin installation creates symlinks in ~/.claude/skills/ pointing to plugins/cache/ and plugins/marketplaces/. These symlinks cause every installed plugin skill to appear twice in the slash command picker:
- Once as
(user)— from the symlink in~/.claude/skills/ - Once as
(plugin-name)— from the plugin registry (installed_plugins.json)
For example, /presentation shows:
/research-presentation (user)
/research-presentation (writing-toolkit)
Evidence
- 83 symlinks in
~/.claude/skills/, all with identical timestamp (batch-created by plugin system) - All point to
plugins/cache/orplugins/marketplaces/directories - Symlinks are recreated on startup / plugin sync
Example symlink targets:
skills/fix-merge-conflict -> plugins/cache/claude-plugins-official/code-quality/1.0.0/skills/fix-merge-conflict
skills/agent-development -> plugins/marketplaces/claude-plugins-official/plugins/plugin-dev/skills/agent-development
Expected Behavior
Each skill should appear exactly once. Since plugin skills are already discovered via the plugin registry, the symlinks in ~/.claude/skills/ are redundant.
Suggested Fix
Either:
- Don't create symlinks in
skills/during plugin installation (the registry is sufficient for discovery) - Deduplicate in the slash command picker (prefer plugin-namespaced entries over user symlinks)
Environment
- Claude Code v2.1.34
- macOS 15.3.1
- 3 local marketplace plugins installed (research-toolkit, writing-toolkit, code-quality) plus official plugins
Related Issues
- #14549 — Skill count inflation (N× duplication from cache copies of marketplace.json)
- #17271 — Plugin skills not showing in autocomplete (fixed in v2.1.29)
- #21891 — No dedup when loading same skill multiple times
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗