skills/<name>/upstream/SKILL.md causes duplicate skill registration in Claude Code
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 287
- Forks
- 58
- Avg merge
- 1d 1h
- Merged PRs (30d)
- 17
Description
Problem
The plugin ships a duplicate upstream/SKILL.md inside 10 of the customized skill directories:
skills/ai-sdk/SKILL.md
skills/ai-sdk/upstream/SKILL.md <- duplicate
skills/chat-sdk/SKILL.md
skills/chat-sdk/upstream/SKILL.md <- duplicate
... (8 more: next-cache-components, next-forge, next-upgrade, nextjs,
react-best-practices, vercel-cli, vercel-sandbox, workflow)
Claude Code's harness scans recursively for SKILL.md and registers both files as the same skill name. Second-pass registration drops the description from the available-skills list, so the model can no longer auto-route to the skill via keyword triggers — only explicit invocation via the Skill tool works.
Repro
cd ~/.claude/plugins/cache/claude-plugins-official/vercel/0.42.1/skillsfind . -name SKILL.md | awk -F/ '{print $(NF-1)}' | sort | uniq -c | sort -rn | awk '$1>1'→ showsupstream10x- Check Claude Code's available-skills list —
vercel:ai-sdk,vercel:chat-sdk, etc. show no description.
Suggested fix
Either:
- Move
upstream/outsideskills/(e.g.,vendor/upstream/<name>/SKILL.mdordocs/upstream-source/<name>.md), or - Rename the upstream copy from
SKILL.mdtoUPSTREAM.mdso the harness skip-scan is not triggered, or - Add a
.claudeignore-equivalent if Claude Code supports one.
Workaround
Local SessionStart hook prunes upstream/ dirs in cache after each session start (until plugin update).
cc @vercel
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in the skills/ directory and inspect the ten skills//upstream/SKILL.md paths listed in the issue. Run the provided find and awk command to confirm duplicate upstream registrations, then verify Claude Code's available-skills list. Done means upstream copies no longer register as duplicate skills and the affected skills retain their descriptions and keyword routing.
Written by the indexing model from the issue text.
Assessment
- Domain
- devtools, tooling
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100