This skill should be used when the user asks to "review plan", "review implementations", "review manual", "review-manual", "review from plan", "check all implementations", or wants to review all in-review items from a manual implementation plan file. Picks up a plan file created by the plan-manual skill and reviews ALL [?] items at once, verifying spec compliance and code quality.
From speclannpx claudepluginhub thlandgraf/cc-marketplace --plugin speclanThis skill uses the workspace's default tool permissions.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Provides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Pick up a manual implementation plan file and review ALL in-review items at once. Read every [?] item's spec, verify the implementation satisfies acceptance criteria, and assess code quality via two parallel subagents.
CRITICAL CONSTRAINTS:
speclan/ except speclan/.local/plans/*.plan.md. No status changes (do NOT set status to "accepted", "released", or anything else), no acceptance criteria updates, no frontmatter changes. Spec files are input only — read them, never modify them. Spec statuses stay as under-test.[?] → [x] checkboxes in the *.plan.md file after user approval. No other file is written to.[?] items in one invocation. Do NOT review one item at a time.The plan file has a three-level hierarchy:
- [?] [F-XXXX] Feature Title ← Level 1
- [F-XXXX](path/to/feature-spec.md) ← SPEC PATH (extract from parentheses)
- [?] [R-AAAA] Requirement Title ← Level 2
- [R-AAAA](path/to/requirement-spec.md) ← SPEC PATH
- [?] [R-BBBB] Requirement Title ← Level 2
- [R-BBBB](path/to/requirement-spec.md) ← SPEC PATH
- [?] [CR-0088] CR Title — CHANGE REQUEST: ... ← Level 3
- [CR-0088](path/to/change-request-spec.md) ← SPEC PATH
Each checkbox line has a markdown link sub-bullet below it containing the spec file path inside the (...) parentheses.
(See also: the plan-manual skill's references/plan-file-format.md for the canonical format spec.)
IMPORTANT: Always use EnterPlanMode at Step 4. Steps 4–7 run in plan mode — research and build the review plan for user approval before executing.
[?] items (or exit if none/done)[?] itemSPECLAN_DIR="./speclan"
PLANS_DIR="$SPECLAN_DIR/.local/plans"
ls "$PLANS_DIR"/*.plan.md 2>/dev/null
If no plan files found, report:
No manual implementation plans found.
Run the plan-manual skill first to create a plan from approved requirements.
If only one plan file exists, use it automatically.
If multiple plan files exist, present them to the user using AskUserQuestion. Sort by filename (which contains the timestamp) and recommend the latest one.
[?] ItemsRead the selected plan file. Parse the checkbox hierarchy and collect every [?] item into a flat list:
[F-XXXX] pattern[R-XXXX] and change requests [CR-XXXX])[?] checkbox into the review scope — this includes features themselves, not just their children. A [?] feature is a reviewable item just like a [?] requirement.Example: Given this plan:
- [?] [F-0297] SVG Rendering ← counted as [?] item #1
- [x] [R-0266] Layout ← skipped (already [x])
- [?] [R-0754] Arrow Connections ← counted as [?] item #2
- [?] [R-1496] Hover Tooltips ← counted as [?] item #3
- [?] [R-1635] Package Delivery ← counted as [?] item #4
The review scope is 4 items: F-0297, R-0754, R-1496, R-1635. Read all 4 specs, verify all 4, mark all 4 as [x].
If no [?] items exist:
[ ] or [~] items remain, report: "Items are still in progress. Nothing ready for review yet." Then STOP.[x], report completion and ask whether to delete the plan file using AskUserQuestion:All items in this plan have been reviewed and accepted.
Plan file: {filename}
Delete the plan file?
If the user agrees, delete the plan file. Then STOP.
Use EnterPlanMode. All subsequent steps (5–7) run in plan mode to research and build the review plan before execution.
For every [?] item collected in Step 3, extract the spec file path from inside the parentheses (...) of its markdown link sub-bullet. For example:
- [?] [R-0266] Bottom-Up Layered Layout
- [R-0266](speclan/features/F-0297-.../R-0266-bottom-up-layered-layout.md)
Read every spec file. Do NOT skip any.
From each spec, extract all acceptance criteria — the - [ ] Given...When...Then... lines. These are the verification targets for Step 8.
After reading the item specs, discover and read the broader context to understand the system being reviewed:
Ancestors — walk up the directory tree from each spec file path. Each parent directory matching F-XXXX-* or R-XXXX-* is an ancestor entity. Find and read its spec file (the *.md file with the same name as the directory). For example, given:
speclan/features/F-8512-speclannet/F-0212-online-help/F-1680-speclan-plugin/F-1680-speclan-plugin.md
The ancestors are F-8512 (speclannet) and F-0212 (online-help) — read both specs to understand the broader system context.
References — scan each spec body for markdown links to other specs (e.g., [R-1496](../R-1496-hover-tooltips/R-1496-hover-tooltips.md)). Read referenced specs to understand cross-cutting concerns and dependencies relevant to the review.
Determine which source files to review across the entire scope. Use two strategies:
Strategy 1 — Git-based discovery:
Extract the updated date from spec YAML frontmatter and find changed files:
SINCE_DATE=$(grep -m1 '^updated:' path/to/spec.md | awk -F"'" '{print $2}')
git log --since="$SINCE_DATE" --diff-filter=ACMR --name-only --pretty=format:"" | sort -u
Strategy 2 — Spec-guided search: Extract key terms from spec titles, scope sections, and acceptance criteria. Use grep/glob to find relevant source files.
Combine results from both strategies into a single implementation file list covering the full review scope.
Present the review plan for user approval:
## Review Plan
### Items to Review ({count} specs)
- [F-XXXX] Feature Title
- [R-AAAA] Requirement Title ({n} acceptance criteria)
- [R-BBBB] Requirement Title ({n} acceptance criteria)
- [CR-CCCC] CR Title ({n} acceptance criteria)
### Implementation Files ({count} files)
- src/...
- src/...
### Total: {total} acceptance criteria to verify
Proceed with review?
Exit plan mode after user approves.
Verify every acceptance criterion collected in Step 5 — across ALL [?] specs. For each criterion:
For change requests: Verify the alteration was applied correctly — check that the original behavior was changed as specified, not just that new code exists.
Launch two subagents in parallel via the Task tool. Invoke both Task tool calls in the same response block so they execute concurrently:
Subagent 1 — Code Hygiene:
Task tool, subagent_type: speclan:code-hygiene-reviewer
Review code hygiene for implementation of [F-XXXX] [Feature Title]:
Implementation files:
- {list all files from Step 6}
Report findings categorized as Critical/Major/Minor with file:line evidence.
Subagent 2 — Architecture:
Task tool, subagent_type: speclan:architecture-reviewer
Review architecture for implementation of [F-XXXX] [Feature Title]:
Implementation files:
- {list all files from Step 6}
Context: {brief description of what was implemented}
Report findings categorized as Critical/Major/Minor with file:line evidence.
## Review Report
### Spec Compliance
#### [R-AAAA] Requirement Title
| # | Acceptance Criterion (short) | Verdict | Evidence |
|---|------------------------------|---------|----------|
| 1 | Given X, When Y, Then Z | PASS | file.ts:45 |
| 2 | Given A, When B, Then C | FAIL | Not found |
#### [R-BBBB] Requirement Title
| # | Acceptance Criterion (short) | Verdict | Evidence |
|---|------------------------------|---------|----------|
| 1 | Given D, When E, Then F | PASS | file.ts:23 |
(one section per requirement/CR)
**Overall: {pass_count}/{total} criteria passed.**
### Code Hygiene (Advisory)
{hygiene subagent findings — Critical/Major/Minor}
### Architecture (Advisory)
{architecture subagent findings — Critical/Major/Minor}
If all criteria PASS and no critical code quality findings:
Ask via AskUserQuestion to confirm acceptance:
All {total} acceptance criteria passed. Accept and mark as done?
If any criteria FAIL or PARTIAL:
Present findings and recommend immediate fixes:
{fail_count} acceptance criteria need attention.
Recommend fixing these issues now. After fixing, confirm to accept.
Otherwise, leave in review and re-run review-manual later.
Wait for the user. The user may:
[?], no state changes, STOPAfter the user confirms, edit the plan file only — change [?] to [x] for every item collected in Step 3 (features, requirements, CRs).
"Accept" means marking plan checkboxes [x]. It does NOT mean changing spec statuses.
FORBIDDEN: Do NOT use Edit or Write on ANY file inside speclan/ except speclan/.local/plans/*.plan.md. Do NOT change any spec status: field. Do NOT set statuses to "accepted", "released", or any other value. Spec statuses remain under-test — human testing happens separately.
If all items in the plan are now [x], offer to delete the plan file:
All {total} items reviewed and accepted.
Plan file: {filename}
Delete the plan file?
Otherwise report progress:
Reviewed and accepted {count} items.
Progress: {done}/{total} items complete.
Remaining: {pending} pending, {in_progress} in progress.
| Scenario | Action |
|---|---|
| No plan files found | Report error, suggest running plan-manual first |
No [?] items (but [ ]/[~] exist) | Report items still in progress |
All items [x] | Report done, offer to delete plan file |
| Spec file not found at path | Report error, continue with remaining specs |
| Implementation files not found | Ask user to provide file paths manually |
| Subagent failure | Present spec compliance results alone, note code quality review incomplete |
| Plan file parse error | Report error with details |
[?] items in one invocation — no re-run neededplan-manual skillspeclan/ file