[BUG] Skills declared inline in `marketplace.json` under `strict: false` are not registered (2.1.112 works, 2.1.270 broken)

Status Open
Reported on v2.1.270
Maintainer reply None cached
Activity 1 comment · opened Sep 16, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

  • [x] I have searched existing issues. This appears to be the same root-cause class as #93474, #15148, #15235 and #16291, but for skills rather than lspServers — those reports cover LSP plugins, this one covers a skills-only plugin. Filing separately in case they are tracked apart.
  • [x] This is a single bug report.
  • [ ] Using the latest version — tested on 2.1.270; 2.1.273 was the latest at time of writing, untested.
  • [ ] The document-skills plugin from the official anthropics/skills marketplace installs successfully and reports as enabled, and both manifests pass claude plugin validate, but none of its four skills (docx, pdf, pptx, xlsx) are registered with the Skill tool. Invoking any of them returns Unknown skill, and they are absent from the skill list given to the model.

The same plugin on the same machine does register all four skills on 2.1.112.

What Should Happen?

The skills entries declared inline in the marketplace.json plugin entry should be registered at runtime after install, and the four skills should be invokable as document-skills:docx, document-skills:pdf, document-skills:pptx, document-skills:xlsx — as they are on 2.1.112.

Error Messages/Logs

Same machine, same config, same plugin, two versions, both invoked as a plain CLI `-p` session (so this is not an extension-vs-CLI difference):

| Runtime | Version | `document-skills:*` in skill list |
| --- | --- | --- |
| `/usr/local/bin/claude` | 2.1.112 | **present** — `document-skills:docx`, `document-skills:pdf`, `document-skills:pptx`, `document-skills:xlsx` |
| extension-bundled CLI | 2.1.270 | **absent** — returns `Unknown skill: document-skills:docx` |

Sanity checks that pass on 2.1.270, so the plugin is installed and visible to the CLI:


$ claude plugin list
  ❯ document-skills@anthropic-agent-skills
    Version: da20c92503b2
    Scope: user
    Status: ✔ enabled

$ claude plugin validate <marketplace-root>
✔ Validation passed
$ claude plugin validate <installed-plugin-dir>
✔ Validation passed

Steps to Reproduce

  1. Add the marketplace (anthropics/skills, either as a git source or a local directory).
  2. Install the plugin:

``
claude plugin install document-skills@anthropic-agent-skills
``

  1. In a fresh non-interactive session, ask for the available skills:

``
claude -p "List ONLY the exact skill names you can invoke with the Skill tool right now, comma-separated, no commentary."
``

Claude Model

Sonnet (default)

Is this a regression?

Yes, this worked in a previous version

Last Working Version

2.1.112 Verified by running the same probe on both binaries: - 2.1.112 -> document-skills:docx / pdf / pptx / xlsx all registered - 2.1.270 -> none registered, Unknown skill: document-skills:docx The exact version that introduced the regression is not bisected; 2.1.113–2.1.269 untested.

Claude Code Version

2.1.270 (VSCode extension bundled CLI) 2.1.112 (/usr/local/bin/claude — this is the version that still works)

Platform

Other

Operating System

macOS

Terminal/Shell

VS Code integrated terminal

Additional Information

Relevant configuration

The marketplace entry (anthropics/skills → .claude-plugin/marketplace.json):

{
  "name": "document-skills",
  "source": "./",
  "strict": false,
  "skills": [
    "./skills/xlsx",
    "./skills/docx",
    "./skills/pptx",
    "./skills/pdf"
  ]
}
  • Installed to ~/.claude/plugins/cache/anthropic-agent-skills/document-skills/da20c92503b2/.
  • That installed directory contains .claude-plugin/marketplace.json, README.md, THIRD_PARTY_NOTICES.md and skills/ — but no plugin.json. (plugin.json is not gitignored upstream; the plugin genuinely ships without one, per the strict: false + inline-skills design.)
  • All four skill directories exist and contain a SKILL.md with valid frontmatter (name, description, license), plus their scripts/ and reference files.
  • Note: three plugin entries in this marketplace share "source": "./" — document-skills, example-skills, and claude-api.

Control case — same mechanism, works

humanizer-zh@humanizer-zh-marketplace uses the identical declaration mechanism ("strict": false with an inline skills array) and does load correctly on 2.1.270, appearing as humanizer-zh:humanizer-zh. The only structural difference is the declared path:

| Plugin | skills value | Layout | 2.1.270 |
| --- | --- | --- | --- |
| humanizer-zh | ["./"] | SKILL.md at plugin root | ✅ loads |
| document-skills | ["./skills/docx", …] | SKILL.md in subdirectories | ❌ does not load |

This suggests the failure is specific to enumerated subdirectory skill paths, rather than to strict: false as such — or possibly to the three entries sharing "source": "./". I have not been able to narrow it further.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗