SpecSheriff
rule · _guidelines/tools/13 · s-zh2vcr3xjumppg5

The plugin for Claude Code carries everything its work needs

Checkedconfirmed by its owner

The plugin for Claude Code, specsheriff, carries the skills spec, spec-review, spec-adopt, spec-init and spec-remove, the SpecSheriff guidelines and their schema, and the SpecSheriff tools, and declares to Claude Code its hooks: the agent's hooks (§s-477gtdrkw34dzxw) and the one run when a session starts (§s-4mej6ccn7xu3d3p). It declares each setting of the runner claude (§s-xr5xxa9cxf2mq5u) as one of its options, which Claude Code asks the user for when it enables the plugin; each option names its default and takes no default value, so that a value Claude Code holds for it is one the user gave.

In a repository holding no sheriff.config.json at its root, its hooks do nothing but keep its copy of the tools (§s-4mej6ccn7xu3d3p) and write the settings the user gave as its options (§s-477gtdrkw34dzxw).

The marketplace specsheriff-marketplace lists the plugin by the relative path of its directory. A project declares both in .claude/settings.json: the marketplace under extraKnownMarketplaces, its source the branch release of the repository the SpecSheriff guidelines are written in and autoUpdate on, and the plugin under enabledPlugins. Each machine runs the release its copy of the plugin holds until Claude Code updates it there.

The plugin's skills and the agent's hooks run sheriff from the SpecSheriff tools the plugin carries, as node "${CLAUDE_PLUGIN_ROOT}/tools/dist/cli.js". The skill spec-init runs sheriff init and then offers the user, at its default, each setting of the runner sheriff review would take that their git configuration does not hold and they were not asked for (§s-477gtdrkw34dzxw), to confirm or replace, writing what they answer and marking it asked (§s-xr5xxa9cxf2mq5u); spec-remove runs sheriff remove (§s-7unxytshhc4md54) and then offers to remove the plugin from the machine.

The skills set neither a model nor a reasoning effort, for themselves or for any agent they start: they work at those the user has chosen in their session.

Why

An agent takes up a skill only where it is installed, and Claude Code installs and updates a plugin from a marketplace itself and runs the hooks a plugin declares while it is enabled: declared in the project, the plugin is offered to the agent of every clone and, updating itself, brings every machine the latest release.

Carrying the guidelines and the tools beside the skills, it keeps everything of one release together on the machine, and nothing of a release in the project but the calls to it.

A plugin installed for a user runs in every project they open, and a project not taking the method is held to nothing of it.

The marketplace is read from release, which holds only releases, so an agent loads a release and never the work in progress on main. Claude Code writes the directory of the plugin's installed release wherever a skill or a hook names ${CLAUDE_PLUGIN_ROOT}, so each runs the tools of its own release.

A plugin is installed for its user on the machine, beyond any one project, so spec-remove offers its removal and leaves the choice to the user.

The user pays for their session at the model and the effort they choose in it, so the skills set neither. The reviewer runs outside the session at the cost of the user who commits, at the settings that user confirms (§s-xr5xxa9cxf2mq5u), which Claude Code asks for when it enables the plugin, as its options. A default value declared for an option would be taken for a user who gave none, and the hooks could not tell it from an answer, so the options declare none. Where Claude Code enabled the plugin without asking, spec-init asks before the first commit of a project it sets up is reviewed, unless the user was asked before.

The links it makes

The links made to it

The decisions taken on it

2026-10-29 · textual
Problem

How a practitioner takes up the method.

Ruling

The owner: the main channel is a plugin of skills for the agents, distributed through a marketplace; the plugin is made for Claude Code now and for Codex CLI next, and Gemini CLI is being studied.

2026-10-30 · textual
Problem

Only the skill spec-init was said to run the SpecSheriff tools the plugin carries; where the other skills and the agent's hooks run them from, no rule said.

Ruling

The owner: the plugin's skills and the agent's hooks run them from the tools the plugin carries, by the directory Claude Code writes in for the installed release.

2026-11-02 · textual
Problem

The reviewer runs at the settings each user confirms (§s-xr5xxa9cxf2mq5u), and nothing asked a user for them or wrote them where the git hooks read them.

Ruling

The owner: the settings of the reviewer are a decision taken once, when the plugin is installed, not a question at each session; Claude Code asks for them as the plugin's options, which the session start of the plugin for Claude Code writes into the git configuration in any repository and wherever they differ, so that a change made in /config reaches the reviewer; Codex, which asks nothing at installation, has the agent ask at the first session in a repository taking the method, or spec-init where it runs first; the question is put once on each machine, and after it only the notice at each review reminds the user. The plugin for Claude Code declares the settings of the runner claude as its options, each naming its default and taking no default value; spec-init offers the defaults of any setting still lacking that was never asked for; the skills set no model and no effort.

The tests bound to it