██████╗ █████╗ ██╗ ██╗███╗ ██╗████████╗██╗ ███████╗████████╗
██╔════╝ ██╔══██╗██║ ██║████╗ ██║╚══██╔══╝██║ ██╔════╝╚══██╔══╝
██║ ███╗███████║██║ ██║██╔██╗ ██║ ██║ ██║ █████╗ ██║
██║ ██║██╔══██║██║ ██║██║╚██╗██║ ██║ ██║ ██╔══╝ ██║
╚██████╔╝██║ ██║╚██████╔╝██║ ╚████║ ██║ ███████╗███████╗ ██║
╚═════╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═╝ ╚══════╝╚══════╝ ╚═╝
Run an idea through a gauntlet of independent skeptic subagents, each attacking it from a different angle, so the flaw surfaces before you commit.
Most "get a second opinion" tools converge toward agreement. Gauntlet does the opposite: it spawns several agents that don't see each other's reasoning, each trying to break your idea on its own terms. When two of them independently land on the same flaw, that's signal — not noise.
Works in Claude Code, Codex, Gemini CLI, Cursor, and Opencode — from one source.
- Choosing between candidate solutions when you can't cleanly pick — run each option through, see which survives the most attacks.
- Vetting one design you're attached to, before confirmation bias locks it in.
- Pressure-testing anything irreversible — a lint/CI rule, a DB schema or migration, an API contract, an IaC/k8s config, an auth boundary.
Five standing personas, each a read-only subagent — they can ground critique in your code but never modify it:
| Agent | Angle |
|---|---|
gauntlet-formalist |
Structure, logic, invariants — are the categories actually orthogonal? |
gauntlet-practitioner |
The year-one maintainer — what gets painful, who gets paged? |
gauntlet-consumer-advocate |
The downstream consumer — what breaks for them, what's surprising? |
gauntlet-historian |
Prior art — who tried this, why did it break? |
gauntlet-threat-modeler |
Security — where's the abuse case, the blast radius? |
Need a different angle? custom-adversary.md (beside the skill) is a template — paste it into a generic read-only subagent to spin up a bespoke lens (cost/FinOps, accessibility, compliance…).
Paste this to any coding agent (Claude Code, Codex, Gemini CLI, Cursor, Opencode):
Read https://raw.githubusercontent.com/Rebel028/gauntlet/master/INSTALL.md and install gauntlet for the tool you're running in.
Full matrix in INSTALL.md. The short version — no clone needed, runs via npx:
# interactive picker
npx -y github:Rebel028/gauntlet
# all five tools
npx -y github:Rebel028/gauntlet --all
# or a single tool
npx -y github:Rebel028/gauntlet --codex/plugin marketplace add Rebel028/gauntlet
/plugin install gauntlet@gauntlet-marketplace
gemini extensions install https://github.com/Rebel028/gauntlet
Invoke it explicitly:
"Run this caching design through the gauntlet." "I'm torn between optimistic and pessimistic locking here — gauntlet it." "Attack this migration plan before I write it."
Or let it trigger proactively when you're stuck, choosing between options, or about to set something in concrete.
Behind the scenes, the skill picks the 2–4 sharpest angles for your decision, spawns them in parallel (so they stay independent), tells each one to attack, not agree, then synthesizes: convergence on a flaw is a red flag; disagreement surfaces both sides for you to weigh; a clean pass is real evidence the idea holds.
One canonical source in src/; a zero-dependency Node generator emits a native package per tool into dist/.
gauntlet/
├── src/ # SINGLE SOURCE OF TRUTH — edit here
│ ├── meta.json # plugin/skill/agent metadata (descriptions live here)
│ ├── agents/*.md # the 5 agent bodies (system prompts)
│ └── skill/ # SKILL.md + custom-adversary.md
├── scripts/build.mjs # generator: src/ -> dist/<tool>/
├── dist/ # GENERATED — do not hand-edit
│ ├── claude/ cursor/ gemini/ opencode/ codex/
├── bin/install.js # uniform file-copy installer (run via npx)
├── .claude-plugin/ # root marketplace pointer (Claude)
└── .agents/plugins/ # root marketplace pointer (Codex)
Edit a prompt or description once in src/, run npm run build, and every tool's files update together. CI (.github/workflows/build.yml) regenerates dist/ on every push to src/.
Adding a tool or changing a format? It's all in scripts/build.mjs — one agentFm.<tool> entry per format.
The original concept and the first draft — a skeptic-agents skill — were written by @Tellexxii. This project is the rewrite and repackaging of that idea: restructured around real read-only subagents, trimmed, and shipped across five agent tools.
MIT
