C:/Program Files/Git/plugin install fails when marketplace internal name differs from repo slug
Description
When a marketplace's marketplace.json has an internal name that differs from the GitHub owner/repo slug, /plugin install always fails — there is no combination of names that works.
Steps to reproduce
/plugin marketplace add dotnet/skills
/plugin install dotnet@dotnet-agent-skills
The marketplace dotnet/skills registers locally as dotnet-skills (derived from repo slug), but its .claude-plugin/marketplace.json declares "name": "dotnet-agent-skills".
This creates an irreconcilable mismatch:
| Command | Error |
|---|---|
| /plugin install dotnet@dotnet-skills | Plugin "dotnet" not found in marketplace "dotnet-skills" |
| /plugin install dotnet@dotnet-agent-skills | Marketplace "dotnet-agent-skills" not found |
- Using the local alias (
dotnet-skills) → marketplace is found, but plugins aren't (possibly because plugin lookup uses the internal name) - Using the internal name (
dotnet-agent-skills) → install lookup fails because the registered alias isdotnet-skills
/plugin marketplace list shows dotnet-skills. The repo's own README instructs users to run /plugin install dotnet@dotnet-agent-skills — which never works because the registered alias never matches.
Expected behavior
Either:
- Claude Code should register the marketplace under its internal
namefrommarketplace.json(not the repo slug), or - Claude Code should accept either the alias or the internal name when resolving
@<marketplace>in/plugin install
Environment
- Claude Code (Windows 11, desktop app)
- Marketplace repo: https://github.com/dotnet/skills
- Internal marketplace name:
dotnet-agent-skills(from.claude-plugin/marketplace.json) - Registered alias after
/plugin marketplace add dotnet/skills:dotnet-skills