← ClaudeAtlas

write-speclisted

Use in the Spec phase after an approach is chosen in Brainstorm and before planning - produces the implementation spec from the standard template (EARS requirements, acceptance criteria, MADR decision record, enforcement manifest) and gets the user's approval before recording it. Runs inline on the main thread (it owns the approval gate and the state write).
taipt1504/claudehut · ★ 2 · AI & Automation · score 66
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