Purpose
Arm a controlled loop that re-runs a prompt or skill path on an interval (or dynamically) until success, failure, timeout, or user stop.
When to Use / When NOT to Use
Use when: babysit CI/PR checks; watch deploys; poll until green/red; recurring /loop style work; long-running verification.
Do not use when: one-shot tasks; tight interactive coding sessions where a loop adds noise; production mutate-on-timer without explicit approval.
Preconditions
Clear work unit (prompt or skill + args) and stop criteria. If interval omitted, use dynamic mode with rationale.
Inputs / Outputs
Inputs: prompt/skill to run, interval or dynamic, stop criteria, optional gh/CI identifiers.
Outputs: LOOP_PLAN then recurring LOOP_STATUS updates.
Upstream / Downstream
Upstream: engineering-os, quality-gate, user.
Downstream: any skill named in the loop body; pr-generator; incident-commander if loop detects sev.
Core Principles
- Every loop needs stop criteria (success/fail/timeout/max ticks).
- Prefer signal-based wakes (CI status, log sentinel) over blind sleep when possible.
- One loop per purpose; do not duplicate existing loops.
- First run immediate; then interval — avoid double-fire on start.
- Status updates are short; full work only on tick.
- Destructive actions require explicit user approval each time (or pre-approval scope).
- Stop cleanly and report why.
Process
- Parse: interval (
30s/5m/2h) or dynamic; body prompt/skills; stop criteria. - Emit LOOP_PLAN — purpose, interval, stop, max ticks, sentinel.
- Check for existing matching loop; reuse or stop duplicates.
- Arm background waiter / poller as environment allows; or instruct host loop tool.
- Run body once immediately; record LOOP_STATUS.
- On each tick: run body; evaluate stop; update LOOP_STATUS.
- On stop: final status, summary of changes, artifacts produced.
Presets
babysit-pr— poll checks until success/failbabysit-ci— watch workflow rununtil-qg-pass— re-run quality-gate pathcustom— user prompt
Evidence Requirements
Tick times, commands, CI URLs, stop reason. No fake “still running” without checking.
Stop Conditions / Failure Modes
| Condition | Action |
|---|---|
| No stop criteria | Refuse to arm |
| Max ticks / timeout | Stop; LOOP_STATUS failed/timeout |
| User says stop | Stop immediately |
| Body returns Block Critical | Stop and escalate |
Severity + Confidence
Escalate to incident-commander if loop observes prod SEV signals.
Output Contract
## LOOP_PLAN
Purpose: ...
Interval: ... | dynamic
Body: skill/prompt
Stop criteria: ...
Max ticks: ...
## LOOP_STATUS
Tick: N
Observed: ...
Decision: continue | stop
Stop reason: ...
Handoffs
engineering-os, quality-gate, pr-generator, incident-commander.
Never
- Never arm infinite loops without max ticks/timeout.
- Never force-push or prod-mutate on a timer without explicit scope.
- Never spam full reports every tick — delta only.