Review Plan
Review a planning artifact against type-specific criteria. Runs internal review and $peer-review in parallel by default. Returns combined structured findings.
Step 1: Determine Artifact Type and Resolve
Determine Artifact Type
- Explicit argument — If the user specified a type (e.g., "review shells", "review spec"), use it. No argument defaults to plan.
- Conversation context — If artifact text or a path is already in context, infer the type.
- Auto-detect — Check
.turbo/for existing artifacts. If multiple types exist, pick the one with the most recently modified file.
Resolve the Artifact
Plan (default)
- Plan text in conversation — use it
- Explicit path — read it
- Explicit slug — resolve to
.turbo/plans/<slug>.md - Single file — Glob
.turbo/plans/*.md. If exactly one file exists, use it - Most recent — most recently modified file
- Legacy fallback —
.turbo/plan.mdif.turbo/plans/does not exist - Nothing found — stop and state that no artifact was found to review
Shells
- Shell text in conversation — use it
- Explicit spec slug — Glob
.turbo/shells/<slug>-*.md - Explicit spec path — derive slug from filename, glob as above
- Single spec — Glob
.turbo/specs/*.md. If exactly one, derive slug and glob for shells - Most recent spec — most recently modified spec, derive slug and glob
- Nothing found — stop and state that no artifact was found to review
For shells, read each shell file and parse its YAML frontmatter (spec, depends_on). Read the source spec from the spec field.
Spec
- Spec text in conversation — use it
- Explicit path — read it
- Explicit slug — resolve to
.turbo/specs/<slug>.md - Single file — Glob
.turbo/specs/*.md. If exactly one, use it - Most recent — most recently modified
- Legacy fallback —
.turbo/spec.mdif.turbo/specs/does not exist - Nothing found — stop and state that no artifact was found to review
If multiple candidates exist, pick the most recently modified.
Step 2: Run Reviews in Parallel
Read the reference file for the resolved type:
- Plan — references/plan-review.md
- Shells — references/shells-review.md
- Spec — references/spec-review.md
Skip peer review when the caller asked (e.g., "without peer review", "no peer", "internal only"). For shells, the internal review focuses on structural wiring and skips the project context read.
Run the review branches independently. Launch them with spawn_agent / wait_agent using inherited model defaults. That is two branches when peer review is active (one internal + one peer), or one branch when peer review is skipped.
- Internal branch: Read the artifact text, the reference file content, project context (
AGENTS.mdand relevant codebase files), then apply criteria and return findings in the output format below. - Peer review branch (unless skipping): Run the
$peer-reviewskill with a request describing: (a) the artifact under review; (b) the criteria live in~/.agents/skills/review-plan/references/<type>-review.mdfor the resolved type from Step 1 — Claude should read that file directly and use its priority scale; (c) the Overall Verdict should use theReadiness: <ready | needs revision>label. The branch prompt must also state explicitly that the sub-agent's final message must contain the verbatim findings text$peer-reviewproduced.
Aggregate findings with attribution (reviewer: "internal" or "peer"). Present them in the output format below.
Then update or check the active plan and proceed to any remaining task.
Output Format
Return findings as a numbered list. For each finding:
### [P<N>] <title (imperative, ≤80 chars)>
**Section:** <plan section, shell number(s), or spec section>
**Reviewer:** <internal | peer>
<one paragraph explaining the issue and its impact>
After all findings, add:
## Overall Verdict
**Readiness:** <ready | needs revision>
<1-3 sentence assessment>
If there are no qualifying findings, state so and explain briefly.
Rules
- Present findings grouped by priority.