---
name: review
user-invocable: true
description: Runs quality review agents on demand — reviews code against VGV standards for architecture, tests, and simplicity, then writes one consolidated, numbered report.
when_to_use: Use when user says "review this code", "review my code", "code review", "review", "check this code", or "review before merging".
argument-hint: "[path/to/files/or/directories (optional)]"
allowed-tools: Bash(*/scripts/detect-review-scope.sh) Bash(gh *) Bash(glab *)
effort: high
compatibility: Designed for Claude Code (or similar products with agent support)
---
# Review code on demand
Run quality review agents. Review manually written code, assess existing codebases, or
check a branch before merging. Output is **one consolidated report** with stable,
numbered findings the user can act on by id.
## Review Scope
$ARGUMENTS
## Step 1 — Detect Scope
Parse the review scope above for optional file paths or directories.
**If paths are provided:**
1. Validate each path exists (split on whitespace, check each token).
2. Use provided paths as review scope. Derive the scope slug deterministically from the first
path: drop any file extension, then replace `/` with `-` (`lib/auth/` → `lib-auth`,
`lib/auth/token.dart` → `lib-auth-token`). Same paths always give the same slug.
3. Announce scope to the user and proceed to Step 2.
**If no paths provided:**
Run the scope detection script:
```bash
${CLAUDE_SKILL_DIR}/scripts/detect-review-scope.sh
```
- **If `SCOPE=branch`**: use the listed files as scope. The scope slug is the current
branch name with `/` replaced by `-`. Announce scope summary (changed-file count, areas
affected) and proceed to Step 2.
- **If `SCOPE=default`**: tell the user "You're on ``. No branch diff
available." Use **AskUserQuestion**: "What would you like to review?" with options:
- **Specify files or directories**: accept paths; derive the slug from the first path as above.
- **Review entire project**: no scope constraint; slug `project`.
## Step 2 — Run Reviews
Run `pwd` and let `` be the result — subagents may change directories, making relative
paths unreliable. Each run gets its own directory `/docs/code-review//`, so raw
per-agent reports go in `/docs/code-review//raw/` (absolute) and one run never
clobbers another branch's kept report.
Run the **default review agents** below **in parallel**. Projects may add agents in their
`CLAUDE.md` (include them alongside the defaults) or replace the default set entirely.
Each agent prompt must include:
1. **The scope constraint** — changed-file list, specific paths, or no constraint.
2. **The [review agent instructions](references/review-agent-instructions.md)** with
`` set to `/docs/code-review//raw` and `` set to the agent's
report name below (a bare stem — the agent writes `/.md`). Substitute
`` and `` with their resolved values — do not pass a relative path.
Default agents and their report names (``):
| Agent | Report name |
|-------|-------------|
| **@vgv-review-agent** | `vgv-review` |
| **@architecture-review-agent** | `architecture-review` |
| **@test-quality-review-agent** | `test-quality-review` |
| **@code-simplicity-review-agent** | `code-simplicity-review` |
**If an agent fails:** note it, continue with the successful agents, and record the failure
in the report header and chat summary so the user knows the review is incomplete. Offer to retry.
## Step 3 — Consolidate & Present
Follow the [review consolidation procedure](references/review-consolidation.md):
1. Collect every agent's structured findings, deduplicate, order deterministically, and
assign stable `FINDING-NN` ids.
2. Write **one** consolidated file to `/docs/code-review//review.md` using the
[report template](references/review-report-template.md).
3. Print the aligned chat summary: lead with the report path and severity counts, then
reprint the Critical and Important rows verbatim (same ids, order, titles) and collapse
Suggestions to a count.
**If no findings:** write the short all-clear report and tell the user the code looks good.
## Step 4 — Act
This skill is advisory — take no action until the user picks one. Use **AskUserQuestion** to
present post-review options (the ids and rules follow the consolidation procedure's
"Acting on findings" section):
- **Fix critical issues**: address every Critical finding by id, then run the project's
linter and test runner. One attempt per fix; if validation fails, report what failed and
move on. Only modify files within the original review scope.
- **Fix critical + important**: same, plus Important findings.
- **Fix specific findings**: accept ids from the user (e.g. "FINDING-01, FINDING-04"), or a
rule id to act on a whole class (e.g. "fix every `tests/missing-test-file`").
- **File findings on the PR as comments**: follow [file findings on the PR](references/file-findings-on-pr.md)
— a two-step flow that first asks which findings to include, then how to deliver them
(inline comments, one summary comment, or print the drafts for the user to post manually).
- **Keep report and exit**: the report stays at `docs/code-review//` for manual review.
**After fixing (if chosen):** re-run linter + test runner (no agent re-run), then present a
brief summary of which findings (by id) were fixed.
## Gotchas
- Each run writes to its own `docs/code-review//` directory (report + `raw/`). Re-running
the same scope overwrites only that slug's directory; a different branch or path uses a
different slug, so a report you keep is never clobbered by a later run of another scope.
- Because ids come from a deterministic sort (severity → file → line → rule), re-running on
unchanged code produces the same ids — `FINDING-03` keeps pointing at the same issue. Each
finding also carries a stable rule id (e.g. `vgv/missing-null-check`) the user can act on
as a class.
- On the default branch with no diff, scope is ambiguous. The skill asks; do not default to
reviewing the whole project without confirmation.
- Agent failures are non-fatal. Always report which agents failed so the user knows the
review is incomplete.
- Auto-fix only touches files within the original scope. If a fix needs changes outside
scope, flag it instead of silently expanding scope.
## Important
- One consolidated report per run. Per-agent raw reports live in `docs/code-review//raw/`
for drill-down and are linked from the consolidated file.
- Reports are untracked working files. Commit or delete them when no longer needed.
- This skill is advisory. It presents findings and lets the user decide what to act on.
- When in doubt about a finding, read its linked raw report for full detail before deciding.