plugin-creation
This skill contains shell command directives (!`command`) that may execute system commands. Review carefully before installing.
Plugin Creation
Create complete Claude Code plugins with any combination of components.
When to Use
- "Create a plugin" / "Make a new plugin"
- "Add a skill" / "Create command" / "Make agent"
- "Add hooks" / "Setup MCP server"
- "Configure settings" / "Setup output directory"
- "Package for marketplace"
- NOT for: Using existing plugins (see /plugin command)
Quick Reference
| Component | Location | Invocation | Best For |
|---|---|---|---|
| Skills | skills/name/SKILL.md |
Model-invoked (auto) | Complex workflows with resources |
| Commands | commands/name.md |
User (/command) |
Quick, frequently used prompts |
| Agents | agents/name.md |
Auto + Manual | Task-specific expertise |
| Hooks | hooks/hooks.json |
Event-triggered | Automation and validation |
| MCP | .mcp.json |
Auto startup | External tool integration |
Before Creating
- Read
references/01-overview/component-comparison.mdto decide which components needed - Determine if this should be a new plugin or add to existing
Plugin Project Setup
When creating any plugin, also consider:
.claude/rules/with modular project rules (path-scoped if needed for different component directories)CLAUDE.mdat plugin root for project conventions- README.md and CHANGELOG.md at plugin root (for humans — never inside skill directories)
Documentation Principles
All plugin documentation should follow lean principles:
- Current truth only — no historical narratives or "previously we did X"
- Replace, don't append — superseded content gets replaced entirely
- Delete what's irrelevant — every edit is a chance to prune
- Read
references/02-philosophy/core-philosophy.mdfor full philosophy
Plugin Initialization
When user says "create plugin", "initialize plugin", "new plugin":
Option A - Use init script:
python scripts/init_plugin.py my-plugin --path ./plugins --components skill,command,hook
Option B - Manual creation:
-
Create plugin directory structure:
plugin-name/ ├── .claude-plugin/ │ └── plugin.json ├── commands/ # if needed ├── agents/ # if needed ├── skills/ # if needed │ └── skill-name/ │ └── SKILL.md ├── hooks/ # if needed │ └── hooks.json └── .mcp.json # if needed -
Copy template from
templates/plugin.json.template -
Ask user which components they need
Creating Skills
When user says "add skill", "create skill", "make skill":
- Read
references/03-skills/writing-skillmd.mdfor structure - Copy template from
templates/skill/SKILL.md.template - Key requirements:
- Name: lowercase, hyphens, max 64 chars
- Description: WHAT it does + WHEN to use it, max 1024 chars, third person
- Body: imperative instructions, under 500 lines
- Use progressive disclosure - reference files for details
Critical: SKILL.md files are INSTRUCTIONS for Claude, not documentation. Write imperatives telling Claude what to do.
| Documentation (WRONG) | Instructions (CORRECT) |
|---|---|
| "This skill helps with PDF processing" | "Process PDF files using this workflow" |
| "The description field is important" | "Write the description starting with 'Use when...'" |
Consider these optional frontmatter fields:
model: haikufor simple lookup/formatting skills,opusfor complex reasoningcontext: forkwithagent: <type>for heavy operations that would pollute main contextdisable-model-invocation: truefor command-only skills (no auto-trigger)user-invocable: falseto hide from/menu (Claude can still invoke via Skill tool)
Dynamic context injection: Use !`command` in the skill body to inject runtime state (git status, file contents, etc.) when the skill loads.
Extended thinking: Include "ultrathink" in the skill body for tasks requiring deep reasoning.
Creating Commands
When user says "add command", "create command", "slash command":
- Read
references/04-commands/writing-commands.md - Copy template from
templates/command/command.md.template - Key requirements:
- Frontmatter: description, allowed-tools, argument-hint
- Support
$ARGUMENTS,$1,$2for arguments - Prefix lines with exclamation mark for bash execution
- Prefix lines with at-sign for file references
Creating Agents
When user says "add agent", "create agent", "make agent":
- Read
references/05-agents/writing-agents.md - Copy template from
templates/agent/agent.md.template - Key requirements:
- Frontmatter: name, description, tools, model, permissionMode
- Description should include "Use proactively" for auto-delegation
- One agent = one clear responsibility
Consider these agent-specific features:
memory: projectfor agents that benefit from cross-session learning (architecture decisions, code review patterns)memory: userfor personal preferences that carry across projectsmodel:matched to task complexity —haikufor lookup/formatting,sonnetfor balanced tasks,opusfor complex reasoningtoolsrestriction to minimum needed (reduces cost and attack surface)disallowedToolsto block specific tools (e.g.,Edit,Writefor read-only agents)hooksin agent frontmatter for scoped validation (runs only when that agent is active)
Agent teams: For tasks benefiting from multiple perspectives or parallel research, consider agent teams (competing perspectives, hypothesis investigation, parallel tasks). See references/05-agents/agent-patterns.md for team patterns. Requires CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1.
Creating Hooks
When user says "add hooks", "setup hooks", "event handlers":
- Read
references/06-hooks/writing-hooks.md - Read
references/06-hooks/hook-events.mdfor all 14 events - Copy template from
templates/hooks/hooks.json.template - Key events:
PreToolUse- before tool execution (can block)PostToolUse- after tool execution (formatting, logging)SessionStart- setup, output directoriesSessionEnd- cleanupUserPromptSubmit- validation, context injection (can block)SubagentStart/SubagentStop- agent lifecyclePreCompact- inject context before compactionNotification,Stop,TaskCompleted,TeammateIdle
Three handler types — choose the right one:
command— shell script, fastest, no LLM cost. Use for logging, file ops, env setup.prompt— single-turn LLM evaluation, zero script overhead. Use for lightweight validation.agent— multi-turn subagent with tools (Read, Grep, Glob). Use for complex verification.
Async execution: Add "async": true on command hooks for background operations (logging, analytics) that shouldn't block the main flow.
MCP tool matching: Use mcp__<server>__<tool> pattern in matchers for PreToolUse/PostToolUse.
Configuring Plugin
When user says "configure plugin", "setup plugin.json":
- Read
references/08-configuration/plugin-json.mdfor full schema - Required fields:
name - Recommended fields:
version,description,author,license - Component paths:
commands,agents,hooks,mcpServers
Settings and Output
When user says "configure settings", "setup output", "output directory":
- Read
references/08-configuration/settings.mdfor settings hierarchy - Read
references/08-configuration/output-config.mdfor output patterns - Key environment variables:
${CLAUDE_PLUGIN_ROOT}- plugin installation directory${CLAUDE_PROJECT_DIR}- project root${CLAUDE_ENV_FILE}- persistent env vars (SessionStart only)
- Use SessionStart hook to create output directories
Testing Plugin
When user says "test plugin", "validate plugin":
- Read
references/09-testing/testing.md - Run
claude --debugto see plugin loading - Validate plugin.json syntax
- Test each component:
- Skills: Ask questions matching description
- Commands: Run
/command-name - Agents: Check
/agentslisting - Hooks: Trigger events manually
Packaging for Marketplace
When user says "package plugin", "publish plugin", "marketplace":
- Read
references/10-distribution/packaging.md - Create
marketplace.jsonin repository root - Update README with installation instructions
- Version using semantic versioning (MAJOR.MINOR.PATCH)
Decision Framework
Before creating a component, verify it's the right choice:
| Component | Use When |
|---|---|
| Skill | Complex workflow, needs resources, auto-triggered by context |
| Command | User should trigger explicitly, quick one-off prompts |
| Agent | Specialized expertise, own context window, proactive delegation |
| Hook | Event-based automation, validation, logging |
| MCP | External API/service, custom tools, database access |
The 5-10 Rule: Done 5+ times? Will do 10+ more? Create a skill or command.
References
Overview
references/01-overview/what-are-plugins.md- Plugin overviewreferences/01-overview/what-are-skills.md- Skills overviewreferences/01-overview/what-are-commands.md- Commands overviewreferences/01-overview/what-are-agents.md- Agents overviewreferences/01-overview/what-are-hooks.md- Hooks overviewreferences/01-overview/what-are-mcp.md- MCP overviewreferences/01-overview/component-comparison.md- When to use what
Philosophy
references/02-philosophy/core-philosophy.md- Design principlesreferences/02-philosophy/decision-frameworks.md- Decision treesreferences/02-philosophy/anti-patterns.md- What to avoid
Components
references/03-skills/anthropic-skill-standards.md- Official Anthropic skill standards and checklistreferences/03-skills/skill-patterns.md- Five skill patterns (Sequential, Multi-MCP, Iterative, Context-Aware, Domain-Specific)references/03-skills/- Skill creation guidesreferences/04-commands/- Command creation guidesreferences/05-agents/- Agent creation guidesreferences/06-hooks/- Hook creation guidesreferences/06-hooks/cross-platform-hooks.md- Windows/macOS/Linux supportreferences/07-mcp/- MCP overview
Configuration
references/08-configuration/plugin-json.md- Plugin manifestreferences/08-configuration/marketplace-json.md- Marketplace configreferences/08-configuration/settings.md- Settings hierarchyreferences/08-configuration/output-config.md- Output configuration
Testing & Distribution
references/09-testing/testing.md- Testing guide (all components)references/09-testing/debugging.md- Debugging guidereferences/09-testing/cli-reference.md- CLI commands referencereferences/10-distribution/packaging.md- Packaging guidereferences/10-distribution/marketplace.md- Marketplace guidereferences/10-distribution/versioning.md- Version strategyreferences/10-distribution/complete-examples.md- Full plugin examples
Examples
Working example plugins in examples/:
examples/simple-greeter-plugin/- Minimal plugin with one skillexamples/full-featured-plugin/- Complete plugin with skill, commands, hooks
Templates
All templates are in the templates/ directory:
templates/skill/SKILL.md.templatetemplates/command/command.md.templatetemplates/agent/agent.md.templatetemplates/hooks/hooks.json.templatetemplates/hooks/run-hook.cmd.template- Cross-platform hook wrappertemplates/plugin.json.templatetemplates/marketplace.json.templatetemplates/settings.json.templatetemplates/mcp.json.template
Scripts
scripts/init_plugin.py- Initialize new plugin with selected componentsscripts/init_skill.py- Initialize standalone skillscripts/validate_skill.py- Validate skill structurescripts/package_skill.py- Package skill for distribution
More from camoa/claude-skills
html-generator
Use when generating branded HTML pages and components from a design system. Creates standalone HTML components and composes them into full pages with embedded CSS, responsive design, and brand integration.
43memory-manager
Use after completing any phase activity - updates project_state.md, project registry, ensures files are in correct locations, maintains lean memory
39diagram-generator
Use when visualizing architecture - generates Mermaid diagrams for data flow, service relationships, or entity structures. Trigger: 'draw diagram', 'visualize', 'show relationships', 'mermaid chart'.
30code-quality-audit
Use when checking code quality, running security audits, testing coverage, finding SOLID/DRY violations, or setting up quality tools. Use when user says "audit this code", "check security", "run PHPStan", "code quality", "find violations", "SOLID check", "DRY check", "test coverage", "lint this", "security review", "is this production ready", "check for vulnerabilities", "code review", "grade this code". Supports Drupal (PHPStan, PHPMD, Psalm, Semgrep, Trivy, Gitleaks via DDEV) and Next.js (ESLint, Jest, Semgrep, Trivy, Gitleaks). Use proactively before deployment or after significant code changes.
20requirements-gatherer
Use when gathering project requirements - asks structured questions about project type, scope, integrations, and constraints to populate project_state.md
17generating-infographics
Use when creating infographics, data visualizations, process diagrams, timelines, or comparisons - generates branded infographics using @antv/infographic with 114 templates across 7 categories. Triggers on "create infographic", "make infographic", "visualize data", "timeline", "process diagram".
17