# Review And Address

> Review a branch or the current diff with the project's configured reviewers run in parallel, merge their findings, and apply the warranted ones. Use for "review my changes", "review this PR/branch", "run the reviewers on the current diff with main", "review and fix the warranted feedback". Runs every reviewer in ship-it.config review.reviewers (e.g. pr-review-toolkit, vercel-react-best-practices). Also the review stage of the ship-it orchestrator. Not for watching or fixing CI (use ci-fix) or comment-only cleanup (use comment-cleanup).

- Skill: `pricklywiggles/review-and-address` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add pricklywiggles/review-and-address`
- Raw SKILL.md: https://api.skillmd.com/api/skills/pricklywiggles/review-and-address/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: pricklywiggles (https://skillmd.com/u/pricklywiggles)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/pricklywiggles/review-and-address

---


# review-and-address: fan out reviewers, merge findings, apply warranted

Review a diff with every configured reviewer in parallel, merge the findings, and (when asked or configured) apply the warranted ones. Reviewers only read; the one write step is the address.

## 1. Resolve the target and the diff

- **PR, branch, or worktree given** (an argument, or passed by the ship-it orchestrator as a work-unit): review its diff, `git diff <base>...HEAD` (base defaults to `repo.mainBranch`, usually `main`).
- **Nothing given** (standalone): review the current changes, the working-tree diff against `main`, or the current branch's diff with `main`. This is the "current diff with main" case.
- Note the changed files; reviewers and the address step operate only on this diff.

## 2. Read config, else defaults

Load the resolved config via `${CLAUDE_PLUGIN_ROOT}/scripts/load-config.sh` (defaults applied, `@FILE` refs inlined); read keys with `jq`:
- `review.reviewers` (the list; if absent, default to a single `pr-review-toolkit` agent reviewer),
- `review.applyWarranted` (default: true in the orchestrator; for a standalone run, report unless asked to apply),
- `verify`, `houseRules`, `safety` (for the address step).

## 3. Fan out the reviewers (parallel, read-only)

Run every reviewer in `review.reviewers` over the diff concurrently: spawn one subagent per reviewer in a single message so they run in parallel. Each reviews ONLY the diff and returns structured findings. Dispatch by `kind`:
- **`agent`**: spawn the Agent tool with `subagent_type` = the reviewer's `ref` (e.g. `pr-review-toolkit:code-reviewer`), prompting it to review the diff and return findings.
- **`skill`**: spawn a general subagent that invokes the Skill tool with the reviewer's `ref` (e.g. `vercel-react-best-practices`) scoped to the diff, and return its findings.
- **`command`**: run the reviewer's `ref` via Bash against the changed files; parse its output into findings.

If a reviewer is not installed, skip it and note it (do not fail the whole review). If `review.reviewers` is empty, there is nothing to review; say so and stop.

Each finding: `{ severity, file, location?, issue, recommendation, reviewer }`.

## 4. Merge and de-duplicate

Combine all reviewers' findings. Collapse items that flag the same file and location into one, keeping the highest severity and listing every reviewer that raised it. Order by severity.

## 5. Address (apply the warranted ones)

Apply only when `review.applyWarranted` is true, or when this run was explicitly asked to fix:
- Apply real, in-scope fixes: all blocker / high / medium, plus clearly-correct low / nit. Skip out-of-scope, incorrect, or noise items and record why.
- Edit only within the target working copy and the diff's scope.
- Re-verify with the `verify` commands; fix anything you broke.
- Commit (concise imperative subject; honor `houseRules`: no em dashes, no AI attribution).

A report-only run (standalone, not asked to fix) stops after the merged findings; it does not edit.

## Hard rules

Reviewers are read-only. The address step applies only genuine, correct, in-scope fixes, never a change that just silences a finding. Stay within the diff. When run by the orchestrator, run non-interactively: apply per `applyWarranted` and record skips rather than asking.

## Output

- **Standalone**: the merged findings (severity, file, issue, which reviewers), and, if you applied, what you applied and what you skipped with reasons.
- **Called by the orchestrator**: a structured result, `{ findings: [...], applied: [...], skipped: [...] }`, for finalize to push.

