# Plugin Marketplace Schema

Full JSON schema for `.claude-plugin/marketplace.json`.

## Required Top-Level Fields

| Field | Type | Description | Example |
|-------|------|-------------|---------|
| `name` | string | Marketplace ID (kebab-case, no spaces). Users see: `/plugin install tool@name` | `"acme-tools"` |
| `owner` | object | Maintainer info (`name` required, `email` optional) | |
| `plugins` | array | List of plugin entries | |

### Reserved Names (Cannot Use)

`claude-code-marketplace`, `claude-code-plugins`, `claude-plugins-official`, `anthropic-marketplace`, `anthropic-plugins`, `agent-skills`, `life-sciences`. Names impersonating official marketplaces also blocked.

## Optional Metadata

| Field | Type | Description |
|-------|------|-------------|
| `metadata.description` | string | Brief marketplace description |
| `metadata.version` | string | Marketplace version |
| `metadata.pluginRoot` | string | Base dir prepended to relative source paths (e.g., `"./plugins"`) |

## Plugin Entry — Required Fields

| Field | Type | Description |
|-------|------|-------------|
| `name` | string | Plugin ID (kebab-case). Users see: `/plugin install name@marketplace` |
| `source` | string\|object | Where to fetch plugin (see `plugin-marketplace-sources.md`) |

## Plugin Entry — Optional Metadata

| Field | Type | Description |
|-------|------|-------------|
| `description` | string | Brief plugin description |
| `version` | string | Plugin version |
| `author` | object | Author info (`name` required, `email` optional) |
| `homepage` | string | Plugin docs URL |
| `repository` | string | Source code URL |
| `license` | string | SPDX license ID (MIT, Apache-2.0) |
| `keywords` | array | Discovery/categorization tags |
| `category` | string | Plugin category |
| `tags` | array | Searchability tags |
| `strict` | boolean | Default `true`: merges with plugin.json. `false`: marketplace entry defines plugin entirely |

## Plugin Entry — Component Configuration

| Field | Type | Description |
|-------|------|-------------|
| `commands` | string\|array | Custom paths to command files/dirs |
| `agents` | string\|array | Custom paths to agent files |
| `hooks` | string\|object | Hooks config or path to hooks file |
| `mcpServers` | string\|object | MCP server configs or path |
| `lspServers` | string\|object | LSP server configs or path |

## Minimal Example

```json
{
  "name": "my-plugins",
  "owner": { "name": "Your Name" },
  "plugins": [{
    "name": "review-plugin",
    "source": "./plugins/review-plugin",
    "description": "Adds a /review skill for quick code reviews"
  }]
}
```

## Full Example

```json
{
  "name": "company-tools",
  "owner": { "name": "DevTools Team", "email": "devtools@example.com" },
  "metadata": { "description": "Internal dev tools", "version": "1.0.0", "pluginRoot": "./plugins" },
  "plugins": [
    {
      "name": "code-formatter",
      "source": "./plugins/formatter",
      "description": "Automatic code formatting on save",
      "version": "2.1.0",
      "author": { "name": "DevTools Team" }
    },
    {
      "name": "deployment-tools",
      "source": { "source": "github", "repo": "company/deploy-plugin" },
      "description": "Deployment automation tools"
    }
  ]
}
```
