Skip to content

15 of 16 plugins omit .claude-plugin/plugin.json, so Claude Code namespaces their skills by marketplace commit SHA #1029

Closed

Description

@DeVFirmino

Summary

15 of the 16 plugins ship their manifest only as plugins/<name>/plugin.json. Claude Code reads plugin metadata from plugins/<name>/.claude-plugin/plugin.json, so for those 15 it falls back to the marketplace's git commit SHA as both the plugin version and the skill/agent namespace.

dotnet-msbuild is the only plugin that also ships .claude-plugin/plugin.json (a byte-identical copy of its root plugin.json), and it is the only one Claude Code names correctly.

Evidence

Marketplace HEAD at the time of testing:

$ git rev-parse --short=12 HEAD
772c4424c3ea      # 772c442 Merge pull request #955 ...

Manifest presence across the repo:

dotnet-advanced          .claude-plugin:NO   root plugin.json version:0.2.1
dotnet-ai                .claude-plugin:NO   root plugin.json version:0.1.5
dotnet-aspnetcore        .claude-plugin:NO   root plugin.json version:0.1.1
dotnet-blazor            .claude-plugin:NO   root plugin.json version:0.1.1
dotnet-data              .claude-plugin:NO   root plugin.json version:0.1.4
dotnet-diag              .claude-plugin:NO   root plugin.json version:0.1.1
dotnet-experimental      .claude-plugin:NO   root plugin.json version:0.1.1
dotnet-maui              .claude-plugin:NO   root plugin.json version:0.1.16
dotnet-msbuild           .claude-plugin:yes  root plugin.json version:0.1.7
dotnet-nuget             .claude-plugin:NO   root plugin.json version:0.1.0
dotnet-template-engine   .claude-plugin:NO   root plugin.json version:0.1.3
dotnet-test-migration    .claude-plugin:NO   root plugin.json version:0.1.6
dotnet-test              .claude-plugin:NO   root plugin.json version:0.2.14
dotnet-upgrade           .claude-plugin:NO   root plugin.json version:0.1.1
dotnet                   .claude-plugin:NO   root plugin.json version:0.2.3
dotnet11                 .claude-plugin:NO   root plugin.json version:0.1.1

What Claude Code reports — note the version on line 1 of each:

$ claude plugin details dotnet-msbuild@dotnet-agent-skills
dotnet-msbuild 0.1.7
  Comprehensive MSBuild and .NET build skills: ...

$ claude plugin details dotnet-nuget@dotnet-agent-skills
dotnet-nuget
  NuGet and .NET package management: ...

claude plugin list shows the fallback directly — the declared versions in root plugin.json are not picked up:

dotnet-aspnetcore@dotnet-agent-skills   Version: 772c4424c3ea
dotnet-nuget@dotnet-agent-skills        Version: 772c4424c3ea
dotnet-test@dotnet-agent-skills         Version: 772c4424c3ea
dotnet-upgrade@dotnet-agent-skills      Version: 772c4424c3ea
dotnet@dotnet-agent-skills              Version: 772c4424c3ea
dotnet-msbuild@dotnet-agent-skills      Version: 0.1.7

Impact

The same fallback is used to namespace skills, so in the skill listing you get:

  • 772c4424c3ea:convert-to-cpm instead of dotnet-nuget:convert-to-cpm
  • 772c4424c3ea:dotnet-webapi instead of dotnet-aspnetcore:dotnet-webapi
  • dotnet-msbuild:binlog-failure-analysis — correct, because that plugin has the manifest

Two consequences:

  1. The prefix is a commit SHA, so it changes on every marketplace update. Anything that refers to a skill by qualified name — docs, project CLAUDE.md/AGENTS.md, team conventions — breaks on the next /plugin marketplace update.
  2. It is not discoverable which plugin a skill belongs to from its name alone.

The skills themselves work; this is metadata resolution only.

Relationship to #846 and #840

This looks like the same root cause as two already-closed issues, each fixed for one plugin rather than repo-wide:

dotnet-msbuild gained .claude-plugin/plugin.json and is now fully correct. dotnet gained a .lsp.json (which does fix the LSP — verified working here) but no .claude-plugin/plugin.json, so it still shows the SHA. The remaining 14 have neither.

Suggested fix

Add .claude-plugin/plugin.json for each plugin, mirroring what dotnet-msbuild already does. Since the two files are identical there, this is presumably a build/sync step that could be applied to all plugins at once and validated in CI, so new plugins don't reintroduce it.

Environment

  • Claude Code, plugins installed via /plugin marketplace add dotnet/skills
  • macOS 15 (Darwin 25.0.0), .NET SDK 10.0.302
  • Marketplace at 772c4424c3ea

Activity

  1. github-actions commented on Aug 18, 2026

    @github-actions
    Contributor

    🎯 Issue Triage

    Summary: 15 of 16 plugins lack a .claude-plugin/plugin.json manifest, so Claude Code falls back to using the marketplace's git commit SHA as the plugin version and skill/agent namespace instead of the declared version. This breaks skill references whenever the marketplace updates. Falls under repository infrastructure/build tooling.

    Type: bug

    Assigned owners: @AbhitejJohn @webreidi (default repo owners per CODEOWNERS * rule, since this is a repo-wide manifest sync issue rather than a single plugin).

    Confidence: Medium

    Similar issues: Related to #1006 ("Adopt Agent Plugins 1.0"), which addresses standardizing plugin manifests across clients (including Claude Code compatibility) — this issue's fix may be subsumed by or coordinated with that broader migration. Not an exact duplicate.

    Triage details
    • Area mapping rationale: This is a cross-cutting build/packaging consistency issue affecting all plugin manifests, not tied to a specific plugin's skill content, so area-infrastructure was chosen over any plugin-specific area label.
    • CODEOWNERS path match: No specific plugin path matches; used the default * owners (@webreidi @AbhitejJohn).
    • Confidence rationale: The bug and root cause are clearly described with strong reproduction evidence, but the correct fix path may overlap significantly with Adopt Agent Plugins 1.0 #1006's Agent Plugins 1.0 migration, adding some ambiguity to scope/ownership.
    • Suggested next steps: Coordinate with Adopt Agent Plugins 1.0 #1006 to determine whether adding .claude-plugin/plugin.json per plugin should be a stopgap fix or handled as part of the broader Agent Plugins 1.0 adoption.

    Generated by Issue Triage for #1029 · auto · 29.3 AIC · ⌖ 2.24 AIC · ⊞ 9.7K · ◷

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions