bug: `claude plugin validate` rejects `$schema` and `description` in marketplace.json, but Anthropic's own marketplace uses both
Bug Description
claude plugin validate reports $schema and description as unrecognized keys for marketplace.json, but Anthropic's own official marketplace (claude-plugins-official) uses both fields.
Steps to Reproduce
# Validate a marketplace manifest that uses $schema and description
claude plugin validate /path/to/plugin/
# Output:
# Validating marketplace manifest: .../marketplace.json
# ✘ Found 1 error:
# ❯ root: Unrecognized keys: "$schema", "description"
# ✘ Validation failed
The marketplace.json in question:
{
"$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
"name": "my-marketplace",
"description": "My marketplace description",
"owner": { ... },
"plugins": [ ... ]
}
Inconsistency with Official Marketplace
The official claude-plugins-official marketplace manifest (cached at ~/.claude/plugins/marketplaces/claude-plugins-official/.claude-plugin/marketplace.json) uses both $schema and description:
{
"$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
"name": "claude-plugins-official",
"description": "Directory of popular Claude Code extensions...",
...
}
Expected Behavior
$schema and description should be recognized as valid top-level fields in marketplace.json, consistent with the official marketplace format and the schema URL referenced in $schema itself.
Actual Behavior
Validator rejects both fields as unrecognized, causing claude plugin validate to fail for manifests that follow the apparent official format.
Environment
- Claude Code version: 2.1.90
- OS: macOS 15.3 (Darwin 25.3.0)
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗