asking-user-questions
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.
Installation
- Make sure Claude is on your device and in your terminal.
Skills load from
~/.claude/skills/when Claude Code starts up — so you need it on your machine first. If you don't have it yet, install it once with the command below, then runclaudein any terminal to verify.One-time setupnpm i -g @anthropic-ai/claude-codeAlready have it? Skip ahead.
- Paste into Claude Code or into your terminal.
This copies the whole skill folder into
~/.claude/skills/asking-user-questions-jetbrains/— the SKILL.md plus any scripts, reference docs, or templates the skill ships with. Safe default: works for every skill.Faster alternative (instruction-only skills)
Skips the clone and grabs only the SKILL.md file. Don't use this if the skill ships Python scripts, reference markdowns, or asset templates — they won't be downloaded and the skill will fail when it tries to load them.
Quick install (SKILL.md only)Sign up to copy - Restart Claude Code.
Quit and reopen Claude Code (or any other agent that loads from
~/.claude/skills/). New skills are picked up on startup. - Just ask Claude.
Skills auto-activate when your request matches the skill's description — no slash command needed. Trigger phrases live in the skill's own frontmatter; you can read them in the “What this skill does” section above.
Prefer to read the source first? Open on GitHub.
When Claude uses it
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.
What this skill does
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.
Rounds, not chat turns
- One call = one round: up to 4 questions, 2–4 options each. Group everything the current step needs into a single round — never chain a second call straight after for a trivial follow-up.
- The call ends your turn. The questionnaire is shown and your run stops; the answers arrive as the 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.
- If the user replies with a free-form message instead of answering the card, that reply supersedes the round — treat it as their answer, and re-ask only what is still genuinely undecided.
- Resolve the round, act on what you learned, and open a new round only when the answers raised a genuinely new question.
Options
- Recommended option first, label suffixed "(Recommended)", plus a one-line
recommendedReasonsaying why you recommend it over the alternatives (shown inline under the option as aWhy:line). - Every option: a concise label (1–5 words, ≤ 60 chars) + a description carrying the trade-off or consequence of choosing it. Tailor options to the work at hand — never generic placeholders.
- Options must be decidable by the asked user: frame them as observable behavior or outcomes ("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.
- Never author your own "Other", free-text, or escape options — the tool adds a free-text row to
every question and an always-available Skip, and reserved labels are rejected. This holds under
multiSelecttoo: the free-text row stays and is additive — a typed answer arrives alongside the checked options, it does not replace them. multiSelect: truewhen several answers are valid at once (feature checklists); single-select when confirming something or choosing one path.options[].preview(markdown) when a concrete artifact — code, a config, a mockup — is clearer shown than described. Single-select only.headeris a short chip, ≤ 16 characters.
Confirming an inference
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:
- "Looks right" → the inference holds; continue unchanged.
- Free-text tweak (one fact changes) → update that field only; don't re-derive anything else.
- Substantial rewrite → re-derive every inference that came from that statement before continuing.
- Rejection → discard the inference entirely and ask an open-ended question instead.
Degradation
- Skipped, declined, or unanswered questions are not blockers: proceed on best-guess assumptions, explicitly recorded as unconfirmed in the workflow's artifact (the referencing skill says where).
- If the host reports no interactive UI (
ask_user_questionreturns "not available"), state your assumptions the same way instead of blocking. - "I don't know / help me understand" is a mis-framing signal, not a missing-knowledge one: re-explain from user-visible behavior in plain language, then re-ask with behavior-framed options — don't repeat the same technical options with more detail.
Related skills
PDF Tools & Editing
anthropics
Read, merge, split, rotate, watermark, encrypt, and extract text from PDF files.
PowerPoint Slide Decks
anthropics
Create, edit, read, and extract content from PowerPoint presentations.
Slack GIF Creator
anthropics
Create animated GIFs optimized for Slack messages and emojis.
Honest Postmortem Analyzer
alirezarezvani
Analyze what went wrong in failures without blame to find real causes.