Installation¶
steer is distributed through the e22-plugins marketplace. Install it once in
Claude Code, then bootstrap or adopt repos with its skills.
Add the marketplace and install the plugin¶
Once installed, the SessionStart hook injects the always-on
rules into every session in repos that have been
set up with the plugin, and the /steer:<skill> commands become available.
Invocation is always namespaced
Skills are invoked as /steer:<skill> (e.g. /steer:spec), never bare
/<skill> — Claude Code namespaces plugin skills to avoid collisions.
Where hooks fire (surfaces)¶
Hooks don't fire everywhere — rules may not load automatically
steer relies on Claude Code's hook lifecycle: the SessionStart hook is
what injects the always-on rules. Claude Code (the CLI, the IDE
extensions, and the Desktop Code tab) runs hooks fully. Cowork runs
them too, but it's a no-install sandbox and best-effort, for PO/knowledge-work
only — do engineering work in Claude Code (reconfirm hooks on your build;
SessionStart had bugs earlier in 2026, since closed). But on the Desktop
Chat tab and claude.ai web
chat hooks do not run, so the rules are not auto-injected and the
PreToolUse hooks (the spec-first/issue-first nudges and the version-pin
block) do not run. On those surfaces — and as a fallback anywhere the rules
didn't load — run this manually at the start of the session before doing
anything else:
See Known limitations for the full list of where this matters.
Windows: give the hooks a shell
steer's hooks are invoked via sh, which native Windows lacks. On the
Claude Desktop Code tab, install
Git for Windows and that's the whole setup —
hooks fire and /steer:build builds locally (add Docker Desktop if the repo
runs services); no WSL2 needed. If you work through the CLI or an IDE,
use WSL2 instead. Full matrix: Windows setup.
Bootstrapping a repo¶
Run /steer:setup — it detects the repo state and
routes to the right path, so you don't have to choose:
- New repo: installs the bundled scaffold and
/specspine (/steer:init). - Existing app: reverse-engineers a
/specspine from the code and adds the scaffold (/steer:adopt).
Both replace the old static repository-template as the bootstrap source.
Keeping a repo in sync¶
After a new plugin release, run /steer:setup in a
managed repo — it detects the drift and applies pending migrations, reconciling
the scaffold and spec spine against the current templates (via /steer:sync).
Next step¶
Walk through the first workflow end to end.