/ws:grill — interview a plan until nothing is assumed
Interview relentlessly until you and the operator reach a shared understanding of what is being built. Map the subject as a design tree: every decision branches into the decisions that hang off it.
This skill produces understanding, not artifacts. It writes nothing, changes nothing, and does not begin the work. It ends by handing off.
The frontier
The frontier is every decision whose prerequisites are already settled — the questions answerable now, without guessing at answers you have not heard yet. A question whose answer depends on another question still open in this round belongs to a later round, not this one.
Work the tree in rounds. Each round asks the whole frontier, then waits.
The round
1. Compute the frontier, and write it down
Recompute the frontier from everything settled so far, and state its size before anything else: "Frontier this round: 6 questions."
The frontier is fixed before a carrier is chosen. It is never trimmed, merged, or deferred to fit a display format. If the frontier does not fit the carrier, the carrier loses.
2. Ask the whole frontier, each question with a recommendation
Every question carries your recommended answer. A question without one is research you have not done yet — do it first.
❓ **Q1** — **<question title>**: <body; may be several paragraphs, may include
options>
➡️ <your recommended answer, and the one-line reason it is your recommendation>
3. Wait
Do not proceed to the next round, and do not begin any work, until the operator answers.
4. Recompute
Each round of answers reshapes the tree: settled decisions push the frontier outward and unblock what depended on them. Return to step 1.
Carrying a round
This rule governs grilling rounds only. It is a scoped specialisation, not a
general policy on AskUserQuestion — outside a round, and in every other skill,
the tool's own usage guidance applies unchanged.
Markdown ❓/➡️ is the default carrier. It is the only one that carries an
open question, multi-paragraph framing, more than four questions, and a single
reply that answers several at once.
AskUserQuestion takes the whole round only when all three hold:
- The entire frontier this round is four questions or fewer.
- Each question has two to four mutually exclusive answers, nameable in five words or fewer.
- No option had to be invented to reach the minimum of two. If you manufactured a second option, the question is open — a fabricated menu anchors the answer, which is the failure this skill exists to prevent. Carry the round in markdown.
Put the recommendation first and label it (Recommended) — that is the ➡️,
preserved.
Side-by-side preview is the one capability markdown lacks. When a question
turns on comparing concrete artifacts the operator needs to see together, that
earns the tool — but the round must still pass all three tests. Otherwise stay
in markdown and inline the artifacts as fenced blocks.
One round, one carrier, one call. Never split a frontier across two calls or two channels. Frontier questions are independent in their prerequisites, but an operator reading Q7 routinely revises their answer to Q2 — whole-round visibility is load-bearing, and answering a four-question widget blind to the remaining five destroys it.
Settling a question
Silence is not consent. A question settles only on an explicit answer. Explicit delegation — "3 and 5: your call" — is an answer. A non-response is not, and neither is an answer that addressed a neighbouring question.
When work must move past an unsettled question, adopt your ➡️ recommendation
as a stated assumption and say so in one line. The question stays open.
An assumption is a way to keep moving, never a way to close a question.
Maintain an open list across the whole session:
- Restate it at every round boundary, above the new frontier.
- Restate it in the closing hand-off, marked as what the next step inherits.
- A question leaves the list only when the operator answers it. Nothing else removes it — not an assumption, not elapsed rounds, not the work having succeeded under it.
Facts are yours, decisions are theirs
Finding facts is your job, never the operator's. When a frontier question needs a fact from the environment — the filesystem, git history, a config, a library's actual signature — go and get it. Never ask for something you could look up.
Do not block on a lookup. A running exploration is an unsettled prerequisite, so only the questions downstream of it wait; ask the rest of the frontier now. Where a lookup is broad enough that parallelism pays, dispatch a subagent instead of serialising it — optional, never mandatory.
The decisions are the operator's. Put each one to them and wait.
Ending
The session ends when the frontier is empty: every branch of the design tree visited, nothing left silently assumed.
Close with three things:
The settled design — what was decided, in the operator's own vocabulary.
The open list — every question still unanswered, and the assumption currently standing in for each.
One recommended exit, not a menu:
If the understanding is about Hand off to Which experiment to run, and how to make the comparison fair /tml:roundWhere to sit on the speed↔quality frontier, and for how long /tml:planMany measured iterations against one number under a locked harness /ar:startA document an agent will read /mf:authorWork that is now specified well enough to build Implementation, directly
Do not act on the understanding — including the exit — until the operator confirms it.
Done when
- Every round asked the full frontier, and no frontier was trimmed to fit a carrier.
- Every question carried a recommendation and its reason.
- Every settled question was settled by an explicit answer; every unsettled one is on the open list with its standing assumption named.
- The closing hand-off names the settled design, the open list, and one exit.