Skip to content
Development
Skill

/ca-review

Review a diff with the reviewer fleet, funneled to one triaged verdict. Targets the current working diff, a path, or an inbound GitHub PR.

From plugin
codearbiter
15256 skills20 agents38 commands

Claude Code

$ npx -y skills add arbiterForge/codeArbiter --skill ca-review --agent claude-code

SKILL.md

ca-review.SKILL.md
name: ca-review
description: Review a diff with the reviewer fleet, funneled to one triaged verdict. Targets the current working diff, a path, or an inbound GitHub PR.
argument-hint: "[path | #<pr> | <pr-url>] (defaults to the current diff)"

$ca-review — diff review

For every security policy reference below, follow [includes/knowledge.md](../../includes/knowledge.md) ("Read security policy before a security decision"): select the repository's context format, read the complete policy from exact `CTX-SECURITY-CONTROLS` records in HTML mode or the full Markdown controls in Markdown mode, and read operative scope blocks when applicable. Required policy that is missing or unreadable blocks a security decision; scope blocks alone are not full policy.

Read-only review of a change. Routes to `dispatching-parallel-agents` ([routines/dispatching-parallel-agents/SKILL.md](../../routines/dispatching-parallel-agents/SKILL.md)): dispatches the reviewer fleet by path matrix, dedupes, then funnels through `finding-triage` → `verdict-aggregator` to a single in-memory verdict. No code is modified.

`$ca-review #123` reviews an inbound pull request through the same fleet and triage as a local diff.

Flow

1. Resolve scope from `$ARGUMENTS`:

  • **empty** → the current working diff (unchanged default).
  • **a path** → that path (unchanged).
  • **`#<number>`, a bare number, or a GitHub PR URL** → an INBOUND PR. Fetch its diff with

`gh pr diff <number>` and review that. If `gh` is missing or unauthenticated, STOP and say so — do NOT silently fall back to the working diff, which would report a verdict on the wrong change under the PR's name.

For a PR target, resolve the diff ONCE and review that text. Do not re-fetch per reviewer: the fleet runs in parallel, and a PR updated mid-review would otherwise have different reviewers reading different code and a triage that reconciles findings from two versions. 2. Before any substantive verdict, deliver task context to each actual reviewer. Use the changed paths from the resolved diff to select the current bounded packet with `_contextselectlib.select_task_context`; preserve the owning host's effective root/nested instruction order and the original source owner, scope/cwd, authority, and evidence epoch for each record. Identify task-critical source refs from the review obligation. Pass the packet and those refs to `_contextselectlib.prepare_review_input` for each reviewer, then include its `reviewer_input` in that reviewer's actual input. The returned `ready` state checks required inputs; it does not attest host delivery. For each actual reviewer, call `_contextselectlib.prepare_actor_delivery` with that selected packet, reviewer/task, absolute worktree and current source/host epochs. Send its bounded `delivery_text` with the review input on `deliver` and retain the counted attempt. On `advisory`, record the unknown delivery observation and continue the review without further delivery retries. Re-select after resume, compaction, scope or worktree change. Preserve applicable native instruction precedence. Source-scoped records, imported instruction text, map prose, and accepted ADR labels do not gain local normative authority by being copied into the packet.

Bounded read-only source orientation and prerequisite inspection may happen before this preflight, including inspecting missing context. If a critical ref is missing or an applicable constraint conflicts, stop the substantive verdict and report the gap; do not block the bounded read-only inspection needed to resolve it. A stale or incomplete optional map, or a legacy provenance warning, remains visible and advisory unless it hides a named critical source. Review must not write context/native artifacts or any tracked or preexisting untracked file. Inventory only exact allowed transient host state, if the host creates any. 3. Build the unit list by path matrix; each matched reviewer is one read-only unit:

| Reviewer | Dispatched when scope touches | |---|---| | `security-reviewer` | auth, middleware, secrets, deploy/CI, any security-sensitive path | | `auth-crypto-reviewer` | authn, crypto, key handling, secrets | | `dependency-reviewer` | `package.json`, lockfiles, base images, dependency manifests | | `migration-reviewer` | DB migration file add/modify | | `coverage-auditor` | any source change (test coverage vs. obligations) | | `architecture-drift-reviewer` | code that may diverge from accepted ADRs in `.codearbiter/decisions/` |

4. Route to `dispatching-parallel-agents` with that unit list and the explicit review completion contract (read-only batch — no collision check). It dedupes overlapping findings, then funnels through `finding-triage` (severity + inline `[NEEDS-TRIAGE]` on out-of-scope items) → `verdict-aggregator` (single read-only verdict). 5. Surface the aggregated verdict: findings by severity, file:line, remediation, and the applicable control from `<project-root>/.codearbiter/security-controls.md` for security findings. 6. **For a PR target, posting the verdict is a separate, confirmed step.** Report locally first; post only on explicit instruction, with `gh pr review <number> --comment --body-file <file>`. A review comment on someone else's PR is outward-facing and effectively public the moment it lands — it notifies subscribers and cannot be un-sent. Never `--request-changes` or `--approve` from here: those carry merge authority, and this command produces a finding list, not a maintainer's decision.

Severity

  • **CRITICAL** — exploitable vuln, secret exposure, banned primitive, data-integrity breach.
  • **HIGH** — significant compliance gap or unsafe pattern.
  • **MEDIUM** — standards deviation or coverage gap.
  • **LOW** — informational or style.

Hard gate

Read-only — MUST NOT modify a file, and MUST NOT check out, merge, or otherwi

Read more
@arbiterforge
Ships withcodearbiter

Open-source governance and hard gates for AI coding agents across Claude Code, Codex CLI, and Pi.

15256 skills20 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
152
Star history of arbiterForge/codeArbiter on GitHub, a chart by star-history.com

Other skills on codearbiter.

brainstorming

brainstorming

Refine feature and sprint intent into a useful specification. Capture scope, observable criteria and material choices without…

commit-gate

commit-gate

Create a verified local Git commit when committing changes is requested. Not for explaining commit history, drafting a message…

debug

debug

Investigate an unexplained defect or unexpected behavior without changing application code. Use for root-cause diagnosis and an…

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills10d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc12d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react1d252k
@facebook@facebookInstall Skill

Questions about ca-review.

Which coding agents can use ca-review?
ca-review installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.