skills/df-plan-review/SKILL.md
Plan quality verification for dev-flow. Goal-backward analysis ensures plans WILL achieve their stated goal before execution burns context. ⚠️ MUST use when: (1) Reviewing Plan quality before approve (2) Wopal completes Plan writing and needs quality gate (3) User asks to "check plan", "verify plan", "review plan" (4) Plan enters planning status and needs pre-execution validation 🔴 Trigger automatically when Plan is ready for review, even if user doesn't explicitly say "review". Agent: rook (read-only verification subagent) Mode: verification, not execution
npx skillsauth add sampx/agent-tools df-plan-reviewInstall 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.
Goal-backward verification: Start from what the plan SHOULD deliver, verify it addresses that goal completely.
Plan completeness =/= Goal achievement
A task "create auth endpoint" can exist in the plan while password hashing is missing. The task exists but the goal "secure authentication" won't be achieved.
Question: Does every stated goal have implementing task(s)?
Why: Missing goal coverage = plan won't deliver what it promises.
Process:
Severity: BLOCKER if any goal component lacks coverage.
Question: Does every task have Files + Action + Verify + Done?
Why: Missing verification = can't confirm completion.
Required elements by task type:
auto: Files, Action, Verify, Donetdd: Files, Behavior, Implementation, Test commands, Expected outcomescheckpoint:*: N/A (marker tasks)Red flags: Missing <verify>, vague <action>, empty <files>
Severity: BLOCKER for missing required fields.
Question: Are task dependencies valid and wave assignment consistent?
Why: Broken dependencies = execution will fail at runtime.
Process:
Red flags: Wave 2 referencing Wave 3 output, circular A→B→A
Severity: BLOCKER for circular dependencies or impossible wave order.
Question: Are artifacts wired together, not just created in isolation?
Why: Component created but not imported = dead code.
Process:
Severity: WARNING for missing wiring in Action descriptions.
Question: Can each Verify command actually prove completion?
Why: "Manual — later" or "quality is good" = unverifiable.
Valid patterns:
rg -c 'pattern' file ≥ 1pytest tests/ passesflow.sh complete succeedsInvalid patterns:
Severity: BLOCKER for unverifiable commands without explicit manual reason.
Question: Will plan complete within context budget and scope boundaries?
Why: 5+ tasks/plan = quality degradation. Scope exceeding In Scope = uncontrolled expansion.
Thresholds:
Red flags: Plan includes Out of Scope items, 5+ tasks, complex work crammed into one wave
Severity: BLOCKER for Out of Scope violations or extreme complexity.
CRITICAL: All six dimensions MUST be checked before outputting any report.
At review start, create TodoWrite items for each dimension:
[ ] 1. Goal Coverage[ ] 2. Task Completeness[ ] 3. Dependency & Wave Correctness[ ] 4. Key Links Planned[ ] 5. Verification Falsifiability[ ] 6. Scope & Context MatchDuring review, mark only ONE in_progress at a time. Mark completed immediately after dimension-specific checks are done.
FORBIDDEN to output final report (VERIFICATION PASSED / ISSUES FOUND) while any dimension is still pending or in_progress. Wopal uses your todo completion rate to track review progress.
Context low fallback: If context is running out and some dimensions remain unchecked → output a partial report with an explicit UNCOVERED DIMENSIONS section listing which dimensions were NOT checked and why.
Most insidious failure: Plan claims to implement a decision but delivers a shadow version.
Pattern scan: Look for scope reduction language in Actions:
Cross-reference: Match against Plan goal and Technical Context decisions. If reduced from stated requirement → BLOCKER.
Fix path: Either deliver fully or propose phase split, don't silently shrink.
Bounded iteration: Max 3 revision rounds to prevent infinite planner-checker对抗.
Loop behavior:
## VERIFICATION PASSED
**Plan**: {plan-name}
**Status**: Ready for approve
### Goal Coverage
| Goal Component | Tasks | Coverage |
|----------------|-------|----------|
| {component-1} | 1,2 | Complete |
| {component-2} | 3 | Complete |
### Plan Summary
| Metric | Value | Status |
|--------|-------|--------|
| Tasks | 3 | ✅ Within budget |
| Files | 6 | ✅ Within budget |
| Waves | 2 | ✅ Valid |
Plan verified. Proceed to `approve`.
## ISSUES FOUND
**Plan**: {plan-name}
**Issues**: {N} blocker(s), {Y} warning(s), {Z} info
### Blockers (must fix)
**1. [{dimension}] {description}**
- Task: {task-number}
- Issue: {specific problem}
- Fix: {concrete fix hint}
### Warnings (should fix)
**1. [{dimension}] {description}**
- Fix: {suggestion}
### Recommendation
Return to planner with feedback. Max {remaining} revision rounds.
DO NOT:
Load detailed rubric when needed:
references/review-rubric.md — Six-dimension detailed process, scope reduction patterns, revision loop rules, issue format specificationPlan goal: "Implement secure authentication with login, logout, session persistence"
Issue found:
issue:
dimension: goal_coverage
severity: blocker
description: "Logout functionality has no implementing task"
plan: "143-..."
goal_component: "logout"
fix_hint: "Add Task for logout endpoint or confirm logout is deferred with explicit reason"
Technical Context D-26: "Config displays calculated costs in impulses from pricing table"
Task Action: "D-26 cost references (v1 — static labels). NOT wired to billing"
Issue found:
issue:
dimension: scope_reduction
severity: blocker
description: "Plan reduces D-26 from calculated costs to static hardcoded labels"
plan: "143-..."
task: 1
decision: "D-26: Config displays calculated costs"
plan_action: "static labels v1 — NOT wired"
fix_hint: "Either implement D-26 fully or split phase, don't silently reduce"
tools
Configure ellamaka, a fork of OpenCode with wopal-space mode. MUST use for any task about ellamaka config, agent frontmatter, permission rules, model/provider selection, formatter settings, config loading order, or why config changes are ignored. Trigger on requests about ellamaka or opencode config files, agent permission overrides, restricting subagents, custom/plugin tool permissions (e.g. wopal_task_*), disabling tools, configuring providers or models, formatter setup, config precedence or layering, or debugging settings that do not take effect. Use this skill even when the user says "opencode" if the actual runtime, config path, or behavior is ellamaka. Prefer this skill whenever the answer depends on the difference between ellamaka and upstream opencode, including wopal-space config loading, plugin tool permissions, or agent frontmatter precedence.
development
Review implementation results for goal achievement and code quality. Supports both Plan-backed review and planless diff review. ⚠️ MUST use when: (1) Wopal delegates rook to review fae implementation output, (2) Prompt contains "review_type: implementation", (3) Prompt contains changed code file list or Plan path + implementation scope, (4) Any code review request from Wopal. 🔴 Trigger even when user does not explicitly mention "review" if the task involves verifying implementation results. This skill is rook-exclusive (only rook agent can load it).
tools
Foundation rules for how Wopal collaborates with sub-agents such as fae and rook. ⚠️ MUST load before ANY delegation — covers delegation tool APIs, task lifecycle, notifications, status handling, and recovery. 🔴 Trigger: "delegate", "let fae implement", "fae task", "rook review", "check task status", "cancel task", "abort task", "agent collaboration", "委派", "让 fae 执行", "fae 任务", "rook 审查", "检查状态", or any intent to hand work to a sub-agent. 🔴 Never delegate without loading this skill first. Skipping it is serious negligence. Note: this skill does not include workflow-specific prompt templates such as dev-flow templates. Those belong to the corresponding workflow skills.
tools
Manage parallel workstreams — list, create, switch, status, progress, complete, and resume