--- topic: manifest-fields source_keys: - context7-websites-code-claude - claude-code-plugins-docs - github-cli-plugin-reference - github-plugins-creating - github-plugins-finding-installing --- # Manifest Fields Reference This document covers optional fields beyond the scaffolded defaults. Consult it when a user asks to add a non-default field to either manifest. ## Field Classification | Field | Copilot `plugin.json` | CC `.claude-plugin/plugin.json` | Notes | |---|---|---|---| | `name` | Yes (shared) | Yes (shared) | Identical in both; kebab-case; max 64 chars (Copilot) | | `description` | Yes (shared) | Yes (shared) | Identical in both; max 1024 chars (Copilot) | | `version` | Yes (shared) | Yes (shared) | Identical in both; SemVer; version parity required (ADR-0016) | | `author.name` | Yes (shared) | Yes (shared) | Identical in both | | `license` | Yes (shared) | Yes (shared) | Identical in both; SPDX identifier | | `keywords` | Yes (shared) | Yes (shared) | Identical in both; string array | | `displayName` | No | Yes (CC-only) | Human-readable name shown in plugin manager | | `author.url` | No | Yes (CC-only) | Author profile or homepage URL | | `author.email` | Yes (Copilot-only) | No | Author contact email | | `agents` | Yes (Copilot-only) | No | Path or array; default: `agents/` | | `skills` | Yes (Copilot-only) | No | Path or array; default: `skills/` | | `hooks` | Yes (Copilot-only) | No | Path to hooks config | | `mcpServers` | Yes (Copilot-only) | No | Path or object for MCP server config | | `category` | Yes (Copilot-only) | No | Marketplace category string | | `tags` | Yes (Copilot-only) | No | Additional taxonomy tags (distinct from `keywords`) | | `extensions` | Yes (Copilot-only) | No | Path, array, or `{ paths, exclusive: true }` to disable built-ins | | `homepage` | Both (independent) | Both (independent) | Documentation URL; not required to be identical | | `repository` | Both (independent) | Both (independent) | Source repo URL | ## Non-Default Optional Fields ### `homepage` Documentation or project page URL. Shown in the plugin manager. Independent in each manifest — the two values do not need to match. ```json // Copilot plugin.json { "homepage": "https://example.com/docs" } // CC .claude-plugin/plugin.json { "homepage": "https://example.com/docs" } ``` ### `repository` Source repository URL. Independent in each manifest. ```json { "repository": "https://git.example.com/owner/repo" } ``` ### `category` (Copilot-only) Marketplace browsing category. Single string. Copilot manifest only. ```json { "category": "developer-tools" } ``` ### `tags` (Copilot-only) Additional taxonomy tags for Copilot marketplace browsing. Distinct from `keywords`. ```json { "tags": ["testing", "ci"] } ``` ### `extensions` (Copilot-only) Path to extension files, an array of paths, or an object. Use `{ "paths": [...], "exclusive": true }` to disable built-in extensions. ```json { "extensions": "extensions/" } // or { "extensions": { "paths": ["extensions/"], "exclusive": true } } ``` ### `lspServers` Language Server Protocol configuration. Supported in both Copilot and CC manifests. ```json { "lspServers": ".lsp.json" } ``` ### `outputStyles` (CC-only) Path to output styles directory. Claude Code manifest only. ```json { "outputStyles": "styles/" } ``` ### `experimental.themes` (CC-only) Path to themes directory. Claude Code manifest only. Experimental — may change. ```json { "experimental": { "themes": "themes/" } } ``` ### `experimental.monitors` (CC-only) Path to `monitors.json`. Claude Code manifest only. Experimental. ```json { "experimental": { "monitors": "monitors.json" } } ``` ### `dependencies` (CC-only) Plugin dependencies. Each entry is a string (plugin name) or `{ "name": "", "version": "" }`. ```json { "dependencies": [ "base-tools", { "name": "data-tools", "version": "^2.0.0" } ] } ``` ### `commands` (legacy, both) Explicit list of `.md` command file paths. Deprecated in favour of `skills/`. Use `skills` instead for new plugins. ## Version Parity Convention (ADR-0016) The `version` field must be present and identical in both manifests at all times. This is a hard invariant enforced by `/plugin-author` on every create, update, and release operation. - If only the CC manifest had `version` before this convention was introduced, backfill the Copilot manifest immediately. - Never change `version` in one manifest without changing it in the other in the same edit pass. - The RELEASE flow bumps both manifests simultaneously before tagging.