Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Reviews implementation plans for quality, completeness, and actionability. Use after a plan is produced by the planner skill, before starting implementation. Use when evaluating a plan written by yourself, another agent, or a human.
.claude/skills/penpot-plan-review/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-09 | ✗→✓ | ▲ Improved | 113% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 107% | 0% |
| case-05 | ✓→✓ | = Same ✓ | 12% | 0% |
| case-06 | ✓→✓ | = Same ✓ | 156% | 0% |
| case-07 | ✓→✓ | = Same ✓ | 124% | 0% |
Multi-dimensional plan review with quality gates. Every plan gets reviewed before implementation starts — no exceptions. Review covers six axes: completeness, task quality, architecture & sequencing, risk coverage, actionability, and proposed code quality.
The approval standard: Approve a plan when it is specific enough that a skilled implementer could execute it without guessing, the task ordering is sound, and risks are acknowledged. Perfect plans don't exist — the goal is confidence that implementation won't derail. Don't block a plan because it isn't exactly how you would have structured it. If it's executable and well-organized, approve it.
Do NOT use for: Single-file changes with obvious scope, or when the task is trivial enough to just do.
Every plan gets evaluated across these dimensions:
Does the plan cover everything needed to implement successfully?
Missing any of these is a gap, not a nit.
Are the tasks well-defined and independently executable?
Is the plan structured so implementation flows correctly?
Are the hard parts acknowledged and mitigated?
Can an implementer actually execute this?
If the plan proposes code shapes, function signatures, data structures, or API designs, evaluate those proposals against code-review criteria:
When to apply: Only when the plan includes specific code snippets, type definitions, API contracts, or function signatures. Plans that only describe "what" without showing "how" skip this axis.
When you flag a structural problem in a plan, propose the fix — not just the problem:
Prefer the remedy that makes the plan immediately actionable over one that just flags the gap.
Plans should be scoped to a single deliverable:
1–5 tasks → Good. A focused feature or bug fix.
6–10 tasks → Acceptable for a moderate feature.
11–15 tasks → Large. Consider splitting into phases.
15+ tasks → Too large. Split into multiple plans.What counts as "one plan": A self-contained set of changes that delivers a single coherent capability. If you can describe the goal in one sentence, it's one plan.
Label every comment with its severity so the author knows what's required vs optional:
| Prefix | Meaning | Author Action | |--------|---------|---------------| | (no prefix) | Required change | Must address before implementation starts | | Critical: | Blocks implementation | Missing security consideration, data integrity risk, fundamentally wrong approach | | Nit: | Minor, optional | Author may ignore — wording, formatting | | Optional: / Consider: | Suggestion | Worth considering but not required | | FYI | Informational only | No action needed — context for future reference |
Lead with what matters. Order findings by leverage: missing risks and wrong sequencing first, then task quality gaps, then completeness, then nits. If you have one critical sequencing problem and ten nits, the sequencing problem is the review.
Before evaluating structure, understand intent:
- What is this plan trying to accomplish?
- What problem does it solve?
- What does "done" look like?Scan for missing sections before diving into content:
- Context present?
- Affected modules listed?
- Architecture decisions documented?
- Risks acknowledged?
- Testing strategy defined?
- Verification commands explicit?Walk through each task:
For each task:
1. Can I tell exactly what to build?
2. Are acceptance criteria specific and testable?
3. Is the size reasonable (not XL)?
4. Are dependencies clear?
5. Would I know which files to touch?Check the dependency graph:
- Are foundations built first?
- Does each task leave the system working?
- Are checkpoints placed correctly?
- Are high-risk items early?
- Is it vertically sliced?Put yourself in the implementer's shoes:
- Could I pick up task 1 and start coding without asking any questions?
- Are the verification commands copy-pasteable?
- Are file paths and function names specific?
- Is existing code referenced where I'd need to read it?Check that the plan can actually confirm it worked:
- What tests should pass after implementation?
- What build/compile commands are relevant?
- What manual checks are needed?
- How do we know the feature works end-to-end?If the plan includes code snippets, types, or API designs:
- Load code-review skill for criteria
- Check proposed signatures for edge cases
- Verify naming follows project conventions
- Confirm abstractions follow existing patterns
- Scan for security vectors in proposed APIs
- Check for performance issues in proposed data structuresmarkdown## Review: [Plan title] ### Completeness - [ ] Context explains the problem and goal - [ ] Affected modules are listed with paths - [ ] Architecture decisions have rationale - [ ] Testing strategy is defined - [ ] Verification commands are explicit and project-specific - [ ] Open questions are listed ### Task Quality - [ ] Every task has acceptance criteria - [ ] Every task has verification steps - [ ] Tasks are sized XS–M (L acceptable, XL must be split) - [ ] Task dependencies are stated - [ ] Files likely touched are listed ### Architecture & Sequencing - [ ] Order follows dependency graph (foundations first) - [ ] Vertically sliced (not horizontal layers) - [ ] Each task leaves system working - [ ] Checkpoints exist between phases - [ ] High-risk tasks are early ### Risk Coverage - [ ] Edge cases identified - [ ] Breaking changes / migrations noted - [ ] Security implications considered - [ ] Performance implications considered - [ ] Rollback strategy exists (if applicable) ### Actionability - [ ] File paths are specific - [ ] Verification commands are copy-pasteable - [ ] Existing code to read is referenced - [ ] Conventions and patterns are noted ### Proposed Code Quality *(if plan includes implementation details)* - [ ] Proposed types/signatures handle edge cases - [ ] Proposed names follow project conventions - [ ] Proposed abstractions follow existing patterns - [ ] No security vectors in proposed APIs - [ ] No performance issues in proposed structures ### Verdict - [ ] **Approve** — Ready to implement - [ ] **Request changes** — Gaps must be addressed
| Rationalization | Reality | |---|---| | "I'll figure out the details during implementation" | That's how you discover blocking dependencies mid-task. Surface them now. | | "The tasks are obvious, no need for criteria" | Write them anyway. Explicit criteria surface hidden assumptions. | | "It's just a small feature, it doesn't need a plan" | Small features have edge cases too. 3 tasks with criteria takes 5 minutes. | | "The plan is good enough" | "Good enough" without acceptance criteria means the implementer defines "done" — and they might define it differently. | | "I'll add verification steps later" | Later never comes. The plan is the contract — define verification now. | | "Risks are minimal" | Every change has risks. If you can't name them, you haven't thought about them. | | "The file paths are obvious" | They're obvious to the author. The implementer might not know the codebase. | | "The code in the plan is fine, it'll get reviewed later" | Plan-level code review catches design problems before implementation — fixing them after coding is more expensive. |
any/unknown/optional without justificationplanner skillcode-review — also the criteria source for axis 6security-and-hardeningtesting| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 38,276 | 10,711 | -72% | 1 | 1 | 0% | 6,103 | 4,491 | -26% | 0 | 0 | — |
case-02 | fail→fail | 43,055 | 8,467 | -80% | 1 | 1 | 0% | 8,016 | 4,259 | -47% | 0 | 0 | — |
case-03 | fail→fail | 41,395 | 8,923 | -78% | 1 | 1 | 0% | 6,803 | 4,225 | -38% | 0 | 0 | — |
case-04 | fail→fail | 11,897 | 9,799 | -18% | 1 | 1 | 0% | 466 | 4,498 | +865% | 0 | 0 | — |
case-05 | pass→pass | 44,529 | 22,644 | -49% | 1 | 1 | 0% | 6,620 | 7,422 | +12% | 0 | 0 | — |
case-06 | pass→pass | 17,218 | 5,462 | -68% | 1 | 1 | 0% | 1,347 | 3,447 | +156% | 0 | 0 | — |
case-07 | pass→pass | 14,781 | 17,898 | +21% | 1 | 1 | 0% | 2,075 | 4,644 | +124% | 0 | 0 | — |
case-08 | pass→pass | 26,269 | 15,192 | -42% | 1 | 1 | 0% | 2,301 | 5,388 | +134% | 0 | 0 | — |
case-09 | fail→pass | 29,854 | 12,081 | -60% | 1 | 1 | 0% | 2,182 | 4,651 | +113% | 0 | 0 | — |
case-10 | pass→pass | 14,559 | 10,817 | -26% | 1 | 1 | 0% | 2,148 | 4,337 | +102% | 0 | 0 | — |
case-11 | pass→pass | 11,339 | 14,357 | +27% | 1 | 1 | 0% | 1,721 | 4,960 | +188% | 0 | 0 | — |
case-12 | pass→pass | 16,324 | 16,958 | +4% | 1 | 1 | 0% | 2,482 | 4,908 | +98% | 0 | 0 | — |
case-13 | pass→pass | 15,521 | 12,707 | -18% | 1 | 1 | 0% | 2,345 | 4,572 | +95% | 0 | 0 | — |
case-14 | pass→pass | 10,513 | 6,711 | -36% | 1 | 1 | 0% | 1,505 | 3,938 | +162% | 0 | 0 | — |
case-15 | fail→pass | 16,041 | 15,172 | -5% | 1 | 1 | 0% | 2,595 | 5,370 | +107% | 0 | 0 | — |
case-16 | pass→pass | 9,693 | 5,618 | -42% | 1 | 1 | 0% | 1,373 | 3,687 | +169% | 0 | 0 | — |
case-17 | pass→pass | 13,713 | 11,109 | -19% | 1 | 1 | 0% | 2,146 | 4,436 | +107% | 0 | 0 | — |
case-18 | pass→pass | 11,002 | 5,808 | -47% | 1 | 1 | 0% | 1,563 | 3,618 | +131% | 0 | 0 | — |
case-19 | fail→fail | 12,021 | 9,366 | -22% | 1 | 1 | 0% | 1,794 | 4,160 | +132% | 0 | 0 | — |
case-20 | pass→pass | 30,008 | 8,433 | -72% | 1 | 1 | 0% | 2,166 | 4,303 | +99% | 0 | 0 | — |
case-21 | pass→pass | 9,322 | 7,442 | -20% | 1 | 1 | 0% | 1,367 | 3,991 | +192% | 0 | 0 | — |
case-22 | pass→pass | 14,772 | 13,642 | -8% | 1 | 1 | 0% | 2,156 | 4,866 | +126% | 0 | 0 | — |
case-23 | pass→pass | 15,313 | 12,927 | -16% | 1 | 1 | 0% | 2,214 | 5,172 | +134% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +9 percentage points is the difference between those two pass rates over the 23 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.