vercel / vercel/vercel-plugin

skills/<name>/upstream/SKILL.md causes duplicate skill registration in Claude Code

Open
#77 1 comment 1 reaction 0 assignees View on GitHub

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

  1. cd ~/.claude/plugins/cache/claude-plugins-official/vercel/0.42.1/skills
  2. find . -name SKILL.md | awk -F/ '{print $(NF-1)}' | sort | uniq -c | sort -rn | awk '$1>1' → shows upstream 10x
  3. Check Claude Code's available-skills list — vercel:ai-sdk, vercel:chat-sdk, etc. show no description.

Suggested fix

Either:

  • Move upstream/ outside skills/ (e.g., vendor/upstream/<name>/SKILL.md or docs/upstream-source/<name>.md), or
  • Rename the upstream copy from SKILL.md to UPSTREAM.md so 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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.