Skip to content

Marketplace sync to claude.ai fails validation: duplicate skill names from nested skills/*/upstream/ directories #156

Description

@AJackerman2

Summary

vercel/vercel-plugin cannot be added as a marketplace on claude.ai (Settings → Customize → Plugins → Add from a repository). The repo syncs, then fails server-side content validation because 11 skills each declare the same name: at two different paths.

This means the plugin works when installed locally via Claude Code, but cannot be enabled as an account-level plugin, and therefore is unavailable in Claude Code cloud sessions.

The error

The UI shows only:

Marketplace sync failed. Check the repository URL and try again.

That message is misleading — the repository URL is fine. The actual API response (sync_status: "failed_content", at commit c4a1c4e2e16feefb1d9f2ad2a4a451abd0ae91c6) is:

{"plugins": [{"name": "vercel-plugin", "error": "Duplicate skill name 'ai-sdk' found in 'skills/ai-sdk' and 'skills/ai-sdk/upstream'; Duplicate skill name 'chat-sdk' ... 'eve' ... 'next-cache-components' ... 'next-forge' ... 'next-upgrade' ... 'vercel-cli' ... 'vercel-sandbox' ... 'workflow'"}], "message": "1 plugins found, 1 failed validation"}

Cause

The repo ships a nested upstream/ directory inside 11 skill directories, and both levels declare the same skill name:

skills/ai-sdk/SKILL.md           -> name: ai-sdk
skills/ai-sdk/upstream/SKILL.md  -> name: ai-sdk

Affected: ai-sdk, chat-sdk, eve, next-cache-components, next-forge, next-upgrade, nextjs, react-best-practices, vercel-cli, vercel-sandbox, workflow — 11 nested directories, 44 SKILL.md files across 33 skills.

Claude Code's local plugin loader tolerates the collision. The claude.ai marketplace validator rejects the whole plugin over it.

Suggested fix

Move the upstream/ copies outside skills/ (e.g. to a vendor/ or .upstream/ directory), or give the nested copies distinct name: values, so no two SKILL.md files under skills/ share a name.

Reproduction

  1. claude.ai → Settings → Customize → Plugins → Add → Add from a repository
  2. Enter vercel/vercel-plugin (or the full https://github.com/vercel/vercel-plugin.git — same result)
  3. Sync fails with the message above

Verified against a local clone of the marketplace at the same commit.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions