loop
Skill0 starsChanged 2 months agoMITView on GitHub
Run a prompt or skill in this session on a recurring or variable interval (e.g. /loop 5m /foo).
55 other projects use a version of this, 3 of them edited.
Adopted by
Most recently taken up by
- Eclipter/agentstheir own version, first seen Nov 8, 2026
- SethGammon/Citadeltheir own version, first seen Nov 4, 2026
- drevendev/HungryCrabtheir own version, first seen Nov 1, 2026
- Railly/skillstheir own version, first seen Nov 1, 2026
- HeshamFS/swarmweavertheir own version, first seen Nov 1, 2026
- jtaroreh/agystacktheir own version, first seen Oct 29, 2026
Other versions55 projects use a version of this.
Word for word · 0
None found.
Edited · 3
- Goodnessmbakara/codex-skills★ 197% same
- JameMy0001/antigravity-skills-hub★ 197% same
- leishifu666/skills★ 196% same
Wrote their own version · 52
- SethGammon/Citadel★ 927same name
- breezewish/CodexPotter★ 629same name
- jtaroreh/agystack★ 128same name
- dannys-code-corner/incan★ 73same name
- ww-w-ai/bkit-gemini★ 66same name
- IsuruMaduranga/one-code★ 50same name
- unclejobs-ai/second-claude-code★ 41same name
- BULDEE/ai-craftsman-superpowers★ 35same name
- Hassaan146/claude-skills★ 18same name
- woxiangyangzhimao/skills★ 14same name
42 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository32 other files it gives its agents.
- .claude/CLAUDE.mdCLAUDE.md
- .cursor/rules/base-rule.mdcCursor rule
- .cursor/rules/bash-style.mdcCursor rule
- .cursor/rules/groovy-implicit-return.mdcCursor rule
- .cursor/rules/groovy-style.mdcCursor rule
- .cursor/rules/markdown-style.mdcCursor rule
- .cursor/rules/python-style.mdcCursor rule
- automateSkill
- autopilotSkill
- canvasSkill
- create-hookSkill
- create-ruleSkill
- create-skillSkill
- create-subagentSkill
- cursor-blameSkill
- git-messageSkill
- goalSkill
- migrate-to-skillsSkill
- new-repoSkill
- onboardSkill
- originSkill
- rename-chatSkill
- review-bugbotSkill
- review-securitySkill
- reviewSkill
- sdkSkill
- shareSkill
- shellSkill
- split-to-prsSkill
- statuslineSkill
- update-cli-configSkill
- update-cursor-settingsSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
21 rules. 0 are common, 10 are distinctive, and 11 are very specific to this project.
0
Common
Most of the 50 edited versions we read keep these.
10
Distinctive
This author's own choices. Worth a look.
11
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 9
Run /loop on a recurring or variable interval.
- Very specific: line 11
If the cursor-subscriptions-subscribe_timer MCP tool is available (you are a Cloud Agent), use Subscription timer (cloud).
- Distinctive: line 20
No interval: dynamic mode.
- Very specific: line 23
Use intervals like 30s, 5m, 2h, 1d.
- Very specific: line 27
Use the cursor-subscriptions MCP timer to wake this Cloud Agent on a recurring schedule using cursor-subscriptions-subscribe_timer.
- Very specific: line 37
Run the prompt once immediately so the first server tick is not a cold start.
- Very specific: line 56
Call cursor-subscriptions-list_subscriptions to find the row whose name matches loop-<purpose>.
- Very specific: line 57
Call cursor-subscriptions-unsubscribe with that subscriptionId.
- Distinctive: line 60
If several timers match the purpose and you cannot disambiguate, surface the candidates to the user and ask which one to stop.
- Very specific: line 64
Use a unique name per loop so unrelated timers do not collide.
- Very specific: line 65
Do not start a local sleep loop or any background shell wake — they do not work in cloud.
- Distinctive: line 71
Use monitored shell output to wake the agent for recurring local work.
- Distinctive: line 82
Check existing terminals for an already-running matching loop.
- Very specific: line 83
Start one background shell loop with notify_on_output.
- Very specific: line 84
Use a unique sentinel and a regex such as ^AGENT_LOOP_TICK_<purpose>.
- Distinctive: line 86
Run the prompt once immediately after arming the loop.
- Distinctive: line 118
Prefer monitored shell output over OS cron when the agent needs wake notifications.
- Distinctive: line 119
Use a unique sentinel per loop so unrelated output does not trigger notifications.
- Distinctive: line 120
Avoid noisy commands inside the loop.
- Distinctive: line 121
Do not create duplicate fixed loops or dynamic sleepers.
- Distinctive: line 122
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 …
“Common” is measured: kept by at least 6 in 10 of the 50 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Loop
Run /loop on a recurring or variable interval. First decide which mechanism applies from the tools you have, then follow only that section below:
- If the
cursor-subscriptions-subscribe_timerMCP tool is available (you are a Cloud Agent), use Subscription timer (cloud). A localsleeploop does not work in cloud. - Otherwise (local IDE/CLI session), use Monitored shell output (local).
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 delay and may change it tick to tick.
- Empty prompt: show
Usage: /loop [interval] <prompt>.
Use intervals like 30s, 5m, 2h, 1d. Convert unit words to short units. If the user gives a cron-style phrase ("every weekday at 9am") and the subscription-timer mechanism is in use, pass it as a cron expression instead of a delay.
Subscription timer (cloud)
Use the cursor-subscriptions MCP timer to wake this Cloud Agent on a recurring schedule using cursor-subscriptions-subscribe_timer.
Schedule
Call cursor-subscriptions-subscribe_timer with:
name: a stable handle, e.g.loop-<purpose>derived from the prompt (loop-check-deploy). The server dedupes by name and silently keeps the old config on a dedupe hit — see "Changing an existing timer" below.prompt: the literal follow-up text the agent should receive on each tick.- Exactly one of
delaySeconds(a positive integer, fixed interval between fires) orcron(a cron expression).
Run the prompt once immediately so the first server tick is not a cold start. Then subscribe and confirm: the interval, that the prompt already ran once, the returned subscriptionId, and that the loop will fire on each tick until stopped.
Each subsequent tick arrives as a normal follow-up prompt. Do not arm anything client-side; the server keeps firing until you unsubscribe or the timer expires.
Changing an existing timer
subscribe_timer does not update an existing timer in place. If a live timer with the same name already exists, the server returns its current subscriptionId with created: false and drops the prompt, cron, and delaySeconds you just passed. To actually change any of those, call cursor-subscriptions-unsubscribe for the current subscriptionId first, then cursor-subscriptions-subscribe_timer with the new values.
Dynamic Schedule
The user wants the agent to self-pace. cursor-subscriptions can watch CI checks with cursor-subscriptions-subscribe_github_ci or cursor-subscriptions-subscribe_origin_ci, but it has no event-watcher analog for arbitrary signals such as file changes or log lines. For those signals, the only knob is the time interval.
- Run the prompt now.
- Subscribe once with your first-picked
delaySeconds. - On each tick, if the next desired interval is unchanged, do nothing — the timer keeps firing.
- To change pace, unsubscribe first (
cursor-subscriptions-unsubscribewith the currentsubscriptionId), thencursor-subscriptions-subscribe_timerwith the samenameand the newdelaySeconds. Skipping the unsubscribe is a silent no-op: the server returns the existing subscription unchanged and ignores the newdelaySeconds.
Stop
- Call
cursor-subscriptions-list_subscriptionsto find the row whose name matchesloop-<purpose>. - Call
cursor-subscriptions-unsubscribewith thatsubscriptionId. - Confirm: the loop has stopped and why. Do not arm another timer.
If several timers match the purpose and you cannot disambiguate, surface the candidates to the user and ask which one to stop.
Guidance
- Use a unique
nameper loop so unrelated timers do not collide. - Do not start a local
sleeploop or any background shell wake — they do not work in cloud. - Re-arming with the same
nameon a live timer is a silent no-op — the newprompt/cron/delaySecondsare dropped. To change anything about a live timer, unsubscribe first. - On stop, do not schedule another timer.
Monitored shell output (local)
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_outputon^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.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

