Skip to main content

clarify-with-questionnaire

WHAT: Decide when to stop and ask the user a structured clarifying question with the `questionnaire` tool versus inferring and proceeding, and how to shape good single / multi / free questions with mutually-exclusive options. WHEN: A decision is genuinely the user's to make and the wrong guess is costly to undo. DO-NOT: Ask what you can read from the code, ask trivia with a sensible default, or stack questions for things you should just decide.

الانتقال إلى التثبيت

معلومات المصدر

المستودع
weikinhuang/dotfiles
آخر نشاط في المصدر
٢ يونيو ٢٠٢٦ في ٢٠:٤٤
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٢١
التفرعات
٣

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
clarify-with-questionnaire
description
WHAT: Decide when to stop and ask the user a structured clarifying question with the `questionnaire` tool versus inferring and proceeding, and how to shape good single / multi / free questions with mutually-exclusive options. WHEN: A decision is genuinely the user's to make and the wrong guess is costly to undo. DO-NOT: Ask what you can read from the code, ask trivia with a sensible default, or stack questions for things you should just decide.
# Clarify with questionnaire The `questionnaire` tool pauses the turn and opens a full-screen TUI: a tab bar of questions plus a `Submit` tab, each question rendering radio options (`single`), checkboxes (`multi`), or a free-text editor (`free`). It returns both a human-readable answer block and structured `details.answers`. It is the right way to ask when a decision is the user's to make - and the wrong way to offload choices you should make yourself. This skill is the policy for ask-vs-infer and for phrasing questions the user can answer in one keystroke. ## When to use this skill Ask with `questionnaire` when ALL of these hold: - **The answer is genuinely the user's call** - a product preference, a scope decision, a trade-off only they can weigh (budget, risk tolerance, which of two valid designs). - **You cannot resolve it from the request, the code, or a sensible default.** If reading a file or `git log` settles it, do that instead. - **A wrong guess is costly** - hard to undo, or it would send you down a long path the user did not want. Infer and proceed (do NOT ask) when: - **The code or repo answers it.** Read it. Asking what you could grep wastes the user's attention. - **There is an obvious default.** Pick it, state the assumption in your reply, and move on. "I used X; say the word if you'd rather Y" beats a blocking dialog. - **The choice is reversible and cheap.** Just do it; course-correct if the user objects. - **You are asking to cover yourself**, not because the answer changes what you do next. The bar: ask only when the answer changes your next action and you genuinely cannot supply it yourself. ## Workflow 1. **Confirm the question is worth a tool call.** Run it past the ask-vs-infer test above. One sharp question beats three reflexive ones. 2. **Pick the kind per question:** - `single` - mutually-exclusive choice. Pressing a digit `1`-`9` or `Enter` selects and auto-advances. Default kind. - `multi` - independent options that can combine. Requires `Space` to toggle; set `minSelect` / `maxSelect` to bound the selection. - `free` - no good closed option set; drops the user straight into an editor. 3. **Write the prompt and options:** - Make `single` options **truly mutually exclusive** - if two could both be chosen, it is a `multi`. - Give each option a short `label` and, when the trade-off is not obvious, a `description` sub-line. - Lead with your recommended option when you have one, and say so in its label or description. - Use `preview` (multi-line ASCII / code / diff) when the user needs to compare concrete artifacts side by side; the pane renders beside the option on wide terminals. 4. **Keep `allowOther` and `allowNotes` on** (both default `true`) so the user can type a custom answer or annotate - you rarely enumerate every option perfectly. 5. **Read the structured answer.** `details.answers` carries `value` / `label` / `index` for `single`, `values[]` / `labels[]` / `indices[]` for `multi`, and `customText` + `wasCustom` when the user picked `Type something.`. Branch on the structured fields, not the prose. 6. **Handle the escape hatches.** `c` ("Chat about this") returns `chatRequested: true` with the question id - continue in prose instead of forcing the form. A cancel sets `details.cancelled`. If `ctx.hasUI` is false the tool errors and asks you to put the question in chat - so in headless runs, just ask inline. ## Phrasing options well - **One axis per question.** Do not fold "which approach AND which scope" into one option list - split into two questions (separate tabs). - **Exhaustive within reason.** Cover the realistic answers; `allowOther` catches the rest. Do not pad with near-duplicates. - **No leading or loaded labels** unless you are explicitly recommending - then mark the recommendation openly. - **`multi` needs a clear floor.** Set `minSelect: 1` if at least one choice is mandatory, so the user cannot submit an empty selection. ## Common pitfalls - **Asking what you could read.** The most common misuse. Grep first. - **`single` options that overlap.** The user cannot express "both" - that is a `multi`. - **Stacking questions to seem thorough.** Each question is a context switch for the user. Ask the few that matter. - **Ignoring `wasCustom`.** A custom `Type something.` answer will not match any option `value` - check `wasCustom` / `customText` before assuming the answer is one of your options. - **Forgetting `minSelect` on a mandatory `multi`.** Without it the user can submit nothing checked. - **Blocking in a headless session.** No UI means the tool errors - ask in prose when `ctx.hasUI` is false. ## Related docs - [`questionnaire.md`](../../extensions/questionnaire.md) - full tool reference: question kinds, per-option fields, answer shapes, TUI keybindings. - [`deep-research-when`](../deep-research-when/SKILL.md) - clarify scope with this tool before launching an expensive research run.
عرض على GitHub