Give your agent a target, a bar and time, then let it cook.
An agent skill for ambitious visual builds that have to hold up next to references: 3D worlds in code, films, launch videos, games and UI. It runs the Cook Loop, one intake and then a long autonomous loop of build, stills, fresh-context critics and fixes until the work matches.
Use the skills CLI for supported agents:
npx skills add Leonxlnx/cook
Manual locations:
Claude Code: ~/.claude/skills/cook
Codex CLI: ~/.codex/skills/cook
Invoke it as /cook in Claude Code or $cook in Codex. It also triggers on phrases like "go cook", "iterate until it matches" or "match the references 99%".
The side-by-side script needs Node 18+ and ffmpeg on your PATH. Everything else is plain Markdown.
Attach your reference images and send:
/cook build this ancient greek world in three.js, match the 9 attached references
The agent asks every open question once, with defaults, then works on its own. You get stills after every round. The final video is only rendered after you approve them.
Want full control? Fill in templates/brief.md and send that instead.
- Intake. All questions up front, each with a default. After that the agent never asks again, so it can run through the night.
- Target. The references are the minimum bar, not inspiration. Every reference becomes a shot with notes on what to take from it. Motion references get analyzed frame by frame.
- Bar. A number per dimension: composition, light, color, materials, detail near and far, motion. For example 99.9% for stills or at least 9/10 for a video. Models rate themselves too high, so your own estimate calibrates every score.
- Rules. Zero external assets by default, honest sound and asset policy, a slop ban list, colors that are neither grey nor oversaturated, offline rendering on weak GPUs.
- Time. A floor for demos (at least 8h, done after 2h means something is wrong), a hard cap for small jobs, and usage pacing so the run never hits a limit and stalls.
- Loop. Build, render stills at the reference shots, compare side by side, score with zero-context critics, fix the weakest part, log the round in
cook/ROUNDS.md, repeat. - Gate. Stills go to you after every round without pausing. No final render before you approve.
- Ship. First frame is the thumbnail, best scene first, no text on screen, licensed music credited, public repo with honest numbers if you want one.
All run state lives in a cook/ folder in your project, so the agent can resume after a context reset or hand the run to another agent.
SKILL.md the loop the agent follows
references/intake.md questions, defaults, the brief
references/target-and-bar.md references, shot list, rubric, calibration
references/loop-and-critics.md rounds, critic prompts, feedback, pacing
references/rules.md assets, sound, ban list, color, rendering
references/ship.md final render, video spec, repo, numbers
templates/brief.md fill-in prompt for your own runs
templates/ROUNDS.md the round ledger
scripts/side-by-side.mjs reference left, render right, one row per shot
Build a comparison image yourself:
node scripts/side-by-side.mjs --out compare.jpg ref1.png render1.png ref2.png render2.png
Athenaion, an ancient Greek world built by Claude Opus 5.5 to match 9 AI-generated reference images. No external assets.
| Total time | ~45h |
| Agents | 55 subagents, up to 12 in parallel |
| Code | ~45k lines of JavaScript |
| Tokens | ~11M output tokens |
| API-equivalent cost | ~$1.8k to $2.3k (ran on a Max plan) |
| Render | 4K on an integrated AMD Radeon 780M |
More demos made the same way:
- Alpine lake: post, repo
- 10 Chinese landscapes: post, repo
- Golden temple: post, repo
- Afterglow pianist film: post, repo
All demos: leonlin.de/demos
- unlazy for effort and completion discipline. Cook sets the target and the bar, unlazy makes sure the work behind it gets done.
- Any goal, loop or long-run mode your agent offers. Cook works without them.
MIT. Made by Leon Lin (@LexnLin).