Files
gh-obra-superpowers-develop…/skills/developing-claude-code-plugins/references/common-patterns.md
2025-11-30 08:44:51 +08:00

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 code
  • SessionStart → Load project context
  • UserPromptSubmit → Enforce conventions
  • PreCompact → 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.


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.