[BUG] JSON schema specified in the marketplace.json doesn't exist
Resolved 💬 17 comments Opened Oct 16, 2025 by fcakyon Closed Apr 23, 2026
💡 Likely answer: A maintainer (dhollman, contributor)
responded on this thread — see the highlighted reply below.
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?
This schema doesn't exist: https://github.com/anthropics/claude-code/blob/b4b858a11500393159bcdd64752be0e4f64864d5/.claude-plugin/marketplace.json#L2
What Should Happen?
JSON schema should exist.
Error Messages/Logs
Unable to load schema from 'https://anthropic.com/claude-code/marketplace.schema.json': Not Found. The requested location could not be found.
<!DOCTYPE html><!-- Last Published: Wed Oct 15 2025 16:55:36 GMT+0000 (Coordinated Universal Time) --><html data-wf-domain="website.anthropic.com" data-wf-page="67ce28d0ec624e2b733f8a95" data-wf-site=.
Steps to Reproduce
Open marketplace.json.
This schema doesn't exist: https://github.com/anthropics/claude-code/blob/b4b858a11500393159bcdd64752be0e4f64864d5/.claude-plugin/marketplace.json#L2
Claude Model
None
Is this a regression?
No, this never worked
Last Working Version
_No response_
Claude Code Version
2.1.69
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
VS Code integrated terminal
Additional Information
_No response_
17 Comments
Any updates on this @ashwin-ant ?
This issue has been inactive for 30 days. If the issue is still occurring, please comment to let us know. Otherwise, this issue will be automatically closed in 30 days for housekeeping purposes.
It's still occurring.
Can you look into this @ashwin-ant ?
any updates ?
on my side Claude Code v2.0.76 with Opus 4.5 outputs
marketplace.schema.jsonplugin.schema.jsonI'm a bit of a skill junkie and have been trying to use the
plugin-dev:stuff and my own skill building tree to help stay organized/follow best practices building plugins - I know this is fast moving target... I've come to the conclusion that trying to do a "local" folder will cause nothing but pain/wasted effort because of how skills/plugins get cached - I've had much better success publishing my skills to git and syncing across computers using the "marketplace" paradigm. This however is way less documented atm (understandable cause iirc this is like totally new). It also seems like Claude Desktop is lagging a bit here - "Capabilities" only takes standalone skills and there is some tensions maintaining skills that can be used in claude code and Claude Desktop. So I've kind of taken a the approach of periodically using an agent to crawl/infer some things about the evolving json schema and it found this issue which seems relevant to my interests. So for anyone that finds this as well - until "real" schema gets published and things better documented I had muh boy write this up to help people out...This information might be totally out of date next week (spoilers it was). Welcome to the bleeding edge ya'll!
---
The Marketplace & Plugin Schema Saga
A chronicle of discoveries about Claude Code plugin distribution, schemas, and the official patterns that emerged from investigating Anthropic's own implementations.
Last Updated: 2026-01-13 (synced with official docs at code.claude.com)
The Schema Mystery
What the Docs Say
Every official
marketplace.jsonfile references a schema:What Actually Exists
Nothing. The URL returns 404.
This is a known bug: GitHub Issue #9686 (opened October 2025, still open as of January 2026).
Our Solution
We maintain local schemas inferred from actual usage:
schemas/marketplace.schema.jsonschemas/plugin.schema.jsonRun
/sync-schemasto re-analyze official sources and update local schemas.---
Distribution Paths
Claude Code plugins can be distributed via two completely different mechanisms.
Path 1: Marketplace (Claude Code CLI)
For Claude Code (the CLI tool), plugins are distributed via marketplaces:
Installation: Users add the marketplace, then install individual plugins via
/plugin install <name>@<marketplace>.Key file:
marketplace.jsonin.claude-plugin/directory, containing plugin entries withsourcepaths.Path 2: .skill Files (Claude Desktop)
Claude Desktop (the macOS/Windows app) doesn't support marketplaces. Instead, skills are loaded individually via
.skillfiles:.skillfile = zip archive containing a skill directoryKey difference: Desktop loads individual skills; CLI loads plugins (which contain multiple skills).
---
Official Marketplace Structure
Analyzed from
~/.claude/plugins/marketplaces/claude-plugins-official/:Root Level
marketplace.json Structure
Root-Level Keys
| Key | Required | Description |
|-----|----------|-------------|
|
$schema| No | Schema URL (returns 404) ||
name| Yes | Marketplace identifier (kebab-case) ||
owner| Yes | Owner object withname(required),email(optional) ||
plugins| Yes | Array of plugin entries ||
metadata.description| No | Brief marketplace description ||
metadata.version| No | Marketplace version ||
metadata.pluginRoot| No | Base directory prepended to relative source paths |Reserved Marketplace Names
The following names are reserved for official Anthropic use:
claude-code-marketplaceclaude-code-pluginsclaude-plugins-officialanthropic-marketplaceanthropic-pluginsagent-skillslife-sciencesNames that impersonate official marketplaces (like
official-claude-plugins) are also blocked.Plugin Entry Keys
| Key | Required | Description |
|-----|----------|-------------|
|
name| Yes | Plugin identifier (kebab-case) ||
source| Yes | Relative path or URL object ||
description| No | Human-readable description ||
author| No | Author object withname,email||
category| No | One of: development, productivity, testing, database, deployment, design, monitoring, security, learning ||
homepage| No | Documentation URL ||
version| No | Semver string ||
tags| No | Array of strings ||
strict| No | Boolean (default: true) - see below ||
keywords| No | Tags for discovery ||
license| No | SPDX identifier ||
repository| No | Source code URL ||
commands| No | Custom command paths ||
agents| No | Custom agent paths ||
skills| No | Custom skill paths ||
hooks| No | Hook config or path ||
mcpServers| No | MCP config or path ||
lspServers| No | LSP config or path ||
outputStyles| No | Output style paths |Source Field Variants
Simple path:
GitHub object:
URL object (for external repos):
---
The
strictField (RESOLVED)When Does a Plugin Need plugin.json?
Answer: It depends on the
strictfield.|
strictValue | Behavior ||----------------|----------|
|
true(default) | Plugin source MUST contain.claude-plugin/plugin.json. Marketplace entry fields are MERGED with plugin.json ||
false| Plugin does NOT need its ownplugin.json. Marketplace entry defines everything |Examples
strict: true (default) - Plugin has its own manifest:
The plugin at
./plugins/my-plugin/.claude-plugin/plugin.jsonmust exist.strict: false - Marketplace defines everything:
In Official Marketplace
| Plugin | Has plugin.json? | strict value |
|--------|-----------------|--------------|
| plugin-dev | NO | false (implied) |
| agent-sdk-dev | YES | true (default) |
| feature-dev | YES | true (default) |
| LSP plugins | NO | false (explicit) |
| github (external) | YES | true (default) |
Our Approach
We include plugin.json for maximum flexibility (standalone distribution, local development).
---
Plugin Components
Commands
Location:
commands/directory in plugin rootFormat: Markdown files with frontmatter
Commands are namespaced:
plugin-name:command-nameAgents
Location:
agents/directory in plugin rootFormat: Markdown files describing agent capabilities
Skills
Location:
skills/directory in plugin rootFormat: Directories containing
SKILL.mdfiles with frontmatterHooks
Location:
hooks/hooks.jsonin plugin root, or inline in plugin.jsonHook Events (as of 2026-01):
| Event | Trigger |
|-------|---------|
|
PreToolUse| Before tool execution ||
PostToolUse| After successful tool execution ||
PostToolUseFailure| After failed tool execution ||
PermissionRequest| When permission dialog shown ||
UserPromptSubmit| When user submits prompt ||
Notification| When Claude sends notification ||
Stop| When Claude attempts to stop ||
SubagentStart| When subagent starts ||
SubagentStop| When subagent stops ||
SessionStart| At session beginning ||
SessionEnd| At session end ||
PreCompact| Before context compaction |Hook Types:
| Type | Description |
|------|-------------|
|
command| Execute shell command/script ||
prompt| Evaluate prompt with LLM ||
agent| Run agentic verifier with tools |MCP Servers
Location:
.mcp.jsonin plugin root, or inline in plugin.jsonLSP Servers
Location:
.lsp.jsonin plugin root, or inline in plugin.jsonLSP plugins provide code intelligence (go to definition, find references, diagnostics).
Output Styles
Location:
outputStyles/directory or custom pathCustomize Claude's response formatting.
---
Plugin Caching
Important: Plugins are COPIED to a cache directory, not used in-place.
Implications:
../shared-utilswon't work (files not copied)${CLAUDE_PLUGIN_ROOT}for all paths in hooks/MCP configs---
Categories
Official categories:
development- Dev tools, language servers, SDKsproductivity- Workflow tools, integrationstesting- Test frameworks, automationdatabase- Database integrationsdeployment- CI/CD, hosting platformsdesign- Design tool integrationsmonitoring- Error tracking, observabilitysecurity- Security toolslearning- Educational content, learning modes---
Installation Scopes
| Scope | Settings File | Use Case |
|-------|---------------|----------|
|
user|~/.claude/settings.json| Personal, all projects (default) ||
project|.claude/settings.json| Team, shared via git ||
local|.claude/settings.local.json| Personal, project-specific, gitignored ||
managed|managed-settings.json| Admin-controlled, read-only |---
CLI Commands
---
Reference Sources
Documentation (Most Current)
Local (After Installing Official Marketplace)
GitHub
Known Issues
---
Key Takeaways
strictfield controls plugin.json requirement - false = marketplace defines everything${CLAUDE_PLUGIN_ROOT}, symlinks workagentfor agentic verification---
Changelog
strictfield explanation, new hook events, reserved names, caching behaviorIs the marketplace schema actually available anywhere? This is a bit silly...
@bcherny please help us 😢
Seems like the issue is still there...
this is still happening.
a 404 error occurs when accessing the listed schema from the official docs.
I'm trying to create a marketplace and claude has no idea what's it's doing lol. It doesn't seem to be trained on this functionality.
@nikhilsitaram install this official plugin-dev plugin: https://github.com/anthropics/claude-plugins-official/tree/main/plugins/plugin-dev
The URL
https://anthropic.com/claude-code/marketplace.schema.jsonstill returns a404error :(It’s been 172 days since the issue was created; another 10 days and we can celebrate half a year :/
This link appears in the official repository :(
https://github.com/anthropics/claude-code/blob/b543a256248ce5ff98804b8dfef4cd6247423d98/.claude-plugin/marketplace.json#L2
Good lord, guys. How has something this simple been going on and ignored for this long?
Fixed across five PRs:
claude plugin validatenow accepts$schema/version/description(also fixes #42412)scripts/generate-plugin-schemas.tsto generate the JSON Schemas from the Zod definitionsfileMatchfor.claude-plugin/{plugin,marketplace}.json.claude-plugin/marketplace.jsonnow points at the working schemastore URLThe schemas are live:
— 🤖 Claude (for @dhollman)
This issue has been automatically locked since it was closed and has not had any activity for 7 days. If you're experiencing a similar issue, please file a new issue and reference this one if it's relevant.