> ## Documentation index
> Fetch the complete documentation index at: https://haarness.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Install a plugin

A plugin is a bundle of commands, skills, agents, hooks, workflows and MCP servers that someone
packaged together. Haarness installs plugins in the Claude Code plugin format, so most plugins
written for Claude Code work as they are.

## Install a plugin from a marketplace

A marketplace is a Git repository or folder that lists plugins. Register it, then install from it:

```sh
haarness plugin marketplace owner/repo
haarness plugin install reviewer@team-tools
```

Registering prints the marketplace's name (here `team-tools`) and the command to install from it.
The source can be a GitHub `owner/repo`, a Git URL, or a local folder that contains
`.claude-plugin/marketplace.json`. `haarness plugin marketplace add <source>` works too.

If you have registered only one marketplace, `haarness plugin install reviewer` is enough.

When a marketplace pins a plugin to a Git `ref` (a branch or tag) or a `sha` (an exact commit),
Haarness installs exactly that revision, and `haarness plugin update` fetches it again. A `sha` wins
over a `ref`.

A running Haarness picks up the new plugin as soon as no turn is running.

## Install a plugin from a folder

```sh
haarness plugin install ./my-plugin
```

Point it at the plugin's folder or its `plugin.json`.

## Use what it adds

A plugin's commands carry its name, so two plugins can both ship `review`: run them as
`/reviewer:review` and `/other:review`. Its workflows are named the same way. Its skills, agents
and hooks join yours, and its MCP servers connect like any other.

## Manage installed plugins

```sh
haarness plugin list               # installed plugins and registered marketplaces
haarness plugin update reviewer    # refresh it from its source
haarness plugin disable reviewer
haarness plugin enable reviewer
haarness plugin remove reviewer
```

In the terminal UI, `/plugin` lists, searches and installs plugins, and
`/plugin marketplace add <source>` registers a marketplace. In Desktop, use **Settings → Plugins**.

## List the plugins your team should install

Name plugins in a project's (or your own) `haarness.json`:

```json
{
  "plugins": ["reviewer@team-tools", { "spec": "linter@team-tools", "enabled": false }]
}
```

Nothing is downloaded while the configuration loads. A plugin you have not installed yet appears in
`haarness plugin list` under "Declared in configuration but not installed", with the exact
`haarness plugin install` command to run. `"enabled": false` turns off an installed plugin without
removing it.

## Before you install

Installing a plugin is a decision to trust it. Its hooks and MCP servers run programs on your
machine with your user's access. Read [Trust boundaries](https://haarness.ai/docs/security/trust-boundaries.md) before
installing a plugin you did not write.

## Does Haarness use my Claude Code setup?

Not by itself. Haarness does not load plugins, settings, hooks or MCP servers that you set up in
Claude Code. It can read your `CLAUDE.md` files and `.claude/` agents, skills and commands if you
turn that on; see [Use my CLAUDE.md files too](https://haarness.ai/docs/cli/configuration.md#use-my-claudemd-files-too).

## For plugin authors

Haarness gives a plugin's processes `HAARNESS_PLUGIN_ROOT` and `CLAUDE_PLUGIN_ROOT`, both set to
the plugin's folder, and replaces `${CLAUDE_PLUGIN_ROOT}` in its configuration. A plugin's hooks go
in `hooks/hooks.json`, in the format described in [hooks](https://haarness.ai/docs/cli/hooks.md).

## Related

- [Marketplace](https://haarness.ai/docs/cloud/marketplace.md) for resources published on Haarness Cloud
- [Agents, commands and skills](https://haarness.ai/docs/cli/agents-commands-skills.md)
- [Add an MCP server](https://haarness.ai/docs/cli/mcp-servers.md)
