
plan-reviewer
Reviews and strengthens an existing implementation plan through adversarial rubber-duck dialogue. Scores completeness, feasibility, scope, testability, risk, and assumptions, asks one pointed question at a time, verifies checkable claims against local code and docs, and writes resolved answers back into the plan file until every dimension reaches 5/5. Use when asked to "review my plan", "rubber duck this", "stress test this plan", "is this plan ready", "challenge my plan", "get this plan to 5/5", "make this plan bulletproof", "what am I missing", "verify this", "is this true", "prove it", "check this claim", "fact-check", or before starting implementation on a non-trivial plan. For creating a plan from scratch, use plan-creator. For reviewing a code diff, use pr-reviewer.
- Installs
- 173
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/mblode/agent-skills --skill plan-reviewer- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads plan-reviewer automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Plan Reviewer
Strengthen an existing implementation plan through adversarial questioning before coding starts.
- IS: Adversarial review of an existing plan: pointed questions one at a time, claim verification against local code and docs, resolutions written directly into the plan file
- IS NOT: Creating a plan from scratch (use
plan-creator), reviewing a code diff (usepr-reviewer), or a gate that approves and rejects
Objective: drive all six dimensions to 5/5. Work each sub-5 dimension upward, re-scoring after each round, until every dimension is 5/5 or provably stalled on a decision only the user can make.
Core Lens
Filter every question through these principles, in priority order:
- KISS: is this the simplest thing that could work? Could a junior understand the plan in one read?
- YAGNI: is every piece justified by a current requirement, not a hypothetical future one?
- Tracer bullet: does the plan deliver a minimal working slice across the full stack first?
- Small functions: are responsibilities clearly separated? Does each piece do one thing well?
- Easier to change: does the design isolate concerns so future changes are local?
- Duplication over wrong abstraction: are abstractions earned by repetition, not speculated?
Reference Files
| File | Read When |
|---|---|
references/questioning-framework.md | Default: question templates and pushback patterns per dimension |
references/plan-quality-rubric.md | During triage: 1-5 scoring criteria per dimension |
references/dialogue-examples.md | Before starting dialogue: tone calibration and all four moves in action |
references/claim-verification.md | Whenever a claim is checkable against local code, docs, or specs, or the user asks to verify a claim |
Workflow
Copy this checklist to track progress:
Plan review progress:
- [ ] Step 1: Load the plan
- [ ] Step 2: Triage: verify checkable claims, score all six dimensions
- [ ] Step 3: Rubber duck loop: drive each dimension <5 to 5/5 (max 2 pushes per question)
- [ ] Step 4: Re-score after each dimension; repeat the sweep until all 5/5 or stalled
- [ ] Step 5: Gap summary (before/after scores + residual blockers)
- [ ] Step 6: Confirm the plan file contains every resolution and unresolved annotation
Step 1: Load the plan
- If the user provides a path, read it
- If no path is provided, list
~/.claude/plans/sorted by modification time, pick the most recent, and confirm with the user - Read the full plan; note the stated goal, structure, and length
- If the document turns out to be a diff or code rather than a plan, stop and route to
pr-reviewer
Step 2: Triage
Load references/plan-quality-rubric.md. Do a silent pass across the six dimensions, scoring each 1-5.
While scoring, mark every claim that is checkable against local code, docs, or specs ("nobody uses this", "the library supports X", "we already handle that case"). Verify the load-bearing ones yourself now (load references/claim-verification.md) and fold the verdicts into the scores. Never spend a dialogue turn asking the user something the codebase can answer.
Output a triage table:
PLAN TRIAGE:
Completeness ███░░ 3/5 Missing error handling, no rollback
Feasibility ████░ 4/5 One unproven dependency
Scope ██░░░ 2/5 Several YAGNI candidates
Testability █░░░░ 1/5 No verification strategy
Risk ███░░ 3/5 Blast radius unclear
Assumptions ██░░░ 2/5 Three unstated assumptions
State: "I'll work each dimension up to 5/5, starting with the weakest."
If more than 3 dimensions start at 1-2, the plan needs rewriting, not review. Say so directly and suggest plan-creator instead of grinding the loop.
Step 3: Rubber duck loop
Load references/questioning-framework.md and references/dialogue-examples.md.
Each round:
- Pick the lowest-scoring dimension still below 5.
- Ask ONE question that quotes or names a specific section, claim, or omission in the plan. Never bundle two questions into one turn.
- On the user's answer, choose exactly one move:
- VERIFY: the answer (or the plan text it defends) is checkable with local evidence ("this function is under 100 lines", "the RFC says writes are idempotent"). Load
references/claim-verification.md, gather evidence, quote the authoritative doc when the claim is about a documented decision, return a VERIFIED / NOT VERIFIED / INCONCLUSIVE verdict, then continue informed by it. Prefer VERIFY over asking whenever evidence can settle the point. - PUSH DEEPER: the answer is vague or hand-waves complexity. Ask a sharper follow-up demanding specifics. Maximum 2 pushes per question.
- ACCEPT AND RECORD: the answer is specific and closes the gap. Write the resolution into the plan file immediately, then re-score the dimension.
- REFRAME: the concern does not apply as framed. Acknowledge what the user got right, then redirect to the actual gap.
Stay on the same dimension until it reaches 5/5 or stalls, then move to the next-lowest dimension still below 5.
Stall rule: after 2 pushes without a 5/5-grade answer, propose a concrete fix for the user to accept or reject. If accepted, write it into the plan and re-score. If the user defers or declines, record exactly what blocks 5/5 for that dimension and move on. This is the only stall procedure; do not keep re-asking in different words.
Step 4: Re-score and repeat
After each dimension closes or stalls, re-render the triage table so the climb toward 5/5 is visible. Sweep again over any dimension still below 5.
The loop ends when:
- All six dimensions score 5/5, OR
- The user invokes the escape hatch ("enough questions" / "just tell me the gaps"), OR
- A full sweep produces no progress (every sub-5 dimension is stalled): summarize what blocks 5/5 and stop
Step 5: Gap summary
Lead with the final triage table showing before and after scores. Then list any residual gaps still blocking 5/5 in three tiers. If every dimension reached 5/5, say so and leave the "Must address" tier empty.
## Plan Review
### Must address before implementation
- [SCOPE] `## Data Migration`: no incremental path; what if migration fails halfway?
Resolved: NO
### Should address soon
- [ASSUMPTION] Plan assumes API rate limits won't be hit at projected scale
Resolved: YES (user confirmed 80/min volume is within the 100/min limit with headroom)
### Noted for awareness
- [RISK] Single dependency on third-party service with no fallback
Resolved: NO
Each finding references the plan section, states the concrete gap, and marks whether it was resolved during the loop.
Step 6: Confirm the plan file
Plan edits happen incrementally during the loop: each resolved gap is written in the moment it closes (Step 3). This final pass confirms the file is the deliverable:
- Every resolution is inline where its gap was identified
- Every stalled dimension has a
<!-- UNRESOLVED: what blocks 5/5 -->comment at the relevant section - A Review Notes section is appended with the before/after triage scores and the date
Do not ask permission to edit. Updating the plan file is the point of the review; if the user objects, they can revert. If the plan arrived as pasted text with no file, output the full updated plan in a code block and offer to write it to ~/.claude/plans/.
Dialogue Protocol
- Quote the plan's own words when challenging them; paraphrase invites "that's not what I meant" detours
- No "great plan, but...": start with the triage table and go straight to gaps
- Acknowledge strengths in one clause at most, then move to the next gap
- Direct but constructive; the goal is strengthening, not criticism
- Name KISS and YAGNI violations explicitly: "This is more complex than the goal requires because..."
- Challenge premature abstractions: "Do not remove a fence until you know why it was put up"
- Push for tracer bullets: "What's the minimum viable slice that proves this works end-to-end?"
Gotchas
- Asking the user a question grep can answer ("is legacyHelper still used?") wastes a turn and invites guessing; run the verification yourself and present the evidence.
- Bundling two questions into one turn gets one answered and one silently dropped, usually the harder one. One question per turn.
- Praising the plan before the first question anchors the user defensively and produces softer answers. Open with the triage table, not a compliment.
- A third push on the same question stops yielding information; users start inventing answers to end the interrogation. Invoke the stall rule instead.
- Accepting "we might need this later" leaves a YAGNI violation in the plan; require a current requirement or cut the item.
- Deferring plan edits to the end loses resolutions agreed mid-dialogue; write each one into the file the moment it closes.
- Asking permission to update the plan file undermines the deliverable; edit directly, the user can revert.
- Skipping the re-rendered triage table after each dimension hides whether the loop is progressing; without it, stalls and progress look identical.
- Generic questions ("have you considered error handling?") get generic answers; every question must name a section, claim, or omission from this plan.
- Reviewing a code diff here produces plan-shaped feedback about code; route to
pr-reviewerthe moment the input is code, not a plan.
Related Skills
plan-creator: collaborative interrogation to build a plan before reviewing itpr-reviewer: code review after implementationdefine-architecture: architectural decisions that feed into plans
FAQ
What does the plan-reviewer skill do?
Reviews and strengthens an existing implementation plan through adversarial rubber-duck dialogue. Scores completeness, feasibility, scope, testability, risk, and assumptions, asks one pointed question at a time, verifies checkable claims against local code and docs, and writes resolved answers back into the plan file until every dimension reaches 5/5. Use when asked to "review my plan", "rubber duck this", "stress test this plan", "is this plan ready", "challenge my plan", "get this plan to 5/5", "make this plan bulletproof", "what am I missing", "verify this", "is this true", "prove it", "check this claim", "fact-check", or before starting implementation on a non-trivial plan. For creating a plan from scratch, use plan-creator. For reviewing a code diff, use pr-reviewer.
How do I install plan-reviewer?
Run npx skills add https://github.com/mblode/agent-skills --skill plan-reviewer in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/plan-reviewer/ (personal) or .claude/skills/plan-reviewer/ (project).
Which AI agents can use plan-reviewer?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is plan-reviewer safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains plan-reviewer?
It is published by mblode in mblode/agent-skills. It has 173 recorded installs.
More from mblode/agent-skills
ui-animation
mblode/agent-skills
Builds, reviews, and measures UI motion, including springs, gestures, scroll effects, curve fitting from recordings, and sparse interface sound. Use when asked to "add animation", "match this easing", "reverse engineer this motion", "add a click sound", or find animation opportunities.
multi-tenant-architecture
mblode/agent-skills
Designs tenant isolation, hostname routing, custom-domain lifecycle, and plan limits on Cloudflare or Vercel. Use when asked to "isolate tenant data", "support custom domains", "build a white-label platform", or assess PSL registration. For general module structure use codebase-architecture; for SEO content use seo.
ui-design
mblode/agent-skills
Designs and builds React/Next/Tailwind UI, audits visual and interaction defects, and stress-tests components with worst-case data. Use when asked to "build a landing page", "extract our design system", "add dark mode", "make this responsive", "remove UI slop", "audit this component", "stress-test this component", "break this UI", or "show me the worst case".
typography-audit
mblode/agent-skills
Audits font loading, type scales, measure, spacing, OpenType, and rendered punctuation with 78 scoped rules. Use when asked to "audit typography", "fix the fonts", or "review my type system". For a new visual direction use ui-design Direction; for general UI defects use ui-design Audit.
agent-skills-creator
mblode/agent-skills
Creates and improves portable Agent Skills with a validator, routing scenarios, and evidence-based keep, cut, merge, or retire decisions. Use when asked to "write a skill", "update all skills", "audit my SKILL.md", "remove redundant instructions", or fix skill triggering.
docs-writing
mblode/agent-skills
Writes and audits technical docs with Diataxis type gating, runnable examples, and 51 documentation rules. Use when asked to "review my docs", "write an API reference", or improve a documentation page. For a whole README use readme-creator; for agent instructions use agents-md.
Popular code quality & workflow skills
grill-me
mattpocock/skills
A relentless interview to sharpen a plan or design.
improve-codebase-architecture
mattpocock/skills
Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick.
handoff
mattpocock/skills
Compact the current conversation into a handoff document for another agent to pick up.
domain-modeling
mattpocock/skills
Build and sharpen a project's domain model. Use when discussing codebase terminology, writing or editing a GLOSSARY.md, or recording or editing an ADR.
codebase-design
mattpocock/skills
Shared vocabulary for designing deep modules. Use when the user wants to design or improve a module's interface, find deepening opportunities, decide where a seam goes, make code more testable or AI-navigable, or when another skill needs the deep-module vocabulary.
diagnosing-bugs
mattpocock/skills
Diagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports something broken/throwing/failing/slow.