edlsh/pi-ask-user/ask-user
Claude Code and agent skill by edlsh/pi-ask-user
- community
Checking that the SKILL.md file is still in the repository.
You MUST use this before high-stakes architectural decisions, irreversible changes, or when requirements are ambiguous. Runs a decision handshake with the ask_user tool: summarize context, present structured options, collect explicit user choice, then proceed.
Install
npx vskill@latest install edlsh/pi-ask-user/ask-userSKILL.md
Ask User Decision Gate
Use this skill to force explicit user alignment before consequential decisions.
This skill is about decision control, not general chit-chat.
Non-negotiable rule
Invoke ask_user before proceeding when any of the following is true:
- The next step changes architecture, schema, API contracts, deployment strategy, or security posture.
- The work is costly to undo (large refactor, migration, destructive edit, production-facing behavior change).
- Requirements, constraints, or success criteria are unclear, conflicting, or missing.
- Multiple valid options exist and the trade-off is preference-dependent.
- You are about to assume something that can materially change implementation.
Do not skip this gate unless the user has already provided a clear, explicit decision for the exact trade-off.
Agent Protocol Handshake (required)
Follow this handshake in order.
1) Detect boundary
Classify the current step as:
high_stakesambiguousbothclear(no gate needed)
If classification is not clear, continue.
2) Gather evidence first
Before asking, gather context from available tools (read, bash, exa, ref, etc.). Do not ask the user to decide blind.
3) Synthesize context
Prepare a short neutral summary (3-7 bullets or short paragraph) covering:
- current state
- key constraints
- trade-offs
- recommendation (if any)
4) Ask one focused question
Call ask_user with one decision at a time:
question: concrete decision promptcontext: synthesized summaryoptions: 2-5 clear choices when possibleallowMultiple:falseunless independent selections are genuinely neededallowFreeform: usuallytruedisplayMode(optional):"overlay"(default) or"inline". Use"inline"when preceding assistant context (summary, trade-offs, recommendation) is essential to the decision and should remain visible — overlays cover the conversation underneath. The user may set a personal default via thePI_ASK_USER_DISPLAY_MODEenvironment variable ordisplayModeinask-user.json; only pass this when you intentionally want to override it for one call.contextExpanded(optional):trueopens oversized context fully expanded instead of collapsed behind a one-line summary. The user may set a personal default viaPI_ASK_USER_CONTEXT_EXPANDEDorcontextExpandedinask-user.json; only pass this when the context is the evidence the user needs to weigh the options.
When 2-4 decisions at the same boundary are independent of each other and their prerequisites are settled, you may ask them together with questions instead of question. Each entry carries its own question, context, options, allowMultiple, and allowFreeform. A top-level question sent with questions is only a heading, never asked. Never batch a decision whose options depend on another answer; ask it in a later call once that answer is known.
5) Commit the decision
After response:
- restate the decision in plain language
- state what will be done next
- proceed with implementation
6) Re-open only on new ambiguity
Ask again only if materially new uncertainty appears. Avoid repetitive confirmation loops.
Anti-overasking guardrails (required)
Apply a strict question budget per decision boundary:
- Max 1
ask_usercall per decision boundary in normal cases. - Max 2
ask_usercalls for the same boundary when first response is unclear/cancelled. - Never ask the same trade-off again without new evidence.
Escalation ladder:
- Attempt 1: structured options + concise context.
- Attempt 2 (only if needed): narrower question with agent recommendation and explicit choices:
Proceed with recommended optionChoose another option(freeform)Stop for now
After attempt 2:
- If boundary is
high_stakesorboth: stop and mark blocked. Do not keep asking. - If boundary is
ambiguousonly and user says “your call” or equivalent: proceed with the most reversible default and state assumptions explicitly.
ask_user payload quality standard
Question quality
Use:
- “Which option should we adopt for X?”
- “Do you want A (fast) or B (safer) for Y?”
Avoid:
- broad/open prompts with no decision boundary
- multiple unrelated decisions in one question
- questions that should be answered by reading code/docs first
Option quality
Options must be:
- mutually understandable
- short and outcome-oriented
- explicit on trade-offs
Good options include a short description when trade-offs are non-obvious.
Recommended patterns
Single-select architecture decision
Multi-select when decisions are independent
Independent decisions at one checkpoint
Anti-patterns
- Asking
ask_userwithout first gathering context - Using it for trivial formatting choices
- Forcing options when freeform is clearly better
- Asking the same question repeatedly without new information
- Batching dependent decisions in
questions, or using a batch to dodge the one-decision-per-question rule - Proceeding with high-stakes implementation after unclear/cancelled answer
If user cancels or answer is unclear
Pause execution and explain what is blocked. Use at most one narrower follow-up ask_user question (attempt 2). After that, do not continue asking in a loop:
- for high-stakes decisions: remain blocked until explicit decision
- for ambiguity-only decisions: proceed only if user delegated the choice ("your call")
Additional reference
For full trigger matrix, UX conventions, and extension interaction details, read:
references/ask-user-skill-extension-spec.md
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/ask-user/SKILL.md
Popularity
- Repository stars
- 85
- Repository forks
- 11
- Repository npm downloads, 7 days
- 1,556
- 7-day trend score
- 41
Stars and forks are for the whole GitHub repository, not this skill alone. Downloads are for the repository's npm package. Refreshed 21 May 2026, 5 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/edlsh/pi-ask-user/ask-user)