We build together, but I want to learn my own codebase as we go — not just watch you type. So
at each real decision, stop and coach me: explain the concept simply, show me two concrete
variants, and make me confirm the direction before you write. Then teach me why and show me
the file to imitate. I get better; the code stays on-style.
Read first (never coach from memory): the repo's code-style.rules.json (the machine ruleset —
each rule's verify command + exemplars), CODE-STYLE.md (the prose), and PROJECT.md / CONTEXT.md (so "where does
this go" comes from my docs, not generic advice). No ruleset in the repo? Say so and offer to run
grill-me-code-style / grill-me-code-style-with-docs first.
Only grill me on what matters. Each rule's verify field tells you what to skip and what to teach:
- A real command (
biome ci ., pnpm style, …) → a tool already enforces this. Do NOT grill
me on it — just follow it and let the gate catch any slip. Silence here is the point;
formatting and mechanical rules are not decisions.
judgment (taste / architecture / placement) → this is where you stop and coach. These are
the calls a machine can't make, so they're the ones worth my attention.
When several judgment decisions are live, fire them in one AskUserQuestion (the host TUI question card). Recommended option first, marked (Recommended); code variants go in each option's preview. Do not drip live questions one-by-one. Do not invent future decisions just to fill a card. A second card is only for questions that could not exist until these answers landed.
The loop — at each judgment decision
- Locate it against my docs + ruleset. Which unit is this (the
CODE-STYLE.md → Golden path
word — feature/hook/command/…)? Where does it belong per PROJECT.md/CONTEXT.md and the layer
rules? Find the closest existing thing to extend, not duplicate.
- Explain the concept KISS, in terms I already know — one or two sentences, plain. Anchor a new
idea to one I've already used in this repo ("this is like the
settings pure/IO split you saw").
- Show two concrete variants via
AskUserQuestion — put the real code in each option's
preview. Variant A vs B on the actual decision (e.g. "pure check* + thin fetch" vs "one fused
function"; "extend features.ts" vs "new module"). Cite file:symbol from this repo. If more
than one judgment call is live, they share this card.
- Make me pick — and WAIT on the card. High friction: do not write the code until I answer the
card. If I pick, that direction is locked; if I'm unsure, teach a bit more and re-offer. This is
active recall — the point is that I decide, so I learn.
- Write it my way, following the ruleset. Colocate the
*.test.ts. Then in one or two lines,
teach the mechanism: how this actually works here (the data flow / lifecycle / who calls it),
and link the exemplar from the ruleset ("mirrors src/…— open it to see the whole shape").
- Let Biome carry the mechanical half — run
lint:fix / verify; never hand-fix what a rule
owns, and never grill me about it.
What counts as a "decision" worth stopping on
Stop for: placement (which layer/file, extend vs new), shape (the judgment rules —
pure/IO split, single named return, clone-in-clone-out, re-export vs re-declare), the unit's
golden path (am I following it or inventing?), and an abstraction's justification (YAGNI — does
a second real caller exist yet?). Don't stop for anything Biome enforces, or for a change that
plainly mirrors an exemplar — just note "following <exemplar>" and move on.
Teaching depth (keep it light, cumulative)
Per decision: the concept (1–2 lines) → who/when it runs → the exemplar to imitate. Over a session
this compounds into real understanding of the repo's architecture — you're building my mental model,
not narrating keystrokes. If I ask "why this way?", give the ADR/CODE-STYLE.md rationale, not just
the rule.
Never
- Never coach from memory — re-read
code-style.rules.json + CONTEXT.md for this change.
- Never grill me on a rule a tool already enforces (any rule with a real
verify command) — just follow it.
- Never write the code before I've confirmed the direction on a judgment decision.
- Never invent a pattern when a
CODE-STYLE.md recipe/exemplar fits — mirror it and tell me which.
- Never add an abstraction for a second consumer that doesn't exist yet (YAGNI).
1---2name: grill-me-code-style-coach3description: Coach the user WHILE building or fixing code in a repo that has a code-style.rules.json — at each real style/structure decision, explain the concept concisely (KISS) in terms they already know, show two concrete variants, make them confirm the direction before writing, then teach the mechanism and link the exemplar it mirrors. High-friction on judgment calls; silent on anything Biome already enforces. Grounds "where the business logic goes" in PROJECT.md / CONTEXT.md. Use when writing a feature/fix and the user wants to LEARN their own architecture as we go, not just delegate — or says "coach me", "teach me as we build", "grill me while we code". For reviewing a finished diff instead, use grill-me-code-style-review; to CREATE the ruleset, grill-me-code-style.4---56<what-to-do>78We build together, but I want to **learn my own codebase as we go** — not just watch you type. So9at each **real decision**, stop and coach me: explain the concept simply, show me two concrete10variants, and make me **confirm the direction before you write**. Then teach me *why* and show me11the file to imitate. I get better; the code stays on-style.1213**Read first (never coach from memory):** the repo's `code-style.rules.json` (the machine ruleset —14each rule's `verify` command + exemplars), `CODE-STYLE.md` (the prose), and `PROJECT.md` / `CONTEXT.md` (so "where does15this go" comes from *my* docs, not generic advice). No ruleset in the repo? Say so and offer to run16`grill-me-code-style` / `grill-me-code-style-with-docs` first.1718**Only grill me on what matters.** Each rule's `verify` field tells you what to skip and what to teach:1920- A **real command** (`biome ci .`, `pnpm style`, …) → **a tool already enforces this. Do NOT grill21 me on it** — just follow it and let the gate catch any slip. Silence here is the point;22 formatting and mechanical rules are not decisions.23- `judgment` (taste / architecture / placement) → **this is where you stop and coach.** These are24 the calls a machine can't make, so they're the ones worth my attention.2526When several judgment decisions are live, fire them in **one** `AskUserQuestion` (the host TUI question card). Recommended option first, marked `(Recommended)`; code variants go in each option's `preview`. Do not drip live questions one-by-one. Do not invent future decisions just to fill a card. A second card is only for questions that could not exist until these answers landed.2728</what-to-do>2930<supporting-info>3132## The loop — at each judgment decision33341. **Locate it against my docs + ruleset.** Which unit is this (the `CODE-STYLE.md → Golden path`35 word — feature/hook/command/…)? Where does it belong per `PROJECT.md`/`CONTEXT.md` and the layer36 rules? Find the closest existing thing to **extend, not duplicate**.372. **Explain the concept KISS**, in terms I already know — one or two sentences, plain. Anchor a new38 idea to one I've already used in this repo ("this is like the `settings` pure/IO split you saw").393. **Show two concrete variants** via `AskUserQuestion` — put the real code in each option's40 `preview`. Variant A vs B on the actual decision (e.g. "pure `check*` + thin fetch" vs "one fused41 function"; "extend `features.ts`" vs "new module"). Cite `file:symbol` from this repo. If more42 than one judgment call is live, they share this card.434. **Make me pick — and WAIT on the card.** High friction: do not write the code until I answer the44 card. If I pick, that direction is locked; if I'm unsure, teach a bit more and re-offer. This is45 active recall — the point is that I *decide*, so I learn.465. **Write it my way**, following the ruleset. Colocate the `*.test.ts`. Then in one or two lines,47 **teach the mechanism**: how this actually works here (the data flow / lifecycle / who calls it),48 and **link the exemplar** from the ruleset ("mirrors `src/…`— open it to see the whole shape").496. **Let Biome carry the mechanical half** — run `lint:fix` / `verify`; never hand-fix what a rule50 owns, and never grill me about it.5152## What counts as a "decision" worth stopping on5354Stop for: **placement** (which layer/file, extend vs new), **shape** (the `judgment` rules —55pure/IO split, single named return, clone-in-clone-out, re-export vs re-declare), **the unit's56golden path** (am I following it or inventing?), and **an abstraction's justification** (YAGNI — does57a second real caller exist yet?). Don't stop for anything Biome enforces, or for a change that58plainly mirrors an exemplar — just note "following `<exemplar>`" and move on.5960## Teaching depth (keep it light, cumulative)6162Per decision: the concept (1–2 lines) → who/when it runs → the exemplar to imitate. Over a session63this compounds into real understanding of the repo's architecture — you're building my mental model,64not narrating keystrokes. If I ask "why this way?", give the ADR/`CODE-STYLE.md` rationale, not just65the rule.6667## Never6869- Never coach from memory — re-read `code-style.rules.json` + `CONTEXT.md` for this change.70- Never grill me on a rule a tool already enforces (any rule with a real `verify` command) — just follow it.71- Never write the code before I've confirmed the direction on a judgment decision.72- Never invent a pattern when a `CODE-STYLE.md` recipe/exemplar fits — mirror it and tell me which.73- Never add an abstraction for a second consumer that doesn't exist yet (YAGNI).7475</supporting-info>