Skip to content
DocsHaarness CLI
On this page

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:

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

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

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:

{
  "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 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.

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.