SkillAgentSearch skills...

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.

Install / Use

npx skills add JetBrains/thinkrail --skill asking-user-questions

Installs into whichever agent you are using.

About this skill
πŸ“„

SKILL.md

Installable skill definition

Quality Score

88/100

Category

Automation

Supported Platforms

Universal

Tags

Our assessment of asking-user-questions

asking-user-questions scores 88/100 on our quality scale, 1561st of 2,876 Automation skills we index.

Its SKILL.md is 7.7 KB long, well organised into 8 sections and no code examples: a thorough specification that gives an agent plenty to work with.

With 6,784 GitHub stars, it is one of the more widely adopted skills in the catalogue.

Substance
29/30
Structure
13/20
Description
15/15
Adoption
16/20
Freshness
15/15

Maintenance, license and trust

  • The repository was last updated 2 days ago, so asking-user-questions is actively maintained.
  • It is released under the Apache-2.0 license, a permissive license that allows use, modification and commercial use with attribution.
  • Its trust signals score 100/100, with no cautions. These come from repository metadata, not a code audit β€” read the skill file before letting an agent act on it.

asking-user-questions compared with similar skills

All 4 of these similar skills score higher than asking-user-questions; compare them before choosing.

SkillScoreStarsUpdatedFormat
asking-user-questions (this skill)by JetBrains886.8k2d agoSKILL.md
Agent-Reachby Panniantong100108.0k1d agoCLAUDE.md
Scraplingby D4Vinci10092.8ktodayMCP Server
rufloby ruvnet10080.7ktodayMCP Server
algorithmic-artby anthropics100177.9k41d agoSKILL.md

Frequently asked questions

How do I install asking-user-questions?
Run npx skills add JetBrains/thinkrail --skill asking-user-questions. The install tabs above show the steps for each supported agent.
Which AI agents does asking-user-questions work with?
It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
Is asking-user-questions safe to use?
It is Apache-2.0-licensed and scores 100/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
Is asking-user-questions still maintained?
The repository was last updated 2 days ago, so asking-user-questions is actively maintained.

name: asking-user-questions 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."

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

  • Never ask the user for a fact the workspace, the specs, or the web can answer. Look it up. When a lookup is slow, start it in the background (a sub-agent, when the host offers one) and ask the rest of the frontier meanwhile β€” only the questions downstream of that lookup wait.
  • Every decision β€” scope, observable behavior, trade-offs the user will live with β€” goes to the user. Picking an option yourself and moving on is answering your own question, not inferring.
  • If candidate options differ only internally β€” identical observable behavior β€” it is not a user decision: decide yourself and record the reasoning in the workflow's artifact.

What makes a question worth asking

  • It changes the outcome. Each answer leads somewhere different that the user will see or live with. If every option ends in the same place, drop the question.
  • It is specific to this work. Name the actual feature, screen, file, or user ("when a project is renamed while collapsed…"), never a generic template question.
  • It probes what people silently assume. Sweep the tree's usual blind spots: scope edges and non-goals, empty / error / failure states, edge cases and limits, concurrency or multiple instances, existing data and behavior that must migrate or stay, defaults, and who the work is for.
  • It surfaces tension. A conflict with a recorded spec decision, an earlier answer, or the request itself is asked about outright, quoting both sides.
  • It never re-asks. Anything the request, a prior answer, or the specs already settled is settled; build on it.
  • A concrete scenario beats an abstract principle. Ask "a user drags a file onto a busy session β€” queue it or reject it?", not "how should concurrency be handled?".
  • If the question can't be settled by talking (how something should look or feel), show a concrete artifact in options[].preview β€” a mockup, snippet, or config β€” instead of describing it.

Options

  • Recommended option first, label suffixed "(Recommended)", plus a one-line recommendedReason saying why you recommend it over the alternatives (shown inline under the option as a Why: 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").
  • 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 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 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.
  • header is 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

  • A skipped or declined question is not a blocker: settle it on your recommended answer, recorded as unconfirmed in the workflow's artifact (the referencing skill says where), and keep working its dependents from that assumption β€” don't re-ask it.
  • A whole round skipped means the user wants to stop being interviewed: ask no further rounds and proceed on recorded assumptions for everything still open.
  • If ask_user_question is not among your tools (switched off in the host, or never installed), ask the round as a plain chat message instead: the same frontier, each question with its numbered options and the recommended one first with its reason. Then end the turn and wait for the reply; never trade the missing tool for a guess. Read the reply as the round's result, and a question it leaves unanswered counts as declined.
  • If the host reports no interactive UI (ask_user_question returns "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.

Red flags

  • You stopped after one round while decisions that depended on its answers are still open.
  • You chose an option for the user instead of asking β€” or asked the user something you could have looked up.
  • One round holds two questions where one answer would change the other.
  • A question restates what the request or an earlier answer already settled.
  • Every question would fit any project β€” nothing names this work's specifics.

Related Skills

View on GitHub
GitHub Stars6.8k
CategoryAutomation
Updated2d ago
Forks371

Languages

TypeScript

Trust signals

100/100

From repository metadata: license, adoption, age and documentation. Not a code audit β€” see the Safety scan above for what the skill file itself contains.

No cautions
asking-user-questions β€” Universal Skill: Install & Safety Check | SkillAgent