Skip to main content
skill CX Codex

deep-clarify — Claude Code skill: questions first, spec after

Turns a fuzzy request into a written specification by asking about the goal, the finish line and the limits, then saving the result to a file.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add chrono-meta/forge-harness --skill deep-clarify -a claude-code
Open on GitHub

What deep-clarify does

Reach for this skill when the request is “I don't know what to build” or “sort out the requirements”. It runs at most three rounds of questions, two per round. Only the human gets asked: the goal, what counts as done, the priorities, what must stay untouched. Implementation details, file locations and stack choices the skill works out itself and flags as (inferred: X).

A task that already names its finish line skips the dialogue — you get a draft spec and one confirmation question. The output lands in .claude/specs/ under a slug built from the task title plus the date as YYYYMMDD. If that file exists, the skill stops and reports the path instead of overwriting: extending or replacing an earlier spec is the author's decision, not the tool's.

Check that .claude/specs/ is gitignored in your repo before letting it write. A spec carries your goals and your do-not-touch list, and those do not always belong in a shared branch. The skill's toolset is limited to Read, Write, Bash and Glob.

What it helps with

  • turn a vague idea into completion criteria someone else can check
  • mark what is inside the task and what stays outside
  • record the do-not-touch boundaries before coding starts
  • break a large goal into a first concrete step
  • stop an agent from guessing requirements instead of asking

Example prompts for the agent

  • I don't know what to build from these notes — run /deep-clarify on them
  • Write up the requirements for the login rewrite with deep-clarify and save the spec
  • Ask me what this script is really supposed to do, then produce a spec

How to install deep-clarify

1Skills CLI (Vercel)

npx skills add chrono-meta/forge-harness --skill deep-clarify -a claude-code

2Manually: put the files in place

~/.claude/skills/deep-clarify/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/deep-clarify/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about deep-clarify

How to install deep-clarify in Claude Code?

Run npx skills add chrono-meta/forge-harness --skill deep-clarify -a claude-code. The skill file lands at ~/.claude/skills/deep-clarify/SKILL.md.

What does deep-clarify do?

It interviews you about goals, completion criteria and constraints, then saves a structured spec at .claude/specs/{slug}.md. It acts as the clarification step before agents are dispatched.

What happens if a spec with the same name already exists?

The skill aborts and shows the existing path. It never overwrites and never adds a suffix on its own, since deciding to extend or supersede the old spec is up to you.

Source text

SKILL.md · MIT
---
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. **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
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 | 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 | 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.

© chrono-meta · MIT · chrono-meta/forge-harness

Similar skills

All skills for Agent setup: memory, context, orchestration →

From the same set13

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor