- name
- deep-clarification
- description
- Ask hard clarifying questions, stress-test assumptions, and challenge a plan or design until ambiguity is resolved. Exhaustively walks each branch of a decision tree. Use when deep clarification is needed during spec creation, planning, triage, or any phase with significant uncertainty. Also use when the user says 'challenge this', 'stress-test this', 'probe this plan', or 'deep dive on requirements'. Do not use for simple yes/no confirmations, for architecture decisions (use ADRs after clarification), or when the user explicitly asks for brevity.
# Deep Clarification
## Principle
Premature convergence is the root cause of underspecified features. When uncertainty is high, exhaustive exploration of the decision space produces better artifacts than bounded clarification rounds.
## When to Use
| Caller | Trigger |
|--------|---------|
| `devsquad.specify` | Spec touches multiple bounded contexts, has high complexity rating, or user requests deep exploration |
| `devsquad.plan` | High-impact design decisions with 2+ viable options and no clear winner |
| `devsquad.envision` | Business context has competing objectives or unclear pain points |
| `debugging-recovery` | Bug report is incomplete or ambiguous; need to build a complete reproduction |
| Any agent | User explicitly says "challenge this", "stress-test this", or "deep dive on requirements" |
## Interview Protocol
### 1. Identify the decision tree
Before asking the first question, map the branches:
- What are the top-level decisions that need to be made?
- Which decisions depend on others? (resolve dependencies first)
- Which decisions can be answered by exploring the codebase instead of asking the user?
### 2. Walk each branch
For each decision point:
1. **State the question clearly**: one question at a time
2. **Provide a recommended answer**: based on codebase exploration, existing ADRs, or domain knowledge
3. **Wait for the user's response** before proceeding to the next question
4. **Challenge vague answers**: if the response is ambiguous, probe deeper ("What do you mean by 'flexible'? Can you give a concrete example?")
5. **Cross-reference with code**: if the user states how something works, verify against the codebase. If there is a contradiction, surface it immediately.
### 3. Codebase-first resolution
Before asking the user a question, check if the answer is already in the codebase:
```
Can the codebase answer this question?
YES → State the finding: "I found that [X]. Is this still current?"
NO → Ask the user
```
This reduces unnecessary questions and grounds the conversation in reality.
### 4. Convergence criteria
The clarification session ends when ANY of the following are true:
- Every branch of the decision tree has been explored and the user confirms shared understanding
- The user explicitly asks to stop or move on ("that covers it", "let's move on")
- Three consecutive questions yield no new information (diminishing returns)
- The session exceeds 15 questions without convergence (suggest parking unresolved items and continuing later)
### 5. Document decisions inline
As decisions are made during the session, capture them immediately:
- If a term is resolved: update the glossary (via `domain-glossary` skill if available)
- If an architectural decision emerges: note it for later ADR creation (do not create during the session)
- If a requirement is clarified: note it for spec update
Present a summary at the end using the `reasoning` skill format:
```text
## Clarification Summary
### Decisions Made
| # | Decision | Justification | Confidence |
|---|----------|---------------|------------|
| 1 | [what was decided] | [why] | [High/Medium/Low] |
### Assumptions
- [assumption made during the session]
### Open Items
- [anything that could not be resolved and needs follow-up]
### Suggested Next Steps
- [ADR needed for X]
- [Spec update needed for Y]
```
## Challenging Techniques
Use these patterns to probe deeper:
| Technique | When to use | Example |
|-----------|-------------|---------|
| **Concrete scenario** | Vague requirement | "Give me a specific example of when this would happen" |
| **Edge case probe** | Happy path only discussed | "What happens if [unusual input]? What about [concurrent access]?" |
| **Contradiction surfacing** | User states conflict with code/docs | "Your code does X, but you just said Y. Which is correct?" |
| **Terminology sharpening** | Overloaded or vague terms | "You said 'account'. Do you mean the billing entity or the login identity?" |
| **Scale probe** | No volume context | "How many of these do you expect? 10? 10,000? 10 million?" |
| **Failure mode** | Only success path discussed | "What should happen when this fails? Is partial failure acceptable?" |
| **Boundary probe** | Scope unclear | "Is [X] in scope or out of scope for this feature?" |
## Auto-Clarity Exception
Temporarily pause the clarification session for:
- Security warnings that need immediate attention
- Irreversible action confirmations
- When the user explicitly asks to stop or move on
Resume after the exception is handled.
## Anti-patterns
- Do not probe trivial decisions (formatting, naming conventions already established)
- Do not ask questions that can be answered by reading the codebase
- Do not batch questions: one at a time, wait for response
- Do not skip the summary: decisions made during the session must be captured
- Do not create ADRs or update specs during the session: capture notes and create afterward
- Do not continue probing after the user signals convergence ("that covers it", "let's move on")
Ver en GitHub