no-mistakes
"git push no-mistakes" — the local gate that runs an AI review, test, document, lint pipeline before forwarding a branch and opening a clean PR. firstmate's validation layer.
git push no-mistakes — that's not a joke - it's the real command i run when i push my changes nowadays, and it's what allows me to ship 50-100 good PRs a day. — @kunchenguid, 2026-04-20
no-mistakes puts a local git proxy in front of your real remote. You push to no-mistakes instead of origin. It spins up a disposable worktree, runs an AI-driven validation pipeline, forwards the branch only after every check passes, and opens the PR itself. It is Kun's most-starred project (~8.6k), and it is firstmate's entire validation story. VISION.md: "validation belongs to no-mistakes".
a whopping 68% of the changes made by agents had a mistake in it, and got saved by no-mistakes. biggest source of gaps was a change made without updating related documentation, followed by problems caught via code review — @kunchenguid, 2026-05-10
Install and init#
curl -fsSL https://raw.githubusercontent.com/kunchenguid/no-mistakes/main/docs/install.sh | sh
cd your-repo
no-mistakes init
init does the following, idempotently:
- creates a bare gate repo at
~/.no-mistakes/repos/<id>.gitwithpre-receiveandpost-receivehooks, - adds a
no-mistakesremote to your repo.originis never touched. - installs the
/no-mistakesskill (~/.claude/skills/,~/.agents/skills/), - starts the daemon.
--fork-url handles fork contributions.
Three ways in#
git push no-mistakes # explicit git path
no-mistakes # TUI wizard (branch/commit/push for you; -y to automate)
/no-mistakes <task> # agent skill; drives `no-mistakes axi` (TOON, non-interactive)
The pipeline#
The order is fixed. You can't reorder steps, permanently skip one, or replace one. "A pass has the same core guarantees across repositories."
intent → rebase → review → test → document → lint → push → pr → ci
| Step | Does | Auto-fix limit |
|---|---|---|
| Intent | uses the supplied intent, or infers it from recent agent transcripts | — |
| Rebase | fetches fresh upstream, rebases, and ends early if no diff remains | 3 |
| Review | AI code review of the diff | 0 (needs approval) |
| Test | targeted validation of the change and intent, plus evidence | 3 |
| Document | updates docs, reports gaps | initial pass |
| Lint | lint / static analysis | 3 |
| Push | safely pushes to the real target without discarding unincorporated commits | — |
| PR | creates or updates the PR | — |
| CI | watches CI and mergeability, auto-fixes failures | 3 |
A paused step is resolved from the TUI or with no-mistakes axi respond (approve, fix or skip). no-mistakes axi abort cancels the run.
What you can configure:
- the agent and its fallbacks (claude, codex, grok, opencode, pi, cursor, devin,
acp:<target>, ...), commands.lint,commands.formatand a targetedcommands.test,- auto-fix limits and ignore paths,
- extra repo
gatesafter a core step, - per-run skips:
--skip, orgit push -o no-mistakes.skip=<steps>.
CI repairs: a repair is republished directly only if it provably builds on the already-reviewed head. Otherwise it goes back through Review. ci.revalidate_repairs: true forces re-review every time.
Under the hood#
Everything lives under ~/.no-mistakes/ (NM_HOME):
- a Unix socket and JSON-RPC daemon,
state.sqlite, which holds runs and steps but never prompts, outputs, diffs or credentials,- gate repos, run worktrees at
worktrees/<repo>/<run>/, and per-step logs atlogs/<run>/<step>.log.
A new push to the same branch cancels the in-flight run.
How firstmate uses it#
- It is the default delivery mode. Unregistered projects use it.
- The worker drives it. A
no-mistakescrewmate pushes to the gate and answers gates withno-mistakes axi respond. It never passes--yes/-y, because that would auto-resolve ask-user findings, which is a hard-rule violation. - Ask-user findings go up. The worker reports
needs-decision [key=nm-<run>-<step>]: ask-user findings=<ids> file=<path>. The first mate decides or escalates (Decisions). - Current state.
fm-crew-state.shtreats a matching no-mistakes run as the authority:awaiting_approval→parked, passed →done. - Brief rule 7. Workers must never restart the shared daemon. The
stuck-crewmate-recoveryskill verifies "pipeline is dead" claims withno-mistakes daemon status. - firstmate itself ships this way. CI checks a
no-mistakes-pipeline-attestationbound to the exact PR head.
When to use it (and when not)#
not every change! ... you can ask yourself 'would i ask another human to do code review for this change' and if the answer is no, then you probably don't need no-mistakes. — @kunchenguid, 2026-09-22
it'll cost more than not doing any validation at all but will cost less than doing the same validations all in the same main agent session. i think most importantly catching bugs early is a lot less costly to the business than finding them in production. — @kunchenguid, 2026-06-08 thread
That is why direct-PR and no-mistakes-prod-only exist as delivery modes.
Kun also tuned it against over-engineering in review loops. Scope expansion is now escalated to a human more often, and auto-fixes are biased toward simplification (2026-08-30).