
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-marketplaceAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| repo stars | ★ 3 |
|---|---|
| Last updated | June 22, 2026 |
| Repository | bokuhe/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 --adversarialruns 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.