Skip to main content
plugin

claude-deep-review — Claude Code plugin: multi-agent code review

A Claude plugin that runs your changes past several specialist reviewers and verifies each finding before you see it.

Install into Claude Code · Plugin marketplace All methods and platforms ↓
/plugin marketplace add anthropics/claude-plugins-community
/plugin install claude-deep-review@claude-community
Open on GitHub

What claude-deep-review does

The plugin fans out parallel agents, each with its own focus: bugs, security, tests, cross-file impact, project conventions, type design and simplification. Findings then go through merging, fact checking, a skeptical validator and a blind challenge, where a fresh agent re-examines the claim without the original reasoning. Anything that fails gets dropped or downgraded to a suggestion.

Reports land in .code-gauntlet/, and the plugin asks before posting inline comments. You need Claude 2.1.154 or newer, git, Python 3.10 or newer available as python3, python or py -3, plus an authenticated gh for GitHub or glab for GitLab. On Windows, Git for Windows supplies the Bash tool Claude relies on; local-changes reviews have been run live there, while PR reviews are covered only by CI tests so far.

The review agents' models are pinned inside the pipeline, so your session's model and effort level leave them alone. Project rules, confidence thresholds and ignored findings live in REVIEW.md, which is optional. Code under review is treated as untrusted input, and prompt-injection attempts get filtered.

What it helps with

  • run a PR past several specialist reviewers at once
  • weed out false findings before comments go up
  • tell new problems apart from older ones your changes exposed
  • check whether changed paths have test coverage
  • set confidence thresholds and an ignore list in REVIEW.md

Example prompts for the agent

  • Run code gauntlet on PR #42
  • Give MR !89 a thorough review
  • Review my uncommitted changes

How to install claude-deep-review

Plugin marketplace

/plugin marketplace add anthropics/claude-plugins-community
/plugin install claude-deep-review@claude-community

Step by step, with commands for each platform: Claude Code plugins: marketplaces, installing, and building your own

Questions about claude-deep-review

How do I install claude-deep-review in Claude Code?

Add the marketplace with /plugin marketplace add anthropics/claude-plugins-community, then install with /plugin install claude-deep-review@claude-community.

What does claude-deep-review do?

It runs parallel agents across different review concerns, puts every finding through validation and a blind challenge, and produces one report. Comments on a PR or MR are posted only after you confirm.

What does the plugin need to run?

Claude 2.1.154 or newer, git, Python 3.10+, and an authenticated gh or glab. On Windows you also need Git for Windows.

Source text

SKILL.md · Apache-2.0
# Code Gauntlet

[![CI](https://github.com/liatrio-labs/claude-code-gauntlet/actions/workflows/ci.yml/badge.svg)](https://github.com/liatrio-labs/claude-code-gauntlet/actions/workflows/ci.yml)
[![License: Apache 2.0](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](LICENSE)
[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/liatrio-labs/claude-code-gauntlet/badge)](https://securityscorecards.dev/viewer/?uri=github.com/liatrio-labs/claude-code-gauntlet)

Adversarial code review for Claude Code: each GitHub PR or GitLab MR runs a gauntlet of up to seven specialist agents for bugs, security, tests and cross-file impact, and every finding must survive verification, a skeptical validator, and a blind challenge before it is posted.

<picture>
  <source media="(prefers-color-scheme: dark)" srcset="docs/assets/pipeline-overview-dark.svg">
  <img alt="Code Gauntlet pipeline overview: seven parallel reviewers feed merge, verify, validate, filter and blind challenge stages before delivery" src="docs/assets/pipeline-overview-light.svg">
</picture>

## Quick start

```bash
claude plugin marketplace add https://github.com/liatrio-labs/claude-code-gauntlet.git
claude plugin install code-gauntlet@code-gauntlet
```

Update later with `claude plugin update code-gauntlet@code-gauntlet`.

Run `/code-gauntlet 42` in your repository to review PR #42.
The plugin saves a markdown report under `.code-gauntlet/` and asks before posting inline comments.

Plain words work too, because the plugin triggers on code review requests:

```text
code gauntlet PR #42                  # GitHub pull request
review MR !89 thoroughly              # GitLab merge request
comprehensive review of my changes    # local uncommitted changes
```

The plugin detects GitHub or GitLab from the git remote.
You need Claude Code 2.1.154 or newer, git, Python 3.10 or newer reachable as `python3`, `python`, or `py -3`, and an authenticated `gh` (GitHub) or `glab` (GitLab).
Native Windows is supported with Git for Windows installed, which gives Claude Code its Bash tool.
A live headless run on Windows verifies local-changes reviews; PR reviews on Windows are covered by
Windows CI tests, not yet by a live forge review.

There is nothing to `pip install`.

The pipeline pins the review agents' models, so your own session's model and effort do not change them.
We recommend Sonnet at low effort for that session.

Historical full reviews took 16 to 22 minutes per PR in our [benchmark runs](bench/MEASUREMENT.md#ledger-sourced-costs).
The v3.0 measurement used 20.9 million tokens across 15 PRs, about 1.4 million per PR ([results](#benchmark-results)).

## How it reviews

A full review runs seven discovery agents in parallel:

| Agent | Model | Focus |
| --- | --- | --- |
| bug-detector | Sonnet | Logic errors, edge cases, error handling, resource leaks |
| security-reviewer | Opus | Injection, authentication, data flows, vulnerabilities |
| cross-file-impact | Sonnet | Callers and dependencies across the codebase |
| test-analyzer | Sonnet | Missing tests, weak assertions, untested paths |
| conventions-and-intent | Sonnet | Project rules, specs, comment accuracy |
| type-design-analyzer | Sonnet | Type boundaries and invariants |
| code-simplifier | Sonnet | Simplification opportunities |

The security reviewer runs on Opus, a judgment call that the [routing research](docs/research/artifacts/12-model-routing-for-code-review.md) explains.
When every changed file is low risk and the change is under 50 lines, the plugin offers a light review with only `bug-detector` and `security-reviewer`.

Discovery produces candidates, and each one then runs the gauntlet:

1. Merge combines duplicate findings and checks their structure.
2. Verify checks source facts and separates new issues from older ones.
3. Validate asks an independent skeptic to disprove each finding.
4. Filter applies confidence thresholds, rejects prompt injection, and groups related findings.
5. Blind challenge asks a fresh agent to check the claim without the original reasoning or evidence.
6. Deliver ranks the survivors and prepares comments and a report.

A finding the challenger rejects is removed, unless it is a security finding, which is downgraded to a suggestion instead.
Weakly supported findings are downgraded to suggestions too, and a downgrade removes a finding already at the lowest severity; contested findings are kept and marked in the report.
If verification or validation itself breaks, the report records the gap. The affected findings still face the blind challenge, then survivors are held back to the report's Unverified / pipeline-degraded section instead of being posted.

Agents see the full diff and follow callers, dependencies, and tests across files.
Git blame separates new issues from older ones your changes exposed, which the report downgrades and groups separately.
After new commits, the plugin offers to review only what changed since the last review.

[How it works](docs/how-it-works.md) shows the full design, stage by stage.

## What it posts

The plugin saves a markdown report locally. For an open PR or MR, it then asks whether to post the selected findings as inline comments in one review.
Here is one such comment, rendered from a [repository fixture](tests/fixtures/parity/apply_challenges/issue47_extra_fields_pass_through/input.json) finding and trimmed:

> **🟠 [HIGH] Missing test for the payment failure rollback path**
>
> processPayment rolls back the transaction when the gateway raises, but no test exercises that path.
>
> **Suggested fix:**
> Mock the gateway to raise PaymentGatewayError and assert the transaction is rolled back.
>
> ⚔️ *Code Gauntlet*

In interactive runs you can also create a task board for the selected findings.
Headless runs support chat, markdown, and PR/MR comments, and posting defaults to dry-run ([headless configuration](skills/code-gauntlet/references/headless-mode.md)).

## Safety and privacy

The plugin treats code under review as untrusted input and filters prompt-injection attempts.
Before posting comments, it escapes raw HTML and @mentions outside trusted code fences and redacts known GitHub and GitLab token formats.
See [security boundaries](SECURITY.md#trust-boundaries).

The plugin runs locally through Claude Code and collects no data.
See [PRIVACY.md](PRIVACY.md).

## Configuration: REVIEW.md

Use `REVIEW.md` to set project rules, confidence thresholds, and findings to ignore.
Root settings apply project-wide, while matching subdirectory settings override thresholds and add ignores.

````markdown
## Rules
- All database queries must use parameterized statements

```yaml
# code-gauntlet
confidence_threshold: 75
ignore:
  - prompt injection via template tokens
```
````

Prose guides the agents; the fenced config block controls thresholds and ignores.
No `REVIEW.md` is required. See the [configuration reference](skills/code-gauntlet/references/review-md-spec.md) for defaults and hierarchy.

## Benchmark results

Historical scores below use dfc6cb4-v1 / all. The active e616e84-v1 / core
epoch awaits new baseline and calibration measurements.

Scores come from the MIT-licensed [Martian benchmark](https://github.com/withmartian/code-review-benchmark), pinned at commit `dfc6cb4`.
A pinned judge, `claude-opus-4-5-20251101`, scores each review without knowing which tool wrote it.
Recall is the share of reference findings the review catches, and noise is the share of reported findings the same pinned model rejects as ungrounded, vague, or incoherent.

<!-- bench-results:begin — this block is slated to be generated from the run ledger (issue #185); keep hand edits inside it minimal -->
| Release | Run | PRs | Golden recall | Noise rate | Tokens |
|---|---|---|---|---|---|
| v3.0 | gate subset | 15 | 0.695 | 0.180 | 20.9M |
| v3.0 | holdout | 10 | 0.741 | 0.209 | 17.8M |
| v2 (previous architecture) | gate subset | 15 | 0.492 | 0.164 | 41.1M |
| CodeRabbit (anchor) | gate subset | 15 | 0.627 | 0.566 (not comparable&dagger;) | — |
| Claude CLI review (anchor) | gate subset | 15 | 0.339 | 0.481 (not comparable&dagger;) | — |
| claude-code review (anchor) | gate subset | 15 | 0.271 | 0.542 (not comparable&dagger;) | — |

A later six-PR v3.26 run measured 0.667 recall and 0.138 noise.
At that size, one finding moves recall by 3.3 points.
Read it as a consistency check ([run history](bench/README.md#measurement-history)).
<!-- bench-results:end -->

We run the benchmark by hand ([method](bench/MEASUREMENT.md)), not on every release.

Gate-subset rows cover the same 15 PRs under the same judge, and the holdout uses 10 different PRs.
The judge and plugin use Anthropic models, and same-vendor bias has not been measured here.

&dagger; Anchors use stored upstream comments, not fresh tool runs.
Those comments lack file and line anchors, so they receive different scoring context, which can inflate anchor noise by an unmeasured amount.
Their noise rates are therefore not comparable. Recall is the comparable column.
See `adjudicator_context_note` in the [archived baselines](bench/golden/historical_baselines.json).

## Contributing

Start with [CONTRIBUTING.md](CONTRIBUTING.md) for setup, architecture, and checks.
[AGENTS.md](AGENTS.md) holds the repository rules, [docs/research](docs/research/README.md) the design evidence, and [CHANGELOG.md](CHANGELOG.md) the release changes.

We formerly published the plugin as `deep-review`.

## License

[Apache 2.0](LICENSE)

© liatrio-labs · Apache-2.0 · liatrio-labs/claude-code-gauntlet

Similar plugins

All plugins for Code review and refactoring →

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor