Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Review a planning artifact (plan, shells, or spec) by running internal reviews and a peer review in parallel and returning combined findings. Use when the user asks to "review my plan", "review my shells", "review my spec", "check my plan", "check my shells", "check my spec", "critique my plan", "critique my shells", "critique my spec", or wants feedback on a planning artifact.
.claude/skills/tobihagemann-review-plan/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-11 | ✗→✓ | ▲ Improved | -27% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 0% | 0% |
| case-16 | ✗→✓ | ▲ Improved | -15% | 0% |
| case-19 | ✗→✓ | ▲ Improved | 76% | 0% |
| case-21 | ✗→✓ | ▲ Improved | 155% | 0% |
Review a plan against structure and scope criteria. Runs internal reviews and $peer-review in parallel by default. Returns combined structured findings.
.turbo/plans/<slug>.md.turbo/plans/*.md. If exactly one file exists, use it.turbo/plan.md if .turbo/plans/ does not existWhen the plan came from a file, state the resolved path before continuing.
Unless the plan came from conversation text, or an explicit path or slug was passed, check whether the resolved plan still describes work that remains to be done. Report a frontmatter status: of done alongside the path.
Two reference files carry the criteria, one per internal review:
Skip peer review when instructed (e.g., "without peer review", "no peer", "internal only").
When a list of already-adjudicated findings was supplied (one line each: the finding, its verdict, and the recorded reason), include it in every branch prompt, internal and peer, labeled as decisions already reached on proposed revisions rather than as established properties of the plan. Direct each branch to treat a finding as listed when it matches one on both location and substance, to raise such a finding again only on evidence its recorded reason does not already account for, and to judge any other finding at the same location on its own merits.
Run the review branches independently. Launch them with spawn_agent / wait_agent using inherited model defaults, issuing every call in one batch. Do not issue one and await its result before issuing the rest. That is three branches when peer review is active (two internal + one peer), or two branches when peer review is skipped. Every branch prompt must direct it to treat the shared working tree and its git index as read-only and to assess findings by reading and reasoning. HEAD stays where it is: read other refs with git show <ref>:<path> rather than git checkout or git switch. For a check that genuinely requires mutating code (such as testing whether a finding holds), the branch works in an isolated git worktree created under $TMPDIR and discarded afterward. Give that worktree its own dependency install rather than reaching the shared tree's install by any route: removing a worktree deletes through symlinks, and a redirected suite writes into the shared install. When its own install is not possible, the check is left unrun and reported as such. Afterward the branch verifies that git worktree list no longer shows the worktree, that git status --short is clean, that HEAD is still on the branch it started on, and that the shared tree's dependency directory still resolves (a destroyed install leaves git status clean, since it is gitignored). Damage the branch cannot repair is reported with the exact repair command in place of findings.
~/.agents/skills/review-plan/references/plan-structure-review.md), the output format below, and this directive: read that reference file directly, apply its determination criteria as the bar for a real finding, then report every finding that clears that bar tagged with its priority and with internal (structure). Coverage is the goal at this stage, so surface everything that qualifies and let the priority tags convey severity. The branch must also return the Overall Verdict block for its dimension.~/.agents/skills/review-plan/references/plan-scope-review.md) and findings tagged internal (scope).$peer-review from the installed skill directory, with a request describing: (a) the plan under review; (b) the criteria live in ~/.agents/skills/review-plan/references/plan-structure-review.md and ~/.agents/skills/review-plan/references/plan-scope-review.md — the reviewer should read both files directly and cover every criterion in one single-pass review, applying each file's determination criteria and priority scale to the findings in that file's domain; (c) the Overall Verdict should use the Readiness: <ready | needs revision> label; (d) the already-adjudicated findings list when one was supplied, framed as described above. The branch prompt must also state explicitly that the sub-agent's final message must contain the verbatim findings text $peer-review produced.Aggregate findings with attribution (reviewer: "internal" or "peer", each with its "structure" or "scope" dimension). Present them in the output format below.
Then call update_plan to mark this step completed and continue with the next step of the active workflow.
Format each finding as:
### [P<N>] <title (imperative, ≤80 chars)>
**Section:** <plan section>
**Reviewer:** <internal | peer> (<structure | scope>)
<one paragraph explaining the issue and its impact>After all findings, place the Overall Verdict block each internal branch returned for its dimension, then a single combined block for the peer review:
## Overall Verdict: <Structure | Scope>
**Readiness:** <ready | needs revision>
<1-3 sentence assessment>## Peer Review Verdict
**Readiness:** <ready | needs revision>
<1-3 sentence assessment>If there are no qualifying findings, state so and explain briefly.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-04 | pass→fail | 37,801 | 8,365 | -78% | 1 | 1 | 0% | 305 | 1,652 | +442% | 0 | 0 | — |
case-03 | fail→fail | 32,421 | 7,684 | -76% | 1 | 1 | 0% | 4,872 | 1,941 | -60% | 0 | 0 | — |
case-01 | fail→fail | 34,765 | 7,080 | -80% | 1 | 1 | 0% | 5,805 | 1,759 | -70% | 0 | 0 | — |
case-02 | fail→fail | 17,793 | 11,587 | -35% | 1 | 1 | 0% | 3,165 | 1,915 | -39% | 0 | 0 | — |
case-05 | pass→fail | 25,492 | 9,681 | -62% | 1 | 1 | 0% | 4,236 | 1,610 | -62% | 0 | 0 | — |
case-06 | pass→fail | 14,121 | 7,827 | -45% | 1 | 1 | 0% | 2,230 | 1,840 | -17% | 0 | 0 | — |
case-07 | fail→fail | 22,573 | 6,078 | -73% | 1 | 1 | 0% | 3,614 | 1,670 | -54% | 0 | 0 | — |
case-08 | pass→fail | 4,066 | 5,510 | +36% | 1 | 1 | 0% | 595 | 1,810 | +204% | 0 | 0 | — |
case-09 | fail→fail | 20,293 | 8,243 | -59% | 1 | 1 | 0% | 2,708 | 1,960 | -28% | 0 | 0 | — |
case-10 | fail→fail | 7,223 | 8,155 | +13% | 1 | 1 | 0% | 1,083 | 2,696 | +149% | 0 | 0 | — |
case-11 | fail→pass | 27,724 | 2,217 | -92% | 1 | 1 | 0% | 2,415 | 1,755 | -27% | 0 | 0 | — |
case-12 | fail→pass | 11,208 | 2,232 | -80% | 1 | 1 | 0% | 1,692 | 1,697 | +0% | 0 | 0 | — |
case-13 | fail→fail | 11,701 | 2,757 | -76% | 1 | 1 | 0% | 1,729 | 1,801 | +4% | 0 | 0 | — |
case-18 | fail→fail | 12,850 | 4,738 | -63% | 1 | 1 | 0% | 2,102 | 2,190 | +4% | 0 | 0 | — |
case-14 | pass→pass | 11,379 | 3,286 | -71% | 1 | 1 | 0% | 1,790 | 1,862 | +4% | 0 | 0 | — |
case-15 | pass→pass | 13,043 | 5,173 | -60% | 1 | 1 | 0% | 2,125 | 2,283 | +7% | 0 | 0 | — |
case-16 | fail→pass | 15,036 | 3,558 | -76% | 1 | 1 | 0% | 2,269 | 1,929 | -15% | 0 | 0 | — |
case-17 | fail→fail | 10,389 | 1,645 | -84% | 1 | 1 | 0% | 1,625 | 1,569 | -3% | 0 | 0 | — |
case-19 | fail→pass | 6,448 | 1,928 | -70% | 1 | 1 | 0% | 919 | 1,622 | +76% | 0 | 0 | — |
case-20 | pass→pass | 9,588 | 1,874 | -80% | 1 | 1 | 0% | 1,575 | 1,656 | +5% | 0 | 0 | — |
case-21 | fail→pass | 4,520 | 2,137 | -53% | 1 | 1 | 0% | 663 | 1,691 | +155% | 0 | 0 | — |
case-22 | pass→pass | 5,696 | 4,987 | -12% | 1 | 1 | 0% | 921 | 2,181 | +137% | 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. 22 cases were attempted, and 12 counted toward the lift figure. The other 10 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +5 percentage points is the difference between those two pass rates over the 12 comparable cases. 7 cases got worse with the skill loaded, and they are 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.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 8/21/2026 | +14% |
Other measured skills in the registry, with their headline benchmark lift.