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

# plugin

> Install, manage, and update Claude Code plugins from marketplaces.

Plugins extend Claude Code with additional tools, skills, MCP servers, and other capabilities. The `claude plugin` command group (aliased as `claude plugins`) provides non-interactive management of plugins from the command line.

```bash theme={null}
claude plugin <subcommand> [options]
```

Inside an interactive session, use the `/plugin` slash command (aliased as
`/plugins` and `/marketplace`) to open the plugin management UI.

## Subcommands

### `plugin list`

List all installed plugins.

```bash theme={null}
claude plugin list [options]
```

<ParamField path="--json" type="boolean">
  Output as JSON instead of formatted text.
</ParamField>

<ParamField path="--available" type="boolean">
  Include plugins available from configured marketplaces in the output.
  Requires `--json`.
</ParamField>

### `plugin install`

Install a plugin from a configured marketplace.

```bash theme={null}
claude plugin install [options] <plugin>
claude plugin i [options] <plugin>
```

<ParamField path="plugin" type="string" required>
  Plugin identifier. Use `plugin-name` to install from any marketplace, or
  `plugin-name@marketplace-name` to target a specific marketplace.
</ParamField>

<ParamField path="-s, --scope <scope>" type="string">
  Installation scope: `user` (default), `project`, or `local`.
</ParamField>

<CodeGroup>
  ```bash Install from any marketplace theme={null}
  claude plugin install my-formatter
  ```

  ```bash Install from a specific marketplace theme={null}
  claude plugin install code-formatter@anthropic-tools
  ```

  ```bash Install at project scope theme={null}
  claude plugin install my-formatter -s project
  ```
</CodeGroup>

### `plugin uninstall`

Uninstall an installed plugin.

```bash theme={null}
claude plugin uninstall [options] <plugin>
claude plugin remove [options] <plugin>
claude plugin rm [options] <plugin>
```

<ParamField path="plugin" type="string" required>
  Plugin name or `plugin@marketplace` identifier.
</ParamField>

<ParamField path="-s, --scope <scope>" type="string">
  Uninstall from scope: `user` (default), `project`, or `local`.
</ParamField>

<ParamField path="--keep-data" type="boolean">
  Preserve the plugin's persistent data directory
  (`~/.claude/plugins/data/{id}/`). By default, data is removed along with the
  plugin.
</ParamField>

### `plugin enable`

Re-enable a plugin that has been disabled.

```bash theme={null}
claude plugin enable [options] <plugin>
```

<ParamField path="plugin" type="string" required>
  Plugin name or `plugin@marketplace` identifier.
</ParamField>

<ParamField path="-s, --scope <scope>" type="string">
  Scope to enable the plugin in (`user`, `project`, or `local`). If not
  specified, the most specific scope for the current project is used
  automatically.
</ParamField>

### `plugin disable`

Disable a plugin without uninstalling it.

```bash theme={null}
claude plugin disable [options] [plugin]
```

<ParamField path="plugin" type="string">
  Plugin name or `plugin@marketplace` identifier. Omit when using `--all`.
</ParamField>

<ParamField path="-a, --all" type="boolean">
  Disable all currently enabled plugins.
</ParamField>

<ParamField path="-s, --scope <scope>" type="string">
  Scope to disable the plugin in. If not specified, the most specific scope for
  the current project is used automatically.
</ParamField>

### `plugin update`

Update a plugin to the latest version. A restart is required for the update to
take effect.

```bash theme={null}
claude plugin update [options] <plugin>
```

<ParamField path="plugin" type="string" required>
  Plugin name or `plugin@marketplace` identifier.
</ParamField>

<ParamField path="-s, --scope <scope>" type="string">
  Scope to update: `user` (default), `project`, or `local`.
</ParamField>

### `plugin validate`

Validate a plugin or marketplace manifest file for correctness.

```bash theme={null}
claude plugin validate <path>
```

<ParamField path="path" type="string" required>
  Path to the `plugin.json` or `marketplace.json` manifest to validate.
</ParamField>

## Marketplace subcommands

Marketplaces are registries from which plugins can be discovered and installed.

### `plugin marketplace add`

Add a marketplace from a URL, file path, or GitHub repository.

```bash theme={null}
claude plugin marketplace add [options] <source>
```

<ParamField path="source" type="string" required>
  URL, local path, or GitHub repo (e.g. `org/repo`) of the marketplace.
</ParamField>

<ParamField path="--scope <scope>" type="string">
  Where to declare the marketplace: `user` (default), `project`, or `local`.
</ParamField>

<ParamField path="--sparse <paths...>" type="string[]">
  Limit the git checkout to specific directories using sparse-checkout (useful
  for monorepos). Example: `--sparse .claude-plugin plugins`.
</ParamField>

### `plugin marketplace list`

List all configured marketplaces.

```bash theme={null}
claude plugin marketplace list [--json]
```

### `plugin marketplace remove`

Remove a configured marketplace.

```bash theme={null}
claude plugin marketplace remove <name>
claude plugin marketplace rm <name>
```

### `plugin marketplace update`

Update marketplace listings from their source. Updates all marketplaces if no
name is specified.

```bash theme={null}
claude plugin marketplace update [name]
```

## Plugin scopes

| Scope     | Where stored                  | Visible to                |
| --------- | ----------------------------- | ------------------------- |
| `user`    | `~/.claude/settings.json`     | You, across all projects  |
| `project` | `.claude/settings.json`       | Everyone on the project   |
| `local`   | `.claude/settings.local.json` | You, in this project only |

<Note>
  Plugins installed at `user` scope are available in every project. Use
  `project` scope for plugins that all collaborators should have, and `local`
  scope for personal overrides that you do not want to commit to git.
</Note>

## The `/plugin` slash command

Inside an interactive session, `/plugin` opens the plugin management UI where
you can browse, install, enable, disable, and uninstall plugins interactively:

```
/plugin
/plugin install my-formatter
/plugin uninstall my-formatter
/plugin enable my-formatter
/plugin disable my-formatter
/plugins
/marketplace
```

<Tip>
  Use `--plugin-dir <path>` at startup to load a local plugin directory for
  the current session only, without installing it permanently:

  ```bash theme={null}
  claude --plugin-dir ./my-local-plugin
  ```
</Tip>
