Type object
File match **/.claude-plugin/plugin.json .claude-plugin/plugin.json
Schema URL https://catalog.lintel.tools/schemas/claude-code/plugin/latest.json

Validate with Lintel

npx @lintel/lintel check
Type: object

Schema for Claude Code plugin manifest (.claude-plugin/plugin.json). Plugins extend Claude Code with reusable skills, agents, hooks, MCP servers, and LSP servers that can be shared across projects and teams via marketplaces. The manifest defines plugin metadata and optionally declares custom component paths. Components in default locations (commands/, agents/, skills/, hooks/hooks.json, .mcp.json, .lsp.json) are auto-discovered even without a manifest. The manifest is optional — if omitted, the directory name becomes the plugin name. See plugin manifest schema for the complete reference.

Properties

name string required

Unique identifier for the plugin (kebab-case, no spaces). This name namespaces all plugin components — skills appear as /plugin-name:skill-name, agents as plugin-name:agent-name, etc. Users see this in install commands (e.g. /plugin install my-plugin@marketplace). If the manifest is omitted entirely, the directory name is used instead.

Examples: "deployment-tools", "code-quality", "my-first-plugin"
pattern=^[a-z0-9][a-z0-9-]*$
version string

Semantic version (MAJOR.MINOR.PATCH). Claude Code uses this to detect updates — if you change code without bumping the version, existing users won't see updates due to caching. If also set in a marketplace entry, the plugin.json version takes priority. Use pre-release versions like 2.0.0-beta.1 for testing. See version management.

Examples: "1.0.0", "2.1.0", "1.0.0-beta.1"
description string

Brief explanation of the plugin's purpose. Shown in the plugin manager when browsing or installing plugins.

Examples: "Deployment automation tools", "Code quality and review workflows", "A greeting plugin to learn the basics"
author Author

Author information for attribution.

homepage string

URL to the plugin's documentation or landing page.

Examples: "https://docs.example.com/plugin"
repository string

URL to the plugin's source code repository.

Examples: "https://github.com/user/plugin"
license string
Examples: "MIT", "Apache-2.0", "ISC"
keywords string[]

Discovery tags for the plugin. Used when searching or browsing plugins in marketplaces.

Examples: ["deployment","ci-cd"], ["code-quality","review"]
commands Path Or Paths

Additional command file or directory paths, relative to the plugin root starting with ./. These supplement the default commands/ directory — they don't replace it. Paths should point to .md files or directories containing .md files. See path behavior rules.

Examples: "./custom/commands/special.md", ["./specialized/deploy.md","./utilities/batch-process.md"]
agents Path Or Paths

Additional agent file or directory paths, relative to the plugin root starting with ./. These supplement the default agents/ directory.

Examples: "./custom/agents/", ["./custom-agents/reviewer.md","./custom-agents/tester.md"]
skills Path Or Paths

Additional skill directory paths, relative to the plugin root starting with ./. These supplement the default skills/ directory. Paths should point to directories containing SKILL.md files.

Examples: "./custom/skills/"
hooks string | string[] | Hooks

Hook configuration — either paths to JSON config files or inline hook definitions. Custom paths supplement hooks/hooks.json (the default location). Inline definitions map event names to arrays of matcher groups.

Examples: "./config/hooks.json", ["./hooks/security-hooks.json","./hooks/format-hooks.json"]
mcpServers string | string[] | object

MCP server configuration — either paths to JSON config files or inline server definitions. Custom paths supplement .mcp.json (the default location). Inline definitions map server names to their transport configuration. MCP servers start automatically when the plugin is enabled. Use ${CLAUDE_PLUGIN_ROOT} for plugin-relative paths.

Examples: "./mcp-config.json", {"plugin-db":{"command":"${CLAUDE_PLUGIN_ROOT}/servers/db-server","args":["--config","${CLAUDE_PLUGIN_ROOT}/config.json"]}}
outputStyles Path Or Paths

Additional output style files or directories, relative to the plugin root starting with ./.

Examples: "./styles/"
lspServers string | string[] | object

LSP server configuration — either paths to JSON config files or inline server definitions. Custom paths supplement .lsp.json (the default location). LSP integration provides real-time code intelligence: diagnostics, go to definition, find references, and hover information. Users must install the language server binary separately.

Examples: "./.lsp.json", {"go":{"command":"gopls","args":["serve"],"extensionToLanguage":{".go":"go"}}}