215 lines
5.1 KiB
Markdown
215 lines
5.1 KiB
Markdown
---
|
|
name: plugins
|
|
description: How to create, install, and manage Claude Code plugins and plugin marketplaces. Use when user asks about plugins, plugin creation, plugin distribution, or plugin marketplaces.
|
|
---
|
|
|
|
# Claude Code Plugins
|
|
|
|
## Overview
|
|
|
|
Plugins extend Claude Code with custom functionality including commands, agents, hooks, Skills, and MCP servers. They can be shared across projects and teams through marketplaces.
|
|
|
|
## Quick Start
|
|
|
|
### Basic Structure
|
|
A plugin requires:
|
|
- **Plugin manifest** (`.claude-plugin/plugin.json`) - metadata
|
|
- **Commands directory** (`commands/`) - custom slash commands
|
|
- **Optional components** - agents, skills, hooks, MCP servers
|
|
|
|
### Creating Your First Plugin
|
|
|
|
1. **Setup directories**
|
|
```bash
|
|
mkdir test-marketplace/my-first-plugin
|
|
cd my-first-plugin
|
|
mkdir .claude-plugin commands
|
|
```
|
|
|
|
2. **Create plugin manifest** (`.claude-plugin/plugin.json`)
|
|
```json
|
|
{
|
|
"name": "my-first-plugin",
|
|
"description": "A simple greeting plugin",
|
|
"version": "1.0.0",
|
|
"author": {"name": "Your Name"}
|
|
}
|
|
```
|
|
|
|
3. **Add command** (`commands/hello.md`)
|
|
Contains: "Greet the user warmly and ask how you can help them today."
|
|
|
|
4. **Create marketplace manifest** (`.claude-plugin/marketplace.json`)
|
|
Lists your plugins with their source paths and descriptions.
|
|
|
|
5. **Install locally**
|
|
```
|
|
/plugin marketplace add ./test-marketplace
|
|
/plugin install my-first-plugin@test-marketplace
|
|
```
|
|
|
|
## Plugin Components
|
|
|
|
### Commands
|
|
Markdown files in `commands/` directory defining custom slash commands that Claude can invoke.
|
|
|
|
### Agents
|
|
Agent definitions in `agents/` directory for specialized task automation.
|
|
|
|
### Skills
|
|
`SKILL.md` files in `skills/` directory that extend Claude's autonomous capabilities. Model-invoked based on task context.
|
|
|
|
### Hooks
|
|
`hooks.json` for event handling and workflow automation.
|
|
|
|
### MCP Servers
|
|
`.mcp.json` configuration for external tool integration.
|
|
|
|
## Managing Plugins
|
|
|
|
**Add marketplace**: `/plugin marketplace add your-org/claude-plugins`
|
|
|
|
**Browse/install**: `/plugin` opens interactive menu
|
|
|
|
**Direct install**: `/plugin install formatter@org-name`
|
|
|
|
**Control**: Enable, disable, or uninstall plugins as needed
|
|
|
|
**Verify**: Run `/help` to see newly available commands
|
|
|
|
## Team Setup
|
|
|
|
Configure plugins at repository level via `.claude/settings.json`. When team members trust the folder, marketplaces and plugins install automatically.
|
|
|
|
## Development Workflow
|
|
|
|
1. Create local development marketplace
|
|
2. Organize plugins in subdirectories
|
|
3. Test changes iteratively
|
|
4. Uninstall and reinstall to verify updates
|
|
5. Document with README and semantic versioning
|
|
|
|
## Distribution
|
|
|
|
- Add comprehensive documentation
|
|
- Use semantic versioning in `plugin.json`
|
|
- Create or use existing marketplaces
|
|
- Test with team members before wider release
|
|
|
|
## Plugin Marketplaces
|
|
|
|
Plugin marketplaces are JSON-based catalogs that distribute Claude Code extensions. They enable centralized discovery, version management, and team distribution of plugins across multiple sources.
|
|
|
|
### Key Features
|
|
|
|
- **Centralized discovery**: Browse plugins from multiple sources in one location
|
|
- **Version management**: Track and automatically update plugin versions
|
|
- **Team distribution**: Share required plugins across organizations
|
|
- **Flexible sources**: Support git repositories, GitHub repos, local paths, and package managers
|
|
|
|
### Adding Marketplaces
|
|
|
|
**GitHub Repositories:**
|
|
```
|
|
/plugin marketplace add owner/repo
|
|
```
|
|
|
|
**Git Repositories:**
|
|
```
|
|
/plugin marketplace add https://gitlab.com/company/plugins.git
|
|
```
|
|
|
|
**Local Development:**
|
|
```
|
|
/plugin marketplace add ./my-marketplace
|
|
/plugin marketplace add ./path/to/marketplace.json
|
|
/plugin marketplace add https://url.of/marketplace.json
|
|
```
|
|
|
|
### Creating a Marketplace
|
|
|
|
Create `.claude-plugin/marketplace.json` in your repository:
|
|
|
|
```json
|
|
{
|
|
"name": "company-tools",
|
|
"owner": {
|
|
"name": "DevTools Team",
|
|
"email": "[email protected]"
|
|
},
|
|
"plugins": [
|
|
{
|
|
"name": "code-formatter",
|
|
"source": "./plugins/formatter",
|
|
"description": "Automatic code formatting on save",
|
|
"version": "2.1.0"
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
### Plugin Sources
|
|
|
|
**Relative Paths:**
|
|
```json
|
|
{
|
|
"name": "my-plugin",
|
|
"source": "./plugins/my-plugin"
|
|
}
|
|
```
|
|
|
|
**GitHub:**
|
|
```json
|
|
{
|
|
"name": "github-plugin",
|
|
"source": {
|
|
"source": "github",
|
|
"repo": "owner/plugin-repo"
|
|
}
|
|
}
|
|
```
|
|
|
|
**Git Services:**
|
|
```json
|
|
{
|
|
"name": "git-plugin",
|
|
"source": {
|
|
"source": "url",
|
|
"url": "https://gitlab.com/team/plugin.git"
|
|
}
|
|
}
|
|
```
|
|
|
|
## Team Configuration
|
|
|
|
Specify marketplaces in `.claude/settings.json`:
|
|
|
|
```json
|
|
{
|
|
"extraKnownMarketplaces": {
|
|
"team-tools": {
|
|
"source": {
|
|
"source": "github",
|
|
"repo": "your-org/claude-plugins"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
## Management Commands
|
|
|
|
```
|
|
/plugin marketplace list # Show all marketplaces
|
|
/plugin marketplace update name # Refresh metadata
|
|
/plugin marketplace remove name # Remove marketplace
|
|
```
|
|
|
|
## Best Practices
|
|
|
|
- Establish clear versioning policies
|
|
- Provide comprehensive README documentation
|
|
- Maintain active community engagement
|
|
- Review plugins for security before distribution
|
|
- Document all marketplace contents
|