deep-clarify · diff
git:20260526.2de8630 to git:20260811.eede7ad
28 added, 9 removed. Audit A to A.
---
name: deep-clarify
description: Clarifies ambiguous requests through Socratic dialogue, drawing out goals, completion criteria, and constraints to produce a structured spec document. Pre-dispatch requirement clarification step for agent dispatch. Triggered by "I don't know what to build", "how should I approach this", "organize this for me", "clarify this", "deep-clarify".
user-invocable: true
allowed-tools: ["Read", "Write", "Bash", "Glob"]
model: sonnet
complexity_routing:
base: sonnet
high: opus
escalate_when:
- cross_project
- high_stakes
---
# deep-clarify — Socratic Requirement Clarification
A skill that clarifies vague or open-ended requests through conversation to produce **actionable spec documents**.
An independent extension of the "direction confirmation" protocol from agent-composer Step 0-a.
## Triggers
- `/deep-clarify`
- "I don't know what to build", "How should I approach this?"
- "Organize the requirements", "Write a spec document"
- "What should I do with this?", "The direction is unclear"
- When agent-composer detects pre-dispatch clarification is needed and delegates automatically
## Core Principles
**Criteria for asking vs inferring**:
- Things only the human can know (goal, priorities, constraints, completion criteria) → ask
- Things AI can infer (implementation method, file location, technology choices) → infer and present as `(inferred: X)`
- Questions: **maximum 3 rounds, maximum 2 questions per round** — do not overuse
---
## Step 1. Request Analysis
Quickly identify the following from the user's request.
```
Clarity check:
□ Final state (what will be different when done?) — ask if unclear
□ Completion criteria (how will it be verified?) — ask if unclear
□ Constraints (what must not be done, what must not be touched) — ask if unclear
□ Priority (fast vs thorough, now vs later) — ask if unclear
```
**Direct entry conditions** (skip to Step 3 without questions):
- Request is specific and completion criteria are clear → draft spec document and confirm
- Clarity at the level of "add Y feature to file X"
---
## Step 2. Socratic Dialogue
### Round 1 — Goal / Completion Criteria (core 2 questions)
```
Clarification needed.
1. Completion criteria: What does a completed [task name] look like?
(inferred: [inferred completion criteria] — confirm if correct)
2. Scope: Which of [A / B / C] takes priority?
(inferred: [inferred choice] — reason: [rationale])
```
### Round 2 — Constraints / Priority (only if needed)
Skip if Round 1 resolves everything.
```
1. Is there anything this task must absolutely not do?
2. Which takes priority: fast completion vs solid design?
```
### Round 3 — Final Confirmation (only if needed)
Draft the spec first, then single confirmation: "Is this the right direction?"
---
## Step 3. Generate Spec Document
- Structure and save the results of the conversation.
+ Structure and save the results of the conversation. **This step writes a file** — outputting the
+ path is not saving it.
+ 1. Derive the slug: `slug = kebab-case(spec title) + "-" + YYYYMMDD`
+ (lowercase, non-alphanumerics → `-`, collapse repeats, strip leading/trailing `-`).
+ Example: "Rewrite the login flow" on 2026-08-11 → `rewrite-the-login-flow-20260811`.
+ 2. If `.claude/specs/{slug}.md` **already exists → ABORT** and report the existing path.
+ Never overwrite and never silently suffix — an existing spec is a prior decision to extend or
+ supersede, and that is the user's call.
+ 3. Create the directory, then write the file with the **Write** tool (not a shell redirect):
+
```bash
- # Save path
- .claude/specs/{task-slug}.md
+ mkdir -p .claude/specs
```
+ Then `Write` → `.claude/specs/{slug}.md` with the format below, and verify:
+
+ ```bash
+ test -f .claude/specs/{slug}.md && echo "SPEC SAVED: .claude/specs/{slug}.md"
+ ```
+
+ **Residency**: the spec records the user's goals, constraints, and "must not touch" list.
+ `.claude/specs/` is gitignored in this repo; **in a company project, confirm the path is gitignored
+ there too before writing** — if it is not, write to a gitignored location instead.
+
### Spec Document Format
```markdown
# Spec: {task title}
Created: {date} | Status: draft
## Goal
{One sentence — what is being built and why}
## Completion Criteria
- [ ] {verifiable condition 1}
- [ ] {verifiable condition 2}
## Scope
Included: {what is explicitly included}
Excluded: {what is explicitly excluded}
## Constraints
- {technical constraint}
- {what must not be done}
## Priority
{Fast completion / Solid design / Balanced} — {reason}
## References
{related files / existing skills / prerequisite work}
```
---
## Step 4. Follow-up Connections
After generating the spec document, suggest the appropriate next path:
| Situation | Connected skill |
|---|---|
| Agent orchestration needed for implementation | `agent-composer` — pass spec document path |
- | Plan / design review needed | `plan` agent — build plan based on spec |
+ | Plan / design review needed | built-in `Plan` agent — build plan based on spec |
| Single task is now clear | Start implementation directly |
| Audit needed before external sharing | `hub-persona-auditor` |
---
## Done When
- | Condition | Completion verdict |
- |---|---|
- | Socratic dialogue complete + spec document saved | ✅ Clarification complete |
- | Spec path output: `.claude/specs/{slug}.md` | ✅ Save complete |
- | Follow-up skill connection suggestion output | ✅ Handoff complete |
+ | Condition | Completion verdict | Check class |
+ |---|---|---|
+ | Socratic dialogue complete (≤3 rounds, ≤2 questions/round) | ✅ Clarification complete | **mandatory-pass** |
+ | `test -f .claude/specs/{slug}.md` exits 0 — the file **exists on disk** | ✅ Save complete | **mandatory-pass** (a printed path is not a saved file) |
+ | The spec's Completion Criteria are independently verifiable — someone other than the author could tell whether each is met | ✅ Spec actionable | **judged** — adversarial pairing: `fh-meta:beginner` cold-reads the spec and attempts to state, per criterion, how they would check it; a criterion they cannot operationalize fails |
+ | Follow-up skill connection suggestion output | ✅ Handoff complete | **mandatory-pass** |
**This skill's Done When = "actionable spec document saved".** Implementation itself is the domain of follow-up agents/skills.