Use when composing an ask_user_question round inside a workflow, or when a workflow skill names it at a question step. Shared norms for the tool — not a workflow, nothing to execute.
npx skills add https://github.com/JetBrains/thinkrail --skill asking-user-questions
The workflow family's shared norms for ask_user_question: how to compose rounds, shape options, and
degrade when answers don't come. Process skills name this concept at the steps that ask; *when* to ask
— and where the answers get recorded — stays with the referencing skill.
needs into a single round — never chain a second call straight after for a trivial follow-up.
next user message (a structured "User has answered your questions:" message). Don't keep working on
the blocked step after calling, and don't assume an answer until it arrives — whether that is seconds
later or days later.
the round — treat it as their answer, and re-ask only what is still genuinely undecided.
genuinely new question.
recommendedReason sayingwhy you recommend it over the alternatives (shown inline under the option as a Why: line).
consequence of choosing it. Tailor options to the work at hand — never generic placeholders.
("collapsing a project stays collapsed after a rename"), never as implementation mechanics
("semantic guard", "activation ref"). If candidate options differ only internally — identical
observable behavior — don't ask: decide yourself and record the reasoning in the workflow's
artifact.
every question and an always-available Skip, and reserved labels are rejected. This holds under
multiSelect too: the free-text row stays and is *additive* — a typed answer arrives alongside the
checked options, it does not replace them.
multiSelect: true when several answers are valid at once (feature checklists); single-select whenconfirming something or choosing one path.
options[].preview (markdown) when a concrete artifact — code, a config, a mockup — is clearershown than described. Single-select only.
header is a short chip, ≤ 16 characters.When you have inferred something and need a yes/adjust rather than an open answer: the inferred
statement *is* the question text, with "Looks right" as the first option (description: "accurate as
written") and a genuine rejection option second (e.g. "Off base — ask me directly"). Edits arrive
through the tool's automatic free-text row — do not author an edit option. Read the response as:
explicitly recorded as unconfirmed in the workflow's artifact (the referencing skill says where).
ask_user_question returns "not available"), state yourassumptions the same way instead of blocking.
from user-visible behavior in plain language, then re-ask with behavior-framed options — don't
repeat the same technical options with more detail.
Take jetbrains/asking-user-questions from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.