simmerlisted
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