Skip to content

Agents & specialists

Most work runs in the main thread. A specialist (a subagent) is dispatched only when it earns its keep — and the test is never throughput.

Isolation for independence, not speed

An agent is worth spawning for one of two reasons: independence (a verdict you can't trust if the author reaches it) or a clean context (a big, noisy job whose raw bytes shouldn't pollute the main thread). Parallelism for its own sake is not a reason.

The repo has six owned agents, in three roles.

The blind judges

They form a verdict your own reasoning can't sway — because they never see it. (These three are the engine of brainstorm's three blind passes.)

  • blind-reviewer — the independence gate. Reviews an artifact (a plan or a diff) against the project's standards without seeing the author's reasoning, so it can't rubber-stamp. Reused wherever a verdict must be independent — check-reasoning, find-vulns.
  • chooserblind fit-first selection. Ranks candidate options with authorship and spike-effort stripped out, so it can't reward "your idea" or sunk cost — it judges goal- and problem-fit alone. The convergence step of ideate.
  • ideatorblind divergent generator. One instance per lens, each given only the problem + a single lens — never the leanings or the parked solutions — so the option pool widens by fresh starts, not echoes. The divergence step of ideate.

The distillers

They read big, noisy things and hand back only the signal, keeping raw bytes out of the main context.

  • scannerread-only web/repo research. Fans out searches, fetches sources, and returns a tight cited shortlist. Dispatched by source-a-skill, find-harness-improvements, and vet.
  • summariserread-only distiller. Reads a big artifact (a PR diff, an issue thread, a CI log, a long doc) in its own context and returns a tight, one-pass summary to drop into a reply or a PR body.

The writer

  • worktree-builder — the one that writes. Takes a single self-contained build to completion in an isolated git worktree, so parallel implementers never collide on shared files.

Read-only by contract

The blind judges and the scanner declare no write tools — enforced mechanically by harness:check against the read_only_agents allow-list (blind-reviewer, chooser, ideator, scanner). A judge that can edit is a judge that can rationalise; keeping it read-only is what makes its verdict worth having. (The summariser stays read-only in intent but carries Bash for its gather, so it sits outside the no-write list; only worktree-builder writes the repo.)

Orchestrators synthesise

A skill that dispatches several agents must synthesise their findings into one result — never just relay them. qa-harness composes the per-pillar gathers into a single five-pillar report; ideate merges its fan-out of ideators into one flat pool, then narrows it with the chooser. The independence trick — withholding your reasoning so the reviewer forms its own — is exactly what stops the whole arrangement from becoming a rubber stamp.