Loop
Parse
Accept /loop [interval] <prompt>.
- Leading interval:
5m /foo, 30s check status, 2h run report.
- Trailing interval:
check deploy every 5m, run tests every 10 minutes.
- No interval: dynamic mode; the agent chooses the next delay after each run.
- Empty prompt: show
Usage: /loop [interval] <prompt>.
Use intervals like 30s, 5m, 2h, 1d. Convert unit words to short units.
Use monitored shell output to wake the agent for recurring local work.
Fixed Schedule
while true; do
sleep <seconds>
echo 'AGENT_LOOP_TICK_<purpose> {"prompt":"<prompt>"}'
done
- Check existing terminals for an already-running matching loop.
- Start one background shell loop with
notify_on_output.
- Use a unique sentinel and a regex such as
^AGENT_LOOP_TICK_<purpose>.
- Smoke-check once to confirm clean startup.
- Run the prompt once immediately after arming the loop.
- The first sentinel should arrive only after the initial sleep, so startup does not double-run the prompt.
- Track the PID so the agent can stop the loop if asked.
- Briefly confirm: the interval, that the prompt already ran once, when the first tick will arrive, and that the loop will fire on each tick until stopped. On later ticks, give a short update of what changed. On stop, say the loop has stopped and why.
Dynamic Schedule
The user wants the agent to self-pace. Decide what makes the next iteration worth running — a passage of time, or an observable event.
- Run the prompt now.
- If the next run is gated on an event (a git ref advancing, a log line matching, a file changing, a CI check completing), arm a background watcher that emits the sentinel only when the event fires, with
notify_on_output on ^AGENT_LOOP_WAKE_<purpose>. Arm once; skip on later ticks if it's still running.
- At the end of the turn, arm a one-shot time-based wake:
sleep <seconds>
echo 'AGENT_LOOP_WAKE_<purpose> {"prompt":"<prompt>"}'
With a watcher armed, this is the fallback heartbeat — lean long so idle ticks aren't pure overhead. Without a watcher, this is the cadence — pick a delay based on when the result is worth checking again.
- On wake, read the latest payload, execute its
prompt, then re-arm the next heartbeat (and re-arm the watcher only if it exited). If both an output wake and a completion notification arrive, act on the output and ignore the completion.
- To stop, kill any watcher PID and don't arm the next heartbeat.
- Briefly confirm: that you're self-pacing, whether a watcher is the primary wake signal, what fallback delay you picked, and that the prompt already ran.
Prompt Payload
Wake notifications include an output file path, not a submitted prompt. Put the prompt beside the sentinel, preferably as JSON. On wake, read the latest matching line and act on its prompt. The prompt may vary by tick.
Guidance
- Title shell commands as
Loop <schedule>: <prompt> (e.g. Loop every 5m: check deploy status).
- Adapt loop syntax to the user's shell (e.g. PowerShell
while ($true) { ... Start-Sleep } on Windows). The examples above use bash.
- Prefer monitored shell output over OS cron when the agent needs wake notifications; stdout stays attached to the monitored task.
- Use a unique sentinel per loop so unrelated output does not trigger notifications.
- Avoid noisy commands inside the loop.
- Do not create duplicate fixed loops or dynamic sleepers.
- If the user asks to stop, kill any tracked loop/sleeper PID, then await the shell task so its completion notification is consumed and does not wake the agent later. Do not schedule another dynamic wake.
1---2name: cursor-loop3description: Run a prompt or skill in this session on a recurring or variable interval (e.g. /loop 5m /foo). Use when the user wants to poll, repeat, or watch something on a schedule.4---5# Loop67## Parse89Accept `/loop [interval] <prompt>`.1011- Leading interval: `5m /foo`, `30s check status`, `2h run report`.12- Trailing interval: `check deploy every 5m`, `run tests every 10 minutes`.13- No interval: dynamic mode; the agent chooses the next delay after each run.14- Empty prompt: show `Usage: /loop [interval] <prompt>`.1516Use intervals like `30s`, `5m`, `2h`, `1d`. Convert unit words to short units.1718Use monitored shell output to wake the agent for recurring local work.1920## Fixed Schedule2122```bash23while true; do24 sleep <seconds>25 echo 'AGENT_LOOP_TICK_<purpose> {"prompt":"<prompt>"}'26done27```28291. Check existing terminals for an already-running matching loop.302. Start one background shell loop with `notify_on_output`.313. Use a unique sentinel and a regex such as `^AGENT_LOOP_TICK_<purpose>`.324. Smoke-check once to confirm clean startup.335. Run the prompt once immediately after arming the loop.346. The first sentinel should arrive only after the initial sleep, so startup does not double-run the prompt.357. Track the PID so the agent can stop the loop if asked.368. Briefly confirm: the interval, that the prompt already ran once, when the first tick will arrive, and that the loop will fire on each tick until stopped. On later ticks, give a short update of what changed. On stop, say the loop has stopped and why.3738## Dynamic Schedule3940The user wants the agent to self-pace. Decide what makes the next iteration worth running — a passage of time, or an observable event.41421. **Run the prompt now.**432. **If the next run is gated on an event** (a git ref advancing, a log line matching, a file changing, a CI check completing), arm a background watcher that emits the sentinel only when the event fires, with `notify_on_output` on `^AGENT_LOOP_WAKE_<purpose>`. Arm once; skip on later ticks if it's still running.443. **At the end of the turn, arm a one-shot time-based wake**:4546```bash47sleep <seconds>48echo 'AGENT_LOOP_WAKE_<purpose> {"prompt":"<prompt>"}'49```5051 With a watcher armed, this is the **fallback heartbeat** — lean long so idle ticks aren't pure overhead. Without a watcher, this is the cadence — pick a delay based on when the result is worth checking again.52534. **On wake**, read the latest payload, execute its `prompt`, then re-arm the next heartbeat (and re-arm the watcher only if it exited). If both an output wake and a completion notification arrive, act on the output and ignore the completion.545. **To stop**, kill any watcher PID and don't arm the next heartbeat.556. Briefly confirm: that you're self-pacing, whether a watcher is the primary wake signal, what fallback delay you picked, and that the prompt already ran.5657## Prompt Payload5859Wake notifications include an output file path, not a submitted prompt. Put the prompt beside the sentinel, preferably as JSON. On wake, read the latest matching line and act on its `prompt`. The prompt may vary by tick.6061## Guidance6263- Title shell commands as `Loop <schedule>: <prompt>` (e.g. `Loop every 5m: check deploy status`).64- Adapt loop syntax to the user's shell (e.g. PowerShell `while ($true) { ... Start-Sleep }` on Windows). The examples above use bash.65- Prefer monitored shell output over OS cron when the agent needs wake notifications; stdout stays attached to the monitored task.66- Use a unique sentinel per loop so unrelated output does not trigger notifications.67- Avoid noisy commands inside the loop.68- Do not create duplicate fixed loops or dynamic sleepers.69- If the user asks to stop, kill any tracked loop/sleeper PID, then await the shell task so its completion notification is consumed and does not wake the agent later. Do not schedule another dynamic wake.