C-Review
Connect-to-Review. Bridge skill that wraps the official Anthropic code-review plugin and runs it alongside Propel's own domain auditors, merging both into a single Gate 3 card.
Why a Bridge, Not a Copy?
The Anthropic code-review plugin ships a mature, general-purpose review rubric maintained by the Claude Code team. Propel's code-reviewer agent and domain auditors (silent-bug-detector, paper-alignment-auditor, jax-logic-auditor, regression-guard) go deeper on research-specific concerns but cover less general ground.
Running both gives the widest coverage. c-review is the contract that keeps them from stepping on each other — de-duplicating findings, tagging sources, and producing one merged card.
Like c-codex, c-review does not implement the review itself — it wraps a plugin the user installs separately. The skill owns the interaction contract; the plugin provides the tool.
When It Triggers
| Trigger | Details |
|---|---|
| Manual | "/c-review", "run the code-review plugin", "anthropic review" |
| Gate 3 | Substantive diffs (>30 lines, or any diff touching model / loss / data / training-loop code) |
| Pre-PR | Before gh pr create, when the user wants an external-rubric pass |
c-review is explicit-invocation or Gate 3 only. It does NOT auto-fire on every edit — Propel's native code-reviewer agent remains the always-on default for routine reviews.
First-Run Setup
On first invocation in a repo, Claude checks whether the code-review plugin is installed. If not, it points the user to the plugin's README for install instructions and pauses until setup is confirmed. If the plugin's slash command name differs from the default, Claude asks the user to confirm the exact invocation — it never fabricates plugin syntax.
The Interaction Contract
The plugin is a tool, not a voice to the user. Every exchange follows this shape:
- Claude assembles the review target. Identify the diff in scope (uncommitted, staged, commit range, or PR). List the files. State one line of context on what the diff implements.
- Claude runs the plugin against that target using its documented invocation. Capture the raw output.
- Claude runs Propel's domain auditors in parallel — pick the relevant ones from the auto-dispatch table (silent-bug-detector always; plus paper-alignment-auditor / jax-logic-auditor / regression-guard as the diff requires).
- Claude merges and de-duplicates findings. Plugin + auditor findings often overlap. One finding, one line. Tag each with its source.
- Claude presents a unified Gate 3 card. User decides what to act on.
The plugin's raw output is never passed through to the user, nor used to silently rewrite code. Findings always go through the merge + attribution step.
Output Format
┌─ /c-review — Gate 3 ────────────────────────────────┐
│ Diff in scope: │
│ <files, line counts> │
│ │
│ Findings (merged, de-duplicated): │
│ • [plugin] <finding> — file:line (severity) │
│ • [silent-bug] <finding> — file:line (severity) │
│ • [both] <finding> — file:line (severity) │
│ │
│ Disagreements: │
│ • <plugin says X, auditor says Y — Claude's read> │
│ │
│ Not worth acting on (noted, filtered): │
│ • <finding> — reason │
│ │
│ Recommended action: │
│ <1–2 lines, ordered by severity> │
└────────────────────────────────────────────────────────┘
Attribution matters. The user must see which signal came from which source so they can calibrate trust.
Relationship to Propel's Own code-reviewer
| Situation | Use |
|---|---|
| Every code change (auto) | Propel code-reviewer agent |
| Gate 3 on a substantive diff | /c-review (both, merged) |
| Pre-PR pass | /c-review |
| Trivial one-line edit | Neither — skip |
If the plugin and Propel's agent contradict each other, the disagreement is surfaced explicitly in the output card. Claude does not silently pick one.
Guardrails
| Guardrail | Why |
|---|---|
| Don't auto-fire | Routine edits use Propel's own auditors. /c-review is explicit or Gate 3 only. |
| Plugin proposes, Claude implements | Plugin never writes to the repo directly. |
| De-duplicate aggressively | Same issue from plugin + auditor is one finding tagged [both], not two. |
| Filter noise | Style nits that conflict with project conventions go in "Not worth acting on" with a reason, not into the findings list. |
| Respect the gate | /c-review produces a Gate 3 card; it does not auto-approve the transition. |