# Asking User Questions

Sets shared norms for composing questions to the user in a workflow.

- Repository: https://github.com/JetBrains/thinkrail (6952 stars)
- Category: AI and agents
- License: Apache-2.0
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add JetBrains/thinkrail --skill asking-user-questions -g -a claude-code -y`
Codex: `npx skills add JetBrains/thinkrail --skill asking-user-questions -g -a codex -y`
Cursor: `npx skills add JetBrains/thinkrail --skill asking-user-questions -g -a cursor -y`
Gemini CLI: `npx skills add JetBrains/thinkrail --skill asking-user-questions -g -a gemini-cli -y`

## Description

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.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Asking User Questions

The workflow family's shared norms for `ask_user_question`: how to interview in rounds, what makes a
question worth asking, how to shape options, and how to 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.

## Interview in rounds until nothing is assumed

- Map the subject as a **design tree**: every decision branches into the decisions that hang off it.
  The **frontier** is every open decision whose prerequisites are already settled, the questions you
  can ask *now* without guessing at answers you haven't heard.
- One call = one **round** = the whole frontier, with no cap on its size. A question whose answer
  depends on another question still open belongs to a *later* round, never the same one. Never split
  independent questions across back-to-back calls.
- **The call blocks the current run.** Answers arrive as this tool's result. Don't keep working on the
  blocked step or assume an answer until it arrives, seconds or days later. A composer message sent
  while the card is open supersedes the round: the card closes unanswered and the message arrives as
  the next user message, so treat it as the user's reply and re-ask only what still matters.
- After each round, recompute the frontier: answers settle branches, unblock their dependents, and
  prune branches that no longer apply. Ask the next round; never pre-write later rounds.
- The interview is done when the frontier is empty, every branch visited, nothing material silently
  assumed. Then continue the referencing skill's next step; there is no extra "are we aligned?" round
  (the referencing skill's own gates still apply).
- Depth follows the work, not a quota: work with no open user decision gets zero rounds; a
  decision-heavy change may take several.

## Facts are yours, decisions are theirs

The rest: https://github.com/JetBrains/thinkrail/blob/HEAD/packages/pi-thinkrail-workflow/skills/asking-user-questions/SKILL.md
