Fight AI slop. Run the Gauntlet.
Coming soon · work in progress
Gauntlet turns user stories into pull requests with a high engineering standard, through hard, deterministic checks.
gauntlet run "<story>"
01 — Why Gauntlet
The problem
Everyone uses AI differently. One person picks the biggest model, another turns the effort down, a third has a skill nobody else has. Give the same story to three people and you get three different pull requests, and engineers have to clean up each one.
The idea
Gauntlet gives every story the same agents and the same hard, deterministic checks, whoever writes it. So product managers, designers and other non-technical roles can open consistent, battle-tested PRs that engineers will love.
02 — How it works
Three commands
-
gauntlet setupRun it in your repo. It learns how your team writes code, builds the gates and has to catch every planted mistake before it starts.
-
gauntlet run "<story>"Hand it a story. It works in its own branch and opens the draft PR once every gate has passed.
-
gauntlet review <PR link>Point it at any PR for a verdict and comments ready to post.
03 — The agents
Meet the agents
Run each agent on any model: Claude, Codex or Kimi. Each one runs as its own process, none of them grades its own work, and after every attempt Gauntlet’s checker sends back a list of what failed.
Seven of them write code and two review it. --lite runs a shorter pipeline for copy and config changes.
-
Write lane
Clarifier
Reads the story and asks you the few questions whose answers would change what gets built.
-
Write lane
Specifier
Writes the acceptance scenarios and a step-by-step QA checklist. Doesn’t touch product code.
-
Write lane
Designer
Plans the change in small slices the Coder can build one at a time.
-
Write lane
Coder
Writes the code and its unit tests until every scenario passes. Messy is allowed; wrong is not.
-
Write lane
Cleaner
Tidies the new code without changing what it does: simpler functions, fewer dependencies, consistent names.
-
Write lane
Hardener
Breaks the code on purpose to check the tests notice, and runs them repeatedly to catch flaky ones.
-
Write lane
QA
Turns the QA checklist into an end-to-end script and runs it against the app.
-
Review lane
Reviewer
Checks each thing a pull request says it does against the actual diff. Two runs vote; a third breaks ties.
-
Review lane
Commenter
Writes the review comments: short, plain, attached to specific lines. You decide whether to post them.
04 — The gates
Every step has a gate
A gate is a fixed set of checks run by plain code, not by AI. An agent’s work only moves to the next step once it passes, so the failed attempts never reach you.
-
The agent does its part
Following the conventions Gauntlet learned from your repo at setup.
-
The gate checks it
Tests, lint, types and the rest run as code. If anything fails, the agent gets the exact list.
-
It fixes and tries again
With the failures spelled out. On the final attempt, the stage switches to your strongest model.
-
It can’t cheat its way through
If passing would mean relaxing a check or deleting a test, it stops and asks. You approve each one by name, or you don’t.
A real run · 16 Sep 2026. The Coder took 6 tries to pass its gate. The PR showed up only after every gate had passed.
05 — Review
It reviews pull requests too
Give it a link to any pull request. It doesn’t change the code or post anything. You get a verdict and a set of comments you can post yourself.
gauntlet review <PR link>
-
Does it work?
It builds the PR and runs its checks, then its own: types, tests, mutation testing, merge conflicts and new environment variables.
-
Does it do what it says?
Every claim in the title, description and commits is checked against the code. Anything changed that nobody mentioned gets flagged.
-
Is the verdict fair?
Two Reviewer runs answer on their own and a third settles where they disagree. The verdict and grades come from fixed rules applied to their answers, not from a model’s opinion.
PR #214 · Retry failed payment webhooks
Verdict
Approved with changes
83 approved with changes17 changes requested
Grades
- BMatches description
- CTests
- ACode quality
- AStyle
- ASecurity & deps
- ABuild & merge
Before it merges
- TaskNo test covers the new retry limit.
- Question
webhook.ts:88raises the timeout from 10s to 30s. The description doesn’t mention it.
Ready to postApprove · 2 comments
Example output, shortened
06 — Safety rails
Safety first
It opens a draft pull request only after every check passes, and it never merges or force-pushes. Here’s what else it won’t do.
-
Loosen a check to pass
Changes to CI, lint, type, test or coverage settings are refused. The code has to get better instead.
-
Delete your tests
A test can only be removed if you approve it by name.
-
Push a secret
Every check scans for secrets, and the branch’s whole history is scanned again before a push.
-
Touch your checkout
Each story runs in its own worktree and branch. The one you’re working in is left alone.
-
Run up a bill
Every stage and every run has a hard time limit and a token cap.
The sabotage suite
07 — Commands
The commands
Run them yourself, or let Claude Code run them for you. Stories work in the background and send a desktop notification when they need you.
gauntlet setupLearns your repo’s conventions, builds the gates and proves them before any agent starts.
gauntlet run "<story>"Writes the story into a draft PR, in its own branch, in the background.
gauntlet run "<story>" --liteThe express lane for copy and config changes.
gauntlet review <PR link>Reviews any PR. Changes nothing, posts nothing.
gauntlet review show <id>The verdict, grades and comments ready to post.
gauntlet fix "<note>" --pr <n>Turns review feedback into a verified fix on the same PR.
gauntletThe live view of every run on your machine.
gauntlet statusStage, attempt, time, tokens, and what it needs from you.
gauntlet answer <id>Answers a waiting run, from any terminal.
08 — Coming soon
Throw down the gauntlet.
gauntlet setup