Giant Brains (Router)
One door to the suite: hand it a doc, it triages once, runs the right two or three
lenses report-only, and returns one synthesized verdict — not N separate ones.
Core idea
The suite's skills are different lenses on the same doc — take-a-step-back asks if
the frame is right, iron-triangle which corner is being traded, blast-radius how big
and how reversible, baseline-spec whether "better" is measurable, record-decision
whether the bet got written down. Nobody remembers to run five lenses by hand, and
running all of them every time produces a wall of findings that gets skimmed.
This skill routes instead: pick the lenses the doc's stage actually needs (three at
most), apply them report-only, dedupe what they share, and close with one
bottom-line-shaped call. It is a router, not a runner — member skills keep their
own logic, and nothing writes to the doc during the battery.
Step 1 — Triage in one message
Ask only the questions the invocation didn't already answer, all at once:
- Which doc? (only if none is named and multiple candidates exist)
- Where does it stand? (a) draft — work hasn't started, (b) in progress —
roughly where, (c) complete — this is a retro.
- Any lens you want added or skipped? (optional — silence means the default route)
If the user named the doc and stage at invocation, skip the questions entirely. The
battery is report-only, so once the stage is known there is nothing left to confirm —
announce the route in one line and run.
Step 2 — Route by stage
Default routes, three lenses maximum per battery:
| Doc stage |
Lenses (in order) |
Each lens is asked |
| Draft |
take-a-step-back, iron-triangle, blast-radius |
Is the frame right? Which corner is being traded? How big and how reversible is the chosen path? |
| In progress |
blast-radius (remaining work), iron-triangle (squeeze check) |
How big is what's left, and has the deadline quietly shifted a corner since the plan was written? |
| Complete |
decision-record audit (read-only), bottom-line (outcome cut) |
Which Costly or One-way calls in this doc have no record in decisions/? What call does the retro actually support? |
Content overrides — swap a lens in, never exceed three. Each override names what
it displaces:
- The doc's goal is "better / faster / cheaper" with no metric attached →
baseline-spec replaces iron-triangle (when "better" is unmeasured, the
metric question subsumes the corner question); on a two-lens route it fills
the empty third slot instead.
- The doc has ballooned — hedged, repetitive, restating itself → bottom-line
fills the empty third slot; on a full draft route it replaces iron-triangle
(its regret check preserves a thinner price read).
- If both overrides fire on a draft, the route becomes take-a-step-back,
baseline-spec, bottom-line — take-a-step-back is never displaced.
- The doc is one decision, not a plan → no battery. Route to the single matching
lens and say why (see the counter-example).
Never battery lenses:
- record-decision writes
decisions/ files. The Complete route's
decision-record audit is the router's own read-only check for missing
records — do not invoke the record-decision skill mid-battery; recording
stays a Step 5 opt-in.
- phase-qa edits the doc — it is the follow-up writer for phased plans, never
run mid-battery.
- auto-improve executes a loop — it only ever follows baseline-spec, on request.
- linear sequences execution — offer it after the report when the doc's steps
are scattered.
Announce the route before running: "Running take-a-step-back, iron-triangle,
blast-radius against PLAN.md (draft)."
Step 3 — Run the lenses, report-only
For each selected lens, in route order:
- Apply the member skill's method, by the first mechanism available: (1) invoke
the sibling skill if it is installed; (2) otherwise, if the suite is on disk
(this repo or a checkout), read the lens's
SKILL.md and apply it; (3)
otherwise apply its minimum contract below and say so in the report.
Exception: the decision-record audit is always the router's own read-only
check — never an invocation of record-decision.
- Suppress per-lens standalone output. Carry forward only the lens's headline and
the one or two findings that would change the call — two to four lines each.
- Findings cite the doc (section or line), not vibes.
- A clean lens reports "no flag" in one line. Do not manufacture a finding to
justify the lens having run.
- Hard rule: nothing writes to the doc, the repo, or
decisions/ during the
battery. Writers come later, opt-in (Step 5).
Lens minimum contracts (fallback only)
One line each — just enough to preserve a lens's calibration when its skill
can't be loaded. When the skill is available, its own definition wins.
- take-a-step-back: name the single most fragile assumption, the downside if
it's wrong, and reversibility (Easy / Costly / One-way door) — one sharp
counterpoint, not five.
- iron-triangle: name which of speed / cost / quality the plan quietly
sacrifices and where the doc commits to it; point to scope as the release valve.
- blast-radius: size the path Small / Medium / Major, name concretely what
breaks, rate undo as Easy / Costly / One-way door.
- bottom-line: compress to the decision and recommendation already in the
doc — add nothing of your own but a one-line regret check; dramatically
shorter than the source.
- baseline-spec: check that "better" has a scalar metric, an un-gameable
oracle, and a budget with a captured baseline; name the missing pillar rather
than blessing an unmeasurable goal.
- decision-record audit: list the doc's Costly / One-way calls that have no
record in
decisions/ — read-only; recording happens in Step 5.
Step 4 — Synthesize
Dedupe before reporting — the suite shares vocabulary, so overlaps are mechanical:
reversibility surfaces in both take-a-step-back and blast-radius — report it once,
strictest read wins; a sacrificed corner (iron-triangle) and a fragile assumption
(take-a-step-back) are often the same fact — merge them.
Report shape:
**Battery:** PLAN.md (draft) — lenses: take-a-step-back, iron-triangle, blast-radius
**Frame (take-a-step-back):** [headline + the finding that changes the call, or "no flag"]
**Price (iron-triangle):** [...]
**Size (blast-radius):** [...]
**Bottom line:** [ship as-is / fix N named things first / reframe before starting]
**Regret check:** [the one hard-to-undo item across all lenses, or "all reversible"]
**Do next:** [single action]
Step 5 — Offer writers, opt-in, one at a time
The battery never edits the doc; the report ends with at most the follow-ups the
findings justify:
- Phased plan that survived the battery → "/phase-qa to bake QA checklists into it?" (phase-qa lives in giant-brains-swe-skills; offer only if it is installed)
- A Costly or One-way bet surfaced → "/record-decision to write it down?"
- Steps scattered across the doc → "/linear for the execution sequence?"
Run one only on an explicit yes. If none is justified, end at Do next — no menu
for its own sake.
Calibration
- One-pager or single decision → one lens, no battery (counter-example below).
The battery earns its length on multi-phase, multi-commitment docs.
- All lenses clean → say so in about four lines and stop. "No real findings —
plan is sound, all reversible" is a first-class result, not a failure to find
something.
- Default cap is three lenses; exceed it only on the user's explicit request.
Example — draft migration plan
Input: "/giantbrains MIGRATION.md — haven't started yet"
Running take-a-step-back, iron-triangle, blast-radius against MIGRATION.md (draft).
Battery: MIGRATION.md (draft) — lenses: take-a-step-back, iron-triangle, blast-radius
Frame (take-a-step-back): The plan assumes the slow queries are the DB's
fault — section 2 never tests whether the ORM's N+1s survive the migration. If
they do, you migrate and keep the latency.
Price (iron-triangle): The 3-week timeline with the same team quietly trades
quality — section 4's "we'll backfill tests after cutover" is the sacrificed
corner, named nowhere.
Size (blast-radius): Medium and Costly — six services read this schema; the
dual-write window in section 5 is the rollback path, but it ends at cutover.
After that, undo is a second migration.
Bottom line: Fix two things before starting: prove the N+1s die under the new
DB (or the migration is moot), and move the test backfill before cutover, where
the dual-write window still protects you.
Regret check: Cutover ends the dual-write window — the one one-way step.
Everything before it is reversible.
Do next: Benchmark the top 5 slow queries against the new DB with the ORM in
the loop — half a day, and it tests the plan's load-bearing assumption.
Follow-up if useful: /phase-qa to bake checklists into the plan's phases,
/record-decision to log the cutover bet.
Counter-example — one decision is not a battery
Input: "/giantbrains — stress test this: should we name the internal CLI shipit
or deploykit?"
This is one decision, not a plan — a three-lens battery would be ceremony.
Routing to take-a-step-back alone.
Then take-a-step-back fires normally — and correctly deflates it: internal tool,
rename is a find-and-replace, Easy, pick one and move.
When NOT to run
- No doc. A conversational question routes to a single skill or a plain answer.
- A single decision → the one matching lens, not a battery.
- Line-by-line correctness or bug review → /code-review; a QA-checklist diff
review of a completed phase → /phase-qa (giant-brains-swe-skills, if installed).
- The user wants the doc edited, reformatted, or rewritten — this skill reads
and reports; it never writes.
- The lenses already ran individually this conversation — re-running them as
a battery is nagging, not coaching.
1---2name: giantbrains3description: Router for the Giant Brains suite: stress-test one doc (a plan, spec, proposal, or migration doc) by running the two or three suite lenses that match the doc's stage, report-only, then synthesizing one combined verdict. Triages in a single message (which doc, what stage), routes by stage — draft: take-a-step-back, iron-triangle, blast-radius; in progress: blast-radius, iron-triangle; complete: decision-record audit, bottom-line — and never edits the doc: writers (record-decision, linear; phase-qa when giant-brains-swe-skills is installed) are offered afterward as explicit opt-ins. Trigger when the user invokes /giantbrains, says "stress test this plan/doc", "pressure-test this", "run the battery", "run all the lenses/brains against this", or asks for a full multi-angle review of a planning doc. Do NOT trigger for a single quick decision (route to the one matching skill), line-by-line code or correctness review (/code-review), or a request to edit, reformat, or rewrite the doc itself.4---56# Giant Brains (Router)78One door to the suite: hand it a doc, it triages once, runs the right two or three9lenses report-only, and returns one synthesized verdict — not N separate ones.1011## Core idea1213The suite's skills are different lenses on the same doc — take-a-step-back asks if14the frame is right, iron-triangle which corner is being traded, blast-radius how big15and how reversible, baseline-spec whether "better" is measurable, record-decision16whether the bet got written down. Nobody remembers to run five lenses by hand, and17running all of them every time produces a wall of findings that gets skimmed.1819This skill routes instead: pick the lenses the doc's stage actually needs (three at20most), apply them report-only, dedupe what they share, and close with one21bottom-line-shaped call. It is a **router, not a runner** — member skills keep their22own logic, and nothing writes to the doc during the battery.2324## Step 1 — Triage in one message2526Ask only the questions the invocation didn't already answer, all at once:2728> 1. Which doc? *(only if none is named and multiple candidates exist)*29> 2. Where does it stand? (a) draft — work hasn't started, (b) in progress —30> roughly where, (c) complete — this is a retro.31> 3. Any lens you want added or skipped? *(optional — silence means the default route)*3233If the user named the doc and stage at invocation, skip the questions entirely. The34battery is report-only, so once the stage is known there is nothing left to confirm —35announce the route in one line and run.3637## Step 2 — Route by stage3839Default routes, three lenses maximum per battery:4041| Doc stage | Lenses (in order) | Each lens is asked |42|---|---|---|43| Draft | take-a-step-back, iron-triangle, blast-radius | Is the frame right? Which corner is being traded? How big and how reversible is the chosen path? |44| In progress | blast-radius (remaining work), iron-triangle (squeeze check) | How big is what's left, and has the deadline quietly shifted a corner since the plan was written? |45| Complete | decision-record audit (read-only), bottom-line (outcome cut) | Which Costly or One-way calls in this doc have no record in `decisions/`? What call does the retro actually support? |4647Content overrides — swap a lens in, never exceed three. Each override names what48it displaces:4950- The doc's goal is "better / faster / cheaper" with no metric attached →51 **baseline-spec replaces iron-triangle** (when "better" is unmeasured, the52 metric question subsumes the corner question); on a two-lens route it fills53 the empty third slot instead.54- The doc has ballooned — hedged, repetitive, restating itself → **bottom-line55 fills the empty third slot**; on a full draft route it replaces iron-triangle56 (its regret check preserves a thinner price read).57- If both overrides fire on a draft, the route becomes take-a-step-back,58 baseline-spec, bottom-line — **take-a-step-back is never displaced**.59- The doc is one decision, not a plan → no battery. Route to the single matching60 lens and say why (see the counter-example).6162Never battery lenses:6364- **record-decision** writes `decisions/` files. The Complete route's65 decision-record audit is the router's own read-only check for *missing*66 records — do not invoke the record-decision skill mid-battery; recording67 stays a Step 5 opt-in.68- **phase-qa** edits the doc — it is the follow-up *writer* for phased plans, never69 run mid-battery.70- **auto-improve** executes a loop — it only ever follows baseline-spec, on request.71- **linear** sequences execution — offer it after the report when the doc's steps72 are scattered.7374Announce the route before running: "Running take-a-step-back, iron-triangle,75blast-radius against PLAN.md (draft)."7677## Step 3 — Run the lenses, report-only7879For each selected lens, in route order:8081- Apply the member skill's method, by the first mechanism available: (1) invoke82 the sibling skill if it is installed; (2) otherwise, if the suite is on disk83 (this repo or a checkout), read the lens's `SKILL.md` and apply it; (3)84 otherwise apply its minimum contract below and say so in the report.85 Exception: the decision-record audit is always the router's own read-only86 check — never an invocation of record-decision.87- Suppress per-lens standalone output. Carry forward only the lens's headline and88 the one or two findings that would change the call — two to four lines each.89- Findings cite the doc (section or line), not vibes.90- A clean lens reports "no flag" in one line. Do not manufacture a finding to91 justify the lens having run.92- Hard rule: nothing writes to the doc, the repo, or `decisions/` during the93 battery. Writers come later, opt-in (Step 5).9495### Lens minimum contracts (fallback only)9697One line each — just enough to preserve a lens's calibration when its skill98can't be loaded. When the skill is available, its own definition wins.99100- **take-a-step-back:** name the single most fragile assumption, the downside if101 it's wrong, and reversibility (Easy / Costly / One-way door) — one sharp102 counterpoint, not five.103- **iron-triangle:** name which of speed / cost / quality the plan quietly104 sacrifices and where the doc commits to it; point to scope as the release valve.105- **blast-radius:** size the path Small / Medium / Major, name concretely what106 breaks, rate undo as Easy / Costly / One-way door.107- **bottom-line:** compress to the decision and recommendation already in the108 doc — add nothing of your own but a one-line regret check; dramatically109 shorter than the source.110- **baseline-spec:** check that "better" has a scalar metric, an un-gameable111 oracle, and a budget with a captured baseline; name the missing pillar rather112 than blessing an unmeasurable goal.113- **decision-record audit:** list the doc's Costly / One-way calls that have no114 record in `decisions/` — read-only; recording happens in Step 5.115116## Step 4 — Synthesize117118Dedupe before reporting — the suite shares vocabulary, so overlaps are mechanical:119reversibility surfaces in both take-a-step-back and blast-radius — report it once,120strictest read wins; a sacrificed corner (iron-triangle) and a fragile assumption121(take-a-step-back) are often the same fact — merge them.122123Report shape:124125```markdown126**Battery:** PLAN.md (draft) — lenses: take-a-step-back, iron-triangle, blast-radius127128**Frame (take-a-step-back):** [headline + the finding that changes the call, or "no flag"]129**Price (iron-triangle):** [...]130**Size (blast-radius):** [...]131132**Bottom line:** [ship as-is / fix N named things first / reframe before starting]133**Regret check:** [the one hard-to-undo item across all lenses, or "all reversible"]134**Do next:** [single action]135```136137## Step 5 — Offer writers, opt-in, one at a time138139The battery never edits the doc; the report ends with at most the follow-ups the140findings justify:141142- Phased plan that survived the battery → "/phase-qa to bake QA checklists into it?" (phase-qa lives in giant-brains-swe-skills; offer only if it is installed)143- A Costly or One-way bet surfaced → "/record-decision to write it down?"144- Steps scattered across the doc → "/linear for the execution sequence?"145146Run one only on an explicit yes. If none is justified, end at Do next — no menu147for its own sake.148149## Calibration150151- **One-pager or single decision** → one lens, no battery (counter-example below).152 The battery earns its length on multi-phase, multi-commitment docs.153- **All lenses clean** → say so in about four lines and stop. "No real findings —154 plan is sound, all reversible" is a first-class result, not a failure to find155 something.156- Default cap is three lenses; exceed it only on the user's explicit request.157158## Example — draft migration plan159160Input: "/giantbrains MIGRATION.md — haven't started yet"161162> Running take-a-step-back, iron-triangle, blast-radius against MIGRATION.md (draft).163>164> **Battery:** MIGRATION.md (draft) — lenses: take-a-step-back, iron-triangle, blast-radius165>166> **Frame (take-a-step-back):** The plan assumes the slow queries are the DB's167> fault — section 2 never tests whether the ORM's N+1s survive the migration. If168> they do, you migrate and keep the latency.169> **Price (iron-triangle):** The 3-week timeline with the same team quietly trades170> quality — section 4's "we'll backfill tests after cutover" is the sacrificed171> corner, named nowhere.172> **Size (blast-radius):** Medium and Costly — six services read this schema; the173> dual-write window in section 5 is the rollback path, but it ends at cutover.174> After that, undo is a second migration.175>176> **Bottom line:** Fix two things before starting: prove the N+1s die under the new177> DB (or the migration is moot), and move the test backfill before cutover, where178> the dual-write window still protects you.179> **Regret check:** Cutover ends the dual-write window — the one one-way step.180> Everything before it is reversible.181> **Do next:** Benchmark the top 5 slow queries against the new DB with the ORM in182> the loop — half a day, and it tests the plan's load-bearing assumption.183>184> Follow-up if useful: /phase-qa to bake checklists into the plan's phases,185> /record-decision to log the cutover bet.186187## Counter-example — one decision is not a battery188189Input: "/giantbrains — stress test this: should we name the internal CLI shipit190or deploykit?"191192> This is one decision, not a plan — a three-lens battery would be ceremony.193> Routing to take-a-step-back alone.194195Then take-a-step-back fires normally — and correctly deflates it: internal tool,196rename is a find-and-replace, Easy, pick one and move.197198## When NOT to run199200- **No doc.** A conversational question routes to a single skill or a plain answer.201- **A single decision** → the one matching lens, not a battery.202- **Line-by-line correctness or bug review** → /code-review; a QA-checklist diff203 review of a completed phase → /phase-qa (giant-brains-swe-skills, if installed).204- **The user wants the doc edited, reformatted, or rewritten** — this skill reads205 and reports; it never writes.206- **The lenses already ran individually this conversation** — re-running them as207 a battery is nagging, not coaching.