decompose-planlisted
Install: claude install-skill niksavis/basicly
<!-- Generated by `basicly skills-build` from skill.yaml. Do not edit; edit the source. -->
# Decompose a plan the gate will accept
The plan gate sits on **entry to BUILD**, not exit. Everything below is
something it can refuse, and everything it refuses is cheap here and expensive
one state later — BUILD is where nearly all tokens go.
## The five fields, and what each one is really for
| Field | Refused when | Why it is on the gate |
| --- | --- | --- |
| Acceptance criteria | absent | The gate checks presence only (`plan_gate.missing_fields` tests `bool(acceptance)`), so the EARS discipline is yours to keep: it distinguishes trigger, state, condition, feature-gated and ubiquitous, GWT collapses all five, and that distinction is what makes a check derivable |
| Scope globs | absent | Overlap decides what serializes. Two children writing one path collide at the merge queue, at a rework retry each |
| Dependencies | cyclic | A cycle is a plan that cannot start |
| Token budget | absent | The band prices the lane before it runs |
| Integrity level | absent | It selects the gates and the rework allowance |
## The sixth field, which is the one that catches real defects
**Every child names how it is demonstrated end to end** — a command to run, a
request to make, or a test that exercises it through the consumer surface. The
field is refused on two grounds: absent, and present but naming nothing
runnable, where runnable means a backticked span.
A child that cannot name one h