> ## Documentation Index
> Fetch the complete documentation index at: https://cisco-ea52c096.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Plugins

> Extend Claude Code with plugins that add new skills, hooks, MCP servers, and slash commands. Manage plugins with the /plugin command.

## 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:

| Command | Action |
| - | - |
| `/plugin` | Open the plugin menu |
| `/plugin install <name>` | Install a plugin by name |
| `/plugin install <name>@<marketplace>` | Install from a specific marketplace |
| `/plugin uninstall <name>` | Remove an installed plugin |
| `/plugin enable <name>` | Enable a disabled plugin |
| `/plugin disable <name>` | Disable a plugin without removing it |
| `/plugin manage` | Open the installed plugins manager |
| `/plugin validate <path>` | Validate a local plugin manifest |
| `/plugin marketplace add <url>` | Add a marketplace |
| `/plugin marketplace remove <name>` | Remove a marketplace |
| `/plugin marketplace list` | List configured marketplaces |

## Installing a plugin

<Steps>
  <Step title="Find a plugin">
    Browse available plugins with `/plugin` and navigate to the marketplace browser, or install directly if you know the plugin name.
  </Step>

  <Step title="Install it">
    ```
    /plugin install my-plugin@my-marketplace
    ```

    Claude Code clones or downloads the plugin and validates its `plugin.json` manifest.
  </Step>

  <Step title="Enable it">
    Newly installed plugins are enabled by default. If you disabled one previously, re-enable it:

    ```
    /plugin enable my-plugin@my-marketplace
    ```
  </Step>
</Steps>

<Note>
  Plugin enabled/disabled state is saved to your user settings and persists across sessions.
</Note>

## 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.

<Note>
  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.
</Note>

## 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:

```
/plugin marketplace add https://github.com/example-org/my-marketplace
```

Or configure it directly in `settings.json`:

```json theme={null}
{
  "extraKnownMarketplaces": [
    {
      "source": {
        "source": "github",
        "repo": "example-org/my-marketplace"
      }
    }
  ]
}
```

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

```
my-plugin/
  plugin.json
  skills/
    my-skill/
      SKILL.md
  hooks/
    hooks.json
```

### plugin.json manifest

```json theme={null}
{
  "name": "my-plugin",
  "version": "1.0.0",
  "description": "A plugin that does useful things",
  "author": {
    "name": "Your Name",
    "url": "https://github.com/yourname"
  }
}
```

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

```json theme={null}
{
  "name": "my-plugin",
  "version": "1.0.0",
  "description": "Adds a code review skill and a formatting hook",
  "skills": "./skills",
  "hooks": "./hooks/hooks.json",
  "mcpServers": {
    "my-server": {
      "command": "node",
      "args": ["./server/index.js"]
    }
  }
}
```

### Plugin components

<CardGroup cols={2}>
  <Card title="Skills" icon="terminal">
    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.
  </Card>

  <Card title="Hooks" icon="webhook">
    Define a `hooks/hooks.json` file, or point to it with the `hooks` field. The hooks format matches the `hooks` key in `settings.json`.
  </Card>

  <Card title="MCP Servers" icon="server">
    Configure MCP servers in `.mcp.json` or inline under `mcpServers` in `plugin.json`. They are registered when the plugin is enabled.
  </Card>

  <Card title="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.
  </Card>
</CardGroup>

### Validate before publishing

Run `/plugin validate <path>` to check your plugin manifest for errors before distributing it:

```
/plugin validate ./my-plugin
```

<Tip>
  Use kebab-case for plugin names (e.g. `my-plugin`, not `MyPlugin`). Plugin IDs take the form `plugin-name@marketplace-name`.
</Tip>

<Warning>
  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.
</Warning>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.