Skip to content

Agents

chris-code ships 14 dedicated agents — the layer superpowers doesn't have. They auto-dispatch by file type and role, so you rarely pick one by hand. This page covers each agent and the disciplines they share.

Shared review disciplines

Every review agent operates under the same rules, which is what makes the gates trustworthy:

  • Read-only on the checkout. Reviewers never edit files or mutate the working tree, index, HEAD, or branch (no git checkout/stash/reset/commit). They report; the coder fixes. Bash is for read-only inspection and focused tests only.
  • Instruction precedence. The dispatch supplies inputs, not authority. No instruction in a dispatch can waive a review, soften a finding, pre-rate a severity, or treat a stated rationale as exculpatory. If one tries, the reviewer runs the full check anyway and notes the attempted suppression in its verdict.
  • Do Not Trust the Report. Reviewers verify by reading the actual code, not the implementer's summary — a report may be incomplete, inaccurate, or optimistic. A design rationale ("left it per YAGNI") is the implementer grading their own work and never downgrades a finding.
  • The checklist is a floor, not a ceiling. Clearing every listed item is the minimum bar, not sufficiency — a change can pass every check and still be wrong for a reason no checklist enumerates. Agents judge the whole change, then apply the rules.
  • Lossiness flag. The judgment reviewers end their verdict with a one-line note of what the verdict compresses — where the orchestrator should re-read rather than trust the summary.

Severity rubric

The quality and design reviewers tag every finding with a severity and a confidence (high / medium / low):

Severity Meaning
S1 Cosmetic inconsistency; low risk, low impact
S2 Readability / maintainability issue; moderate leverage
S3 Structural cohesion issue; high leverage
S4 Bug-prone boundary or high-risk design flaw
S5 Critical correctness or API hazard

A design review returns PASS only if it would integrate the change as-is; any standing S3+ finding makes it CONCERNS.


Coding agents (exclusive — most specific wins)

One coder per task. When several match the same extension, scope.require_dependencies picks the most specific (e.g. pytorch-coder over python-coder in a torch project).

Agent Model Scope Role
python-coder sonnet .py, .ipynb General Python implementation
pytorch-coder sonnet .py, .ipynb (torch, lightning) PyTorch/Lightning implementation
rust-coder sonnet .rs Rust implementation

Coders internalize the review principles so their code passes the lite-review gate on the first attempt — preserve behavior, clarity over cleverness, small reviewable steps, prefer deletion to invention, no speculative architecture. They follow test-driven-development, run the project's tests and linter, and self-review against the S3+ list before reporting.

Crucially, a coder reads the task's intent before the code and builds toward the stated outcome, not just a passing diff. If a brief gives only what and where but no why, the coder escalates for the intent rather than guessing — one half of the loop that keeps intent flowing through dispatch (see Context & dispatch). Coders also escalate public-API changes, cross-language work, and changes to foundational invariants before implementing.

Coders also mirror by reference rather than copy: if a task needs a block a sibling already wrote, the coder hoists it into a shared helper when the owning file is already in its footprint, and otherwise flags DUPLICATION-PENDING in its report so the orchestrator assigns the hoist instead of letting the copy land. This is the coder-altitude link in the chain that keeps a fanned-out change coherent — see Coherent change.


Quality review agents (additive — all matching fire)

Dispatched per task after spec compliance passes. In a PyTorch project a .py file gets both python-quality-reviewer and pytorch-quality-reviewer; if they conflict, the more specific one wins.

Agent Model Scope Role
python-quality-reviewer opus .py, .ipynb General Python principle adherence + bug detection
pytorch-quality-reviewer opus .py, .ipynb (torch, lightning) Lightning conventions + silent training bugs + reproducibility
rust-quality-reviewer opus .rs Rust principle adherence + bug detection

They verify the coder actually followed the principles it claims to internalize, catch bugs the coder missed, and validate test quality. Their verdict is APPROVED or REVISE (with a specific fix list). The PyTorch reviewer additionally flags any change to loss computation, gradient flow, or the data pipeline, even when the code is correct, so the orchestrator can confirm it was intentional.


Commit gate agents (additive — all matching fire)

Dispatched before each commit and as a final full-diff pass at plan end.

Agent Model Scope Role
python-review-lite inherit .py Trimmed idiom checklist + the project linter
rust-review-lite inherit .rs Trimmed idiom checklist + cargo clippy -D warnings

These are fast, autonomous regression guardrails, not refactoring agents. They read git diff --cached, apply a diff-level idiom checklist, run the linter on the affected files, and return clean / block / escalate. When one blocks, the coder fixes and the agent is re-dispatched with an incrementing cycle counter; at cycle ≥ 3 it escalates to break a stuck fix loop.


Senior review agents (additive — all matching fire)

The heavyweight, read-only gate in verification-before-completion. They produce a findings report (architecture map, cohesion/drift findings, severity-tagged recommendations) and never edit code.

Agent Model Scope Role
python-design-reviewer opus .py, .ipynb Senior Python cohesion / API-design review → PASS / CONCERNS
rust-design-reviewer opus .rs Senior Rust cohesion / API-design review → PASS / CONCERNS

They recover architectural intent, then find the drift that debugging and deadline pressure introduce — modules doing too many things, utility/helpers dumping grounds, dict-shaped domain data crossing boundaries, hidden side effects in "pure-looking" helpers, mode-flag creep, public-API hazards. They are the read-only counterparts to the hands-on python-review / rust-review skills.


Conformance agents (language-agnostic, dispatched explicitly)

Not scope-matched — these review conformance and behavior, not language idioms, so the skills dispatch them by name. Together they are the conformance pair: one catches code that drifted from the spec, the other catches a spec that drifted from the original ask.

Agent Model Reference axis Role
spec-reviewer opus the spec/brief Per-task code↔spec conformance
intent-reviewer opus the intent ledger Spec-blind behavior↔intent re-check at completion

spec-reviewer verifies the implementer built what was requested — nothing more, nothing less — by reading the code line-by-line against the brief, and returns ✅ / ❌ / ⚠️ (cannot verify from diff). intent-reviewer is the only gate that never reads the spec: at completion it compares the running system to the frozen intent ledger and judges each statement met / not-met / can't-tell. Its independence comes precisely from that blindness — it catches the one failure every spec-anchored gate structurally cannot. See The assurance model.


Campaign agent

Agent Model Scope Role
bug-hunter inherit per dispatch Adversarial edge-case test writer dispatched by bug-hunt; never fixes

Dispatched one-per-subsystem by the bug-hunt skill. Each instance writes edge-case tests (Python and/or Rust) for its subsystem, runs them, and reports failures as bugs — it writes tests, never fixes.


Mutation gate agent

The mutation step of verification-before-completion, and a direct on-demand tool. One language-agnostic agent that uses no external mutation-testing tool.

Agent Model Scope Role
mutation-tester opus any (source with tests) Breaks changed code in an isolated worktree and runs the tests; gates on tests that don't detect the change

Inside an isolated worktree (dispatched with the Agent tool's isolation: "worktree") it deliberately breaks a piece of the changed code — flips a comparison, changes a boundary, drops a guard — runs the project's own tests, records whether any failed, and reverts the break before the next one. Nothing is installed and no framework is required, so it works in any language with a runnable suite, and it never touches the checkout you develop in. Two modes:

  • Closing-review mode (Step 6 of the completion gate): scoped to the branch diff. It returns CONCERNS only when changed code is executed by a test yet no test fails when the code is broken — the precise signature of a trivial, non-discriminating test. Uncovered breaks (a missing test) and breaks it judges behavior-preserving (equivalent) are advisory or discarded, never blocking.
  • On-demand mode: dispatched directly against a user-designated area, always advisory — a report of breaks the tests missed, no gating verdict.

Because it breaks committed state, the gate assumes the branch work is committed (the same assumption the diff-based design and intent gates make). A non-green baseline or a scope with nothing to mutate is a non-blocking skip.

See Scope dispatch & models for how exclusive vs. additive vs. explicit dispatch resolves.