Create and maintain Claude Code plugins. Use when editing ANY file in the plugins/ directory (commands, skills, hooks, subagents, or config), bumping plugin versions, registering plugins in marketplace.json, creating or modifying subagents, or asking about plugin structure and best practices.
/plugin marketplace add tenzir/claude-plugins/plugin install tenzir-meta-plugins-meta@tenzir/claude-pluginsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
commands.mdhooks.mdreadme-template.mdskills.mdsubagents.mdThis skill provides guidance for creating and maintaining Claude Code plugins.
Before creating or modifying plugin components, use @agent-claude-code-guide
to look up best practices and understand your options.
Every plugin lives in plugins/<plugin-name>/ with this structure:
plugins/<plugin-name>/
├── .claude-plugin/
│ └── plugin.json # Plugin metadata and configuration
├── README.md # User-facing documentation (required)
├── skills/ # See [skills.md](./skills.md)
├── commands/ # See [commands.md](./commands.md)
├── hooks/ # See [hooks.md](./hooks.md)
└── agents/ # See [subagents.md](./subagents.md)
The plugin.json file defines the plugin:
{
"name": "plugin-name",
"version": "0.1.0",
"description": "Brief description of what this plugin does",
"author": {
"name": "Tenzir",
"email": "engineering@tenzir.com",
"url": "https://github.com/tenzir"
},
"homepage": "https://github.com/tenzir/claude-plugins",
"repository": "https://github.com/tenzir/claude-plugins",
"license": "Apache-2.0"
}
For MCP servers, add:
{
"mcpServers": {
"server-name": {
"command": "uvx",
"args": ["package-name"]
}
}
}
Every plugin must have a README.md. See
readme-template.md for the exact structure.
After creating a plugin, register it in .claude-plugin/marketplace.json:
{
"name": "plugin-name",
"description": "What this plugin does",
"source": "./plugins/plugin-name"
}
Note: The description must be duplicated in both plugin.json and
marketplace.json. The marketplace does not read descriptions from
plugin.json—it needs its own copy for plugin discovery.
Keep plugins sorted alphabetically by name.
Follow SemVer when updating plugins: