SpecSheriff
rule · _guidelines/tools/14 · s-2pdy9gw2jrjvfb4

The plugin for Codex CLI carries everything its work needs

Checkedconfirmed by its owner

The plugin for Codex CLI, specsheriff, carries the skills spec, spec-review, spec-adopt, spec-init and spec-remove, the SpecSheriff guidelines and their schema, and the SpecSheriff tools. It declares no hooks; the agent's hooks for Codex stand in the project (§s-n76wt2bkqdmh78x).

The marketplace specsheriff-marketplace lists it by the relative path of its directory in .agents/plugins/marketplace.json, beside the file listing the plugin for Claude Code (§s-zh2vcr3xjumppg5). The practitioner's guide, the plugin's README.md, gives the commands that install it on a machine: codex plugin marketplace add non4me/SpecSheriff@release and codex plugin add specsheriff@specsheriff-marketplace.

The plugin's skills run sheriff from the SpecSheriff tools the plugin carries, as node <plugin>/tools/dist/cli.js; a skill takes <plugin> from the path of its SKILL.md, <plugin>/skills/<skill>/SKILL.md. The skill spec-init runs sheriff init --agent codex 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. Codex installs a plugin for the user who adds it and none that a project declares, so each user installs it, as they install Codex. Codex reads .agents/plugins/marketplace.json before the file listing the plugin for Claude Code, so each agent finds its own plugin.

Codex admits no plugin carrying hooks into its public directory, so the plugin carries none.

Carrying the guidelines and the tools beside the skills, the plugin keeps everything of one release together on the machine. Each agent installs and updates its own plugin, so neither waits on the other, and each can change for its agent alone.

A skill reaches the tools beside it by the path of its own file, which Codex gives it. 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). Codex asks nothing for a plugin it installs, and the session in which a project is set up started before sheriff init wrote the agent's hooks for Codex into it (§s-n76wt2bkqdmh78x), so no session start asked for them there; spec-init asks in its place, before the first commit is reviewed, unless the user was asked before.

The links it makes

The links made to it

The decisions taken on it

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

  • skills/tools/test/e2e/codex.test.ts · s-2pdy9gw2jrjvfb4 spec-init offers each setting of the runner codex the configuration lacks and was not asked for, writing what the user answers and marking it asked
  • skills/tools/test/e2e/codex.test.ts · s-2pdy9gw2jrjvfb4 the guide of the plugin for Codex CLI gives the commands that install it on a machine
  • skills/tools/test/e2e/codex.test.ts · s-2pdy9gw2jrjvfb4 the marketplace lists the plugin for Codex CLI by the relative path of its directory, beside the file listing the plugin for Claude Code
  • skills/tools/test/e2e/codex.test.ts · s-2pdy9gw2jrjvfb4 the plugin for Codex CLI carries the five skills, the SpecSheriff guidelines and their schema, and the SpecSheriff tools, and declares no hooks
  • skills/tools/test/e2e/codex.test.ts · s-2pdy9gw2jrjvfb4 the skills run sheriff from the tools beside them, by the path of their SKILL.md; spec-init runs sheriff init for Codex, and spec-remove sheriff remove, offering to remove the plugin