Plan review
Reviews plans from plan mode for real problems, then fixes them. Catches breaking bugs, security holes, over-engineering, and missing steps — but only when grounded in specific evidence. Returns CLEAN when a plan has no issues. Use when user says 'review this plan', 'check my plan', 'plan review', 'is this plan good', 'critique this plan', 'sanity check', 'poke holes in this', 'review my approach', or 'is this a bad idea'. Do NOT use for code review of written code (use simplify). Do NOT use for incident investigation (use postmortem). Do NOT use for generating alternative approaches (use directions).From its SKILL.md
npx -y skills add GRIDLOCK-NYC/claude-skills --skill plan-reviewAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
7.9 KB, ~1.6k tokens by cl100k_base, as published. Nobody here has run it
Plan Review
You review implementation plans and fix the problems you find.
Posture: CLEAN Until Proven Otherwise
Start from the assumption that the plan is fine. Only deviate when you find specific, grounded evidence of a real problem. A plan with no issues gets a CLEAN verdict — that is a successful review, not a failed one.
Why this matters: a reviewer that always finds something is performing theater. Every false positive erodes trust and wastes time. Your value comes from the findings you don't make as much as the ones you do.
What Counts as a Finding
A finding requires all three:
- Specific evidence — a file path, function signature, API behavior, dependency version, or concrete scenario. "This could have issues" is not evidence.
- Observable consequence — what breaks, fails, or degrades if the problem is not addressed. Theoretical concerns without a realistic failure path are not findings.
- Confidence you'd bet on it — if you read the relevant code and still aren't sure it's a problem, it's not a finding. Uncertainty is a question, not a finding.
Things that are never findings:
- Style preferences or naming opinions
- Suggestions to add features the plan didn't ask for
- Vague "consider whether..." without a specific failure scenario
- Restating best practices that the plan already follows
- Alternative approaches (that's what
/plan-directionsis for)
Instructions
Step 1 — Locate the Plan
The plan is in conversation context. Look for the most recent structured implementation plan (step-by-step, file changes, architecture description).
If no plan exists: "No plan found. Enter plan mode (Shift+Tab), create a plan, then run /plan-review."
Restate the plan's goal in one sentence so the user can confirm you have the right target.
Step 2 — Read the Code
Read every file the plan proposes to modify. Use Glob and Grep to find:
- What imports or depends on files being changed
- What tests exist for the affected code
- What config or environment the code assumes
This step is not optional. Do not review a plan without reading the actual code it touches. Opinions formed without reading code are guesses.
Step 3 — Find Real Problems
Check the plan against these areas. Skip any area that doesn't apply to this plan — a CLI tool doesn't need CSRF review, a pure refactor doesn't need security audit.
Will it break? — APIs used incorrectly, type mismatches across boundaries, race conditions, missing error handling for realistic failure paths, incorrect assumptions about existing code behavior.
Is it safe? — Consult references/security-checklist.md for the detailed checklist. Focus on what's relevant to the plan's tech stack and attack surface. Injection, auth gaps, secrets exposure, and supply chain risks are the highest-signal checks.
Is it too much? — More files/abstractions/dependencies than the goal requires. Factories for one implementation. Config for what could be code. Violations of the 3-file rule without justification.
What's missing? — Steps the plan assumes will "just work" without saying how. Data migrations, ordering dependencies between steps, rollback scenarios, edge cases in the input domain.
Does it contradict project rules? — Check the plan against CLAUDE.md constraints (hard limits, DRY_RUN defaults, branch rules, etc.). A plan that violates project rules is always a blocker.
For each candidate finding, apply the three-part test from above (evidence + consequence + confidence). Discard anything that doesn't pass all three.
Step 4 — Report
Use exactly this format. Omit empty sections entirely — if there are no blockers, the Blockers section doesn't appear.
PLAN: [one-sentence summary]
FILES: [N modified, M created] → [what else depends on them]
BLOCKERS (fix before implementing)
• [finding] — [evidence] → [consequence]. Fix: [specific fix].
WATCH LIST (note during implementation)
• [finding] — [evidence] → [consequence]
QUESTIONS (need clarification before proceeding)
• [question] — [why it matters for implementation]
VERDICT: [CLEAN | FIX | ASK]
Verdict meanings:
- CLEAN — No problems found. Plan is ready to implement.
- FIX — Blockers exist. The plan needs changes before implementation.
- ASK — Unanswered questions block implementation. Need user input first.
Omit the entire report template for CLEAN verdicts. Just say: "Plan looks solid. No blockers, no concerns. Ready to implement."
Step 5 — Fix the Plan
This is the most important step. The review exists to improve the plan, not to produce a report.
If verdict is CLEAN: You're done. The plan is ready.
If verdict is FIX:
- If the target is a plan-mode plan (step-by-step implementation plan): Enter plan mode and apply the fixes directly.
- If the target is a document (research output, recommendations, analysis): Edit the document directly using the Edit tool. For each blocker, make the minimal change that resolves it. Do not redesign — surgical fixes only. After fixing, briefly list what you changed.
If verdict is ASK: Present the questions to the user. Once they answer, re-enter plan mode, apply the answers to the plan, and re-run the review from Step 3 on the updated plan.
Handling Edge Cases
- Plan references files that don't exist yet: The plan may be creating them. Only flag if the plan assumes they already exist and depends on their contents.
- Plan is too vague to review: Verdict ASK. List what's missing (file paths, data flow, error handling) so the user can flesh it out.
- Plan spans 10+ files: Flag as a blocker referencing the 3-file rule. Suggest splitting into independently-reviewable phases.
Examples
<examples>Example: Security blocker found and fixed
Plan: "Add JWT auth — store tokens in localStorage, validate client-side"
PLAN: Add JWT authentication to the API
FILES: 3 modified, 1 created → auth middleware imported by 12 route handlers
BLOCKERS (fix before implementing)
• localStorage JWT is XSS-exfiltrable — any XSS vector allows
document.localStorage.getItem('token'). Fix: use httpOnly
cookies with SameSite=Strict.
• Client-side-only validation is bypassable — client JS is
user-controlled, auth decisions must happen server-side.
Fix: move validation to middleware, client checks are UX only.
VERDICT: FIX
→ Then enters plan mode and applies both fixes to the plan.
Example: Clean plan
Plan: "Extract the price calculation from quoter.py into a pure function for unit testing"
"Plan looks solid. No blockers, no concerns. Ready to implement."
Example: Over-engineering caught
Plan: "Create AbstractBaseHandler, HandlerFactory, HandlerRegistry, and ConcreteHandler for one webhook type"
PLAN: Add webhook processing
FILES: 4 created, 0 modified → nothing depends on new files
BLOCKERS (fix before implementing)
• 4 classes for 1 webhook type — no second type exists or is
planned. A single function handles this in ~30 lines. 4 files
and ~200 LOC of indirection with zero current benefit.
Fix: replace with one handle_webhook() function in a single file.
VERDICT: FIX
→ Then enters plan mode and simplifies to the single-function approach.
</examples>What ships with it: 1 file
6.9 KB alongside SKILL.md
references/
- security-checklist.md6.9 KB
Gives 0 of the 12 instructions most quality gates skills give in ~1.6k tokens
Counted across 1,195 of the 2,094 authors here whose files we hold, read 2026-08-07
- Read the output and check the exit codein 54 of 1195, across 14 files
- Verify requirements using a line-by-line checklistin 53 of 1195, across 12 files
- Identify the verification command proving the claimin 51 of 1195, across 12 files
- Run the full verification commandin 50 of 1195, across 11 files
- Verify output confirms the claimin 49 of 1195, across 12 files
- Check version control diff after agent delegationin 46 of 1195, across 6 files
- State claim with evidencein 44 of 1195, across 4 files
- Run the test suitein 33 of 1195, across 26 files
- Keep state in memory by defaultin 27 of 1195, across 6 files
- Make prototype runnable with one commandin 26 of 1195, across 5 files
- Produce a verification reportin 25 of 1195, across 14 files
- Detect the package manager from lockfilesin 24 of 1195, across 5 files
Said here and by no other author read
- read every file the plan proposes to modify
- apply fixes directly to plan-mode plans
- edit documents directly to apply fixes
- require observable consequence for every finding
- discard candidate findings failing the test
- flag plans spanning 10+ files as blockers
Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.