Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add sideshowroberto/vfx-agent-toolkit --skill loop-gauntletgit clone --depth 1 https://github.com/sideshowroberto/vfx-agent-toolkitWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/sideshowroberto/vfx-agent-toolkit/loop-gauntlet)<a href="https://agentmods.dev/skills/sideshowroberto/vfx-agent-toolkit/loop-gauntlet"><img src="https://agentmods.dev/badge/skills/sideshowroberto/vfx-agent-toolkit/loop-gauntlet/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/sideshowroberto/vfx-agent-toolkit/loop-gauntlet"><img src="https://agentmods.dev/badge/skills/sideshowroberto/vfx-agent-toolkit/loop-gauntlet.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00067 | $0.06538 |
| Opus 5.5 | $0.00027 | $0.02615 |
| Sonnet 5.5 | $0.00013 | $0.01308 |
| Haiku 4.5 | $0.00007 | $0.00654 |
Grade A, and why
loop-gauntlet scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured today.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 464 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Loop Gauntlet
Version: 1.6.1 | Created: 2026-09-09 | Last updated: 2026-10-10 | Status: public-safe (no studio paths; the run evidence lives in the workspace session log)
Version history: reference/version_history.md.
A gauntlet loop is a builder that keeps going until an authored quality bar says stop. The pattern comes from the "builder plus fresh-eyes critic" idea and from this workspace's fine-tune lane C, whose first lesson is the whole skill in one line: the checks are authored by the human before the loop starts; the builder never invents its own. A builder that writes its own rubric grades itself against whatever it happened to do.
First run (2026-09-09, GPT-6 Astra in Codex driving a live Blender 5.1
through MCP, six matched views of a three-zone museum environment): seven
reviewed iterations, 42 loop renders plus six finals, visible progress every
iteration, and an honest stop under the stall rule with the target NOT met.
The lessons from that run are folded in below and in
reference/first_run_lessons.md.
The contract - five things the human authors before the loop
- Reference set. Clean plates only: remove people (Magnific edit, see
magnific-local-upload), copy to one folder, and SETTLE DISAGREEMENTS between references before the loop. Two refs that disagree on an object count or a hero prop shape cannot both be matched by one scene; the first run lost a view to exactly that. Curate a lead-supplied set by allowlist. A plan drawing or a generated "orthographic" elevation is a MEASURING reference, never a view: a dimension table with one human-stated anchor, bands classified as geometry or projection (reference/contract_authoring.md1-3). - Matched views. One camera per reference, named
CAM_<view>. A tile inside a contact sheet is a view too: give the crop box in the spec so the comparison uses the tile, not the sheet. Lighting feasibility pre-check: for each view, list the key lit surfaces the reference shows and confirm the planned key light can reach them (normal dot light direction), or record in the spec that the view will be scored with that limitation. Two views of the same curved corridor from opposite ends cannot both show a sunlit wall from one sun; catching this before the loop starts (not after several lighting-only iterations) turned out to require moving a camera, not tweaking the light. Trace each lit EVENT (patch, streak, beam, glow) through the real openings: a painted concept can need one light per event. Also check (reference/contract_authoring.md4-6, 8): a reference whose aspect differs fromrender_sizecaps that view (readback flagref_aspect_mismatch); the human states the up axis and units (sceneblock); solve a repeated-element hero view before building. - Rubric. Fixed criteria scored 1 to 5 per view, a pass score, and a priority order for fixes (composition > scale > inventory > lighting > materials > detail). Materials are never polished while geometry is wrong. Every element needs an instrument that can fail (Rubric instruments).
- Evidence rule. An iteration counts only when every render file has
been read back (path, bytes, mtime, pixels) and the comparison image has
been LOOKED AT.
compare_views.pyalso flags a suspect-blank render; a blank frame is a valid PNG of plausible size (operating rule 8). - Stop rules. Target met (all views, all criteria >= pass for N
consecutive iterations), max iterations, or STALLED. Stalled means neither
the global minimum nor the total score improved for K iterations - the
dual rule exists because a minimum-only rule froze the first run while
four of six views were still improving.
min_iterationsis the floor below which a stall cannot fire: with composition fixed first, a builder plateaus on structure early, and one round-2 run stalled at iteration 5 before the materials tier had a single iteration of its own. Sizemax_iterationsagainst the runner's remaining budget: estimate cost per iteration by subject class (roughly 30k tokens for a prop, 75k for an environment), record both numbers, require finals by the halfway iteration, keep aRESUME.md(reference/contract_authoring.md10).
What ships with it
16 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- reference/blender_loop_patterns.md 26 KB
- reference/contract_authoring.md 16 KB
- reference/first_run_lessons.md 6.9 KB
- reference/houdini_loop_patterns.md 35 KB
- reference/lighting_match.md 11 KB
- reference/version_history.md 5.2 KB
- scripts/compare_views.py 20 KB runs code
- scripts/gauntlet_prompt.py 23 KB runs code
- scripts/log_iteration.py 8.5 KB runs code
- scripts/scratch_luminance.py 32 KB runs code
- scripts/solve_light_mix.py 37 KB runs code
- scripts/stop_check.py 12 KB runs code
- scripts/test_lighting_scripts.py 25 KB runs code
- scripts/test_loop_scripts.py 26 KB runs code
- templates/final_delivery.example.json 3.4 KB
- templates/gauntlet_spec.example.json 2.3 KB
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- today First seen · 464 lines · 67 tokens per session scan A 344ff4ba3251
loop-gauntlet is a skill published in the GitHub repository sideshowroberto/vfx-agent-toolkit (16 stars, last pushed 22d ago), licensed MIT. It adds 67 tokens to every session and 6,538 once invoked, about $0.0003 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-11-02.
Other skills, from other repositories
comfyui-civitai
A ComfyUI integration for searching, inspecting, and downloading models from CivitAI, a website that hosts community-created AI models and model versions.
flux-txt2img
Build Flux txt2img workflows with Flux.1 Dev (SRPO), Flux 2 Klein 9B, Turbo LoRAs, FluxGuidance, and DualCLIPLoader patterns.
prompt-engineering
ComfyUI prompt engineering knowledge covering CLIP text encoding syntax, weight modifiers, model-specific prompting strategies, and best practices.
civitai
Discover Civitai models with the BUILT-IN downloadmodel action:"searchcivitai" and install/generate them locally. Find a checkpoint/LoRA/embedding on Civitai, download it into ComfyUI, and use its trigger words. Optionally pair the official Civitai MCP for community features (images browsing, posting, collections).
scenario-model-training
Use when generated assets must keep a consistent style, character, or product look and references stop scaling, or when a user asks to train a custom model through the Scenario MCP, fine-tune a LoRA, clone a voice, curate a training dataset, choose a base model, set epochs and sample prompts, estimate training cost…
scenario-model-comparison
Use when comparing Scenario models on the same brief through MCP: a bake-off with shared prompts and inputs, cost, generation time and quality measured side by side, choosing a default model, testing a new release against the incumbent, or finding which model handles a style, edit, or reference image best. Keywords…