---
name: ask-user
description: Pattern for effectively interacting with users to gather information or get decisions. Use when you need user input.
allowed-tools: AskUserQuestion
---
# Ask User Skill
Pattern for effective user interaction.
## When to Load This Skill
- You need to clarify requirements
- You need user to make a decision
- You have options to present
## Principles
### 1. Be Specific, Not Open-Ended
Bad: "What do you want?"
Good: "Should authentication use JWT or sessions?"
### 2. Offer Options When Possible
```
AskUserQuestion(
questions: [
{
question: "Which authentication method should we use?",
header: "Auth method",
options: [
{ label: "JWT", description: "Stateless, good for APIs" },
{ label: "Sessions", description: "Stateful, good for web apps" }
],
multiSelect: false
}
]
)
```
### 3. Provide Context
Explain WHY you're asking:
- What decision depends on this
- What trade-offs exist
- What you recommend and why
### 4. Batch Related Questions
Ask related questions together:
```
questions: [
{ question: "Auth method?", ... },
{ question: "Token expiry?", ... },
{ question: "Refresh token?", ... }
]
```
## When to Ask vs Decide
### ASK when:
- Multiple valid approaches with different trade-offs
- User preference matters
- Scope is unclear
- Risk of wasted work
### DECIDE when:
- Clear best practice exists
- Low impact choice
- Easily reversible
- Standard convention applies
## Question Types
### Clarification
"You mentioned 'fast' - do you mean response time < 100ms or just faster than current?"
### Confirmation
"I understand you want X, Y, and Z. Is this correct?"
### Decision
"Option A has [pros/cons]. Option B has [pros/cons]. Which do you prefer?"
### Scope
"Should this also handle [related case] or just [original request]?"