Skip to main content

What are plugins?

A plugin is a package that extends Claude Code. Plugins can provide:
  • Skills — new slash commands (e.g. /my-plugin:review)
  • Hooks — scripts that run before or after tool calls
  • MCP servers — additional tools and context sources
  • LSP servers — language intelligence for specific file types
  • Agents — specialized sub-agent workflows
  • Output styles — custom response formatting
Plugins are installed from marketplaces — curated collections hosted on GitHub, npm, or a local directory. Built-in plugins ship directly with Claude Code.

The /plugin command

Run /plugin to open the plugin management UI. You can also pass subcommands directly:

Installing a plugin

1

Find a plugin

Browse available plugins with /plugin and navigate to the marketplace browser, or install directly if you know the plugin name.
2

Install it

Claude Code clones or downloads the plugin and validates its plugin.json manifest.
3

Enable it

Newly installed plugins are enabled by default. If you disabled one previously, re-enable it:
Plugin enabled/disabled state is saved to your user settings and persists across sessions.

Built-in plugins

Claude Code ships with built-in plugins that appear in the /plugin UI under a Built-in section. Built-in plugins use the @builtin identifier (e.g. my-plugin@builtin). You can enable or disable built-in plugins the same way as marketplace plugins. Disabled built-in plugins contribute no skills, hooks, or MCP servers until re-enabled.
Built-in plugins differ from bundled skills. Bundled skills (like /verify and /debug) are always available and cannot be disabled. Built-in plugins appear in the plugin UI and respect your enable/disable preference.

Plugin configuration

Some plugins declare user-configurable options in their plugin.json. When you enable such a plugin, Claude Code prompts you to fill in the required values (for example, an API key or a directory path). Non-sensitive values are saved to settings.json. Sensitive values (marked sensitive: true in the manifest) are stored in secure storage (macOS Keychain or .credentials.json on other platforms). You can update a plugin’s configuration at any time from the plugin manage screen (/plugin manage).

Adding a marketplace

A marketplace is a repository that contains a marketplace.json listing available plugins. Add one with:
Or configure it directly in settings.json:
Marketplace sources support GitHub repos, git URLs, npm packages, and local file paths.

Creating a plugin

A plugin is a directory containing a plugin.json manifest.

Minimal plugin structure

plugin.json manifest

The manifest can also declare skills, hooks, MCP servers, and other components inline or via file paths:

Plugin components

Skills

Place skill directories under skills/ or point to them with the skills field in plugin.json. Skills follow the same SKILL.md format as user skills.

Hooks

Define a hooks/hooks.json file, or point to it with the hooks field. The hooks format matches the hooks key in settings.json.

MCP Servers

Configure MCP servers in .mcp.json or inline under mcpServers in plugin.json. They are registered when the plugin is enabled.

Commands

Place Markdown files under commands/ to add slash commands. Commands differ from skills in that they always show up for users to invoke directly.

Validate before publishing

Run /plugin validate <path> to check your plugin manifest for errors before distributing it:
Use kebab-case for plugin names (e.g. my-plugin, not MyPlugin). Plugin IDs take the form plugin-name@marketplace-name.
Plugin names containing patterns that impersonate official Anthropic marketplaces (such as names starting with anthropic- or claude- followed by marketplace or plugins) are blocked. Reserved official names can only be used by repositories in the anthropics GitHub organization.