skills/plan-checker/SKILL.md
Validate plans against 10 dimensions: PASS/BLOCK verdict before execution.
npx skillsauth add notque/claude-code-toolkit plan-checkerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Validate plans before execution using goal-backward analysis. Start from the stated goal and verify every requirement has a complete path through the plan to completion. This catches plan-level defects before they waste an entire execution cycle.
Key principle: Plan completeness does not equal goal achievement. A plan can have all tasks filled in, each well-specified, and still miss the goal entirely. The checker validates by working backward from the goal through every requirement to verify complete coverage -- not just that each task looks reasonable in isolation.
The skill operates as a gate between planning and execution, validating across 10 dimensions and issuing a PASS/BLOCK verdict. If issues are found, a bounded revision loop allows up to 3 iterations before proceeding with documented risks (because the cost of continued planning is not zero -- it consumes context, delays execution, and each revision may introduce new issues).
Load the plan and its context. The checker needs three things: the plan itself, the goal it serves, and the repository rules it must comply with.
Step 1: Identify the plan
Accept the plan from one of these sources (in priority order):
.feature/state/plan/ for the active feature planplan/active/ for workflow-orchestrator plansIf no plan is found:
BLOCK: No plan found. Provide a plan file path, or run /feature-lifecycle (plan phase) or
workflow-orchestrator to create one first.
Step 2: Extract the goal
The goal is the anchor for goal-backward analysis (because analysis requires knowing what success looks like). Find it in:
## Goal or ## Success Criteria section.feature/state/design/)If no goal is found:
BLOCK: No stated goal found in plan or design document. Goal-backward
analysis requires a goal. Add a ## Goal section to the plan.
Step 3: Load repository context
Read the target repository's CLAUDE.md (if it exists) for dimension 9 validation (because repository rules inform which constraints the plan must comply with):
find . -maxdepth 2 -name "CLAUDE.md" -type f 2>/dev/null | head -5
Read any found CLAUDE.md files to extract rules the plan must comply with.
Step 4: Extract requirements
From the goal and design document, extract a numbered list of requirements. Each requirement becomes a row in the coverage matrix. If the plan includes success criteria, those count as requirements too.
GATE: Plan loaded. Goal identified. Requirements extracted. Proceed to CHECK.
Run goal-backward analysis across all 10 verification dimensions. For each dimension, produce structured findings or mark as PASS.
Severity: Blocker Check: Every extracted requirement appears in at least one task.
Trace backward from each requirement (because missing requirements directly predict execution failure):
Produce a coverage matrix:
## Requirements Coverage Matrix
| # | Requirement | Covered By | Status |
|---|-------------|------------|--------|
| R1 | [requirement] | T1, T3 | COVERED |
| R2 | [requirement] | T2 | COVERED |
| R3 | [requirement] | -- | UNCOVERED |
Any UNCOVERED requirement is a blocker finding.
Severity: Warning Check: Each task has concrete actions, not vague descriptions.
Scan every task for vague verbs that signal incomplete thinking (because vague tasks fail at execution time when the executor realizes "implement feature" has dozens of possible interpretations):
| Vague (reject) | Concrete (accept) | |-----------------|-------------------| | "implement feature" | "add handler to router with X signature" | | "ensure error handling" | "wrap fetchUser in try/catch, return 404 for NotFound" | | "handle edge cases" | "add nil-check for user.Profile before accessing Avatar" | | "improve performance" | "add index on orders.user_id, batch N+1 into JOIN" | | "align the API" | "add created_at field to response struct" | | "clean up" | "extract validation into validateInput() function" |
A task that uses vague verbs without specifying the concrete action is a warning finding.
Severity: Blocker Check: Tasks reference the right files and imports, verified against the actual codebase.
For each task that references files, verify using the filesystem (because file paths and imports validated from memory are unreliable -- the codebase is the source of truth):
# Verify each referenced file exists
ls -la /path/to/referenced/file
For each task that references imports or packages:
A task referencing a nonexistent file or wrong import path is a blocker finding.
Severity: Blocker Check: Cross-component wiring is explicitly tasked.
For any plan that adds new components, verify that the wiring between components is an explicit task (because unwired components are the most common post-execution discovery -- the feature "works" in isolation but is never reachable):
| New Component | Required Wiring | |---------------|----------------| | New endpoint | Route registration | | New handler | Router/mux hookup | | New config option | Config loading code | | New database table | Migration + ORM registration | | New service | Dependency injection / initialization | | New hook | Hook registration in settings | | New agent | INDEX.json entry | | New skill | INDEX.json entry, routing table |
If the plan adds a component but has no task for its wiring, that is a blocker finding.
Severity: Warning at 4 tasks, Blocker at 5+ Check: Plan has right-sized scope for a single execution context.
Count the tasks in the plan:
| Task Count | Verdict | Rationale | |------------|---------|-----------| | 1-3 | Good | Right-sized for focused execution | | 4 | Warning | Approaching limit; review if any tasks can merge | | 5+ | Blocker | Split required -- context windows are finite, and each task adds execution state. Past 5 tasks, the executor loses track of earlier context, makes inconsistent decisions, or runs out of room for error recovery. |
For blocker: suggest how to split (by wave, by component, by dependency boundary).
Severity: Warning Check: How to verify the plan's goal is achieved must be explicit.
Look for a ## Verification or ## Success Criteria section. Check that it specifies (because "run tests" is not verification -- expected outcomes and observable behaviors are):
| Insufficient | Sufficient |
|--------------|-----------|
| "run tests" | "run go test ./pkg/... and verify TestNewHandler passes" |
| "check it works" | "curl localhost:8080/api/reset returns 200 with token field" |
| "verify deployment" | "kubectl get pods -n staging shows 3/3 Running within 60s" |
A plan with no verification section or only vague verification is a warning finding.
Severity: Blocker Check: Plan respects decisions from prior phases.
If the plan is part of a feature lifecycle (design -> plan -> implement):
If the plan is standalone (workflow-orchestrator):
A plan that contradicts prior-phase decisions is a blocker finding.
Severity: Blocker Check: One plan's transformations don't conflict with another's.
This dimension only applies when multiple plans exist for the same feature. Check (because data contract conflicts cause silent failures -- code runs but produces wrong output):
If not applicable (single plan), mark as PASS with note "single plan -- no cross-plan conflicts possible."
Severity: Blocker Check: Plan doesn't violate repository rules.
Cross-reference the plan against CLAUDE.md rules loaded in Phase 1 (because repository rules enforce architecture and safety patterns). Common violations:
| Rule Category | What to Check | |---------------|--------------| | Branch policy | Plan doesn't commit directly to main/master | | Test requirements | Plan includes test tasks if CLAUDE.md requires them | | Code style | Plan references correct formatters/linters | | Forbidden patterns | Plan doesn't use patterns CLAUDE.md prohibits | | Required tools | Plan uses repo-mandated tools (e.g., specific test runners) |
A plan that violates a CLAUDE.md rule is a blocker finding.
If no CLAUDE.md was found in Phase 1, mark as PASS with note "no CLAUDE.md found."
Severity: Warning Check: Plan is completable within approximately 50% of a fresh context window.
Estimate the execution cost (because execution always takes more than planned):
If the plan looks like it would consume more than 50% of a context window:
GATE: All 10 dimensions checked. Findings collected. Proceed to VERDICT.
Compile findings and issue verdict.
Step 1: Compile findings
Collect all findings from Phase 2 into a structured report. Order by severity (blockers first), then by dimension number.
Each finding uses this format:
Plan: [plan identifier or filename]
Dimension: [N] [dimension name]
Severity: Blocker | Warning
Description: [what is wrong]
Fix hint: [specific suggestion for how to fix it]
Step 2: Issue verdict
| Condition | Verdict | Action | |-----------|---------|--------| | Zero findings | PASS | Proceed to execution | | Warnings only, no blockers | PASS with warnings | Proceed, but address warnings if time allows | | Any blocker findings | BLOCK | Plan must be revised before execution |
Step 3: Format output
================================================================
PLAN CHECK: [plan identifier]
================================================================
Verdict: PASS | PASS (with warnings) | BLOCK
Blockers: [count]
Warnings: [count]
Requirements Coverage: [N/M] covered
================================================================
FINDINGS
================================================================
[structured findings, blockers first]
================================================================
REQUIREMENTS COVERAGE MATRIX
================================================================
[coverage matrix from dimension 1]
================================================================
If verdict is PASS or PASS with warnings, suggest:
Plan validated. Proceed to execution with /feature-lifecycle (implement phase) or
continue with workflow-orchestrator EXECUTE phase.
If verdict is BLOCK, proceed to Phase 4 (Revision Loop).
GATE: Verdict issued. If PASS, done. If BLOCK, proceed to revision loop.
Bounded revision loop: fix blocker findings, re-check, max 3 iterations. After 3 good-faith attempts, remaining issues are either genuinely hard (and better discovered during execution with real code) or low-probability (and not worth further planning time).
Iteration tracking:
Revision iteration: [N] of 3
Remaining blockers: [count]
Step 1: Revise plan
For each blocker finding:
Step 2: Re-check
Run Phase 2 again on the revised plan. Only re-check dimensions that had findings (optimization -- dimensions that passed don't regress from plan edits).
Step 3: Evaluate
| Condition | Action | |-----------|--------| | All blockers resolved | Issue PASS verdict, done | | Blockers remain, iterations < 3 | Next iteration | | Blockers remain, iterations = 3 | Document remaining issues as known risks, issue PASS (with known risks) |
On max iterations reached:
================================================================
PLAN CHECK: [plan identifier]
================================================================
Verdict: PASS (with known risks)
Revision iterations: 3 of 3 (limit reached)
Known Risks (unresolved after 3 iterations):
- [finding 1]
- [finding 2]
Proceeding to execution. These risks should be monitored during
implementation. If any risk materializes, pause execution and
revise the plan.
================================================================
| Error | Cause | Solution | |-------|-------|----------| | No plan found | No plan file at expected locations | Provide explicit path, or run /feature-lifecycle (plan phase) first | | No goal found | Plan lacks ## Goal or ## Success Criteria | Add a goal section to the plan before checking | | File verification fails | Referenced file doesn't exist in codebase | Fix the file path in the plan, or create the file first | | CLAUDE.md not found | No CLAUDE.md in target repo | Dimension 9 passes automatically; note in findings | | Revision loop exhausted | 3 iterations couldn't resolve all blockers | Proceed with known risks documented | | Plan is inline text | User pasted plan instead of file path | Parse inline text; warn that revisions won't persist to file |
documentation
Document translation: quick/normal/refined modes with chunked parallel subagents and glossary support.
development
AI image generation: Gemini and Nano Banana backends; single/series/batch workflows with prompt-to-disk.
testing
Unified voice content generation pipeline with mandatory validation and joy-check. 13-phase pipeline: LOAD, GROUND, STATS-CHECKPOINT, GENERATE, HOOK-GATE, VALIDATE, REFINE, VARIETY-GATE, JOY-CHECK, ANTI-AI, CLOSE-GATE, OUTPUT, CLEANUP. Use when writing articles, blog posts, or any content that uses a voice profile. Use for "write article", "blog post", "write in voice", "generate content", "draft article", "write about".
documentation
Critique-and-rewrite loop for voice fidelity validation.