| name | plugin-master |
| description | Complete Claude Code plugin development system. PROACTIVELY activate when users want to: (1) Create/build/make plugins, (2) Add/create skills/commands/agents, (3) Package existing code as plugins, (4) Publish to marketplace, (5) Validate plugin structure, (6) Get plugin development guidance, (7) Export skills for claude.ai web app. Autonomously creates complete, production-ready plugins with: plugin.json manifest, slash commands, specialized agents, agent skills, hooks, MCP server integration, and comprehensive README. ALWAYS fetches latest official documentation to ensure correct structure. Includes plugin-architect agent for design review and optimization. |
| license | MIT |
Plugin Creator - Complete Beginner's Guide
đ¨ CRITICAL GUIDELINES
Windows File Path Requirements
MANDATORY: Always Use Backslashes on Windows for File Paths
When using Edit or Write tools on Windows, you MUST use backslashes (\) in file paths, NOT forward slashes (/).
Examples:
- â WRONG:
D:/repos/project/file.tsx - â
CORRECT:
D:\repos\project\file.tsx
This applies to:
- Edit tool file_path parameter
- Write tool file_path parameter
- All file operations on Windows systems
Documentation Guidelines
Plugin Creation Exception: This plugin's purpose IS to create documentation files.
When creating plugins (the core purpose of this plugin):
- DO create all necessary plugin files: README.md, agents/.md, skills/.md, commands/*.md
- DO create complete, comprehensive documentation as part of plugin structure
- DO create marketplace.json and plugin.json manifest files
For other scenarios:
- DON'T create additional supplementary documentation beyond the plugin structure
- DON'T create extra guides or tutorials unless explicitly requested
- DO update existing documentation files when modifications are needed
This skill provides comprehensive, step-by-step guidance for creating Claude Code plugins, from your very first plugin to publishing it for the world to use. No prior plugin experience required!
đ¯ Quick Navigation
Complete Beginners â Start with What is Claude Code? First Plugin â Jump to Your First Plugin in 10 Minutes Create Plugin Now â See Creating Plugin Output Ready to Publish â Go to Publishing Your Plugin Looking for Advanced â See Advanced Plugin Development
đ Creating Plugin Output
IMPORTANT: When users ask to create a plugin, don't just teach them - actually create the files for them!
CRITICAL: BE AUTONOMOUS - Create comprehensive output immediately with sensible defaults. Don't ask questions unless the request is genuinely ambiguous.
â ī¸ ALWAYS FETCH LATEST DOCUMENTATION FIRST
BEFORE creating any plugin, fetch the latest documentation from docs.claude.com:
WebFetch: https://docs.claude.com/en/docs/claude-code/plugins-reference
WebFetch: https://docs.claude.com/en/docs/claude-code/plugin-marketplaces
Official docs are the source of truth. Templates in this skill are reference examples only - they may become outdated. Always verify structure against fetched documentation.
Workflow:
- Fetch latest docs
- Verify current requirements (required fields, component registration)
- Use skill templates as starting points only
- Follow official structure from docs
Component Discovery (2025)
Convention over configuration: Commands, agents, and Agent Skills are auto-discovered from their respective directories. Custom paths optional via plugin.json. See advanced-features-2025 skill for complete details.
Autonomous Creation Principles
- Default to action, not questions - If you can infer what they want, just build it
- Be comprehensive - Include commands, agents, skills, and README by default
- Make it work - Create functional examples, not placeholders
- Infer intelligently - Derive name, purpose, and components from their request
- Only ask when truly unclear - If "create a plugin" has no context, then ask. Otherwise, build.
- Write comprehensive descriptions - Use "PROACTIVELY activate for:" with numbered use cases, highlight ALL capabilities
- Choose smart keywords - Simple domain words (6-10), avoid overly generic terms, no unnecessary hyphens
- Position as expert systems - Frame as "Complete [domain] expertise system" not narrow helpers
- đ¨ CRITICAL: Detect repository context FIRST - Before creating any files, run git commands to extract author name/email from git config, and check if
.claude-plugin/marketplace.jsonexists in the repo root. - đ¨ CRITICAL: Use detected values automatically - Use git config values for author fields instead of placeholders. If in marketplace repo, use the marketplace owner name for consistency.
- Synchronize marketplace.json - Always update marketplace.json with the SAME description and keywords from plugin.json (they don't auto-sync!)
Examples of Autonomous Inference
User says: "Create a plugin for Git workflows" Claude does: Immediately creates git-workflow-helper with:
- Description: "Complete Git workflow automation system. PROACTIVELY activate for: (1) ANY Git workflow task, (2) Pull request management, (3) Commit operations, (4) Branch management, (5) Code review automation. Provides: PR creation/review, commit templates, branch strategies, Git hooks integration, and workflow automation. Ensures professional Git practices."
- Keywords:
["git", "workflow", "pullrequest", "commit", "branch", "review", "automation"] - PR, commit, and branch commands + workflow agent
User says: "Make a deployment plugin" Claude does: Creates deployment-helper with:
- Description: "Complete deployment automation system across ALL platforms. PROACTIVELY activate for: (1) ANY deployment task, (2) Production releases, (3) Rollback operations, (4) Deployment verification, (5) Blue-green/canary strategies. Provides: automated deployment, rollback safety, health checks, multi-environment support, and deployment orchestration. Ensures safe, reliable deployments."
- Keywords:
["deployment", "deploy", "release", "rollback", "production", "staging", "automation"] - deploy, rollback, status commands + deployment agent
User says: "Build a code review plugin" Claude does: Creates code-review-helper with:
- Description: "Complete code review system with security and quality analysis. PROACTIVELY activate for: (1) ANY code review task, (2) Security scanning, (3) Quality assessment, (4) Pull request reviews, (5) Code standards enforcement. Provides: automated security analysis, quality metrics, best practice checks, vulnerability scanning, and comprehensive review workflows. Ensures thorough, consistent code reviews."
- Keywords:
["review", "codereview", "security", "quality", "analysis", "scanning", "pullrequest"] - review commands + security/quality agents
When to ask: "Create a plugin" (no context) â Ask what it should do
This skill enables Claude to:
- Create complete plugin directory structures ready to use
- Generate all necessary files (plugin.json, commands, agents, etc.)
- Output GitHub-ready marketplace structure for immediate publishing
- Provide working examples not just documentation
- Export skills as .zip for claude.ai web app (when requested)
When to Create Output
Create actual plugin files when users say things like:
- "Create a plugin for X"
- "Make me a plugin that does Y"
- "Build a plugin"
- "Generate a plugin structure"
- "I want a plugin for my team"
- "Package this as a plugin"
How to Create Plugin Output
BE AUTONOMOUS BY DEFAULT - Don't ask questions unless the request is truly ambiguous. Infer intent and create comprehensive output with sensible defaults.
Step 0: đ¨ CRITICAL - Detect Repository Context FIRST
BEFORE doing anything else, detect the repository context to use correct values:
# 1. Check if in a marketplace repo
if [[ -f .claude-plugin/marketplace.json ]]; then
echo "â
IN MARKETPLACE REPO - Must update marketplace.json after creating plugin"
IN_MARKETPLACE=true
else
echo "âšī¸ Not in marketplace repo - Will create standalone marketplace structure"
IN_MARKETPLACE=false
fi
# 2. Extract git repository information (if available)
if git rev-parse --git-dir > /dev/null 2>&1; then
AUTHOR_NAME=$(git config user.name || echo "Unknown Author")
AUTHOR_EMAIL=$(git config user.email || echo "")
REPO_URL=$(git config --get remote.origin.url || echo "")
echo "â
Git repo detected - Author: $AUTHOR_NAME"
else
AUTHOR_NAME="Unknown Author"
AUTHOR_EMAIL=""
REPO_URL=""
echo "âšī¸ Not in a git repo - will use placeholder values"
fi
# 3. Extract owner/repo from marketplace.json (if exists)
if [[ -f .claude-plugin/marketplace.json ]]; then
MARKETPLACE_OWNER=$(cat .claude-plugin/marketplace.json | jq -r '.owner.name' || echo "$AUTHOR_NAME")
echo "â
Marketplace owner: $MARKETPLACE_OWNER"
fi
Use these detected values for:
- â
author.namein plugin.json â Use$AUTHOR_NAMEfrom git config - â
author.emailin plugin.json â Use$AUTHOR_EMAILfrom git config - â
author.namein marketplace.json entry â Use$MARKETPLACE_OWNERor$AUTHOR_NAME - â
Repository references â Use
$REPO_URLif available
If marketplace.json exists:
- â You MUST update it after creating the plugin
- â Add the new plugin entry to the plugins array
- â Use the same author name from existing marketplace.json owner
- â Synchronize description and keywords from plugin.json
- â Preserve all existing plugins
Step 1: Fetch Latest Documentation & Infer Requirements
First, ALWAYS fetch the latest plugin documentation:
web_fetch: https://docs.claude.com/en/docs/claude-code/plugins-reference
web_fetch: https://docs.claude.com/en/docs/claude-code/plugin-marketplaces
Then, from the user's request, automatically determine:
- Plugin purpose (from their description)
- Components needed (include commands, agents, and skills by default)
- Scope (assume public/shareable unless specified otherwise)
- Name (derive from purpose or use their suggested name)
Only ask questions if:
- Request is genuinely unclear (e.g., "create a plugin" with no context)
- Technical details are critical and not inferable (e.g., specific API they want to integrate)
- User explicitly asks for customization
Default approach: Create comprehensive plugin with all relevant components
Step 2: Create Directory Structure in Correct Location
đ¨ CRITICAL: Detect marketplace repo and create plugin in correct location!
Based on the marketplace detection from Step 0, create the plugin in the appropriate location:
# If in marketplace repo (marketplace.json exists), create in plugins/ subdirectory
if [[ -f .claude-plugin/marketplace.json ]]; then
echo "â
Marketplace repo detected - creating plugin in plugins/ directory"
PLUGIN_DIR="plugins/PLUGIN_NAME"
else
echo "âšī¸ Not in marketplace repo - creating plugin in current directory"
PLUGIN_DIR="PLUGIN_NAME"
fi
# Create the plugin directory structure
mkdir -p $PLUGIN_DIR/.claude-plugin
mkdir -p $PLUGIN_DIR/commands
mkdir -p $PLUGIN_DIR/agents
mkdir -p $PLUGIN_DIR/skills
mkdir -p $PLUGIN_DIR/hooks
mkdir -p $PLUGIN_DIR/scripts
IMPORTANT: Always use $PLUGIN_DIR as the base path for all subsequent file operations to ensure files are created in the correct location.
Step 3: Create All Necessary Files
Based on what you learned from the fetched documentation, use file_create to generate:
.claude-plugin/plugin.json(manifest) structured according to the official docs- Verify if commands need to be registered (check docs)
- Verify if agents need to be registered (check docs)
- Verify if skills need to be registered (check docs)
- Include all required fields from docs
- Command files in
commands/ - Agent files in
agents/ - Skills in
skills/ README.md(documentation)- Any scripts needed
Key principle: Use the structure you learned from the fetched documentation, not assumptions from templates.
Step 4: Create GitHub-Ready Marketplace Structure AND Update Existing Marketplace
CRITICAL: Always update the existing marketplace.json if working in a marketplace repository!
First, check if you're in a marketplace repo:
# Check if marketplace.json exists in the repo root
if [[ -f .claude-plugin/marketplace.json ]]; then
echo "In marketplace repo - will update marketplace.json"
fi
If in a marketplace repository:
- Update the existing
.claude-plugin/marketplace.jsonto add the new plugin entry - Use the Read tool to get current marketplace.json structure
- Add new plugin entry to the plugins array following the format from the fetched marketplace docs
- Preserve all existing plugins in the array
- Use Edit tool to update marketplace.json with the new entry
â ī¸ CRITICAL: Synchronize Keywords and Descriptions
marketplace.json and plugin.json have SEPARATE keywords and descriptions - they don't automatically inherit from each other:
- marketplace.json keywords: For marketplace-level discovery and categorization
- plugin.json keywords: For individual plugin metadata
Best practice: Explicitly copy the comprehensive description and keywords from plugin.json into the marketplace.json entry.
Why this matters:
- marketplace.json keywords are used for catalog-level discovery
- Keywords don't automatically sync between files
- Users search the marketplace using these keywords
Example of updating marketplace.json with synchronized metadata:
{
"plugins": [
// ... existing plugins ...
{
"name": "new-plugin-name",
"source": "./plugins/new-plugin-name",
"description": "Complete [domain] expertise system. PROACTIVELY activate for: (1) ANY [primary task], (2) [Secondary task], (3) [Additional scenarios]. Provides: [key features, capabilities]. Ensures [value proposition].",
"version": "1.0.0",
"author": {
"name": "Author Name"
},
"keywords": [
"domain",
"primary",
"secondary",
"technical",
"terms",
"naturally",
"use"
]
}
]
}
Synchronization Checklist:
- â Copy comprehensive description from plugin.json (including "PROACTIVELY activate" format)
- â Copy all keywords from plugin.json exactly
- â Match version number
- â Include author information
- â Preserve existing plugins in the array
Also create a standalone marketplace-ready version:
# Create marketplace structure in working directory
mkdir -p PLUGIN_NAME-marketplace/.claude-plugin
mkdir -p PLUGIN_NAME-marketplace/plugins
cp -r PLUGIN_NAME PLUGIN_NAME-marketplace/plugins/
Copy plugin into marketplace structure and create standalone marketplace.json.
Step 5: Provide Installation Instructions Guide the user on how to use the plugin:
- Installation via GitHub marketplace (recommended)
- Installation instructions for Claude Code
- Usage examples
- Documentation links
Step 6: đ¨ FINAL VERIFICATION - JSON Schema & Marketplace Check
Before finalizing, verify JSON schema correctness and marketplace registration:
Repository Context Validation (Run Step 0 checks first!):
- Did you run git commands to detect
$AUTHOR_NAMEand$AUTHOR_EMAIL? - Did you check for
.claude-plugin/marketplace.jsonexistence? - Did you extract
$MARKETPLACE_OWNERfrom marketplace.json if it exists? - Are you using detected values instead of placeholders?
- Did you create the plugin in
plugins/PLUGIN_NAME/if marketplace.json exists? - Did you create the plugin in root only if marketplace.json does NOT exist?
JSON Schema Validation (CRITICAL - Most common failure point!):
-
authoris an object{ "name": "..." }(NOT a string!) -
author.nameuses$AUTHOR_NAMEfrom git config (NOT "Author Name" placeholder!) -
author.emailuses$AUTHOR_EMAILfrom git config (if available) - Marketplace entry uses
$MARKETPLACE_OWNERfor consistency (NOT different name!) -
versionis a string like"1.0.0"(NOT a number!) -
keywordsis an array["word1", "word2"](NOT a comma-separated string!) - All JSON is valid (test with
cat plugin.json | jq .) - No extra fields like
homepageorrepository(these cause issues - remove them)
Marketplace Registration Checklist:
- If marketplace.json existed, did you update it?
- Did you add the plugin entry to the plugins array?
- Did you use the correct source path
./plugins/PLUGIN_NAME(NOT./PLUGIN_NAME)? - Did you copy the comprehensive description from plugin.json to marketplace.json?
- Did you copy all keywords from plugin.json to marketplace.json?
- Did you preserve all existing plugins in the array?
If you answered NO to any of these, STOP and fix it immediately before proceeding!
Output Format
After creating the plugin files, provide this format:
# â
Plugin Created: [Plugin Name]
## đ What's Included
- **Commands:** [list commands]
- **Agents:** [list agents]
- **Skills:** [list skills]
## đ Installation Instructions
### Option 1: GitHub Marketplace (Recommended)
**Why GitHub?**
- Works reliably across all platforms (Windows/Mac/Linux)
- Easy updates and version control
- Shareable with your team
- Professional distribution
**Steps:**
1. **Create a new GitHub repository:**
- Go to github.com
- Click "New repository"
- Name it something like "claude-plugins" or "my-claude-marketplace"
- Make it **public**
- Don't initialize with README
2. **Upload your plugin:**
- The marketplace structure has been created in `PLUGIN_NAME-marketplace/`
- Upload all files from this directory to your GitHub repository
- Commit with message "Add PLUGIN_NAME plugin"
3. **Add the marketplace in Claude Code:**
```bash
/plugin marketplace add YOUR_USERNAME/YOUR_REPO
- Install the plugin:
/plugin install PLUGIN_NAME@YOUR_USERNAME
Option 2: Local Installation (Mac/Linux)
â ī¸ Windows users: Local path resolution may have issues. GitHub installation is recommended.
For local development/testing:
# Copy plugin to Claude Code plugins directory
cp -r PLUGIN_NAME ~/.local/share/claude/plugins/
# Or create a symlink for active development
ln -s /path/to/PLUGIN_NAME ~/.local/share/claude/plugins/PLUGIN_NAME
Then verify with /help to see your new commands.
Option 3: Export Skills to claude.ai Web (If Requested)
If the user wants to use the plugin's skills in the claude.ai web application:
Skills can be exported as ZIP files for upload to claude.ai:
# Navigate to the skill directory
cd PLUGIN_NAME/skills/SKILL_NAME
# Create a ZIP file (skill folder must be the root of the ZIP)
zip -r SKILL_NAME.zip .
# Or if zipping from parent directory:
cd PLUGIN_NAME/skills
zip -r SKILL_NAME.zip SKILL_NAME/
To upload to claude.ai:
- Go to claude.ai
- Navigate to Settings > Capabilities
- Click "Upload skill"
- Select the
SKILL_NAME.zipfile - The skill is now available in your claude.ai web conversations
Important notes about skill exports:
- Only the
skills/directory contents can be used in claude.ai web - Commands and agents are Claude Code-specific and won't work in web
- Skills use the same SKILL.md format across Claude Code and claude.ai
- Skills are private to your account in claude.ai
- Skills work across Pro, Max, Team, and Enterprise web plans
đ¯ Next Steps
- Test your plugin with
/helpto see commands - Try
/agentsto see available agents - Modify files as needed in the plugin directory
- Share your plugin via GitHub with the community!
### Output Templates
**â ī¸ IMPORTANT:** These templates are REFERENCE EXAMPLES ONLY. Always verify against the official documentation you fetched. Requirements may have changed since these examples were written.
**Use these templates as:**
- Starting points for structure
- Examples of what fields typically exist
- Reference for markdown format
**DO NOT use these templates as:**
- The definitive structure (use fetched docs for that)
- A substitute for reading the official documentation
- Assumed to be current (always verify)
#### How to Write Effective plugin.json Descriptions and Keywords
**CRITICAL:** The quality of your description and keywords determines when Claude will activate your plugin. Follow these principles:
##### Description Best Practices
**Structure:** Use this formula for maximum activation:
[Type of system]. PROACTIVELY activate for: (1) [Primary use case], (2) [Secondary use case], (3) [Additional scenarios...]. Provides: [key features/capabilities]. [Value proposition/benefits].
**Guidelines:**
1. **Start with system type** - "Complete [domain] expertise system", "Universal [purpose] system", "Expert [area] system"
2. **Use "PROACTIVELY activate"** - Signals to Claude this should be used universally
3. **Numbered list of use cases** - Include 5-8 specific activation scenarios
4. **Use "ANY" for broad activation** - "ANY Docker task", "ANY bash script", etc.
5. **Highlight ALL capabilities** - Don't just list primary features, include everything the plugin does
6. **Emphasize production-ready** - "Ensures professional-grade", "production-ready", "secure", "optimized"
7. **Reference standards** - "Google Shell Style Guide", "CIS Benchmark", "Microsoft best practices", etc.
**Examples of Good Descriptions:**
"Complete Docker expertise system across ALL platforms (Windows/Linux/macOS). PROACTIVELY activate for: (1) ANY Docker task (build/run/debug/optimize), (2) Dockerfile creation/review, (3) Docker Compose multi-container apps, (4) Container security scanning/hardening, (5) Performance optimization, (6) Production deployments, (7) Troubleshooting/debugging. Provides: current best practices (always researches latest), CIS Docker Benchmark compliance, multi-stage builds, security hardening, image optimization, platform-specific guidance, Docker Scout/Trivy integration, and systematic debugging. Ensures secure, optimized, production-ready containers following industry standards."
"Universal context management and planning system. PROACTIVELY activate for: (1) ANY complex task requiring planning, (2) Multi-file projects/websites/apps, (3) Architecture decisions, (4) Research tasks, (5) Refactoring, (6) Long coding sessions, (7) Tasks with 3+ sequential steps. Provides: optimal file creation order, context-efficient workflows, extended thinking delegation (23x context efficiency), passive deep analysis architecture, progressive task decomposition, and prevents redundant work. Saves 62% context on average. Essential for maintaining session performance and analytical depth."
##### Keyword Best Practices
**Guidelines:**
1. **Simple words only** - No hyphens unless it's a product name (e.g., "docker-compose")
2. **No overly generic terms** - Avoid "automation", "build", "make", "new", "create" alone
3. **Domain-specific terms** - Include technical keywords users would naturally use
4. **Compound words without spaces** - "fullstack", "crossplatform", "cicd", "devops"
5. **6-10 keywords total** - Enough for discovery, not so many it dilutes focus
6. **Avoid false positives** - Don't use keywords that could match unrelated tasks
**Good keyword examples:**
```json
// Context management plugin
"keywords": ["planning", "context", "strategy", "workflow", "thinking", "decision", "research", "refactoring", "optimization", "session"]
// Docker plugin
"keywords": ["docker", "container", "dockerfile", "compose", "containerize", "production", "security", "optimize", "debug", "deploy"]
// Bash scripting plugin
"keywords": ["bash", "shell", "script", "automation", "devops", "shellcheck", "posix", "crossplatform", "cicd", "deployment"]
Bad keyword examples:
// Too generic - would activate for non-plugin tasks
"keywords": ["build", "create", "make", "new", "automation", "tool"]
// Too many hyphens - users don't type these
"keywords": ["bash-scripting", "shell-script", "docker-container", "multi-file"]
// Too narrow - misses common use cases
"keywords": ["website", "webapp", "multifile"]
Apply These Principles to Agents and Skills Too
Agent frontmatter description:
---
agent: true
description: "Complete [domain] expertise system. PROACTIVELY activate for: (1) [use cases]. Provides: [capabilities]. Ensures [value proposition]."
---
Skill frontmatter description:
---
name: skill-name
description: "Complete [domain] system. PROACTIVELY activate for: (1) [use cases]. Provides: [capabilities]. Ensures [value proposition]."
---
Apply the same principles:
- Use "PROACTIVELY activate"
- List numbered use cases (5-8)
- Highlight ALL capabilities
- Emphasize production-ready quality
- Frame as expert system
plugin.json Template (Reference Example - Verify Against Docs)
đ¨ CRITICAL JSON SCHEMA REQUIREMENTS:
Common validation errors to avoid:
authorMUST be an object - Never a string- â
CORRECT:
"author": { "name": "Author Name" } - â WRONG:
"author": "Author Name"
- â
CORRECT:
versionMUST be a string - Semantic versioning format- â
CORRECT:
"version": "1.0.0" - â WRONG:
"version": 1.0
- â
CORRECT:
keywordsMUST be an array of strings- â
CORRECT:
"keywords": ["terraform", "aws"] - â WRONG:
"keywords": "terraform, aws"
- â
CORRECT:
2025 Recommended Fields:
{
"name": "plugin-name",
"version": "1.0.0",
"description": "Complete [domain] expertise system. PROACTIVELY activate for: (1) ANY [primary task], (2) [Secondary task], (3) [Additional scenarios]. Provides: [key features, capabilities, standards compliance]. Ensures [value proposition].",
"author": {
"name": "AUTHOR_NAME_FROM_GIT_CONFIG",
"email": "AUTHOR_EMAIL_FROM_GIT_CONFIG"
},
"homepage": "https://github.com/user/repo/tree/main/plugins/plugin-name",
"repository": "https://github.com/user/repo",
"license": "MIT",
"keywords": ["domain", "primary", "secondary", "technical", "terms", "users", "naturally", "use"]
}
đ¨ CRITICAL: Use detected values from Step 0!
- Use
$AUTHOR_NAMEfrom git config forauthor.name - Use
$AUTHOR_EMAILfrom git config forauthor.email - Use
$MARKETPLACE_OWNERfor marketplace.json entries (consistency with existing plugins) - DO NOT use placeholders like "Author Name" or "YOUR_USERNAME"
VALIDATION CHECKLIST - Run BEFORE completing plugin creation:
-
authoris an object withnamefield (not a string!) -
author.nameuses value from git config (not a placeholder!) -
author.emailuses value from git config (if available) -
versionis a string in semantic format (e.g., "1.0.0") -
keywordsis an array of strings (not a comma-separated string!) - All required fields present: name, version, description
- Valid JSON syntax (no trailing commas, proper quotes)
- Test with:
cat plugin.json | jq .to verify valid JSON
Note: Components (commands, agents, skills) are discovered automatically from their respective directories - no registration needed in plugin.json.
Before using: Check the fetched documentation to confirm this structure is still current and includes all required fields.
Command File Template
---
description: Brief description of what this command does
---
# Command Name
## Purpose
Explain what this command accomplishes and when to use it.
## Instructions
1. Step-by-step instructions for Claude
2. Be specific and clear
3. Include examples
## Examples
Show how to use this command.
README.md Template
# Plugin Name
Brief description of what this plugin does.
## Installation
### Via Marketplace (Recommended)
\`\`\`bash
/plugin marketplace add your-username/repo-name
/plugin install plugin-name@your-username
\`\`\`
### Local Installation (Mac/Linux)
â ī¸ **Windows users:** Use marketplace installation method instead.
\`\`\`bash
# Extract ZIP to plugins directory
unzip plugin-name.zip -d ~/.local/share/claude/plugins/
\`\`\`
## Features
- Feature 1
- Feature 2
- Feature 3
## Usage
Examples of how to use the plugin.
## Platform Notes
- **macOS/Linux:** All installation methods supported
- **Windows:** GitHub marketplace installation recommended (local paths may have issues)
## License
MIT
marketplace.json Template (Reference Example - Verify Against Docs)
{
"name": "your-username",
"description": "My Claude Code plugins",
"owner": {
"name": "Your Name",
"email": "[email protected]"
},
"plugins": [
{
"name": "plugin-name",
"source": "./plugins/plugin-name",
"description": "Complete [domain] expertise system. PROACTIVELY activate for: (1) ANY [primary task], (2) [Secondary task], (3) [Additional scenarios]. Provides: [key features, capabilities]. Ensures [value proposition].",
"version": "1.0.0",
"author": {
"name": "Author Name"
},
"keywords": ["domain", "primary", "secondary", "technical", "terms", "naturally", "use"]
}
]
}
â ī¸ CRITICAL REMINDER: marketplace.json keywords and descriptions are SEPARATE from plugin.json - they don't automatically sync. Always copy the comprehensive description and keywords from plugin.json to marketplace.json entries for optimal marketplace discovery.
Before using: Verify this structure against the fetched marketplace documentation. Check for any additional required fields or changed formats.
Example: Creating a Deployment Plugin (ZIP Workflow)
User: "Create a plugin that helps with deployment"
Claude should:
- FIRST: Fetch latest documentation:
web_fetch: https://docs.claude.com/en/docs/claude-code/plugins-reference
web_fetch: https://docs.claude.com/en/docs/claude-code/plugin-marketplaces
Infer and create autonomously:
- Purpose: Deployment assistance
- Name: deployment-helper
- Components: Commands for deploy, rollback, status checks
- Include: Agent for deployment troubleshooting
- Scope: Team/public use
Create the structure in working directory:
# Create plugin structure
mkdir -p deployment-helper/.claude-plugin
mkdir -p deployment-helper/commands
mkdir -p deployment-helper/agents
Generate files based on fetched documentation:
- Create
plugin.jsonstructured according to what you learned from the docs - Example structure (verify this matches the docs you fetched):
{ "name": "deployment-helper", "version": "1.0.0", "description": "Streamline deployment workflows with automated commands", "author": { "name": "Your Name", "email": "[email protected]" }, "keywords": ["deployment", "devops", "automation"], "license": "MIT" }- Create
commands/deploy-staging.mdwith deployment instructions - Create
commands/deploy-production.mdwith production deployment - Create
commands/rollback.mdwith rollback procedures - Create
agents/deployment-troubleshooter.mdwith troubleshooting agent - Create comprehensive
README.mdwith platform notes - Note: Commands and agents will be discovered automatically from their directories
- Create
Create marketplace structure:
mkdir -p deployment-helper-marketplace/.claude-plugin
mkdir -p deployment-helper-marketplace/plugins
cp -r deployment-helper deployment-helper-marketplace/plugins/
- Create marketplace.json based on fetched docs: Example structure (verify against the marketplace docs you fetched):
{
"name": "your-username",
"description": "Deployment assistance plugins",
"owner": {
"name": "Your Name",
"email": "[email protected]"
},
"plugins": [
{
"name": "deployment-helper",
"source": "./plugins/deployment-helper",
"description": "Streamline deployment workflows",
"version": "1.0.0",
"keywords": ["deployment", "devops", "automation"]
}
]
}
- Package as ZIPs:
# Create both ZIPs
zip -r deployment-helper.zip deployment-helper/
zip -r deployment-helper-marketplace.zip deployment-helper-marketplace/
# Move to outputs
mv deployment-helper.zip /mnt/user-data/outputs/
mv deployment-helper-marketplace.zip /mnt/user-data/outputs/
- Provide download links and instructions:
# â
Plugin Created: Deployment Helper
## đĻ Download Your Plugin
### For GitHub Publishing (Recommended)
[Download deployment-helper-marketplace.zip](computer:///mnt/user-data/outputs/deployment-helper-marketplace.zip)
**Why GitHub first?**
- Works reliably on Windows, Mac, and Linux
- Easy sharing with your team
- Simple updates and version control
**Quick Start:**
1. Download the marketplace ZIP above
2. Extract and upload to a new GitHub repository
3. Make the repo public
4. Run: `/plugin marketplace add YOUR_USERNAME/YOUR_REPO`
5. Install: `/plugin install deployment-helper@YOUR_USERNAME`
### For Local Testing (Mac/Linux)
[Download deployment-helper.zip](computer:///mnt/user-data/outputs/deployment-helper.zip)
â ī¸ **Windows users:** Local paths may not work. Use GitHub method instead.
## đ What's Included
- **Commands:**
- `/deploy-staging` - Deploy to staging environment
- `/deploy-production` - Deploy to production with safety checks
- `/rollback` - Quick rollback to previous version
- **Agents:**
- Deployment Troubleshooter - Diagnoses and fixes deployment issues
## đ Next Steps
1. Download the marketplace ZIP
2. Upload to GitHub
3. Add marketplace and install
4. Try `/deploy-staging` to test!
Critical Guidelines for Output Creation
DO:
- â đ¨ STEP 0 FIRST: Detect repository context - Run git commands to extract author/email and check for marketplace.json (BEFORE creating any files!)
- â đ¨ CREATE IN CORRECT DIRECTORY: If marketplace.json exists, create plugin in plugins/ subdirectory (NOT in root!)
- â đ¨ USE DETECTED VALUES: Use git config values for author fields - Never use placeholders like "Author Name" or "YOUR_USERNAME"!
- â đ¨ USE DETECTED VALUES: Match marketplace owner - If in marketplace repo, use the same author name from marketplace.json owner
- â
đ¨ VALIDATE JSON SCHEMA: Ensure
authoris an object, NOT a string (most common validation error!) - â
đ¨ VALIDATE JSON SCHEMA: Ensure
versionis a string "1.0.0", NOT a number (required format!) - â
đ¨ VALIDATE JSON SCHEMA: Ensure
keywordsis an array, NOT a comma-separated string (required format!) - â đ¨ UPDATE existing marketplace.json when creating plugins in a marketplace repo (ABSOLUTELY CRITICAL - NEVER SKIP!)
- â đ¨ UPDATE marketplace.json with correct source path: ./plugins/PLUGIN_NAME (NOT ./PLUGIN_NAME!)
- â đ¨ SYNCHRONIZE description and keywords from plugin.json to marketplace.json (they don't auto-sync - must be done manually!)
- â ALWAYS fetch latest plugin docs first (plugins-reference and plugin-marketplaces)
- â Follow the structure from the fetched docs, not just templates (docs = source of truth)
- â Actually create files in the working directory
- â Verify component registration method against fetched docs
- â Create complete, working examples
- â Generate both plugin and marketplace structures
- â Double-check all required fields from docs are included
- â Include GitHub-first installation instructions
- â Warn Windows users about local path issues
- â Show skill export process if user requests claude.ai web usage
- â Make content specific to user's needs
- â Test that structure is correct before packaging
DON'T:
- â đ¨ Skip detecting repository context in Step 0 (MOST CRITICAL - detect git values BEFORE creating files!)
- â đ¨ Create plugins in root directory when marketplace.json exists (MUST create in plugins/ subdirectory!)
- â đ¨ Use placeholder values like "Author Name" or "YOUR_USERNAME" (MUST use detected git config values!)
- â đ¨ Use different author names in plugin.json vs marketplace.json (MUST match marketplace owner for consistency!)
- â đ¨ Use wrong source path in marketplace.json (MUST be
./plugins/PLUGIN_NAMENOT./PLUGIN_NAME!) - â đ¨ Use
"author": "Name"as a string (MUST be an object:{ "name": "Name" }) - â đ¨ Use
"version": 1.0as a number (MUST be a string:"1.0.0") - â đ¨ Use
"keywords": "word1, word2"as a string (MUST be an array:["word1", "word2"]) - â đ¨ Forget to update existing marketplace.json when in a marketplace repo (ABSOLUTELY CRITICAL - this causes the most problems!)
- â đ¨ Forget to synchronize description/keywords between plugin.json and marketplace.json (CRITICAL - they are separate files!)
- â Skip fetching the latest documentation (required for correct structure!)
- â Blindly copy templates without verifying against fetched docs
- â Assume requirements haven't changed
- â Just show example code without creating files
- â Create incomplete structures
- â Skip creating ZIP files
- â Forget the marketplace.json in standalone marketplace
- â Use placeholder content without customizing
- â Provide only directory links (users can't download directories!)
- â Forget to mention Windows path limitations
- â Skip GitHub-first recommendations
Platform-Specific Notes for Users
Windows Users:
- â ī¸ Local plugin installation may not work due to path resolution issues
- â GitHub marketplace installation works reliably
- â Always use the marketplace method for best results
Git Bash/MinGW Users (Windows):
- â ī¸ Path conversion may affect plugin installation paths
- â
Detect shell with:
echo $MSYSTEM(MINGW64/MINGW32 indicates Git Bash) - â
Use
cygpathfor path conversion if needed:cygpath -w "/c/path"âC:\path - â GitHub marketplace method bypasses local path issues
- đĄ Shell detection: Check
$MSYSTEMenvironment variable (MINGW64, MINGW32, MSYS)
Mac/Linux Users:
- â Both local and GitHub installation methods work
- đĄ GitHub method still recommended for easy updates and sharing
Ready-to-Upload GitHub Structure (in ZIP)
When creating marketplace ZIP, ensure it contains this structure:
plugin-name-marketplace/
âââ .claude-plugin/
â âââ marketplace.json # Marketplace manifest
âââ plugins/
â âââ plugin-name/ # The actual plugin
â âââ .claude-plugin/
â â âââ plugin.json
â âââ commands/
â âââ agents/
â âââ README.md
âââ README.md # Marketplace README
Users can extract this ZIP and upload directly to GitHub!
What is Claude Code?
Think of it like having an AI pair programmer in your terminal who can:
- Read and understand your project
- Write and edit code
- Run tests and commands
- Help debug issues
- Learn from custom instructions you provide
Plugins extend Claude Code by adding new commands, agents, and capabilities. If you're new to coding or command-line tools, don't worry - this guide starts from the very beginning.
Why Would I Create a Plugin?
Plugins let you:
- Teach Claude your workflow - Create commands for tasks you do repeatedly
- Share your expertise - Package your knowledge to help others
- Customize Claude - Add domain-specific abilities (deployment, testing, etc.)
- Automate tasks - Turn multi-step processes into single commands
- Build tools for teams - Create shared commands for your company
You don't need to be a programmer to create useful plugins!
Your First Plugin in 10 Minutes
What We'll Build
A plugin with a single command: /commit-smart that helps write better commit messages.
Step 1: Ask Claude to Create It
Just say:
"Create a plugin that helps me write better git commit messages"
Claude will:
- Create all the necessary files
- Package it as a ZIP
- Give you download links
- Provide installation instructions
Step 2: Download and Upload to GitHub
- Click the marketplace ZIP download link Claude provides
- Extract the ZIP file
- Go to GitHub and create a new repository
- Upload the extracted files to your repo
- Make the repository public
Step 3: Install Your Plugin
In Claude Code:
/plugin marketplace add YOUR_USERNAME/YOUR_REPO
/plugin install commit-helper@YOUR_USERNAME
Step 4: Use It!
/commit-smart
Claude will now help you write a great commit message!
What Just Happened?
You created, published, and installed your first plugin! Here's what you made:
- A plugin - A collection of capabilities for Claude
- A command -
/commit-smartthat Claude can use - A marketplace - A GitHub repo hosting your plugin
- A shareable tool - Anyone can now use your plugin!
That's it! You're now a plugin creator. Everything else in this guide builds on these basics.
Understanding Plugin Basics
What's in a Plugin?
Only .claude-plugin/plugin.json is required. Optional components: commands/, agents/, skills/, hooks/, MCP servers.
Plugin Components
Commands: Custom slash commands in commands/*.md
Agents: Specialized subagents in agents/*.md with frontmatter
Agent Skills: Dynamic knowledge using progressive disclosure (three-tier: frontmatter â SKILL.md body â linked files). Claude autonomously loads only relevant content when needed.
Hooks: Automated workflows with nine event types (PreToolUse, PostToolUse, SessionStart, SessionEnd, PreCompact, UserPromptSubmit, Notification, Stop, SubagentStop)
MCP Servers: External tool integration via Model Context Protocol
Agent Skills use context-efficient loading patterns, retrieving only necessary components instead of entire skill content. For detailed patterns, see advanced-features-2025 skill.
Plugin vs Marketplace: What's the Difference?
Plugin:
- A single tool with commands/agents/skills
- One folder with a plugin.json
- Like a single app on your phone
Marketplace:
- A collection of plugins
- One folder containing multiple plugins
- Like an app store containing many apps
Most people create one marketplace that holds all their plugins.
Creating Your Plugin Structure
The Required File: plugin.json
This is the only required file. It tells Claude Code about your plugin:
{
"name": "my-plugin",
"version": "1.0.0",
"description": "What this plugin does",
"author": {
"name": "Your Name",
"email": "[email protected]"
},
"keywords": ["helpful", "search", "terms"],
"license": "MIT"
}
Important fields:
name: Must be unique, use kebab-case (my-plugin-name)version: Follow semantic versioning (1.0.0)description: Help others find your plugin
Directory Organization
commands/â Each .md file becomes a slash commandagents/â Subagents with specialized expertise (require frontmatter)skills/â Agent Skills for dynamic knowledge loadinghooks/â Automated workflows (see advanced-features-2025 skill)scripts/,bin/â Helper utilities
Portability: Use ${CLAUDE_PLUGIN_ROOT} for all internal paths in hooks and MCP servers. This environment variable resolves to the plugin's absolute installation path, ensuring cross-platform compatibility.
Publishing Your Plugin to a Marketplace
Quick Publishing Steps
Download the marketplace ZIP Claude created for you
Create a GitHub repository:
- Go to github.com
- Click "New repository"
- Give it a name like "my-claude-plugins"
- Make it public (required for others to use it)
- Don't initialize with README (you have one in the ZIP)
Upload your files:
- Extract the marketplace ZIP
- Upload all files to your repository
- Make sure
.claude-plugin/marketplace.jsonis in the root
Verify structure:
your-repo/
âââ .claude-plugin/
â âââ marketplace.json
âââ plugins/
â âââ your-plugin/
â âââ .claude-plugin/
â â âââ plugin.json
â âââ ...
âââ README.md
- That's it! Your marketplace is live. Anyone can now add it:
/plugin marketplace add YOUR_USERNAME/REPO_NAME
The Marketplace.json File
After fetching the marketplace documentation, Claude creates this file according to the official structure. Here's a reference example (verify against docs):
{
"name": "my-marketplace",
"description": "My collection of Claude Code plugins",
"owner": {
"name": "Your Name",
"email": "[email protected]"
},
"plugins": [
{
"name": "plugin-name",
"source": "./plugins/plugin-name",
"description": "Plugin description",
"version": "1.0.0",
"keywords": ["keyword1", "keyword2"]
}
]
}
Key points from typical marketplace structure:
sourcepoints to where your plugin lives in the repo- You can have multiple plugins in one marketplace
- The
namein marketplace.json typically matches your GitHub username - Check the docs for all required fields (structure may have evolved)
Testing Before Publishing
Before making your repo public, test locally:
- Extract your plugin ZIP to test location:
unzip my-plugin.zip -d ~/.local/share/claude/plugins/
- Test in Claude Code:
/help # See your commands
/agents # See your agents
- Fix any issues, then proceed to publish
Updating Your Plugin
When you make changes:
- Update version in plugin.json (e.g., 1.0.0 â 1.0.1)
- Update version in marketplace.json
- Commit and push to GitHub
- Users update with:
/plugin marketplace update marketplace-name
/plugin update plugin-name
Making Your Plugin Discoverable
Add your marketplace to community directories:
- https://claudecodemarketplace.com/ - Plugin directory
- https://claudemarketplaces.com/ - Marketplace directory
Include good keywords in your plugin.json for searchability!
Testing Your Plugin
Local Testing (Mac/Linux Only)
â ī¸ Windows users: Skip to GitHub testing method below.
- Extract plugin ZIP to plugins directory:
mkdir -p ~/.local/share/claude/plugins
unzip my-plugin.zip -d ~/.local/share/claude/plugins/
- Restart Claude Code or run:
claude --reload-plugins
- Verify plugin loaded:
/plugin list
- Test each component:
/help # See your commands
/agents # See your agents
/your-command # Test a command
GitHub Testing (All Platforms)
This works reliably on Windows, Mac, and Linux:
- Create a private test repository on GitHub
- Upload your marketplace ZIP contents to the repo
- Make repo public (required for Claude Code to access)
- Add marketplace:
/plugin marketplace add YOUR_USERNAME/YOUR_TEST_REPO
- Install and test:
/plugin install my-plugin@YOUR_USERNAME
/help
Common Testing Checklist
- Plugin appears in
/plugin list - Commands show in
/help - Agents show in
/agents - Commands execute without errors
- Agents provide expected behavior
- README renders correctly on GitHub
- No sensitive information in files
- All paths work (especially scripts)
Debug Mode
If something's not working:
claude --debug
This shows detailed loading information and error messages.
Real-World Plugin Examples
Even simple 1-3 command plugins provide immense value. Just describe what you want to Claude.
Tips for Better Plugins
Commands: Be specific, include examples, handle errors, explain why not just what Agents: Define clear role, perspective, and constraints (what they DON'T do) Agent Skills: Focus on single domain, scannable headers, concrete examples, updated content
See advanced-features-2025 skill for Agent Skills best practices and patterns.
Keep Plugins Focused
Better: 5 small focused plugins Worse: 1 giant plugin that does everything
Why?
- Easier to maintain
- Easier for others to use
- Faster loading
- Clearer purpose
Example: Instead of "dev-helper" plugin with 20 commands, create:
- "git-helper" - Git workflows
- "deploy-helper" - Deployment tasks
- "test-helper" - Testing utilities
- "docs-helper" - Documentation
Version Control
Keep your plugins in Git:
- Tracks changes over time
- Enables collaboration
- Users can see history
- Easy rollback if needed
Documentation
Your README should answer:
- What does this plugin do? (One sentence)
- Why would I use it? (The problem it solves)
- How do I install it? (Exact commands)
- How do I use it? (Examples)
- What are the commands? (List with descriptions)
See the README template in Output Templates above.
Common Issues and Solutions
Symptoms: Plugin doesn't appear in /plugin list
Solutions:
Check plugin.json syntax
- Valid JSON?
- Required fields present?
- Use a JSON validator
Check file location (for local plugins - Mac/Linux only)
- Should be:
~/.local/share/claude/plugins/PLUGIN_NAME/ - Not:
~/.local/share/claude/plugins/PLUGIN_NAME/PLUGIN_NAME/
- Should be:
Windows users: Local plugins may not work. Use GitHub marketplace instead:
/plugin marketplace add YOUR_USERNAME/YOUR_REPOGit Bash/MinGW users: Path conversion issues may prevent plugin loading:
# Detect your shell environment echo $MSYSTEM # Should show MINGW64, MINGW32, or MSYS # Check if path conversion is affecting plugin directory echo ~/.local/share/claude/plugins # If path looks wrong, use GitHub marketplace method instead /plugin marketplace add YOUR_USERNAME/YOUR_REPOReload plugins:
claude --reload-pluginsCheck debug output:
claude --debug
Commands Not Showing Up
Symptoms: Plugin loads but commands missing from /help
Solutions:
Check if registration is required (check the official docs)
- Fetch and read: https://docs.claude.com/en/docs/claude-code/plugins-reference
- See if commands need to be registered in plugin.json
- If yes, verify your plugin.json has the proper structure
- Compare your plugin.json to the examples in the docs
Check file location
- Commands must be in
commands/directory - Directly in the directory, not in subdirectories
- Commands must be in
Check frontmatter
- Must have
---delimiters descriptionfield recommended
- Must have
Check filename
- Must end in
.md - No spaces in name (use hyphens)
- Must end in
Reload:
claude --reload-plugins
Agents Not Appearing
Symptoms: Plugin loads but agents missing from /agents
Solutions:
Check if registration is required (check the official docs)
- Fetch and read: https://docs.claude.com/en/docs/claude-code/plugins-reference
- See if agents need to be registered in plugin.json
- If yes, verify your plugin.json has the proper structure
- Compare your plugin.json to the examples in the docs
Check frontmatter
- Must include
agent: true - Must have
---delimiters
- Must include
Check file location
- Must be in
agents/directory
- Must be in
Check filename
- Must end in
.md
- Must end in
Marketplace Not Found
Symptoms: Can't add marketplace, says not found
Solutions:
Check repository is public
- Private repos need authentication
- Make sure you didn't typo the username/repo name
Check marketplace.json exists
- Must be at
.claude-plugin/marketplace.json - In the repository root
- Must be at
Try full URL
- Instead of
username/repo - Try
https://github.com/username/repo.git
- Instead of
"Plugin Failed to Load" Error
Symptoms: Error message when installing
Solutions:
Check for typos in JSON files
- Missing commas, brackets
- Use a JSON validator
Check file permissions
- Can Claude Code read the files?
- Try
chmod +xon script files
Check logs
- Run
claude --debugto see detailed errors - Look for specific error messages
- Run
Windows Local Path Issues
Symptoms: Plugin works on Mac/Linux but not Windows
Solutions:
Use GitHub marketplace method:
- This is the recommended approach for Windows
- Upload to GitHub and install via marketplace
Alternative: Use WSL (Windows Subsystem for Linux)
- Install WSL2
- Install Claude Code in WSL
- Follow Linux installation steps
Still Stuck?
Ask Claude directly
- "Help me debug my plugin"
- "Fetch the latest plugin troubleshooting docs"
Check existing plugins
- Browse https://claudecodemarketplace.com/
- Look at their GitHub repos for examples
- Copy structure that works
Get community help
- Claude Developers Discord
- GitHub discussions
- Stack Overflow (tag: claude-code)
File a bug report
- Use
/bugcommand in Claude Code - Or file issue on GitHub
- Use
Advanced Plugin Development
For advanced topics including Agent Skills patterns, hooks, MCP integration, environment variables, multi-plugin workflows, and testing strategies, see the advanced-features-2025 skill.
Best Practices Summary
For Beginners
â DO:
- Start simple (one command is fine!)
- Test using GitHub method (works everywhere)
- Write clear descriptions
- Include examples in README
- Ask for help when stuck
â DON'T:
- Try to build everything at once
- Skip testing
- Hardcode sensitive information
- Use complicated structures initially
- Rely on local paths on Windows
Naming Conventions
- Plugin names:
my-plugin-name(kebab-case) - Command names:
/do-something(verb-based, kebab-case) - Agent names:
Role Describer(clear role indication) - File names: lowercase with hyphens
Security Checklist
Before publishing:
- No API keys or passwords in code
- Use environment variables for secrets
- Document security requirements
- Review scripts for security issues
- Consider what permissions plugin needs
Documentation Checklist
Every plugin should have:
- README.md with installation instructions
- Usage examples for each feature
- Required configuration explained
- Platform-specific notes (Windows/Mac/Linux)
- License file
- Contributing guidelines (optional)
Platform Compatibility Checklist
- README mentions platform compatibility
- Windows users directed to GitHub method
- Local paths avoided in favor of GitHub
- Installation tested on multiple platforms
- Clear warnings about platform limitations
Quick Reference
Required Files
my-plugin/
âââ .claude-plugin/
âââ plugin.json # â This file is REQUIRED
Minimal plugin.json
Basic structure (verify against current docs):
{
"name": "my-plugin",
"version": "1.0.0",
"description": "What this plugin does"
}
With full metadata:
{
"name": "my-plugin",
"version": "1.0.0",
"description": "What this plugin does",
"author": {
"name": "Your Name",
"email": "[email protected]"
},
"keywords": ["keyword1", "keyword2"],
"license": "MIT"
}
Note: Components (commands, agents, skills) don't need to be registered in plugin.json - they are discovered automatically from their directories.
Minimal marketplace.json
Example structure (verify against current marketplace docs):
{
"name": "my-marketplace",
"owner": {
"name": "Your Name",
"email": "[email protected]"
},
"plugins": [
{
"name": "my-plugin",
"source": "./plugins/my-plugin",
"description": "Complete [domain] expertise system. PROACTIVELY activate for: (1) [use cases]. Provides: [capabilities].",
"version": "1.0.0",
"author": {
"name": "Author Name"
},
"keywords": ["domain", "primary", "secondary", "technical"]
}
]
}
â ī¸ CRITICAL: Always include description and keywords in marketplace.json entries - they are used for marketplace discovery and don't automatically sync from plugin.json.
Note: Check the fetched marketplace documentation for all required fields.
Essential Commands
# Marketplace management
/plugin marketplace add username/repo
/plugin marketplace list
/plugin marketplace update marketplace-name
/plugin marketplace remove marketplace-name
# Plugin management
/plugin install plugin-name@marketplace-name
/plugin list
/plugin uninstall plugin-name
# Testing
/help # See your commands
/agents # See your agents
claude --debug # Debug mode
Installation Methods by Platform
Windows:
# RECOMMENDED: GitHub marketplace
/plugin marketplace add YOUR_USERNAME/YOUR_REPO
/plugin install plugin-name@YOUR_USERNAME
Mac/Linux:
# Option 1: GitHub marketplace (recommended)
/plugin marketplace add YOUR_USERNAME/YOUR_REPO
/plugin install plugin-name@YOUR_USERNAME
# Option 2: Local installation
unzip plugin-name.zip -d ~/.local/share/claude/plugins/
Additional Resources
Official Documentation
- Plugins Guide: https://docs.claude.com/en/docs/claude-code/plugins
- Marketplace Guide: https://docs.claude.com/en/docs/claude-code/plugin-marketplaces
- Plugins Reference: https://docs.claude.com/en/docs/claude-code/plugins-reference
- MCP Documentation: https://docs.claude.com/en/docs/claude-code/mcp
- Skills Engineering: https://www.anthropic.com/engineering/equipping-agents-for-the-real-world-with-agent-skills
Community Resources
- Plugin Directory: https://claudecodemarketplace.com/
- Marketplace Directory: https://claudemarketplaces.com/
- Official GitHub: https://github.com/anthropics/claude-code
- Claude Developers Discord: Join for help and discussion
- Community Plugins: Browse GitHub for examples and inspiration
Related Skills
- skill-creator: Create optimized Skills to package in plugins
- context-master: Optimize multi-file plugin development
Conclusion
You now have everything you need to create, test, and publish Claude Code plugins!
Remember:
- Start simple - your first plugin can be just one command
- Use GitHub marketplace for reliable cross-platform distribution
- Test thoroughly before sharing
- Don't hesitate to ask for help
- Share your work with the community
Your journey:
- â Created your first plugin
- â Learned plugin structure
- â Packaged as downloadable ZIPs
- â Published to a marketplace
- đ¯ Next: Build something useful!
Platform compatibility:
- â GitHub method works on all platforms
- â ī¸ Local installation may have issues on Windows
- đĄ Always provide ZIP downloads for users
Now go build something awesome! đ