/review reviews code changes and reports what it finds. Unlike asking "review my changes"
in a normal turn, it fans the work out across several reviewers running in parallel, each
looking at a different aspect.
/review
/review pr 412
/review branch main tests types
/review commit HEAD~3
Target — what to review. Say which kind it is, and it takes the next word as its name:
| Form | Reviews |
|---|---|
| (nothing) | all uncommitted changes |
pr <number> or pr <url> |
that pull request |
branch <name> |
HEAD against that branch |
commit <hash> |
that commit |
Nothing is worked out from the shape of what you typed, which is the point: a number is not
assumed to be a pull request, and a word is not assumed to be a branch. Two useful
consequences — a branch called 1234 or tests is reachable like any other, and
commit <branch> reviews that branch's own tip rather than comparing against it.
Name one target, not two: /review branch main pr 412 is refused rather than resolved to
whichever came first.
Aspects — what to look for: code, errors, tests, types, comments, simplify,
all. They go anywhere in the line, before or after the target: /review pr 412 tests types.
Naming no aspects lets it decide which apply from what actually changed — usually the right choice, since a docs-only diff doesn't need a types pass.
Any other bare word is refused rather than ignored, so /review 412 tells you to write
/review pr 412 instead of quietly reviewing your uncommitted work under that number.
The target is resolved before any reviewer starts, and the resolved scope is named in the
running task and again at the top of the report. If it can't be resolved — a pull request that
doesn't exist, a branch name with a typo, credentials that can't reach the remote, a clean
working tree — /review says so and reviews nothing. It never quietly reviews something else.
Pull requests resolve over plain git, from the refs/pull/N/* refs GitHub publishes, so gh
is not needed and its token's repository access is not involved. What is involved is git's own
credentials for the remote, and the pull request's head is fetched into
refs/remotes/<remote>/pr/N/* — a private cache, not a branch. GitHub remotes only; other
hosts don't publish those refs, and a remote reached over a non-standard port or through
ssh.github.com isn't recognised as GitHub — it says so rather than resolving it wrongly.
/review is routed to the dedicated review agent, and that matters: only that agent's
ruleset grants the task tool, which is what lets the review spawn subagents. Without it the
review would run as one long serial pass.
The practical consequence: a broad review of a large diff finishes in roughly the time of its slowest aspect, not the sum of all of them.
Note
Because it fans out,
/reviewuses more model calls than a single turn. That's the trade for coverage and speed — worth knowing if you're watching budget.
| Ask normally | Use /review |
|---|---|
| "what does this function do" | "review my changes before I push" |
| "is this the right approach" | "audit the codebase for problems" |
| one file, one question | a diff, a branch, or a PR |
If you're hunting for unknown defects across a codebase — "find all the bugs in here" — that's
a review, not a bug fix. Use /review. Use /bug-fix when you already know
which defect you're chasing.
| Use case | Effect | Why |
|---|---|---|
| Reviewer | Much better | What it exists for. Parallel aspects means a single pass doesn't have to hold correctness, types, tests and style in mind at once — which is exactly where a serial review gets shallow. |
| Migration | Much better | The best check on a large mechanical change. A migration compiles and still changes behaviour; a multi-aspect review over the diff is how that gets caught. |
| Feature Development | Better | Run it on the branch before merge, when the diff is complete but nothing is committed to yet. |
| Testcase creation | Better | Point it at test files with the tests aspect to find missing cases and assertions that never fail. |
| Bug-Fixer | Some | Useful for finding unknown defects across a codebase. Once you can name one, /bug-fix drives it to a verified fix. |
| Design / Architecture / Planning | Some | It reviews code, not proposals — but it will tell you whether the code matches the design you intended. |
Rough rule: /review is for a diff you already have. If there's nothing to look at yet,
it's the wrong tool.