claude-code - 💡(How to fix) Fix "N skill descriptions dropped" — empty descriptions for duplicate SKILL.md between plugins/marketplaces/ and plugins/cache/

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

After installing a marketplace plugin, the startup banner shows N skill descriptions dropped (in my case 7 skill descriptions dropped). The affected skills still appear in the in-session available-skills list, but with no description text — only the name. Auto-trigger and /skill invocation become unreliable for those skills because the trigger phrases live in the description.

Root Cause

After installing a marketplace plugin, the startup banner shows N skill descriptions dropped (in my case 7 skill descriptions dropped). The affected skills still appear in the in-session available-skills list, but with no description text — only the name. Auto-trigger and /skill invocation become unreliable for those skills because the trigger phrases live in the description.

Fix Action

Workaround

Removing the marketplace git checkout silences the warning until the next /plugin update:

rm -rf ~/.claude/plugins/marketplaces/agricidaniel-seo

But Claude Code recreates the path on next plugin sync, so the issue returns.

Code Example

seo-drift: IDENTICAL
seo-schema: IDENTICAL
seo-images: IDENTICAL
seo-google: IDENTICAL
seo-backlinks: IDENTICAL

---

rm -rf ~/.claude/plugins/marketplaces/agricidaniel-seo

---

find ~/.claude -maxdepth 7 -type f -name SKILL.md \
  | xargs awk '/^name:/{print FILENAME":"$2; nextfile}' 2>/dev/null \
  | awk -F: '{print $2}' | sort | uniq -c | sort -rn | awk '$1 > 1'
RAW_BUFFERClick to expand / collapse

Bug: "N skill descriptions dropped" warning — empty descriptions in available-skills list when plugin SKILL.md exists in both plugins/marketplaces/ and plugins/cache/

Summary

After installing a marketplace plugin, the startup banner shows N skill descriptions dropped (in my case 7 skill descriptions dropped). The affected skills still appear in the in-session available-skills list, but with no description text — only the name. Auto-trigger and /skill invocation become unreliable for those skills because the trigger phrases live in the description.

Environment

  • Claude Code: latest (Opus 4.7, 1M context)
  • macOS Darwin 25.4.0 / zsh
  • One marketplace plugin enabled: claude-seo@agricidaniel-seo (v1.9.0)

Reproduction

  1. Install a plugin from a marketplace: /plugin install claude-seo@agricidaniel-seo
  2. Restart Claude Code
  3. Observe startup warning: 7 skill descriptions dropped
  4. In session, request the available-skills list — several claude-seo:seo-* entries appear as - claude-seo:<name> with no description

What I found

The plugin's SKILL.md files exist in two scan paths that Claude Code controls:

  • ~/.claude/plugins/marketplaces/agricidaniel-seo/skills/<name>/SKILL.md (git checkout of the marketplace source)
  • ~/.claude/plugins/cache/agricidaniel-seo/claude-seo/1.9.0/skills/<name>/SKILL.md (installed cached copy)

All 23 SEO skills exist in both. diff -q returns byte-identical for every pair, including for the 5 affected skills:

seo-drift: IDENTICAL
seo-schema: IDENTICAL
seo-images: IDENTICAL
seo-google: IDENTICAL
seo-backlinks: IDENTICAL

So 18 of 23 skills load with full description and 5 do not, despite content being identical between the two scan paths. The remaining 2 dropped descriptions in my count belong to built-in review / security-review skills (no SKILL.md visible in any user-controlled path — those may share the same loader bug or be unrelated).

Expected behavior

One of:

  1. Scan only one of plugins/cache/<plugin>/<version>/ or plugins/marketplaces/<plugin>/ per enabled plugin — not both.
  2. Deduplicate by (plugin-id, skill-name) cleanly and always keep the description from the winning copy.
  3. If a duplicate is dropped, the kept copy's description must survive.

Actual behavior

23 skills appear in the available list, but 5 of them have an empty description string. The warning counts dropped descriptions, not dropped skills, so the warning is hard to action — the skills are still present but unusable for auto-trigger.

Workaround

Removing the marketplace git checkout silences the warning until the next /plugin update:

rm -rf ~/.claude/plugins/marketplaces/agricidaniel-seo

But Claude Code recreates the path on next plugin sync, so the issue returns.

Diagnostic command

find ~/.claude -maxdepth 7 -type f -name SKILL.md \
  | xargs awk '/^name:/{print FILENAME":"$2; nextfile}' 2>/dev/null \
  | awk -F: '{print $2}' | sort | uniq -c | sort -rn | awk '$1 > 1'

This surfaces every duplicate SKILL.md name across the ~/.claude/ scan tree. On my machine every claude-seo skill duplicates between marketplaces/ and cache/, plus three extensions (banana/, dataforseo/, firecrawl/) add additional duplicates for seo-image-gen/seo-dataforseo.

Related prior incident on this machine

On 2026-05-14 the same warning fired (8 skill descriptions dropped) because legacy backup directories under ~/.claude/ (gsd-user-files-backup/skills/ and a nested ~/.claude/.claude/skills/) introduced duplicate SKILL.md files. That was a user-side fix (move backups outside ~/.claude/). The current case is different — both duplicate paths are Claude Code-managed and not user-controllable.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

FAQ

Expected behavior

One of:

  1. Scan only one of plugins/cache/<plugin>/<version>/ or plugins/marketplaces/<plugin>/ per enabled plugin — not both.
  2. Deduplicate by (plugin-id, skill-name) cleanly and always keep the description from the winning copy.
  3. If a duplicate is dropped, the kept copy's description must survive.

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

claude-code - 💡(How to fix) Fix "N skill descriptions dropped" — empty descriptions for duplicate SKILL.md between plugins/marketplaces/ and plugins/cache/