loop
Run a prompt or slash command on a recurring interval (e.g. /loop 5m /foo). Omit the interval to let the model self-pace.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Run a prompt or slash command on a recurring interval (e.g. /loop 5m /foo). Omit the interval to let the model self-pace.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Deep code review of a diff. Launches the code-review workflow — finder agents scan each review angle, an independent verifier judges every candidate, then a ranked, capped findings report. Read-only; it reviews, it does not edit.
Deep whole-repo security audit. Launches the deep-security-review workflow — a prep agent maps the attack surface, specialized auditors scan each vulnerability class, candidates are debated for-and-against reachability, survivors are proven and chained, then a strict report is rendered and independently re-verified. OWASP Top 10, CWE Top 25, NIST SP 800-53/SSDF; target repo is read-only while report artifacts are written under the configured reports directory.
Reflective memory consolidation — review recent activity, synthesize learnings into the memory directory, and prune stale entries. Use when the user says "dream", "learn", "consolidate memories", "organize your memories", or asks Otherside to reflect on what it has learned.
Interview the user relentlessly about a plan or design until reaching shared understanding, resolving each branch of the decision tree. Use when user wants to stress-test a plan, get grilled on their design, or mentions "grill me".
Initialize new OTHERSIDE.md file(s) and optional skills/hooks with codebase documentation
Code review a pull request — summarize changes, flag issues, suggest improvements.
| name | loop |
| description | Run a prompt or slash command on a recurring interval (e.g. /loop 5m /foo). Omit the interval to let the model self-pace. |
| aliases | proactive |
| argumentHint | [interval] <prompt> |
| whenToUse | When the user wants to set up a recurring task, poll for status, or run something repeatedly on an interval (e.g. "check the deploy every 5 minutes", "keep running /babysit-prs"). Do NOT invoke for one-off tasks. |
| context | inline |
Parse the input (in <command-args>) into [interval] <prompt…> and schedule it.
^\d+[smhd]$ (e.g. 5m, 2h), that's the interval; the rest is the prompt.every <N><unit> or every <N> <unit-word> (e.g. every 20m, every 5 minutes, every 2 hours), extract that as the interval and strip it from the prompt. Only match when what follows "every" is a time expression — check every PR has no interval.If the resulting prompt is empty, show this usage and stop:
Usage: /loop [interval] <prompt>
Run a prompt or slash command on a recurring interval — or with no interval, let the model self-pace based on the task.
Intervals: Ns, Nm, Nh, Nd (e.g. 5m, 30m, 2h, 1d). Minimum granularity is 1 minute.
If no interval is specified, the model picks a delay between iterations based on what it's doing.
Examples:
/loop 5m /babysit-prs
/loop 30m check the deploy
/loop 1h /standup 1
/loop check the deploy (dynamic — model picks delays)
/loop check the deploy every 20m
Examples:
5m /babysit-prs → interval 5m, prompt /babysit-prs (rule 1)check the deploy every 20m → interval 20m, prompt check the deploy (rule 2)run tests every 5 minutes → interval 5m, prompt run tests (rule 2)check the deploy → no interval → dynamic mode, prompt check the deploy (rule 3)check every PR → no interval → dynamic mode, prompt check every PR (rule 3 — "every" not followed by time)5m → empty prompt → show usageConvert the interval to a cron expression:
| Interval pattern | Cron expression | Notes |
|---|---|---|
Nm where N ≤ 59 | */N * * * * | every N minutes |
Nm where N ≥ 60 | 0 */H * * * | round to hours (H = N/60, must divide 24) |
Nh where N ≤ 23 | 0 */N * * * | every N hours |
Nd | 0 0 */N * * | every N days at midnight local |
Ns | treat as ceil(N/60)m | cron minimum granularity is 1 minute |
If the interval doesn't cleanly divide its unit (e.g. 7m → */7 * * * * gives uneven gaps at :56→:00; 90m → 1.5h which cron can't express), pick the nearest clean interval and tell the user what you rounded to before scheduling.
Then:
cron (the expression above), prompt (the parsed prompt verbatim), recurring: true.The user wants you to self-pace. Decide what makes the next iteration worth running — a passage of time, or an observable event.
delaySeconds: the cadence — pick based on what you observed. Background work you started notifies you automatically (<task-notification> wakes the loop immediately), so a wakeup is only the fallback heartbeat for that; lean 1200–1800s unless you're actively polling external state the harness can't track. Read the tool's own description for cache-aware delay guidance.reason: one short sentence on why you picked that delay.prompt: the full original /loop input verbatim, prefixed with /loop so the next firing re-enters this skill and continues the loop. For example, if the user typed /loop check the deploy, pass /loop check the deploy as the prompt.
If it doesn't need another iteration, stop instead (step 5) — re-arming is a per-turn choice, not a default.<task-notification> rather than this prompt: handle the event in the context of the loop task, then make the same decision. If the loop should continue, call ScheduleWakeup again with the same prompt and a 1200–1800s delaySeconds (notifications remain the wake signal; the new wakeup is only the fallback heartbeat). If the event means the work is finished, stop (step 5).stop: true (no other fields). Stopping is the loop's normal ending — the user can restart it anytime with /loop./loop — re-enter this skill via the Skill tool and continue at "Dynamic mode" (the loop is already running; don't re-confirm the setup).