| name | code-review |
| description | Review a Bruno diff, PR, or branch via focused reviewers run in parallel — correctness, security, DSL, React, cross-platform, tests. Mirrors the CodeRabbit / CODING_STANDARDS review. |
Reviewing Bruno code
This skill mirrors the automated CodeRabbit review (.coderabbit.yaml) so you can run
the same review locally. Source-of-truth order: coding standards → CODING_STANDARDS.md;
architecture/behavior → .claude/rules/*. .coderabbit.yaml mirrors these for CI parity —
read it for a path instruction not summarized here, but the rules win if they ever disagree.
The review is split into focused lenses that run in parallel, so a large diff is
covered faster and each reviewer stays sharply scoped to one concern. Each lens lives in
its own file under reviewers/. You (the orchestrator) dispatch the reviewers, then
merge and report their findings.
How to review (orchestration)
- Get the diff. Review only what changed — never untouched code. Pick the mode:
- Enumerate changed files —
git diff --name-only main...HEAD (committed range) or
git diff --name-only HEAD (working tree). Use this to skip any lens whose file scope
isn't touched (e.g. no packages/bruno-app/** change → skip react.md; no tests/**
change → skip e2e-tests.md). Never skip the lenses scoped to all files.
- Fan out the reviewers in parallel. In a single message, launch one
Agent
(subagent_type Explore or general-purpose) per in-scope reviewer below. Give each
subagent this exact briefing:
- The diff source — the committed range (e.g.
main...HEAD) or the snapshot file path
($SCRATCH/review.diff) — and the file globs it owns (from the reviewer file's
"Scope" line). For a snapshot, tell the reviewer to read that file for its globs
rather than re-run git diff.
- "Read
.claude/skills/code-review/reviewers/_contract.md for the shared persona and
output contract, then read .claude/skills/code-review/reviewers/<file> — and any rule
or source file it points to (e.g. CODING_STANDARDS.md, .claude/rules/*.md), which
hold the detailed checklist. Apply only that lens to the changed files in your
scope, at the severities the reviewer specifies. Do not review outside your scope."
Reviewers are read-only and independent — they don't coordinate, and overlap between
lenses is fine (you dedupe at merge time).
- Merge and report. Collect every reviewer's findings, drop exact duplicates, and
when two lenses flag the same
file:line keep the higher severity. Regroup by
file, each finding tagged by severity (blocker / suggestion / nit) with file:line.
If the review request carries a problem statement or acceptance criteria (e.g. passed
as args), reconcile its enumerated deliverables — docs, migration notes, a test per new
default/branch — against the diff and flag any that are absent. If nothing's wrong, say
so briefly — don't manufacture nits.
Reviewers
Each file is a self-contained checklist for one lens:
| Reviewer file | Lens | Scope |
|---|
reviewers/correctness.md | Correctness & root-cause | all source (excl. tests/**) |
reviewers/architecture.md | Architecture & dependency boundaries | packages/** |
reviewers/conventions.md | Coding standards & readability | all files |
reviewers/react.md | React — app files | packages/bruno-app/** |
reviewers/cross-platform.md | Cross-platform (macOS/Windows/Linux) | all files |
reviewers/security.md | Security & data safety | all source (excl. tests/**) |
reviewers/dsl-changes.md | On-disk DSL & serialization (backward compat) | bruno-app, bruno-electron, bruno-cli, bruno-lang, bruno-filestore, bruno-schema(-types), bruno-converters |
reviewers/e2e-tests.md | Playwright E2E tests | tests/** |
Shared reviewer persona & output contract
Defined once in reviewers/_contract.md — the small file every reviewer reads (dispatched
reviewers read it, not this orchestration file). Keep the persona and the
<blocker|suggestion|nit> | <file>:<line> | <finding> output shape there, not duplicated here,
so a change updates a single place.