grill-decisions · git:20261017.5b1062d · 2026-10-17 · sha256 41f7c288456b6d34

grill-decisions git:20261017.5b1062dA

Immutable. This exact content never changes and is served at /api/v1/blob/41f7c288456b6d34.

---
name: grill-decisions
description: Challenges a plan against the project's existing domain model, sharpens its terminology, and writes what settles into CONTEXT.md and ADRs as it settles. Use to stress-test a plan against the project's language and documented decisions, or when arriving from find-unknowns with open questions to resolve.
---

# Grill Decisions

Interview the user relentlessly about a plan until every branch of the decision tree is resolved.
Challenge it against the project's existing domain language and recorded decisions, and write what
settles into canon as it settles.

## Stop before you start

This skill spends the user's attention, so it only runs with a human in the loop.

- No human present — an autonomous run cannot grill anyone. Stop and report what needs deciding.
- Nothing named to resolve — there is no plan or open question yet. Run `find-unknowns` first.
- The question is answerable from the codebase — read it instead of asking.

Investigate observable questions using code, configuration, tests, and available observations before
escalating them. For historical rationale, research recorded decisions and history; do not infer
intent from current code. Distinguish evidence, inference, and unresolved gaps. Small targeted
experiments must fit existing scope, permissions, and limits; this skill does not authorize
additional pilots, budgets, or outward actions.

Choose reversible implementation defaults within scope. Reserve the interview for preferences,
authority, acceptance changes, consequential tradeoffs, and questions the evidence cannot settle.
Bring evidence and a recommendation; explicitly defer irrelevant uncertainty with a reason.

## Process

### 1. Read the map

Read `.brain/CONTEXT.md`, the ADRs bearing on the area, and the nearest `AGENTS.md`. Absent or empty
canon is a legitimate state: note the gap and grill anyway.

Completion: every concept the plan touches is paired with the project's existing term or flagged as
unnamed, and every ADR the plan interacts with is listed.

### 2. Lay out the decision tree

Before asking anything, present the branches you intend to walk, in the order you intend to walk
them. Order by dependency: a branch whose answer constrains other branches goes first.

Showing the tree is what makes the session finishable. It gives the user a progress signal, lets
them add a branch you missed, and lets them cut one they consider settled.

Completion: the user has seen the branch list and agreed it is the right shape.

### 3. Walk the branches

Ask one question at a time and wait for the answer before the next one. For each question, give
your recommended answer, so agreeing is cheap and disagreeing is specific.

If a question can be answered by reading the codebase, read the codebase instead of asking. The
user's attention is the scarce resource in this skill.

For each unresolved branch, state the cheapest next action and whether it blocks the current
decision. Initiative uncertainty belongs in the active design; Beads owns execution state.

Four moves carry the grilling:

- **Challenge against the glossary.** When a term conflicts with `CONTEXT.md`, say so immediately:
  "Your glossary defines 'cancellation' as X, but you seem to mean Y. Which is it?"
- **Sharpen fuzzy language.** When a term is vague or overloaded, propose a precise canonical one:
  "You're saying 'account'. Do you mean the Customer or the User? Those are different things."
- **Discuss concrete scenarios.** Invent scenarios that probe edge cases and force precision about
  where one concept ends and the next begins.
- **Cross-reference with code.** When the user states how something works, check whether the code
  agrees, and surface contradictions: "Your code cancels entire Orders, but you just said partial
  cancellation is possible. Which is right?"

Answers spawn new branches; add them to the tree rather than following them immediately and losing
your place. A branch the user declines to settle is deferred with a reason, not silently dropped.

Completion: every branch on the tree is resolved or explicitly deferred with a reason, and the tree
has no branch you added but never returned to.

### 4. Hand off

Report what the session produced: branches resolved, branches deferred and why, terms added or
sharpened in `CONTEXT.md`, and ADRs written. Recommend `to-design` when the resolved shape is a
multi-step initiative.

Pass settled scope, acceptance/UAT, and execution/PR authority to `to-design` for the approved
contract. Distinguish approved decisions from missing authority; implementation requests and
available credentials do not silently approve a contract. Later new scope, authority, or criteria
decisions return here with evidence and a recommendation; settled decisions need no repeat approval.

## Inline canon updates

Canon is written during the walk, not batched at the end. A term resolved in question three is
written before question four, because a session that ends early still leaves the project better off.

- **Terminology** goes into `CONTEXT.md` the moment it resolves, using
  [context format](references/context-format.md). Keep it to terms meaningful to a domain expert; leave
  implementation detail out.
- **Decisions** become ADRs only when they pass the three-part test in
  [ADR format](references/adr-format.md), which also owns the format and numbering. That test is the
  single source for when any skill offers an ADR.