grill
Interview the user relentlessly until you reach a shared understanding. Map this as a design tree: every decision branches into the decisions that hang off it.
Work the tree in rounds. The frontier is every decision whose prerequisites are already settled: the questions you can ask now without guessing at answers you haven't heard yet. Ask the whole frontier in one round: one entry per question, each with your recommended answer. Then wait for the user's answers before the next round.
Ask with an interactive question tool, not with prose. Whenever the environment offers one — ask_user_question here, or the equivalent AskUserQuestion / elicitation tool elsewhere — put the round through that tool. It is the primary channel: it collects one answer per question, lets the user pick from options, and keeps the round unambiguous about what is still open. Do not just write the questions out as text and stop; text is the fallback, not the default.
Each question carries the same content as the text form below: a short title and a body that states the decision, plus your recommended answer as the first option and marked as the recommendation. Send the whole frontier in one round — one call with every question, or several calls when the tool caps how many questions or options it takes at once. Keep open-ended questions in the round even if they only accept a free-form reply.
Fall back to the text format only when no question tool exists, its call fails, or a question genuinely cannot be expressed in it:
❓ **Q1** - **<question title>**: <question body, might be multiple paragraphs, including multiple choices>
➡️ <your recommended answer>
---
❓ **Q2** - **<question title>**: <question body, might be multiple paragraphs, including multiple choices>