/plan-check — gate the plan before building
Goal: catch a broken plan before an executor acts on it. An ambiguous or incomplete plan produces an executor that guesses; parallel executors guessing differently about the same file produce conflicts. Cheaper to fix the plan now than to unwind code later.
This is the plan-phase counterpart to /harness-claude:review — same adversarial stance, one step
earlier. It is read-only: it reports, it does not edit the plan.
Do this
- Load the artifacts:
.claude/planning/<slug>/PLAN.mdandSPEC.md(slug is in.claude/STATE.md). If there's noPLAN.mdon disk (trivial/inline work), review the plan from the conversation instead — the checks are the same. - Delegate to the
harness-claude:planneragent in a check pass (read-only — pass it the plan, the spec, and the objective: "find why this plan fails before we build it"). Get back a summary with severities, not a raw dump. - Check the plan across three dimensions:
- Criteria coverage — does every
AC-ninSPEC.mdmap to at least one task'saddresses:? Name any uncovered criterion. - Scope — does any task do work no criterion asked for (scope creep), or is any in-scope item unplanned? Flag both directions.
- Task independence — for tasks meant to run in parallel (same wave / no
depends_onbetween them), are the write-sets pairwise disjoint? Aredepends_onedges acyclic and complete (no task reads another's output without declaring it)? Overlapping write-sets or a missing edge is a correctness bug.
- Criteria coverage — does every
- Red-team it: assume the plan already failed in execution and ask why. Attack hidden assumptions, not just the obvious risks.
- If findings warrant a revision, hand them back to
/harness-claude:planand re-check — loop ≤ 3 times (per rules/agents.md), then accept or escalate to the user.
Output
A findings list, most-severe first, each with a severity:
| Severity | Meaning | Action |
|---|---|---|
| Critical | The plan cannot satisfy a criterion, or parallel tasks collide on a file | BLOCK — fix the plan before /harness-claude:implement |
| High | Likely bug or significant gap | Fix before building |
| Medium | Maintainability / clarity concern | Fix when reasonable |
| Low | Minor suggestion | Optional |
If nothing survives, say so plainly — a clean plan is a valid result.
State
Patch .claude/STATE.md: phase: plan-check, status: done (or blocked if a Critical
stands), next_skill: /implement.
Exit criterion
No Critical finding remains (High/Medium/Low may be noted and carried). Then
/harness-claude:implement.