ask-me
ถามผู้ใช้ด้วยตัวเลือกและคำแนะนำ รองรับ multi-select, multi-step, tech stack
SKILL.mdask-me/SKILL.md
GitHubGoal
Ask the user a question with predefined options and a recommendation (recommended) to get confirmation, choose among alternatives, or request more information. Supports single-select, multi-select, multi-step flows, and tech stack questions
Scope
Use for general questions that need an option-based answer, not for gathering requirements (use /ask-project-requirement) and not for interviewing preferences (use /follow-my-persona)
Supports tech stack questions such as runtime, language, framework, library, database, test tool, deploy target, CI tool, and package manager
Use the ask_user_question tool only; no other way of asking the user is allowed
Execute
1. Identify Question Type And Flow
Goal: Identify the question type and the multi-step structure
- Analyze what kind of answer is needed:
single,multiselect,text,confirm - If answers are needed across several topics → design a
multi-stepflow split into steps - Each step consists of 1-4 questions, with one
ask_user_questioncall per step - For
confirm, offer yes/no or proceed/abort options - For
single, offer 2-4 options and the user picks one - For
multiselect, offer 2-4 options and the user can pick several; setmulti_select: true - For
text, let the user answer freely without forcing options
2. Prepare Multi-Step Questions
Goal: Prepare the questions, options, and recommendation for each step
- Split the questions into steps in the order they must be asked
- Each step has 1-4 questions, and each question has 2-4 options
- Every option needs a concise
labeland adescriptionwith the details - Mark the recommended option with a visual marker prefixed to the
label, e.g.✨ Continue with /planor(recommended) Continue with /plan, and explain the reason indescription - Set
multi_select: truefor questions that allow multiple choices - Don't add an "other" option, since the user can always answer in their own words
- The options must cover every plausible case
- Order the options with the recommended one first
- Add a
Skipoption so the user can bypass this question —description: "Skip this question; use the default or continue without answering" - Add a
Suggest anotheroption so the user can request different choices —description: "Ask the AI to suggest other options not on the list"
3. Ask With ask_user_question
Goal: Send the questions to the user
- Write the
questionclearly and concisely with enough context - Send 1-4 questions at once in
ask_user_questionfor each step - Send
optionswithlabel,description, andmulti_select: true/false - For multi-step, ask the next step after processing the current step's answers
4. Process Multi-Step Response
Goal: Process the user's answers in a multi-step flow
- Pair each question with its answer from the mapping
ask_user_questionreturns - If
multi_select: true→selectedis an array and may contain multiple labels - If
multi_select: false→selectedcontains a single label - If the user answered in their own words (custom_text), analyze it and adjust the plan accordingly
- If the user picks
Skip, continue using the default or skipping that step - If the user picks
Suggest another, offer 2-4 new options that don't repeat the old ones - If there is a next step → ask it
- When the multi-step flow is done → summarize all answers and proceed
- Never re-ask a question the user has already answered
5. Tech Stack And Tool Questions
Goal: Support questions about tech stack, runtime, framework, library, and tools
- Analyze which kind of technology the question is about:
runtime,language,framework,library,database,test-tool,deploy-target,ci-tool,package-manager - Use
follow-lang-*,follow-framework-*,follow-tool-*,follow-lib-*,follow-service-*to build the options and recommendations - Reference project manifests (
package.json,Cargo.toml,go.mod,pyproject.toml) and conventions to determine the defaults and recommendations - If the tech stack is complex → split into multi-step:
runtime→language→framework→library→deploy-target - The recommended option must state a technical reason, e.g. "Bun uses native APIs and is faster than Node.js in this project"
- If a map of skills by tech stack or task is needed, run
/search-skills
Rules
1. When To Ask
Ask the user when:
- There is a decision to make and it is unclear what the user wants
- Direction needs to be confirmed before proceeding
- There is not enough information to proceed correctly
- Several approaches are possible and the user should choose
2. When Not To Ask
Don't ask the user when:
- The answer is obvious from context or memory
- It is requirement gathering (use
/ask-project-requirement) - It is a preferences interview (use
/follow-my-persona) - The action is low-risk and can just be done
- The user or workflow specifies
/dont-ask-me
3. Question Design
- Keep questions short with enough context
- Use language the user understands; avoid jargon
- Avoid questions that cause confusion or ambiguity
- Details on options, multi_select, and multi-step are already in Execute #2; not repeated here
- For multi-step, tell the user which step number this is
4. Recommendation
- Every question must have at least one recommended option
- Mark the recommended option with a visual marker prefixed to the
label, e.g.✨,⭐,👍, or the text(recommended) - If the user or context doesn't want emoji, use
(recommended)instead - Don't create a separate
recommendedoption - Explain in
descriptionwhy this option is recommended - Recommendations must be grounded in context, best practices, or project conventions
- If several options are roughly equally good, make the simplest one the recommended choice
5. Interaction Patterns
- multi-step: ask 1-4 questions per step, wait for answers, then ask the next step
- If the user answers in their own words, adjust the plan accordingly
- Never re-ask a question that was already answered
- If an answer leads to a new question, follow up with it
- Once answers are in, proceed immediately without stalling
- If the user picks
Skipmany times in a row, consider using defaults instead of asking further - If the user picks
Suggest anothera second time, use/ask-againor ask open-ended - If the user says "don't understand", "ask again" → use
/ask-againto rephrase - If the user picks
Skipon every question, stop asking and proceed with all defaults
6. Update References
If the user's answer leads to editing, moving, renaming, or deleting files/skills → act on the answer, then always run
/update-referencesNo need to ask for confirmation before updating references, since it is a mandatory step after changes
Use /follow-your-suggestion if needed
Examples
Question Categories
runtime: "Choose a runtime for the backend" —Bun,Node.js,Deno,Rust,Golanguage: "Choose a language for the CLI" —TypeScript/Bun,Rust,Zig,Pythonframework: "Choose a framework for the web app" —Next.js,Nuxt,SolidStart,SvelteKit,Astrolibrary: "Choose a validation library" —Zod,ArkType,Valibotdatabase: "Choose a database" —PostgreSQL,SQLite,Turso,Supabasetest-tool: "Choose a test runner" —Vitest,Playwright,Cypressdeploy-target: "Choose a deploy platform" —Vercel,Cloudflare,Railwayci-tool: "Choose a CI tool" —GitHub Actions,Renovate,Changesets
Example: Single-Select Question
{
"question": "Choose a runtime for the backend",
"header": "Runtime",
"multi_select": false,
"options": [
{ "label": "✨ Bun", "description": "Recommended — fast, supports native APIs" },
{ "label": "Node.js", "description": "large ecosystem, works for general use" },
{ "label": "Deno", "description": "secure by default for TypeScript" }
]
}
Example: Multi-Select Question
{
"question": "Choose the tools to install",
"header": "Extra tools",
"multi_select": true,
"options": [
{ "label": "Vitest", "description": "test runner" },
{ "label": "Playwright", "description": "E2E testing" },
{ "label": "Biome", "description": "lint + format" }
]
}
Expected Outcome
- The user can decide easily from clear options with a recommendation
- Supports single-select, multi-select, and multi-step flows
- Supports tech stack questions across runtime, language, framework, library, and tools
- Reduces AI guesswork
- Work stays aligned with what the user wants
- The user can skip or request other options at any point in the conversation