anthropics / anthropics/claude-code

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

Open
#94,762 0 comments 0 reactions 0 assignees View on GitHub
area:plugins area:skills bug has repro platform:macos regression
Dominant language
Python
Stars
145k
Forks
23.1k
PR merge metrics
PR metrics pending

Description

### Preflight Checklist

- [x] I have searched [existing issues](https://github.com/anthropics/claude-code/issues?q=is%3Aissue%20state%3Aopen%20label%3Abug) 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

```shell
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
✔ Validation passed
$ claude plugin validate
✔ 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
```
3. 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`):

```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.

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the inline skills declaration in `.claude-plugin/marketplace.json` and trace the plugin installation and skill discovery exercised by `claude plugin install` and `claude -p`. Compare the working `humanizer-zh` root path with the failing `document-skills` subdirectory paths in the installed plugin cache. Done means the four document skills appear in the skill list and can be invoked by their names.

Written by the indexing model from the issue text.

Assessment

Tech stack
json, python
Domain
cli, tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.