Skills, hooks, MCP servers, agents — all of it can be packaged, versioned, and shared as a Claude Code plugin. Install once, and every session has those capabilities without any extra setup.
What a Plugin Is
A plugin extends Claude Code with any combination of:
- Skills — instruction sets that tell Claude how to handle specific tasks
- Agents — specialized subagents for particular workflows
- Hooks — scripts that run at defined points in the session lifecycle
- MCP servers — pre-configured connections to external services
Plugins are distributed through marketplaces — catalogs where you browse and install what you need. Adding a marketplace and installing a plugin are two separate steps, like adding an app store before downloading apps.
The Official Marketplace
The official Anthropic marketplace (claude-plugins-official) is available by default. Run /plugin and go to the Discover tab to browse it, or install directly:
/plugin install github@claude-plugins-official
If a plugin isn’t found, refresh the marketplace first:
/plugin marketplace update claude-plugins-official
What’s in it
Code intelligence — LSP plugins that give Claude real-time diagnostics and code navigation. After every edit, Claude sees type errors and missing imports automatically, without running a compiler. Available for TypeScript, Python, Go, Rust, C/C++, Java, and more. Requires the language server binary installed on your system.
External integrations — pre-configured MCP servers for GitHub, GitLab, Linear, Notion, Figma, Slack, Sentry, Vercel, Supabase, and others. No manual MCP setup needed.
Development workflows — skills and agents for git commits, PR review, and Agent SDK development. obra/superpowers is a good third-party example of this category: 14 skills that enforce TDD, structured debugging, and design-first workflows.
Output styles — plugins that change how Claude explains its work (educational mode, interactive learning).
Installing and Managing Plugins
Install (defaults to user scope — available across all your projects):
/plugin install plugin-name@marketplace-name
To choose a different scope, use the interactive UI: run /plugin → Discover → select a plugin → pick User, Project, or Local scope.
After installing, reload to activate:
/reload-plugins
Disable without uninstalling:
/plugin disable plugin-name@marketplace-name
Re-enable:
/plugin enable plugin-name@marketplace-name
Remove completely:
/plugin uninstall plugin-name@marketplace-name
The Installed tab in /plugin lists everything grouped by scope. Plugins with errors appear at the top. You can also filter by name, favorite plugins, and manage them all from there.
Adding Other Marketplaces
You’re not limited to the official marketplace. Add any catalog from GitHub, a git URL, a local path, or a hosted JSON file:
# GitHub repo
/plugin marketplace add anthropics/claude-code
# Git URL (GitLab, self-hosted, etc.)
/plugin marketplace add https://gitlab.com/your-org/plugins.git
# Local development
/plugin marketplace add ./my-marketplace
For teams, add extraKnownMarketplaces to .claude/settings.json — when teammates trust the repo folder, Claude Code prompts them to install the configured marketplaces and plugins automatically.
Creating a Plugin
The fastest way to start is installing the official plugin-dev toolkit:
/plugin install plugin-dev@claude-plugins-official
At its core, a plugin is a directory with a manifest, your extension files, and optionally a session-start hook:
my-plugin/
├── .claude-plugin/
│ └── plugin.json ← manifest (name, version, description)
├── skills/
│ └── pr-checklist/
│ └── SKILL.md ← instruction set
└── hooks/
└── session-start ← injects context at startup
A minimal skill:
---
name: pr-checklist
description: Runs a checklist before any PR is created
---
## When to Use
When the user asks to open a PR or push changes.
## Instructions
Before proceeding, verify:
- [ ] Tests pass locally
- [ ] No debug logs left in the diff
- [ ] Migrations included if schema changed
Once built, install it locally for testing:
/plugin install ./my-plugin
/reload-plugins
Plugin skills are namespaced to avoid conflicts: my-plugin:pr-checklist.