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-toolsRegistering 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-pluginPoint 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 reviewerIn 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.
Related
- Marketplace for resources published on Haarness Cloud
- Agents, commands and skills
- Add an MCP server