[BUG] Skills declared inline in `marketplace.json` under `strict: false` are not registered (2.1.112 works, 2.1.270 broken)
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
skillsrather thanlspServers— 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-skillsplugin from the officialanthropics/skillsmarketplace installs successfully and reports as enabled, and both manifests passclaude plugin validate, but none of its four skills (docx,pdf,pptx,xlsx) are registered with the Skill tool. Invoking any of them returnsUnknown 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
- Add the marketplace (
anthropics/skills, either as a git source or a local directory). - Install the plugin:
````
claude plugin install document-skills@anthropic-agent-skills
- 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.mdandskills/— but noplugin.json. (plugin.jsonis not gitignored upstream; the plugin genuinely ships without one, per thestrict: false+ inline-skillsdesign.) - All four skill directories exist and contain a
SKILL.mdwith valid frontmatter (name,description,license), plus theirscripts/and reference files. - Note: three plugin entries in this marketplace share
"source": "./"—document-skills,example-skills, andclaude-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.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗