skills/create-claude-plugin/SKILL.md
Guide for creating Claude Code plugins that bundle skills, agents, commands, hooks, and MCP servers for distribution. Covers plugin structure, marketplace.json format, installation, testing, and publishing. Use when the user wants to create plugins, distribute skills/agents, build marketplaces, or mentions creating/packaging/publishing plugins.
npx skillsauth add ronnycoding/.claude create-claude-pluginInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill helps you create Claude Code plugins - bundled collections of skills, agents, commands, hooks, and MCP servers that can be distributed and shared via plugin marketplaces. Plugins enable team collaboration and community sharing of Claude Code extensions.
When creating a new plugin, follow this workflow:
Claude Code Plugins are packaged collections of extensions that provide:
Plugins enable:
Use plugins for:
Examples:
Use individual files for:
my-plugin/
├── .claude-plugin/
│ └── marketplace.json # Plugin metadata (required)
├── skills/ # Agent Skills (optional)
│ └── my-skill/
│ └── SKILL.md
├── agents/ # Subagents (optional)
│ └── my-agent.md
├── commands/ # Slash commands (optional)
│ └── my-command.md
├── hooks/ # Event handlers (optional)
│ └── hooks.json
├── mcp/ # MCP server configs (optional)
│ └── .mcp.json
├── README.md # Documentation (recommended)
├── LICENSE.txt # License information (recommended)
└── THIRD_PARTY_NOTICES.md # Third-party attributions (if applicable)
Minimum requirement is .claude-plugin/marketplace.json:
simple-plugin/
├── .claude-plugin/
│ └── marketplace.json
└── skills/
└── simple-skill/
└── SKILL.md
{
"name": "my-plugin-marketplace",
"owner": {
"name": "Your Name",
"email": "[email protected]"
},
"metadata": {
"description": "Brief marketplace description",
"version": "1.0.0"
},
"plugins": [
{
"name": "my-plugin",
"description": "What this plugin does",
"source": "./",
"strict": false,
"skills": [
"./skills/my-skill"
]
}
]
}
Marketplace Level:
name (required): Unique marketplace identifier (lowercase, hyphens)owner (required): Owner information with name and emailmetadata (required): Marketplace description and versionPlugin Level:
name (required): Plugin identifier (appears in /plugin list)description (required): What the plugin provides (shown to users)source (required): Plugin root directory (usually ./)strict (optional): Strict validation mode (default: false)skills (optional): Array of skill directory pathsagents (optional): Array of agent file pathscommands (optional): Array of command file pathshooks (optional): Hooks configuration pathmcp (optional): MCP configuration path{
"name": "devtools-marketplace",
"owner": {
"name": "Development Team",
"email": "[email protected]"
},
"metadata": {
"description": "Development workflow tools and utilities",
"version": "2.1.0"
},
"plugins": [
{
"name": "devtools",
"description": "Comprehensive development workflow toolkit with code review, testing, and deployment capabilities",
"source": "./",
"strict": false,
"skills": [
"./skills/code-review",
"./skills/test-automation",
"./skills/deployment"
],
"agents": [
"./agents/code-reviewer.md",
"./agents/test-runner.md",
"./agents/deploy-engineer.md"
],
"commands": [
"./commands/review.md",
"./commands/test.md",
"./commands/deploy.md"
],
"hooks": "./hooks/hooks.json",
"mcp": "./mcp/.mcp.json"
}
]
}
{
"name": "company-tools",
"owner": {
"name": "Company Engineering",
"email": "[email protected]"
},
"metadata": {
"description": "Company-wide Claude Code extensions",
"version": "1.0.0"
},
"plugins": [
{
"name": "frontend-tools",
"description": "React and frontend development utilities",
"source": "./",
"skills": [
"./frontend/component-generator",
"./frontend/style-guide"
],
"agents": [
"./frontend/react-expert.md"
]
},
{
"name": "backend-tools",
"description": "Backend API and database tools",
"source": "./",
"skills": [
"./backend/api-design",
"./backend/database-migration"
],
"agents": [
"./backend/api-architect.md",
"./backend/db-optimizer.md"
]
},
{
"name": "devops-tools",
"description": "CI/CD and infrastructure utilities",
"source": "./",
"skills": [
"./devops/deployment",
"./devops/monitoring"
],
"commands": [
"./devops/deploy.md",
"./devops/rollback.md"
]
}
]
}
Directory structure:
plugin/
├── .claude-plugin/
│ └── marketplace.json
└── skills/
├── pdf-processor/
│ ├── SKILL.md
│ ├── scripts/
│ │ └── extract.py
│ └── templates/
│ └── report.md
└── excel-analyzer/
└── SKILL.md
marketplace.json:
{
"plugins": [
{
"name": "document-tools",
"skills": [
"./skills/pdf-processor",
"./skills/excel-analyzer"
]
}
]
}
Directory structure:
plugin/
├── .claude-plugin/
│ └── marketplace.json
└── agents/
├── code-reviewer.md
├── test-automator.md
└── security-auditor.md
marketplace.json:
{
"plugins": [
{
"name": "quality-tools",
"agents": [
"./agents/code-reviewer.md",
"./agents/test-automator.md",
"./agents/security-auditor.md"
]
}
]
}
Directory structure:
plugin/
├── .claude-plugin/
│ └── marketplace.json
└── commands/
├── review.md
├── test.md
└── git/
├── commit.md
└── pr.md
marketplace.json:
{
"plugins": [
{
"name": "workflow-commands",
"commands": [
"./commands/review.md",
"./commands/test.md",
"./commands/git/commit.md",
"./commands/git/pr.md"
]
}
]
}
Directory structure:
plugin/
├── .claude-plugin/
│ └── marketplace.json
└── hooks/
├── hooks.json
└── scripts/
└── format.sh
hooks/hooks.json:
{
"PostToolUse": [
{
"matcher": "Edit",
"hooks": [
{
"type": "command",
"command": "npx prettier --write $(jq -r '.tool_input.file_path')"
}
]
}
]
}
marketplace.json:
{
"plugins": [
{
"name": "formatter-plugin",
"hooks": "./hooks/hooks.json"
}
]
}
Directory structure:
plugin/
├── .claude-plugin/
│ └── marketplace.json
└── mcp/
└── .mcp.json
mcp/.mcp.json:
{
"mcpServers": {
"github": {
"type": "http",
"url": "https://mcp.github.com",
"headers": {
"Authorization": "Bearer ${GITHUB_TOKEN}"
}
},
"filesystem": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"${HOME}/projects"
]
}
}
}
marketplace.json:
{
"plugins": [
{
"name": "integration-plugin",
"mcp": "./mcp/.mcp.json"
}
]
}
Structure:
document-suite/
├── .claude-plugin/
│ └── marketplace.json
├── skills/
│ ├── pdf/
│ │ ├── SKILL.md
│ │ └── scripts/
│ │ └── extract.py
│ ├── excel/
│ │ └── SKILL.md
│ ├── word/
│ │ └── SKILL.md
│ └── powerpoint/
│ └── SKILL.md
├── README.md
└── LICENSE.txt
marketplace.json:
{
"name": "document-processing-marketplace",
"owner": {
"name": "Document Tools Team",
"email": "[email protected]"
},
"metadata": {
"description": "Comprehensive document processing capabilities",
"version": "1.0.0"
},
"plugins": [
{
"name": "document-suite",
"description": "Process PDF, Excel, Word, and PowerPoint documents with advanced capabilities",
"source": "./",
"strict": false,
"skills": [
"./skills/pdf",
"./skills/excel",
"./skills/word",
"./skills/powerpoint"
]
}
]
}
Structure:
fullstack-toolkit/
├── .claude-plugin/
│ └── marketplace.json
├── skills/
│ ├── api-design/
│ │ └── SKILL.md
│ ├── database-migration/
│ │ └── SKILL.md
│ └── frontend-components/
│ └── SKILL.md
├── agents/
│ ├── backend-architect.md
│ ├── frontend-developer.md
│ └── database-optimizer.md
├── commands/
│ ├── api-scaffold.md
│ ├── component-create.md
│ └── migration-generate.md
├── hooks/
│ └── hooks.json
└── README.md
marketplace.json:
{
"name": "fullstack-marketplace",
"owner": {
"name": "Full Stack Team",
"email": "[email protected]"
},
"metadata": {
"description": "Complete full stack development toolkit",
"version": "2.0.0"
},
"plugins": [
{
"name": "fullstack-toolkit",
"description": "Backend, frontend, and database development tools with agents, skills, and automation",
"source": "./",
"strict": false,
"skills": [
"./skills/api-design",
"./skills/database-migration",
"./skills/frontend-components"
],
"agents": [
"./agents/backend-architect.md",
"./agents/frontend-developer.md",
"./agents/database-optimizer.md"
],
"commands": [
"./commands/api-scaffold.md",
"./commands/component-create.md",
"./commands/migration-generate.md"
],
"hooks": "./hooks/hooks.json"
}
]
}
Structure:
security-audit/
├── .claude-plugin/
│ └── marketplace.json
├── skills/
│ └── security-scan/
│ ├── SKILL.md
│ └── scripts/
│ ├── scan.sh
│ └── analyze.py
├── agents/
│ ├── security-auditor.md
│ └── vulnerability-analyst.md
├── commands/
│ ├── security-scan.md
│ └── vuln-report.md
└── README.md
marketplace.json:
{
"name": "security-marketplace",
"owner": {
"name": "Security Team",
"email": "[email protected]"
},
"metadata": {
"description": "Security auditing and vulnerability analysis tools",
"version": "1.5.0"
},
"plugins": [
{
"name": "security-audit",
"description": "Comprehensive security scanning, vulnerability detection, and audit reporting",
"source": "./",
"strict": true,
"skills": [
"./skills/security-scan"
],
"agents": [
"./agents/security-auditor.md",
"./agents/vulnerability-analyst.md"
],
"commands": [
"./commands/security-scan.md",
"./commands/vuln-report.md"
]
}
]
}
1. Create test marketplace directory:
mkdir -p ~/test-marketplace/my-plugin
cd ~/test-marketplace/my-plugin
2. Create plugin structure:
mkdir -p .claude-plugin skills/test-skill
3. Create marketplace.json:
{
"name": "test-marketplace",
"owner": {
"name": "Test Developer",
"email": "[email protected]"
},
"metadata": {
"description": "Test plugin marketplace",
"version": "0.1.0"
},
"plugins": [
{
"name": "test-plugin",
"description": "Testing plugin functionality",
"source": "./",
"skills": ["./skills/test-skill"]
}
]
}
4. Create test skill:
cat > skills/test-skill/SKILL.md <<'EOF'
---
name: test-skill
description: Simple test skill for validation
---
# Test Skill
This is a test skill to verify plugin installation works correctly.
When invoked, respond: "Test skill is working!"
EOF
Add marketplace:
# In Claude Code
/plugin marketplace add ~/test-marketplace/my-plugin
Install plugin:
/plugin install test-plugin@test-marketplace
Verify installation:
/plugin list
Should show: test-plugin@test-marketplace (enabled)
Test skill activation:
Test agent:
/agents to see if agent appearsTest command:
/test-command to verify it appearsTest hooks:
Update plugin:
/plugin uninstall test-plugin@test-marketplace/plugin install test-plugin@test-marketplace# Plugin Name
Brief description of what the plugin provides.
## Features
- Feature 1: Description
- Feature 2: Description
- Feature 3: Description
## Installation
### Via Plugin Marketplace
\`\`\`bash
/plugin marketplace add https://github.com/username/plugin-name
/plugin install plugin-name@marketplace-name
\`\`\`
### Local Installation
\`\`\`bash
git clone https://github.com/username/plugin-name.git
/plugin marketplace add /path/to/plugin-name
/plugin install plugin-name@local-marketplace
\`\`\`
## Usage
### Skills
**skill-name**: Description and trigger keywords
Example: "Process PDF document"
### Agents
**agent-name**: Description and invocation method
Example: "/use agent-name to review code"
### Commands
**`/command-name`**: Description and arguments
Example: `/command-name arg1 arg2`
## Configuration
If plugin requires environment variables or configuration:
\`\`\`bash
export API_KEY="your-key"
export CONFIG_PATH="/path/to/config"
\`\`\`
## Requirements
- Node.js 18+ (if using npm packages)
- Python 3.8+ (if using Python scripts)
- Specific tools or dependencies
## Troubleshooting
### Issue 1
Description of common issue and solution.
### Issue 2
Description and resolution.
## License
[License type] - See LICENSE.txt
## Contributing
Contribution guidelines if open source.
## Support
Contact information or issue tracker link.
Choose appropriate license:
If using third-party code or libraries:
# Third-Party Notices
This plugin includes code from the following sources:
## Library Name
- Author: Name
- License: MIT
- URL: https://github.com/author/library
- Copyright (c) Year Author Name
[License text...]
## Another Library
...
Format: MAJOR.MINOR.PATCH
MAJOR: Breaking changes (2.0.0)
MINOR: New features (1.1.0)
PATCH: Bug fixes (1.0.1)
Examples:
1.0.0 - Initial release1.1.0 - Added new skill1.1.1 - Fixed skill bug2.0.0 - Restructured plugin (breaking change)Update version in metadata:
{
"metadata": {
"description": "Plugin description",
"version": "1.2.0"
}
}
Maintain CHANGELOG.md:
# Changelog
## [1.2.0] - 2025-10-30
### Added
- New security-scan skill
- Database migration commands
- Auto-formatting hooks
### Changed
- Improved code-review agent accuracy
- Updated documentation
### Fixed
- Bug in test-runner command
- Hook execution timing issue
## [1.1.0] - 2025-09-15
### Added
- Frontend development agent
- Component generation skill
## [1.0.0] - 2025-08-01
### Added
- Initial release
- Basic skills and agents
1. Create repository:
git init
git add .
git commit -m "Initial plugin release"
git remote add origin https://github.com/username/plugin-name.git
git push -u origin main
2. Users install via URL:
/plugin marketplace add https://github.com/username/plugin-name
/plugin install plugin-name@marketplace-name
1. Tag version:
git tag -a v1.0.0 -m "Release version 1.0.0"
git push origin v1.0.0
2. Create GitHub release:
Team repository:
# Internal GitLab/GitHub Enterprise
/plugin marketplace add https://git.company.com/team/plugin-name
Local network:
# Shared network drive
/plugin marketplace add /mnt/shared/plugins/plugin-name
Browse and discover:
/plugin # Open plugin browser
/plugin list # List installed plugins
/plugin marketplace list # List configured marketplaces
Install and manage:
/plugin install name@marketplace # Install plugin
/plugin enable name@marketplace # Enable plugin
/plugin disable name@marketplace # Disable plugin
/plugin uninstall name@marketplace # Remove plugin
Marketplace operations:
/plugin marketplace add <path-or-url> # Add marketplace
/plugin marketplace remove <name> # Remove marketplace
/plugin marketplace refresh <name> # Update marketplace
Rapid iteration:
# Make changes
/plugin uninstall test-plugin@test-marketplace
/plugin install test-plugin@test-marketplace
# Restart Claude Code
Verify components:
/skills # Check skills loaded
/agents # Check agents available
/help # Check commands listed
/mcp # Check MCP servers
When creating a plugin:
Never include:
Always use:
${API_KEY}For users:
For developers:
Avoid:
Check marketplace configuration:
/plugin marketplace list
Verify marketplace.json syntax:
Common issues:
Debug:
Skills not activating:
Agents not available:
/agents to confirm agent loadedCommands not appearing:
/help to list commandsMultiple plugin versions:
/plugin list for duplicatesDocument requirements:
## Requirements
This plugin requires:
- Python 3.8+
- Node.js 18+
- `pip install -r requirements.txt`
- `npm install` in plugin directory
## Setup
\`\`\`bash
cd ~/.claude/plugins/marketplaces/marketplace-name/
pip install -r requirements.txt
npm install
\`\`\`
Structure:
plugin/
├── skills/
│ ├── python-tools/
│ │ ├── SKILL.md
│ │ └── scripts/
│ │ └── tool.py
│ └── javascript-tools/
│ ├── SKILL.md
│ └── scripts/
│ └── tool.js
├── agents/
│ ├── python-expert.md
│ └── js-expert.md
└── .claude-plugin/
└── marketplace.json
Communicate changes:
# Upgrading from v1.x to v2.0
## Breaking Changes
- Skill X renamed to Y
- Agent Z removed (use new Agent A instead)
- Command /old replaced with /new
## Migration Steps
1. Uninstall old version
2. Install new version
3. Update environment variables
4. Review new documentation
When user asks to create a plugin:
Remember: Plugins package multiple Claude Code extensions for easy distribution and team sharing. Focus on cohesive functionality, thorough documentation, and proper versioning for successful plugin distribution.
development
Expert guide for WebGL API development including 3D graphics, shaders (GLSL), rendering pipeline, textures, buffers, performance optimization, and canvas rendering. Use when working with WebGL, 3D graphics, canvas rendering, shaders, GPU programming, or when user mentions WebGL, OpenGL ES, GLSL, vertex shaders, fragment shaders, texture mapping, or 3D web graphics.
tools
Guide for using the Sentry CLI to interact with Sentry from the command line. Use when the user asks about viewing issues, events, projects, organizations, making API calls, or authenticating with Sentry via CLI.
development
Guide for performing secure web searches with privacy protection, source verification, and information validation. Use when the user wants to search the web securely, verify sources, fact-check information, or mentions secure search, privacy, source validation, or web research.
development
Drive the OpenWA WhatsApp HTTP API from the terminal with curl. Use when sending WhatsApp messages (text/image/video/audio/document/location/contact/bulk), managing sessions and QR login, listing contacts/groups/chats, registering webhooks, or managing scoped API keys against an OpenWA server. Triggers on "OpenWA", "penwa", "send WhatsApp via API", "WhatsApp session", or mentions of base URL http://0.0.0.0:2785.