← ClaudeAtlas

plugin-builderlisted

Use when the user asks to build, create, or modify a Claude Code plugin. Trigger on: "build a plugin", "create a plugin", "add a command", "add a skill", "add an agent", "add a hook", "plugin structure", or when the user wants to extend any plugin with new components. Also trigger when troubleshooting plugin loading, skill discovery, or hook configuration within a plugin context.
petermcalister/shared-skills · ★ 2 · Web & Frontend · score 68
Install: claude install-skill petermcalister/shared-skills
# Plugin Builder Build well-structured Claude Code plugins that match proven patterns. ## Before You Start If you're in a repo with an existing plugin (look for `.claude-plugin/plugin.json`, or a `plugins/<name>/` directory), read it first and match its conventions — an existing plugin is the best reference implementation to follow. ## Plugin Skeleton ``` plugin-name/ ├── .claude-plugin/ │ └── plugin.json # ONLY this file goes here ├── commands/ # User-invoked slash commands ├── skills/ # Auto-activating knowledge │ └── skill-name/ │ └── SKILL.md ├── references/ # Shared guides (prefer this over per-skill refs/) ├── agents/ # Autonomous subagents ├── hooks/ │ └── hooks.json # Event-driven automation ├── .mcp.json # External tool connections └── README.md ``` Nothing goes inside `.claude-plugin/` except `plugin.json`. This is the one rule that causes the most confusion — commands, skills, agents all live at the plugin root. ## plugin.json ```json { "name": "plugin-name", "version": "1.0.0", "description": "One sentence: what this plugin does", "author": { "name": "Your Name" } } ``` `name` becomes the namespace — skills appear as `/plugin-name:skill-name`. ## Deciding What to Build | User wants... | Build a... | |--------------|------------| | A `/slash-command` they type | **Command** (`commands/name.md`) | | Claude to automatically apply knowledge | **Skill** (`skills/na