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.
Builds production-ready Claude plugins with auto-discovered agents, commands, and skills.
npx claudepluginhub josiahsiegel/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 featuresActivates when the user asks about AI prompts, needs prompt templates, wants to search for prompts, or mentions prompts.chat. Use for discovering, retrieving, and improving prompts.
Search, retrieve, and install Agent Skills from the prompts.chat registry using MCP tools. Use when the user asks to find skills, browse skill catalogs, install a skill for Claude, or extend Claude's capabilities with reusable AI agent components.
Expert guidance for Next.js Cache Components and Partial Prerendering (PPR). **PROACTIVE ACTIVATION**: Use this skill automatically when working in Next.js projects that have `cacheComponents: true` in their next.config.ts/next.config.js. When this config is detected, proactively apply Cache Components patterns and best practices to all React Server Component implementations. **DETECTION**: At the start of a session in a Next.js project, check for `cacheComponents: true` in next.config. If enabled, this skill's patterns should guide all component authoring, data fetching, and caching decisions. **USE CASES**: Implementing 'use cache' directive, configuring cache lifetimes with cacheLife(), tagging cached data with cacheTag(), invalidating caches with updateTag()/revalidateTag(), optimizing static vs dynamic content boundaries, debugging cache issues, and reviewing Cache Component implementations.