A plugin is a self-contained directory under plugins/<plugin-name>/. Supported tools auto-discover components from their default locations, with plugin.json providing metadata and optional path overrides.
plugins/
<plugin-name>/
.claude-plugin/
plugin.json # Claude Code plugin manifest
.cursor-plugin/
plugin.json # Cursor plugin manifest
skills/ # skills as <name>/SKILL.md directories
commands/ # skills as flat .md files (use skills/ for new plugins)
agents/ # custom agent definitions
hooks/
hooks.json # event handlers
.mcp.json # MCP server configurations
.lsp.json # LSP server configurations for code intelligence
bin/ # executables added to the Bash tool's PATH
settings.json # default settings applied when the plugin is enabledBoth .claude-plugin/plugin.json and .cursor-plugin/plugin.json use the same format. Required fields: name, description. Optional: version, homepage, repository, license, keywords, userConfig, and component path overrides. See the Claude plugins reference and Cursor plugins reference for full schema details.
VS Code & GitHub Copilot CLI share the
.claude-plugin/plugin.jsonmanifest — no separate manifest file is needed for those tools.
.claude-plugin/marketplace.json and .cursor-plugin/marketplace.json are maintained manually.
- New plugin: add an entry to the
pluginsarray in both files withname,source(e.g."./plugins/<plugin-name>"),description,category, andkeywords.
See the plugin marketplaces reference for the full marketplace.json schema.
The site at docs/index.html is generated from .claude-plugin/marketplace.json. To build locally:
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
python scripts/build_site.pyOpen docs/index.html in a browser to preview. The script runs automatically on push via the Build site GitHub Actions workflow whenever anything under plugins/ or scripts/build_site.py changes, and any updates to docs/index.html are committed back automatically.
- Plugin placed under
plugins/<plugin-name>/with.claude-plugin/plugin.jsonand.cursor-plugin/plugin.json - New plugin added to
.claude-plugin/marketplace.jsonand.cursor-plugin/marketplace.json -
versionin.claude-plugin/plugin.jsonis set and up to date -
build_site.pyrun locally (or let CI handle it on merge)