← ClaudeAtlas

planlisted

Break a spec area into the smallest independently testable tasks — one observable behaviour each, with the exact test that proves it — written to .claude/docs/plans/<area>.md in dependency order. Run after /clio:ingest, whenever the user asks Clio to read a spec and plan the work, and again after /clio:update moves a row.
nhhthong/clio · ★ 2 · Testing & QA · score 78
Install: claude install-skill nhhthong/clio
A spec says what must be true. This skill turns it into a list of things small enough that each one is either proven by a named test or not done. It writes **only** `.claude/docs/plans/<area>.md`; ledgers and specs stay untouched. Nothing is implemented here. Target (may be empty — then ask which area): $ARGUMENTS ## 1. Load the area Run the `clio:context` skill for the target first: the governing `memory/<area>.md` and its rows (hop 1), what `index.jsonl` says is built (hop 2), what `debt.jsonl` says is open (hop 3). Read the spec file in full. Existing `.claude/docs/plans/<area>.md` → read it in full; this is a re-plan. ## 2. Split - **One task = one observable behaviour, proven by one test.** Cannot name the test → split further; still cannot → it is a ⚠️, not a task. - **Smaller wins.** A task fits one session with room to run its test. "Add the orders endpoint" is four tasks: route returns 200 · rejects unauthenticated · paginates at the limit the spec names · returns the fields the spec lists. - **The test is exact**: a command (`go test ./orders -run TestListPaginates`), a request + the response expected, or numbered manual steps ending in what must be observed. "Works", "verified", "check it" are not tests. - Every number, limit and default in a task is **copied verbatim from `## Decisions`** and appears in its test. A value the spec does not state → no task; it is a ⚠️ (file it via `/clio:memo`, or note the existing debt `id`). - **Row 0 — foundati