This skill should be used when the user asks to "create a bundle", "make a plugin", "build a Claude plugin", "create a skill bundle", "package skills", "add skills to a bundle", "create plugin.json", or wants to create comprehensive Claude Code plugins with skills, commands, agents, hooks, or MCP servers. Activates when creating plugin structures or bundling Claude capabilities.
Creates comprehensive Claude Code plugin bundles with skills, commands, agents, hooks, and MCP servers.
npx claudepluginhub karchtho/my-claude-marketplaceThis skill inherits all available tools. When active, it can use any tool Claude has access to.
examples/complete-bundle/MCP-README.mdexamples/complete-bundle/commands/example-command.mdexamples/complete-bundle/skills/advanced-skill/examples/basic-usage.shexamples/complete-bundle/skills/advanced-skill/references/detailed-patterns.mdreferences/commands-guide.mdreferences/mcp-integration-guide.mdreferences/skill-creation-guide.mdscripts/README.mdscripts/add-mcp-to-bundle.shscripts/add-skill-to-bundle.shscripts/create-bundle.shscripts/validate-bundle.shThis skill guides the creation of comprehensive Claude Code plugin bundles that can include skills, commands, agents, hooks, and MCP server integrations.
Bundles (Plugins) are semantic packages of Claude capabilities organized by context or domain. A bundle can contain:
/prefab, /commit)Bundles enable context-switching between different development environments and expertise domains.
Every bundle follows this structure:
bundle-name/
├── .claude-plugin/
│ └── plugin.json # Bundle manifest (required)
├── skills/ # Skill packages (optional)
│ └── skill-name/
│ ├── SKILL.md # Required for each skill
│ ├── references/ # Detailed docs (optional)
│ ├── examples/ # Working examples (optional)
│ └── scripts/ # Utilities (optional)
├── commands/ # Command implementations (optional)
│ └── command-name.md
├── agents/ # Agent implementations (optional)
│ └── agent-name.md
├── hooks/ # Hook scripts (optional)
│ └── hooks.json
└── mcp/ # MCP server configs (optional)
└── server-config.json
IMPORTANT: Gather ALL identifiers and metadata BEFORE creating any files or directories. NEVER use placeholders.
Before creating a bundle, collect the following information from the user:
Required Information:
Optional Information: 7. Version number - Semantic version (default: "1.0.0" if not specified) 8. Tags - Metadata tags for categorization (if using extended format) 9. Category - Bundle category (if using extended format)
Detection Strategy for Marketplace Location:
# Try to detect marketplace root from git repository
# Look for .claude-plugin/marketplace.json or bundles/ directory
# If not found, ask user for marketplace location
Example information gathering:
Ask the user:
Do NOT proceed to Step 1 until ALL required information is collected.
Based on the information gathered in Step 0, identify:
Example clarifying questions:
Using the ACTUAL bundle name and marketplace location from Step 0:
# Navigate to marketplace bundles directory (detected or provided by user)
cd <marketplace-path>/bundles/
# Create bundle structure using ACTUAL bundle name
mkdir -p <actual-bundle-name>/.claude-plugin
mkdir -p <actual-bundle-name>/skills # If including skills
mkdir -p <actual-bundle-name>/commands # If including commands
mkdir -p <actual-bundle-name>/agents # If including agents
mkdir -p <actual-bundle-name>/hooks # If including hooks
mkdir -p <actual-bundle-name>/mcp # If including MCP servers
Example with actual values:
cd /path/to/my-marketplace/bundles/
mkdir -p react-frontend-bundle/{.claude-plugin,skills,commands}
Create only the directories needed for the bundle's components.
Create .claude-plugin/plugin.json using ACTUAL metadata from Step 0:
Simple format (skills only):
{
"name": "<actual-bundle-name>",
"version": "<actual-version>",
"description": "<actual-description>",
"author": {
"name": "<actual-author-name>",
"email": "<actual-author-email>"
},
"skills": [
"./skills/<actual-skill-name>"
]
}
Example with actual values:
{
"name": "react-frontend-bundle",
"version": "1.0.0",
"description": "Complete React development toolkit with UI/UX design principles",
"author": {
"name": "John Doe",
"email": "john.doe@example.com"
},
"skills": [
"./skills/react-patterns",
"./skills/ui-ux-design"
]
}
Extended format (all components):
{
"name": "bundle-name",
"version": "1.0.0",
"description": "Comprehensive description",
"author": {
"name": "Your Name",
"email": "your.email@example.com"
},
"components": {
"skills": ["skills/skill-name"],
"commands": ["commands/command-name"],
"agents": ["agents/agent-name"],
"hooks": ["hooks/hooks.json"],
"mcp": ["mcp/server-config.json"]
},
"metadata": {
"tags": ["tag1", "tag2"],
"category": "development-category"
}
}
Depending on the bundle's purpose, add the appropriate components:
For each skill in the bundle, create the skill structure and SKILL.md. See references/skill-creation-guide.md for comprehensive skill development process.
Quick skill creation (using actual values):
cd <marketplace-path>/bundles/<actual-bundle-name>/skills
mkdir -p <actual-skill-name>/{references,examples,scripts}
touch <actual-skill-name>/SKILL.md
Example with actual values:
cd /path/to/my-marketplace/bundles/react-frontend-bundle/skills
mkdir -p react-patterns/{references,examples,scripts}
touch react-patterns/SKILL.md
Each SKILL.md must have:
name and description (with trigger phrases)For detailed skill creation methodology, consult references/skill-creation-guide.md which includes the complete skill-creator workflow.
Commands are CLI-like utilities for specialized workflows (e.g., /session-start, /commit, /test-debug).
CRITICAL: Command Creation Requirements
Follow references/commands-guide.md STRICTLY. Commands must:
ls -t | head)allowed-tools in frontmatter explicitly@ file references (e.g., @CLAUDE.md) instead of bash to locate filesCommand Structure:
commands/
├── command-1.md # One command per file
├── command-2.md
└── command-3.md
Each command file must have YAML frontmatter:
---
name: kebab-case-name
description: Keywords and description users would search for
allowed-tools: Bash(git:*), Read, Glob # Explicit declarations
---
See references/commands-guide.md for complete patterns, examples, and validation checklist.
Agents are autonomous assistants for complex tasks. See references/agents-guide.md for agent creation patterns.
Hooks enable event-driven automation. See references/hooks-guide.md for hook implementation patterns.
MCP servers integrate external tools like Figma, GitHub, and databases into your bundle. Use when your bundle needs access to design systems, code repositories, or external APIs.
Information to gather:
.mcp.json file or inline in plugin.jsonQuick MCP creation (no placeholders):
Use the automation script to add MCP servers interactively:
scripts/add-mcp-to-bundle.sh <bundle-path> <server-name> <transport-type>
Example: Add Figma to Angular bundle
scripts/add-mcp-to-bundle.sh bundles/angular-bundle figma http
# Prompts: URL → https://api.figma.com/v1/mcp/
# Need auth? → yes
# Token variable name? → FIGMA_ACCESS_TOKEN
Configuration Option A: Separate .mcp.json (recommended for multiple servers)
Best for bundles with 2+ MCP servers or complex setups:
{
"mcpServers": {
"figma": {
"type": "http",
"url": "https://api.figma.com/v1/mcp/",
"headers": {"Authorization": "Bearer ${FIGMA_ACCESS_TOKEN}"}
},
"database": {
"type": "stdio",
"command": "${CLAUDE_PLUGIN_ROOT}/servers/db-mcp",
"env": {"DB_PASSWORD": "${DB_PASSWORD}"}
}
}
}
Configuration Option B: Inline in plugin.json (recommended for single server)
Best for bundles with one MCP server:
{
"name": "my-bundle",
"mcpServers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/",
"headers": {"Authorization": "Bearer ${GITHUB_TOKEN}"}
}
}
}
Authentication patterns:
Use environment variables to store secrets—never hardcode credentials:
{
"figma": {
"headers": {"Authorization": "Bearer ${FIGMA_ACCESS_TOKEN}"}
}
}
User sets token before using:
export FIGMA_ACCESS_TOKEN="your-token-here"
See references/mcp-integration-guide.md for:
Add the bundle to the marketplace configuration file using ACTUAL values from Step 0.
Locate marketplace config:
# Marketplace config is typically at the root of your marketplace repository
# Look for: .claude-plugin/marketplace.json
# Or ask user for marketplace config location
Add bundle entry using actual values:
{
"plugins": [
{
"name": "<actual-bundle-name>",
"source": "./bundles/<actual-bundle-name>",
"description": "<actual-description>"
}
]
}
Example with actual values:
{
"plugins": [
{
"name": "react-frontend-bundle",
"source": "./bundles/react-frontend-bundle",
"description": "Complete React development toolkit with UI/UX design principles"
}
]
}
Location detection strategy:
# If in git repo with .claude-plugin/marketplace.json:
find . -name "marketplace.json" -path "*/.claude-plugin/*"
# If not found, ask user:
# "Where is your marketplace.json file located?"
Install the bundle locally using ACTUAL values:
/plugin install <actual-bundle-name>@<actual-marketplace-name>
Example with actual values:
/plugin install react-frontend-bundle@my-claude-marketplace
If you don't know the marketplace name:
# Check marketplace.json for the "name" field
grep '"name"' <marketplace-path>/.claude-plugin/marketplace.json
Test that:
After testing, refine the bundle:
Group capabilities by development context, not by component type:
Good:
react-frontend-bundle - React patterns + UI/UX designunity-game-dev-bundle - Unity scripting + performance + architecturedevops-toolkit-bundle - Deployment + monitoring + infrastructureBad:
all-skills-bundle - Random collection of unrelated skillsgeneral-purpose-bundle - No clear context or themeStart simple, add complexity as needed:
Not every bundle needs all components. Start with what provides immediate value.
Design skills to be reusable across bundles:
ui-ux-design skill can be used in React, Angular, Vue bundlesdatabase-design skill can be used in backend bundlestesting-patterns skill can be used in any development bundleReference the same skill from multiple plugin.json files to avoid duplication.
Keep SKILL.md lean (1,500-2,000 words), move details to references/:
skill-name/
├── SKILL.md # 1,800 words - core essentials
└── references/
├── patterns.md # 2,500 words - detailed patterns
├── advanced.md # 3,700 words - advanced techniques
└── migration-guide.md # 1,200 words - migration strategies
Claude loads references only when needed, minimizing context bloat.
If your bundle includes commands, follow these CRITICAL principles to ensure reliability:
1. Use Simple Bash Commands Only
find ... -exec, ls -t | head, or similar patterns✅ Good:
Current branch: !`git branch --show-current`
Git status: !`git status --short`
❌ Bad:
Latest: !`ls -t docs/*.md | head -1` # This breaks!
2. Always Declare allowed-tools
---
name: my-command
allowed-tools: Bash(git:*), Bash(npm:*), Read, Glob
---
3. Use File References Instead of Bash
@ prefix✅ Good:
See @CLAUDE.md for project guidelines.
❌ Bad:
Guidelines: !`cat CLAUDE.md | head -50`
4. Keep Instructions Concise
Complex bash commands (with pipes, find -exec, etc.) trigger Claude Code permission checks and cause runtime failures. Simple, focused commands execute reliably and load context effectively.
See references/commands-guide.md for complete patterns, examples, and a validation checklist.
This bundle-maker skill complements existing skill-creation guidance:
Located at: ~/.claude/plugins/marketplaces/anthropic-agent-skills/skills/skill-creator
Provides:
scripts/init_skill.py - Initialize standalone skill structurescripts/package_skill.py - Package skills into .skill ZIP filesUse when: Creating standalone skills for distribution outside of plugin bundles
Located at: ~/.claude/plugins/marketplaces/claude-plugins-official/plugins/plugin-dev/skills/skill-development
Provides:
Use when: Creating skills within Claude Code plugin bundles
Provides:
Use when: Creating comprehensive Claude Code plugin bundles with multiple components
The bundle-maker skill includes utility scripts for common operations:
scripts/create-bundle.shCreates a new bundle directory structure with plugin.json template
scripts/create-bundle.sh <bundle-name> [--with-all]
scripts/add-skill-to-bundle.shAdds a skill structure to an existing bundle
scripts/add-skill-to-bundle.sh <bundle-path> <skill-name>
scripts/validate-bundle.shValidates bundle structure and plugin.json format
scripts/validate-bundle.sh <bundle-path>
See scripts/README.md for complete script documentation.
For detailed guidance on each component type:
references/skill-creation-guide.md - Complete skill creation workflow (based on skill-creator)references/commands-guide.md - Command development patterns (future)references/agents-guide.md - Agent implementation patterns (future)references/hooks-guide.md - Hook automation patterns (future)references/mcp-integration-guide.md - MCP server integration (future)references/bundle-templates.md - Ready-to-use bundle templatesWorking bundle examples in examples/:
examples/minimal-bundle/ - Simplest bundle structure (skills only)examples/complete-bundle/ - Full bundle with all component typesexamples/react-frontend-bundle/ - Real-world React development bundlebundle-name/
├── .claude-plugin/
│ └── plugin.json
└── skills/
└── skill-name/
└── SKILL.md
bundle-name/
├── .claude-plugin/
│ └── plugin.json
├── skills/
│ ├── skill-1/
│ └── skill-2/
└── README.md
bundle-name/
├── .claude-plugin/
│ └── plugin.json
├── skills/
├── commands/
├── agents/
├── hooks/
└── mcp/
Create bundles that provide focused, context-specific capabilities that truly enhance Claude's effectiveness in specific development domains.
Activates 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.