gauntlet-loop
Skill1 starsChanged 2 months agoMITView on GitHub
Use for throwaway work where the point is how good an idea can get — a spike, a bake-off, a proof of concept: grind a prototype until a blind critic picks it over one named, fetchable outside reference. Emits a paste-ready prompt for a fresh session, or runs the loop here. Anything that ships uses the lifecycle skills; cross-examining one in-flight call is `doubt-driven-development`.
20 other projects use a version of this, 4 of them edited.
Adopted by
Most recently taken up by
- rubenmarcus/agent-skillstheir own version, first seen Nov 1, 2026
- mblanc/mb-skillstheir own version, first seen Oct 20, 2026
- harshsinghmp/muse-skillstheir own version, first seen Oct 15, 2026
- sreejithraman/SreeStacktheir own version, first seen Oct 15, 2026
- AVANT-ICONIC/skillstheir own version, first seen Oct 13, 2026
- mauriciovieira/skillsedited, first seen Oct 13, 2026
Used with
Projects with it also use research and grilling.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
NVIDIASkillresearch
Before designing a feature, research how comparable libraries solve the problem, check best practices, known pitfalls, and upstream changes. Use when starting a new feature, investigating an unfamiliar area, or the user asks to research something.
Also in 4 projects that use this
GoogleSkillgrilling
Grill the user relentlessly about a plan, decision, or idea. Use when the user wants to stress-test their thinking, or uses any 'grill' trigger phrases.
Also in 3 projects that use this
Other versions20 projects use a version of this.
Word for word · 0
None found.
Edited · 4
- Kohulan/orthonym-skills★ 212% same
- mauriciovieira/skills★ 112% same
- sugarrushdev/skills★ 113% same
- FkennedyFox/claude-skills★ 013% same
Wrote their own version · 16
- duolahypercho/gauntlet-loop★ 157same name
- emaraschio/cursor-commands★ 9same name
- sidneyswift/skills★ 9same name
- NicholasSpisak/gauntlet-loop★ 4same name
- protonspy/spec-claude-code★ 4same name
- trilwu/gauntlet-loop-skills★ 3same name
- rubenmarcus/agent-skills★ 2same name
- alexanderpino/skills★ 1same name
- emernuness/gauntlet-loop-skill★ 1same name
- harshsinghmp/muse-skills★ 1same name
6 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository41 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- acceptance-criteriaSkill
- aim-higherSkill
- api-designSkill
- architecture-designSkill
- browser-testing-with-devtoolsSkill
- ci-cdSkill
- codebase-designSkill
- codebase-researchSkill
- code-reviewSkill
- code-simplificationSkill
- comprehension-quizSkill
- debugging-and-error-recoverySkill
- deprecation-and-migrationSkill
- documentation-and-adrsSkill
- doubt-driven-developmentSkill
- environment-manifestSkill
- git-workflowSkill
- handoffSkill
- idea-refineSkill
- incremental-implementationSkill
- interview-meSkill
- literate-explainerSkill
- observability-and-instrumentationSkill
- orchestratorSkill
- performance-optimizationSkill
- plan-breakdownSkill
- preflight-readinessSkill
- project-setupSkill
- pull-requestSkill
- quality-verificationSkill
- security-and-hardeningSkill
- shipping-and-launchSkill
- source-driven-developmentSkill
- spec-grillingSkill
- spec-reviewSkill
- test-driven-developmentSkill
- to-prdSkill
- using-agent-skillsSkill
- worktreeSkill
The file
We split this skill into the rules it gives an agent
5 rules. 0 are common, 3 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 20 edited versions we read keep these.
3
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 21
Use when the output is meant to be thrown away and the point is how good the idea can get, or on "gauntlet this", "loop until it beats X", …
- Distinctive: line 52
Write the prompt (below), the offer to run it here on one flat line beneath — not a question.
- Very specific: line 53
Put .gauntlet/ in the target .gitignore before the first write.
- Very specific: line 76
Keep the stall count yourself: name a piece whose critic returns the same gap twice, on status.md and to the person, and invent no cap.
- Distinctive: line 78
Stop and report where the POC lives and the last critic's word per piece.
“Common” is measured: kept by at least 6 in 10 of the 20 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Gauntlet loop — grind a throwaway prototype until it beats a real reference
Purpose
Stage: standalone. Principles 1, 7, 8.
Proof of concept, fast: name one real outside artifact to beat — the bar — split the goal into pieces
one critic can judge alone, and run a builder against a separate critic blind to which side is
ours. The default output is a paste-ready prompt for a fresh session; taken up, or asked for outright,
the loop runs here instead, in an ignored scratch directory. Loop-until-win is legal here alone and lifts
no bound in doubt-driven-development or orchestrator: no gate waits on this, it blocks nothing, and
it reads and writes no chain artifact.
When to use / when to skip
- Use when the output is meant to be thrown away and the point is how good the idea can get, or on "gauntlet this", "loop until it beats X", "run the gauntlet".
- Skip when any part of it will ship — the lifecycle,
/ideatethrough/ship. - Skip on an ask that merely sounds fast: quick is a tone, not a scope, so
using-agent-skillsoffers this path beside the full loop and the person picks it. - Skip for one in-flight decision cross-examined inside a run —
doubt-driven-development.
Inputs
- The goal, in one line — helps: what to build, write or measure · without it: reconstruct it from the
request and the open files, marked
derived. - The bar — helps: the one named outside artifact to beat, which decides everything the loop is worth ·
without it: offer two or three candidates and take the person's pick; alone, take the hardest
reachable one, mark it
derived, and name what you passed over so one edit swaps it. - The measurable half — helps: a number counting toward the pick beside taste — load time, cost,
benchmark score · without it: judge on the pick alone, marked
derived. - A budget ceiling — helps: a cost the person named · without it: no cap; the loop ends on the critic's pick or the person's word.
- A slug — helps: names the scratch directory
.gauntlet/<slug>/· without it: derive it from the goal, markedderived. - Tool names — helps: a generator, a browser, a deploy target the goal reaches for · without it: none.
Nothing upstream is needed; an empty repository is a valid input.
Process
Steps 1–3 are prompt mode, the default; 4–13 are run mode, entered when the person takes the offer or asks for the run outright.
- Restate the goal in one line to yourself, off screen.
- Set the bar against the three tests below; name the test a candidate fails and take another.
- Write the prompt (below), the offer to run it here on one flat line beneath — not a question.
- Put
.gauntlet/in the target.gitignorebefore the first write. Absent, ask — the file is the person's — and a no ends the run; alone, write nothing and report the line you needed. The line stops agit addand confines nothing the bar can run, read or reach. - Show what you are about to fetch — URL, package and version, repository — and which of downloading, installing and running you intend; wait for a yes, per bar and per action. Where the yes is already given, go no further than it covered; where none was given and nobody is there to ask, report what the fetch would have been and hand back the prompt block instead. A no ends the run — never a substitute bar, never a description in its place.
- Hand the bar no credentials, no environment secrets, no repository contents beyond the piece under comparison; a build step wanting to authenticate needs a credential, a stop-list item (safety-rails).
- Fetch it into
.gauntlet/<slug>/bar/and judge against the artifact; unobtainable here means it was never fetchable, so say what failed and return to step 2. - Split into pieces one critic can judge alone — a piece needing two judgements is two, and a hedging critic is how you find that out.
- Fan out a builder and a separate critic per piece, in parallel, the critic code-cold (safety-rails) and never the agent that built the piece.
- Produce both sides under one fixture, viewport, width and length; hand them over as
aandbin random order, with no filename, path or caption saying which is ours. The measurable half travels with the pair; say when a reference is recognizable on sight rather than calling it blind. - Take back a pick plus the single biggest remaining gap — never a score, percentage or rubric — send it to that piece's builder, and repeat until the critic picks ours or the person ends the run, never on a round count.
- Keep the stall count yourself: name a piece whose critic returns the same gap twice, on
status.mdand to the person, and invent no cap. - Stop and report where the POC lives and the last critic's word per piece; the next move is the person's.
The bar is the whole trick
A bar passes three tests or it is not one: named — one specific artifact, not a category; fetchable — obtainable here, which step 5 also gates; comparable — both sit side by side and a judge picks one. Reach for the hardest you can genuinely obtain: one set low enough to clear exits on round one.
| Goal | A bar that works |
| Website, app, UI | a named product's live site, screenshotted at the same viewport |
| Code, tooling | a named repository's implementation, its benchmarks as the measurable half |
| Writing, analysis | a named author's or publication's published piece, same length and format |
The paste-ready prompt
One block for a fresh session, because a loop that may grind for hours belongs in one of its own. No preamble, no headings inside it, no narration after it.
Run a gauntlet loop on this: build [GOAL].
The bar is [BAR]. Get the real thing first and compare against it directly, not against a
description of it. Before you clone, install, or run anything to get it, show me exactly what you
are about to fetch and wait for my yes, and ask again for every new one. Do not hand it my
credentials or environment secrets, and do not give it more of the repository than the comparison
needs.
All work goes in .gauntlet/[SLUG]/ and nothing is written outside it. This is a throwaway proof of
concept, so put .gauntlet/ in .gitignore before you write anything, and ask me first if it is not
already there.
Break this into the smallest pieces that can be improved and judged on their own. For each piece,
fan out a builder and a separate critic with fresh context. The critic inspects the actual output,
puts it next to the bar blind with the labels stripped, says which one is better, and names the
single biggest remaining gap. Then it goes back to the builder.
The critic should be a harsh critic. Praise is not useful. If ours does not win, it keeps going.
/loop on each piece until the critic picks ours blind. Do not stop before that.
Keep a live progress page in .gauntlet/[SLUG]/ updating as the work evolves so I can watch.
Fan out subagents and ultracode.- Bake the bar in concrete — a URL, a product name, a repository, a title; never leave
[BAR]standing. - Name the measurable half where the goal has one; a budget ceiling only where the person named one, tool names only where the goal needs them.
- Architecture, file layout, decomposition, round count and stack choice stay out — written before the work, they were written without the bar.
- Short: about 240 words unfilled, near 250 filled; a heading means it is too long. Plain sentences, no bullets inside it.
- Without
/loopandultracode, the last two lines become "Keep looping until the critic picks ours; run the builders and critics as parallel subagents."
Rationalizations
- "'Award-winning SaaS sites' is close enough." → A category cannot be fetched, so the critic invents the comparison and approves everything.
- "The builder can grade its own piece." → Knowing how hard it tried is what disqualifies it.
- "A score out of ten shows progress better than a pick." → Scores drift upward every round; that drift is what a bar replaces.
- "They said yes to the last bar, so this one is covered." → That yes was about one named thing; a standing yes is consent decayed into a formality.
- "This piece came out well, so I will move it into
src/." → One blind pick is not a signedacceptance.md, a code-cold review or a Verify pass. - "I will stash the tree's unrelated changes for a clean check." → Those are somebody's work in progress; the check covers the files this run wrote.
Red flags
- A bar that is a category, a style or an adjective rather than one named artifact.
- A critic comparing against a description, or judging a piece the same agent built.
- A pair that reached the critic under names, paths, an order or conditions saying which side is ours.
- A judgement returned as a score, a percentage or a rubric; an exit resting on a round count.
- A fetch, install or run that went ahead before the person saw it; one yes stretched to a second bar or action; credentials or repository contents travelling with the bar.
- A write outside the run's directory, or before the ignore line was there; the line read as a sandbox.
Verification
- Prompt mode: one headingless block, a concrete fetchable bar where
[BAR]was, the scratch-directory and ask-before-you-fetch lines inside it, the offer beneath on one flat line. - Run mode: every piece's final critic picked ours blind — or the person ended the run and the report says so rather than claiming a win.
- A fresh yes stands behind every fetch, install and run; nothing beyond the compared piece travelled with the bar.
- Every judgement put ours beside the bar as an artifact; one recognizable on sight was reported so.
- Each piece had a builder and a separate code-cold critic, and each blind pair went out under identical conditions.
- Every judgement was a pick plus one gap, no exit rested on a round count, and any stalled piece was named to the person.
git status --shortlists nothing this run created beyond at most the one-line.gitignorechange.- The report names where the POC lives, the last critic's word per piece, and anything marked
derived.
Outputs & handoff
.gauntlet/<slug>/— no cap; the ignored throwaway directory:bar/(the fetched reference), one directory per piece,status.md, the output..gauntlet/<slug>/status.md— under 200 words; the live progress page, rewritten as the work evolves, one row per piece — its current gap, its round count, whether the critic has picked ours yet — and no prose beyond it..gitignore— one line,.gauntlet/, added where absent and with the person's yes.- The prompt block — in conversation, written to no file, about 250 words; report its measured count rather than handing on an over-length draft as if it fit.
- Nothing else — no
src/, no chain artifact underdocs/features/<slug>/, noSTATE.md,CONTEXT.mdordocs/session-log.md; nothing outside.gauntlet/<slug>/but that one.gitignoreline. - Returns where the POC lives and the last critic's word per piece. It moves no board row and owns no gate (state-schema); the next action is the person's.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

