write-speclisted
Install: claude install-skill taipt1504/claudehut
# Write Spec (Spec phase)
Turn the chosen approach into the **contract** the implementation and Review are graded on. Runs **inline on the main thread** — this skill owns a user gate (`AskUserQuestion`) and a state write (`claudehut-state`), which subagents cannot do.
## Flow
```mermaid
flowchart TB
start(["approach chosen in Brainstorm"]) --> dir{"reuse-scan recorded<br/>in session state?"}
dir -- "no" --> back(["BLOCKED: go back to Brainstorm<br/>(it owns task-dir creation)"])
dir -- "yes" --> derive["derive task dir = dirname(reuse-scan)<br/>NEVER recompute next NNNN"]
derive --> size{"type == feature?"}
size -- "yes" --> full["write spec.md — ALL ## sections<br/>(template, canonical .claude/claudehut path)"]
size -- "no" --> red["write spec.md — reduced subset<br/>(1,9,5,10,12) — no N/A walls"]
full --> crit["REFUTE before recording — assume it fails set-spec:<br/>has ## sections + Decision Record + AC-xxx?<br/>every chosen-option commitment traces to an AC?"]
red --> crit
crit --> gate{"set-spec preconditions met<br/>AND every commitment maps to ≥1 AC?"}
gate -- "no" --> fix["fix structure / add missing AC"]
fix --> crit
gate -- "yes" --> mode{"interactive run<br/>(AskUserQuestion available)?"}
mode -- "no" --> nonint["record 'approval: non-interactive<br/>run — proceeded with draft' in header"]
nonint --> record
mode -- "yes" --> ask["AskUserQuestion — summarize 3-5 lines<br/>(decision, key ACs, scope): Approve / Request changes"]
ask