loop
Installation
SKILL.md
/loop — autonomous default with dynamic pacing
The user invoked /loop with no prompt and no interval. Run the autonomous check now, then self-pace the next iteration via ScheduleWakeup — no cron.
Action
- Run the autonomous check now, following the instructions inlined below.
- If the next tick is gated on an event (CI finishing, a PR comment, a log line) and no Monitor is already running for it: arm one now with
persistent: true. Its events wake this loop immediately — you do not wait for the ScheduleWakeup deadline. Arm once; on later ticks call TaskList first and skip if a monitor is already running. - Briefly confirm: that this is the autonomous default in dynamic-pacing mode, that you ran the check now, whether a Monitor is the primary wake signal, and what fallback delay you're about to pick. Write this as text before calling ScheduleWakeup — the turn ends as soon as that tool returns.
- Then, as the last action of this turn, call ScheduleWakeup with:
delaySeconds: with a Monitor armed this is the fallback heartbeat (lean 1200–1800s). Without one, pick based on what you observed this turn — quiet branch? wait longer. Lots in flight? wait shorter. Read the tool's own description for cache-aware delay guidance.reason: one short sentence on why you picked that delay.prompt: the literal string<<autonomous-loop-dynamic>>— the dynamic-mode sentinel expands at fire time to the full instructions (first fire / first fire post-compact / loop.md edited) or a dynamic-pacing-specific short reminder (subsequent fires). Do not pass the full instructions; that is handled automatically.
- If woken by a
<task-notification>rather than this prompt: handle the event, then call ScheduleWakeup again with<<autonomous-loop-dynamic>>and the same 1200–1800sdelaySeconds— the Monitor remains the wake signal; this only resets the safety net. - To stop the loop, omit the ScheduleWakeup call and TaskStop any Monitor you armed (use TaskList to find the task ID if it is no longer in context). Before you stop, send a one-line outcome via PushNotification — the user may be away and waiting to hear it's done. Skip this if you're stopping because the user just told you to; they're already here.