6.2 KiB
Common Plugin Patterns
Pattern: Simple Plugin with One Skill
Use when: Creating a focused plugin with documentation/reference material
Structure:
my-plugin/
├── .claude-plugin/
│ ├── plugin.json
│ └── marketplace.json
├── skills/
│ └── my-skill/
│ ├── SKILL.md
│ ├── scripts/ # Optional - Executable helpers
│ └── references/ # Optional - Documentation files
└── README.md
Real example: superpowers-developing-for-claude-code
- Single skill with comprehensive documentation
- Scripts for self-updating
- 40+ reference files
- No MCP servers, commands, or hooks
When to use:
- Teaching Claude about a specific topic/domain
- Providing process workflows (TDD, debugging, code review)
- Bundling documentation for easy reference
- Creating reusable knowledge bases
Pattern: MCP Plugin with Skill
Use when: Providing both a tool integration (MCP) and guidance on using it (skill)
Structure:
my-plugin/
├── .claude-plugin/
│ └── plugin.json # Includes mcpServers config
├── skills/
│ └── using-the-tools/
│ └── SKILL.md # How to use the MCP tools
├── mcp/
│ └── dist/
│ └── index.js # MCP server implementation
└── README.md
Real example: superpowers-chrome
- MCP server provides browser control tools
- Skill teaches Claude how to use those tools effectively
- Skill includes patterns, examples, workflows
When to use:
- Adding new tools/capabilities to Claude
- Integrating external APIs or services
- Tools need guidance on when/how to use them
- Want Claude to use tools idiomatically, not just technically
Key insight: MCP provides capability, skill provides judgment. The MCP server exposes click(), the skill teaches "await elements before clicking them".
Pattern: Command Collection
Use when: Providing multiple custom slash commands for common tasks
Structure:
my-plugin/
├── .claude-plugin/
│ └── plugin.json
├── commands/
│ ├── status.md
│ ├── logs.md
│ ├── deploy.md
│ └── rollback.md
└── README.md
When to use:
- Project-specific workflows (deploy, test, build)
- Common task shortcuts
- Standardized responses (greetings, status reports)
- Quick context injection
Example use cases:
/deploy-staging- Step-by-step deployment workflow/incident-report- Template for incident documentation/code-review- Checklist for reviewing PRs/security-check- Security audit workflow
Pattern: Hook-Enhanced Workflow
Use when: Automating actions in response to Claude's behavior
Structure:
my-plugin/
├── .claude-plugin/
│ └── plugin.json
├── hooks/
│ └── hooks.json
├── scripts/
│ ├── format-code.sh
│ ├── run-linter.sh
│ └── update-docs.sh
└── README.md
Common hooks:
PostToolUse[Write|Edit]→ Auto-format codeSessionStart→ Load project contextUserPromptSubmit→ Enforce conventionsPreCompact→ Save conversation summaries
When to use:
- Enforcing code style automatically
- Injecting project-specific context
- Running validations or checks
- Maintaining project conventions
Warning: Hooks that block operations can disrupt workflow. Use sparingly and make failure messages clear.
Pattern: Full-Featured Plugin
Use when: Building a comprehensive plugin with multiple integration points
Structure:
my-plugin/
├── .claude-plugin/
│ └── plugin.json
├── skills/
│ ├── main-workflow/
│ └── advanced-techniques/
├── commands/
│ ├── start.md
│ └── help.md
├── hooks/
│ └── hooks.json
├── agents/
│ └── specialist.md
├── mcp/
│ └── dist/
│ └── server.js
└── README.md
Real example: See examples/full-featured-plugin/ in this repo
When to use:
- Complete domain coverage (e.g., "the definitive AWS plugin")
- Multiple related workflows
- Tools + guidance + automation all needed
- Building a "platform" plugin
Caution: Start simple, add complexity only when justified. Most plugins don't need all components.
Pattern: Skill with Bundled Resources
Use when: A skill needs reference material, scripts, or templates
Structure:
skills/my-skill/
├── SKILL.md # Main skill instructions
├── scripts/
│ ├── helper.py # Executable utilities
│ └── generator.js
├── references/
│ ├── api-docs.md # Documentation to load
│ ├── examples.md
│ └── cheatsheet.md
└── assets/
├── template.txt # Files for output
└── config-example.json
How resources are used:
- SKILL.md tells Claude to "read references/api-docs.md for complete API reference"
- Scripts can be executed via Bash tool
- Assets can be copied/modified for output
- References are loaded into context when skill is invoked
When to use:
- Skill needs detailed technical reference
- Want to separate workflow (SKILL.md) from reference (docs)
- Need executable helpers
- Providing templates or examples
Choosing the Right Pattern
| Your Goal | Use This Pattern |
|---|---|
| Teach Claude a process/workflow | Simple Plugin with One Skill |
| Add new tools + guidance | MCP Plugin with Skill |
| Provide project shortcuts | Command Collection |
| Enforce conventions automatically | Hook-Enhanced Workflow |
| Comprehensive domain coverage | Full-Featured Plugin |
| Skill needs reference docs | Skill with Bundled Resources |
Combining Patterns
Patterns are composable:
Example: "superpowers" plugin
- Multiple skills (brainstorming, TDD, debugging) ← Skill collection
- Each skill has references/ ← Bundled resources
- Could add hooks for enforcement ← Add hooks pattern
- Could add MCP for new tools ← Add MCP pattern
Start simple, grow intentionally. Add components when you have a clear reason, not because they exist.