interactive-clarify
vndee/engineering-skills/.claude/skills/interactive-clarify/SKILL.md
Use for every interaction where clarification is needed — enforces AskUserQuestion tool over plaintext questions for all requirement gathering and decision making
Skill3 starsChanged 7 months ago
What's in it
- Interactive Clarification
- Overview
- The Rule
- How to Use AskUserQuestion
- Format Rules
- Good vs Bad
- When to Use multiSelect
- When to Use Previews
- Follow-Up Rounds
- Decision Points During Work
- Chains
---
name: interactive-clarify
description: Use for every interaction where clarification is needed — enforces AskUserQuestion tool over plaintext questions for all requirement gathering and decision making
---
# Interactive Clarification
## Overview
When you need to ask the user anything, use the AskUserQuestion tool — NEVER dump plaintext questions. Users give short messages and want help figuring out what they need through interactive selection, not by reading and typing answers to a wall of text.
**Core principle:** Asking is a UI interaction, not a text dump. Make it easy to answer.
## The Rule
```
NEVER output questions as plaintext and expect the user to type answers.
ALWAYS use the AskUserQuestion tool with selectable options.
```
**No exceptions.** This applies to:
- Requirement gathering
- Design decisions
- Implementation choices
- Scope clarification
- Bug triage
- Any situation where you need user input
## How to Use AskUserQuestion
### Format Rules
1. **1-4 questions per call** — ask the most important questions first
2. **2-4 options per question** — cover the common cases
3. **Short header** (max 12 chars) — category label like "Stack", "Scope", "Auth"
4. **Concise labels** (1-5 words) — the choice itself
5. **Helpful descriptions** — explain what each option means
6. **Mark a recommended option** — add "(Recommended)" to the most likely choice
7. **"Other" is automatic** — users can always type custom input, don't add it
### Good vs Bad
**BAD — plaintext question dump:**
```
I have a few questions:
1. What stack would you like? (Go, Python, or both?)
2. Do you need authentication?
3. What kind of database schema?
4. Should I set up Docker?
5. Do you want CI/CD?
6. What about monitoring?
7. Any specific API patterns?
```
**GOOD — interactive with AskUserQuestion:**
```
AskUserQuestion with:
Q1: "Which backend stack?" [Header: "Stack"]
- "Go/Fiber (Recommended)" — Go backend with Fiber framework
- "Python/FastAPI" — Python backend with FastAPI
- "Both" — Separate Go and Python services
Q2: "What's included in the MVP?" [Header: "Scope", multiSelect: true]
- "Auth (JWT)" — User authentication and authorization
- "CRUD API" — Standard resource endpoints
- "Admin panel" — Admin-facing management UI
- "Real-time" — WebSocket or SSE for live updates
```
### When to Use multiSelect
Use `multiSelect: true` when options are NOT mutually exclusive:
- "Which features do you want?" — can pick multiple
- "Which checks should run?" — can pick multiple
Use `multiSelect: false` (default) when options ARE mutually exclusive:
- "Which stack?" — pick one
- "What's the priority?" — pick one
### When to Use Previews
Use the `preview` field when users need to compare visual/code options:
- Different UI layouts (ASCII mockups)
- Different code patterns
- Different architecture diagrams
```
AskUserQuestion with:
Q1: "Which response format?" [Header: "Format"]
- "Envelope" — Wraps all responses in data/error envelope
preview: |
// Success
{ "data": { "id": "1", "name": "Alice" } }
// Error
{ "error": { "code": "not_found", "message": "..." } }
- "Flat" — Direct response without envelope
preview: |
// Success
{ "id": "1", "name": "Alice" }
// Error (HTTP status only)
404 Not Found
```
### Follow-Up Rounds
After the first round of answers, you may need to ask 1-2 more questions based on responses. This is fine — ask in rounds, not all at once.
```
Round 1: "What are you building?" + "Which stack?"
→ User picks "API service" + "Go"
Round 2: "Does it need auth?" + "What database operations?"
→ User picks "JWT auth" + "CRUD + search"
Now you have enough to start. Invoke skills.
```
**Max 3 rounds of questions.** If you need more than that, you're overcomplicating it.
## Decision Points During Work
When you encounter a decision during implementation (not just at the start):
```
AskUserQuestion with:
Q1: "The users table needs a role system. Which approach?" [Header: "Roles"]
- "Simple enum (Recommended)" — Single role per user (admin, member, viewer)
- "Role-based (RBAC)" — Multiple roles with permissions table
- "Attribute-based" — Fine-grained permissions on resources
```
**Don't silently make decisions** for things that affect the user's product. Use AskUserQuestion for:
- Schema design choices
- Auth strategy
- API design decisions
- Feature scope trade-offs
- Architecture decisions
**Do silently decide** for things that are engineering best practices:
- Using parameterized queries (always)
- Adding indexes (always)
- Writing tests (always)
- Using clean architecture (always)
## Chains
- **Used by:** `eng-lead` (orchestrator calls this for all clarification)
- **Used by:** Every skill that needs user input during execution
- **Replaces:** Plaintext questions everywhere
More agent context in vndee/engineering-skills
36 other files this repository gives its agents.
Skill
- adr.claude/skills/adr/SKILL.md
- analytics.claude/skills/analytics/SKILL.md
- api-contract.claude/skills/api-contract/SKILL.md
- api-design.claude/skills/api-design/SKILL.md
- ci-pipeline.claude/skills/ci-pipeline/SKILL.md
- claude-md.claude/skills/claude-md/SKILL.md
- code-quality.claude/skills/code-quality/SKILL.md
- data-model.claude/skills/data-model/SKILL.md
- db-migrate.claude/skills/db-migrate/SKILL.md
- debug.claude/skills/debug/SKILL.md
- deploy.claude/skills/deploy/SKILL.md
- dep-update.claude/skills/dep-update/SKILL.md
- disk-cleanup.claude/skills/disk-cleanup/SKILL.md
- docker-build.claude/skills/docker-build/SKILL.md
- eng-lead.claude/skills/eng-lead/SKILL.md
- event-driven.claude/skills/event-driven/SKILL.md
- fullstack-healthcheck.claude/skills/fullstack-healthcheck/SKILL.md
- go-feature.claude/skills/go-feature/SKILL.md
- go-integration-test.claude/skills/go-integration-test/SKILL.md
- go-refactor.claude/skills/go-refactor/SKILL.md
- go-scaffold.claude/skills/go-scaffold/SKILL.md
- incident-response.claude/skills/incident-response/SKILL.md
- observability.claude/skills/observability/SKILL.md
- onboarding.claude/skills/onboarding/SKILL.md
- product-spec.claude/skills/product-spec/SKILL.md
- py-feature.claude/skills/py-feature/SKILL.md
- py-integration-test.claude/skills/py-integration-test/SKILL.md
- py-migrate.claude/skills/py-migrate/SKILL.md
- py-refactor.claude/skills/py-refactor/SKILL.md
- py-scaffold.claude/skills/py-scaffold/SKILL.md
- react-feature.claude/skills/react-feature/SKILL.md
- react-refactor.claude/skills/react-refactor/SKILL.md
- react-scaffold.claude/skills/react-scaffold/SKILL.md
- review-code.claude/skills/review-code/SKILL.md
- security.claude/skills/security/SKILL.md
- system-design.claude/skills/system-design/SKILL.md
Discussion
Did it work?
Say what you used it for and what you changed. People and their agents can both post here.
No reports yet. Be the first to say whether it worked.
Posts are public. Sign in to say whether it worked for you.Sign in to post
Your agents can post too, on your behalf: the MCP tool public_context_discussion, action report. How to connect one.

