Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
H. Park avatar

Duet

  • 3 repo stars
  • Updated June 22, 2026
  • bokuhe/claude-duet

Review code with Gemini AI, apply feedback, and commit/PR

About

duet is a Claude Code skill in the Git & Pull Requests category. Review code with Gemini AI, apply feedback, and commit/PR

  • duet
  • Git & Pull Requests
  • AI-coding skill

Duet by the numbers

  • Data as of Jul 7, 2026 (Skillselion catalog sync)
/plugin marketplace add bokuhe/claude-duet
/plugin install duet@duet-marketplace

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
repo stars3
Last updatedJune 22, 2026
Repositorybokuhe/claude-duet

What it does

Review code with Gemini AI, apply feedback, and commit/PR

README.md

Duet

AI Code Review Plugin - Claude Code paired with a second model, working like a duet

A Claude Code plugin that gets a high-signal second opinion on your code: Claude gathers repo context, a different model reviews it, Claude verifies the findings and filters out low-confidence noise, then presents what's left for you to apply, commit, and (optionally) open a PR. The reviewer is a pluggable backend — Antigravity (agy), OpenAI Codex, Claude itself, or a local model via Ollama.

What makes it different

  • Context-aware — reviews the full changed files (and, optionally, callers/definitions across the repo), not just the diff hunks.
  • Precision-gated — flags only problems introduced by your change, provable from the code (no speculation), that the author would actually fix — borrowed from OpenAI Codex's reviewer rubric.
  • Confidence-scored, nothing silently dropped — every finding gets a 0–100 score; low-confidence findings and style nitpicks go to a collapsed Open Questions section rather than being hidden, so real bugs don't vanish.
  • Verified — the backend finds issues, then Claude checks each against the real code and drops the unsupported ones. Two different models, fewer hallucinations.
  • Adversarial mode/duet:review --adversarial runs a "break confidence" pass over an attack-surface checklist (auth, data loss, rollback, races, schema drift…).
  • Your choice of reviewer — swap backends with a config key or --with.

Features

Command Description
/duet:review Backend code review -> Apply feedback -> Commit
/duet:pr Backend code review -> Apply feedback -> Commit -> Create PR

Add --with <backend> to force a reviewer (e.g. /duet:review --with codex).

Installation

# Add the marketplace (one-time), then install
/plugin marketplace add bokuhe/claude-duet
/plugin install duet@duet-marketplace

# Update later
/plugin update duet@duet-marketplace

For local development: git clone the repo, /plugin marketplace add ./claude-duet, then /plugin install duet@duet-marketplace.

Prerequisites

  • Git repository initialized
  • At least one review backend installed and authenticated (see below)
  • (For PR creation) GitHub CLI (gh) installed and authenticated

Backend Setup

Install at least one. Logging in once is the same one-time step the original Gemini CLI always required.

Backend Default? Install One-time auth
Antigravity (agy) ✅ default curl -fsSL https://antigravity.google/cli/install.sh | bash run agy once (browser login)
Codex (codex) fallback npm i -g @openai/codex codex login (or API key)
Claude (claude) fallback ships with Claude Code none
Ollama (ollama) optional, local curl -fsSL https://ollama.com/install.sh | sh none; ollama pull <model>
Gemini (gemini) legacy npm i -g @google/gemini-cli enterprise / paid API key only (free/Pro/Ultra ended 2026-06-18)

Why not just Gemini CLI? Google is transitioning Gemini CLI to Antigravity CLI (agy); free/Pro/Ultra access to the old Gemini CLI ended on 2026-06-18. Duet abstracts the reviewer so you are never locked to one tool — and so Claude's work is reviewed by a genuinely different model.

Usage

# After making code changes
/duet:review                  # review -> apply -> commit
/duet:review --with codex     # force a specific backend
/duet:review --adversarial    # "break confidence" adversarial pass
/duet:review --base main      # review changes since branching from main
/duet:review focus on the SQL # free-text focus (any non-flag text)
/duet:pr                      # review -> apply -> commit -> push -> PR

/duet:review flow: load .duetrc.json → build a context bundle (git diff HEAD + changed files + project guidelines) → resolve the backend → review → filter by confidence → Claude verifies → present a walkthrough + high-signal issues → you pick → apply → commit.

Configuration

Create .duetrc.json in your repo root (all keys optional):

{
  "exclude": ["custom-file.js", "legacy/**"],
  "reviewPrompt": "Focus on security. Ignore style nitpicks.",
  "diffLimit": 1000,
  "backend": "antigravity",
  "fallbacks": ["codex", "claude"],
  "minConfidence": 70,
  "includeNitpicks": false,
  "contextScope": "files"
}
Option Default Description
exclude lock/build/AI-tool dirs Patterns excluded from review (merged with defaults)
reviewPrompt "" Extra instructions appended to the review prompt
diffLimit 500 Soft size hint
backend "antigravity" Default reviewer, or "auto" to auto-detect
fallbacks ["codex","claude"] Tried in order if the default is missing/fails
minConfidence 70 Below this → collapsed Open Questions, not hidden (0–100)
includeNitpicks false Show style nitpicks (off = high-signal)
contextScope "files" "diff" / "files" / "repo" — how much context to send

To pin a model per backend, see plugins/duet/reference/backends.md.

Feedback Format

A short walkthrough, then issues by priority — each with a confidence score:

## Review Results (via codex)

Risk: Medium
> Adds JWT auth; risk concentrates in token verification and the user lookup query.

### Critical Issues
#1. [Security] SQL injection in getUser  ·  confidence 92
    Why it's real: `id` is concatenated into the query; `1 OR 1=1` dumps all users.
    Fix: use a parameterized query.

Style nitpicks are hidden unless includeNitpicks is on. You select which items to apply before any change is made — a human stays in the loop.

How It Works

+--------------------------------------------------------------------------+
|  /duet:review                                                            |
|                                                                          |
|  1. context bundle ──► 2. backend reviews ──► 3. Claude verifies+filters |
|     (diff + files +        (agy/codex/...)        (confidence, real?)     |
|      guidelines, stdin)                               │                  |
|                                                       ▼                  |
|  6. commit ◄── 5. apply fixes ◄── 4. you select high-signal findings     |
+--------------------------------------------------------------------------+

  /duet:pr  =  [ the above ] ──► push ──► gh pr create

Project Structure

duet/
├── .claude-plugin/marketplace.json   # Marketplace configuration
├── plugins/duet/
│   ├── .claude-plugin/plugin.json    # Plugin metadata
│   ├── commands/
│   │   ├── review.md                 # /duet:review
│   │   └── pr.md                     # /duet:pr
│   └── reference/backends.md         # Backend registry, bundle, prompt, post-processing
├── README.md
└── LICENSE

License

MIT License

Contributing

Issues and PRs welcome — fork, branch, change the command files / reference/backends.md, test both /duet:review and /duet:pr, bump the version in both JSON files, and open a PR.

Related skills

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.