Skip to main content

code-review

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.

Informations de source

Dépôt
usebruno/bruno
Dernière activité de la source
28 septembre 2026 à 06:16
Langue détectée de SKILL.md
anglais
Étoiles
47 350
Forks
2 953

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Explorateur de fichiers
11 fichiers

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
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) 1. **Get the diff.** Review only what changed — never untouched code. Pick the mode: - **Committed range** (default): `git diff main...HEAD` against the base branch (`main` or `release/*`). Update the base first (`git fetch` and confirm the local base is current) — a stale base inflates the diff with already-merged, unrelated changes and wastes a full fan-out. Each reviewer re-runs this scoped to its own globs; since the range is pinned to fixed commits they all see identical bytes, so there's no need to snapshot. - **Working tree / uncommitted changes** (when asked to review unstaged or staged work): the tree can shift mid-review, so re-running `git diff` per reviewer risks each seeing a different snapshot. Instead, capture the diff **once** to a scratch file and hand every reviewer that path. `git diff HEAD` covers staged + unstaged tracked changes; run `git add -N .` first (reversible with `git reset`) so any new untracked files also show up: ```bash git add -N . && git diff HEAD > "$SCRATCH/review.diff" ``` `$SCRATCH` is your environment's scratchpad dir. Reviewers read this frozen diff for their globs plus the on-disk files for surrounding context — the working-tree files already hold the uncommitted state. 2. **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, and never skip `feature-parity.md` for a small diff — a one-file change is exactly the shape it catches. 3. **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). 4. **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/feature-parity.md` | Co-related features & parity (app↔CLI, shim, converter, level, protocol twins) | `packages/**` | | `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.
Voir sur GitHub