← ClaudeAtlas

simmerlisted

Runs a goal loop - Codex implements fresh laps while Claude verifies each against a machine-checkable goal, until it passes or the budget runs out. Use only when the user explicitly asks for a loop ("simmer this", "loop until tests pass", "iterate until green") - it creates a branch and checkpoint commits, so confirm the contract first.
mightymattys/expo · ★ 0 · AI & Automation · score 72
Install: claude install-skill mightymattys/expo
# Simmer - reduce until done A loop is: check state → decide → act → **verify** → repeat, with a stop condition and a budget. In this kitchen, the selected worker implements inside the loop and you are the loop's author and judge. The worker never grades its own homework - you run the checks. And because each lap is a fresh context while your own conversation can be compacted or restarted mid-loop, neither of you is the loop's memory: the repo is. Parse `--with <worker>` exactly as fire does: absent or `codex` selects Codex; `--with sonnet` or `--with opus` selects a Claude worker. For Codex, if `codex` is missing or `~/.codex/expo.config.toml` doesn't exist, stop and offer `/expo:mise` first (Codex silently ignores a missing profile - `test -f`). For a Claude worker, require `command -v claude`. The repo must have at least one commit (the no-progress guard needs `HEAD`). ## 1. Write the loop contract first - and get it confirmed A loop is only as good as its stop condition. Establish with the user, and confirm before lap 1 (simmer creates a branch and makes commits - say so): - **Goal** - ONE measurable end state, e.g. "`pnpm test` exits 0 with the 12 new migration tests passing". - **Check commands** - the exact commands that verify the goal (tests, typecheck, lint, a curl). Machine-checkable or it doesn't belong in a loop: if success can't be verified cheaply by a command, don't simmer - do it interactively instead. - **Budget** - max laps (default 5) and any wa