Complete Claude Code plugin development system. PROACTIVELY activate when users want to: (1) Create/build/make plugins with 2025 features (2) Add skills/commands/agents to plugins (3) Package existing code as plugins (4) Publish plugins to marketplace (5) Validate plugin structure (6) Get plugin development guidance Autonomously creates production-ready plugins with proper structure and best practices.
/plugin marketplace add JosiahSiegel/claude-plugin-marketplace/plugin install plugin-master@claude-plugin-marketplaceThis skill inherits all available tools. When active, it can use any tool Claude has access to.
examples/full-plugin.mdexamples/minimal-plugin.mdreferences/component-patterns.mdreferences/manifest-reference.mdreferences/publishing-guide.md| Component | Location | Required |
|---|---|---|
| Plugin manifest | .claude-plugin/plugin.json | Yes |
| Commands | commands/*.md | No (auto-discovered) |
| Agents | agents/*.md | No (auto-discovered) |
| Skills | skills/*/SKILL.md | No (auto-discovered) |
| Hooks | hooks/hooks.json | No |
| MCP Servers | .mcp.json | No |
| Task | Action |
|---|---|
| Create plugin | Ask: "Create a plugin for X" |
| Validate plugin | Run: /validate-plugin |
| Install from marketplace | /plugin marketplace add user/repo then /plugin install name@user |
plugin-name/
├── .claude-plugin/
│ └── plugin.json # MUST be inside .claude-plugin/
├── agents/
│ └── domain-expert.md
├── commands/
├── skills/
│ └── skill-name/
│ ├── SKILL.md
│ ├── references/
│ └── examples/
└── README.md
{
"name": "plugin-name",
"version": "1.0.0",
"description": "Complete [domain] expertise. PROACTIVELY activate for: (1) ...",
"author": {
"name": "Author Name",
"email": "email@example.com"
},
"license": "MIT",
"keywords": ["keyword1", "keyword2"]
}
Validation Rules:
author MUST be an object { "name": "..." } - NOT a stringversion MUST be a string "1.0.0" - NOT a numberkeywords MUST be an array ["word1", "word2"] - NOT a stringagents, skills, slashCommands - these are auto-discoveredALL markdown files in agents/, commands/, skills/ MUST begin with frontmatter:
---
description: Brief description of what this component does
---
# Content...
Without frontmatter, components will NOT load.
{domain}-expertNaming Standard:
docker-master → agent named docker-expertterraform-master → agent named terraform-expertSkills use three-tier loading:
This enables unbounded capacity without context bloat.
Before creating files, check:
# Check if in marketplace repo
if [[ -f .claude-plugin/marketplace.json ]]; then
PLUGIN_DIR="plugins/PLUGIN_NAME"
else
PLUGIN_DIR="PLUGIN_NAME"
fi
# Get author from git config
AUTHOR_NAME=$(git config user.name)
AUTHOR_EMAIL=$(git config user.email)
mkdir -p $PLUGIN_DIR/.claude-plugin
mkdir -p $PLUGIN_DIR/agents
mkdir -p $PLUGIN_DIR/skills/domain-knowledge
CRITICAL: If .claude-plugin/marketplace.json exists at repo root, you MUST add the plugin:
{
"plugins": [
{
"name": "plugin-name",
"source": "./plugins/plugin-name",
"description": "Same as plugin.json description",
"version": "1.0.0",
"author": { "name": "Author" },
"keywords": ["same", "as", "plugin.json"]
}
]
}
User-initiated slash commands in commands/*.md:
---
description: What this command does
---
# Command Name
Instructions for Claude to execute...
Autonomous subagents in agents/*.md:
---
name: agent-name
description: |
Use this agent when... Examples:
<example>
Context: ...
user: "..."
assistant: "..."
<commentary>Why trigger</commentary>
</example>
model: inherit
color: blue
---
System prompt for agent...
Dynamic knowledge in skills/skill-name/SKILL.md:
---
name: skill-name
description: When to use this skill...
---
# Skill content with progressive disclosure...
Event automation in hooks/hooks.json:
{
"PostToolUse": [{
"matcher": "Write|Edit",
"hooks": [{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/scripts/lint.sh"
}]
}]
}
Events: PreToolUse, PostToolUse, SessionStart, SessionEnd, UserPromptSubmit, PreCompact, Notification, Stop, SubagentStop
kebab-case (e.g., code-review-helper)review-pr, run-tests)code-reviewer, test-generator)api-design, error-handling)Use ${CLAUDE_PLUGIN_ROOT} for all internal paths:
"command": "${CLAUDE_PLUGIN_ROOT}/scripts/run.sh"
Never use hardcoded absolute paths.
$MSYSTEM, use GitHub method| Issue | Solution |
|---|---|
| Plugin not loading | Check plugin.json is in .claude-plugin/ |
| Commands missing | Verify frontmatter has description field |
| Agent not triggering | Add <example> blocks to description |
| Marketplace not found | Ensure repo is public, check path in marketplace.json |
For detailed information, see:
references/manifest-reference.md - Complete plugin.json fieldsreferences/component-patterns.md - Advanced component patternsreferences/publishing-guide.md - Marketplace publishing detailsexamples/minimal-plugin.md - Simplest working pluginexamples/full-plugin.md - Complete plugin with all featuresCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
This skill should be used when the user asks to "create a hookify rule", "write a hook rule", "configure hookify", "add a hookify rule", or needs guidance on hookify rule syntax and patterns.
This skill should be used when the user asks to "create an agent", "add an agent", "write a subagent", "agent frontmatter", "when to use description", "agent examples", "agent tools", "agent colors", "autonomous agent", or needs guidance on agent structure, system prompts, triggering conditions, or agent development best practices for Claude Code plugins.