Claude Code Plugins Quick Reference
Full docs:
Plugins vs Standalone
| Approach | Skill names | Best for |
|---|---|---|
Standalone (.claude/) | /hello | Personal workflows, project-specific, quick experiments |
Plugins (.claude-plugin/plugin.json) | /plugin-name:hello | Sharing with teams, community distribution, versioned releases |
Plugin Structure
my-plugin/ ├── .claude-plugin/ │ └── plugin.json # Required manifest ├── commands/ # Slash commands (Markdown files) ├── skills/ # Agent skills (SKILL.md files) ├── agents/ # Custom agent definitions ├── hooks/ │ └── hooks.json # Event handlers ├── .mcp.json # MCP server configs └── .lsp.json # LSP server configs
Common mistake: Don't put commands/, skills/, etc. inside .claude-plugin/. Only plugin.json goes there.
Manifest (plugin.json)
{
"name": "my-plugin",
"description": "What the plugin does",
"version": "1.0.0",
"author": {
"name": "Your Name"
},
"homepage": "https://github.com/you/my-plugin",
"repository": "https://github.com/you/my-plugin",
"license": "MIT"
}
The name field becomes the skill namespace prefix (e.g., /my-plugin:hello).
Quick Commands
Marketplace Management
# Add marketplaces /plugin marketplace add owner/repo # GitHub /plugin marketplace add https://gitlab.com/org/repo.git # Other Git /plugin marketplace add ./local-path # Local directory /plugin marketplace add https://example.com/marketplace.json # URL # Add specific branch/tag /plugin marketplace add owner/repo#v1.0.0 # List, update, remove /plugin marketplace list /plugin marketplace update marketplace-name /plugin marketplace remove marketplace-name
Shortcuts: /plugin market works, rm instead of remove
Plugin Installation
# Install (defaults to user scope) /plugin install plugin-name@marketplace-name # Install with specific scope claude plugin install plugin-name@marketplace-name --scope project claude plugin install plugin-name@marketplace-name --scope local # Enable/disable without uninstalling /plugin disable plugin-name@marketplace-name /plugin enable plugin-name@marketplace-name # Uninstall /plugin uninstall plugin-name@marketplace-name
Interactive UI
/plugin # Opens plugin manager with tabs:
# - Discover: browse available plugins
# - Installed: manage your plugins
# - Marketplaces: add/remove marketplaces
# - Errors: view loading errors
Navigate tabs with Tab / Shift+Tab
Installation Scopes
| Scope | Who sees it | Stored in |
|---|---|---|
| User | You, all projects | ~/.claude/settings.json |
| Project | All collaborators | .claude/settings.json |
| Local | You, this repo only | .claude/settings.local.json |
| Managed | All org users | Admin-controlled |
Testing During Development
# Load plugin from local directory claude --plugin-dir ./my-plugin # Load multiple plugins claude --plugin-dir ./plugin-one --plugin-dir ./plugin-two
Restart Claude Code after making changes.
Official Marketplace Plugins
Code Intelligence (LSP)
| Language | Plugin | Binary required |
|---|---|---|
| TypeScript | typescript-lsp | typescript-language-server |
| Python | pyright-lsp | pyright-langserver |
| Rust | rust-analyzer-lsp | rust-analyzer |
| Go | gopls-lsp | gopls |
| C/C++ | clangd-lsp | clangd |
Install: /plugin install typescript-lsp@claude-plugins-official
External Integrations (MCP)
github, gitlab, atlassian, asana, linear, notion, figma, vercel, firebase, supabase, slack, sentry
Development Workflows
commit-commands, pr-review-toolkit, agent-sdk-dev, plugin-dev
Creating a Skill in a Plugin
Create skills/my-skill/SKILL.md:
--- name: my-skill description: What the skill does. Use when [context]. --- Instructions for Claude when this skill is invoked...
Creating a Command in a Plugin
Create commands/hello.md:
--- description: Greet the user disable-model-invocation: true --- Greet the user named "$ARGUMENTS" warmly.
Use as: /my-plugin:hello Alex
Hooks in Plugins
Create hooks/hooks.json:
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [{
"type": "command",
"command": "jq -r '.tool_input.file_path' | xargs npm run lint:fix"
}]
}
]
}
}
LSP Configuration
Create .lsp.json at plugin root:
{
"go": {
"command": "gopls",
"args": ["serve"],
"extensionToLanguage": {
".go": "go"
}
}
}
Auto-Updates
- •Official marketplaces: auto-update enabled by default
- •Third-party/local: disabled by default
- •Toggle per-marketplace in
/plugin> Marketplaces - •Disable all:
export DISABLE_AUTOUPDATER=true - •Plugins only:
DISABLE_AUTOUPDATER=true FORCE_AUTOUPDATE_PLUGINS=true
Team Setup
Add to .claude/settings.json for automatic marketplace prompts:
{
"extraKnownMarketplaces": ["your-org/team-plugins"],
"enabledPlugins": ["plugin-name@your-org-team-plugins"]
}
Troubleshooting
- •
/pluginnot recognized: Requires Claude Code 1.0.33+. Runclaude --version - •Plugin skills not appearing:
rm -rf ~/.claude/plugins/cache, restart, reinstall - •LSP binary not found: Check
/pluginErrors tab, install required binary - •Marketplace not loading: Verify
.claude-plugin/marketplace.jsonexists at path - •Files not found: Plugins are cached; paths outside plugin directory won't work
Convert Standalone to Plugin
- •Create
my-plugin/.claude-plugin/plugin.json - •Copy
.claude/commandstomy-plugin/commands/ - •Copy
.claude/skillstomy-plugin/skills/ - •Move hooks from
settings.jsontomy-plugin/hooks/hooks.json - •Test:
claude --plugin-dir ./my-plugin