/loop-worker
Run Ruflo background workers using Claude Code native /loop scheduling
Claude Code
$ npx -y skills add ruvnet/ruflo --skill loop-worker --agent claude-code
Codex
$ npx skills add ruvnet/ruflo --skill loop-worker -a codex -y
Cursor
$ npx skills add ruvnet/ruflo --skill loop-worker -a cursor -y
Gemini CLI
$ npx skills add ruvnet/ruflo --skill loop-worker -a gemini-cli -y
GitHub Copilot
$ npx skills add ruvnet/ruflo --skill loop-worker -a github-copilot -y
OpenCode
$ npx skills add ruvnet/ruflo --skill loop-worker -a opencode -y
Windsurf
$ npx skills add ruvnet/ruflo --skill loop-worker -a windsurf -y
SKILL.md
loop-worker.SKILL.mdname: loop-worker
description: Run Ruflo background workers using Claude Code native /loop scheduling
argument-hint: "<worker-name>"
allowed-tools: Bash(npx *) mcp__plugin_ruflo-core_ruflo__hooks_worker-dispatch mcp__plugin_ruflo-core_ruflo__hooks_worker-status ScheduleWakeup
Use `/loop` for in-session periodic workers. Pick the delay from what you are waiting for:
- With the 5-minute prompt-cache TTL, `min(270, cache_ttl * 0.9)` = 270s keeps the cache warm (ruflo-autopilot ADR-0001 owns that heartbeat).
- If the `ScheduleWakeup` tool description says this session uses the 1-hour TTL, a 270s wake buys nothing; poll at 1200-1800s unless the worker finishes faster.
Dispatch a worker via MCP: `mcp__plugin_ruflo-core_ruflo__hooks_worker-dispatch({ trigger: "WORKER_NAME" })`. It runs in the background by default (`background: true`), so check on it with `hooks_worker-status` instead of waiting inline.
Then schedule the next iteration. `ScheduleWakeup` needs the loop prompt back so the next firing re-enters the loop: `ScheduleWakeup({ delaySeconds: 270, reason: "next WORKER_NAME iteration", prompt: "/loop <the same /loop input>", noop: false })`
Stop the loop when the worker reports nothing new twice in a row: `ScheduleWakeup({ stop: true })`.
Available Workers (12, per ADR-0001 and `/ruflo-loop`)
| Worker | Priority | Interval | Description | |--------|----------|----------|-------------| | audit | critical | 270s | Security analysis | | optimize | high | 270s | Performance optimization | | predict | normal | 270s | Predictive preloading | | testgaps | normal | 270s | Test coverage analysis | | ultralearn | normal | 600s | Deep knowledge acquisition | | deepdive | normal | 600s | Deep code analysis | | map | normal | 600s | Codebase mapping | | document | normal | 600s | Auto-documentation | | refactor | normal | 600s | Refactoring suggestions | | benchmark | normal | 600s | Performance benchmarking | | consolidate | low | 600s | Memory consolidation | | preload | low | 270s | Resource preloading |
The intervals are suggested cadences, not enforced by the dispatcher: 270s keeps the prompt cache warm, and the heavier analysis workers run at 600s because one iteration rarely finishes sooner.
Work you start in the background (a build, a long job) finishes with its own completion notification. Do not poll it with short `ScheduleWakeup` calls; use a long fallback delay (1200s or more) so the loop survives a hung job.
MCP tool responses include `[LOOP_SUGGESTION]` and `[CRON_SUGGESTION]` hints -- follow them.
Read more
name: loop-worker description: Run Ruflo background workers using Claude Code native /loop scheduling argument-hint: "<worker-name>" allowed-tools: Bash(npx *) mcp__plugin_ruflo-core_ruflo__hooks_worker-dispatch mcp__plugin_ruflo-core_ruflo__hooks_worker-status ScheduleWakeup
Use `/loop` for in-session periodic workers. Pick the delay from what you are waiting for:
- With the 5-minute prompt-cache TTL, `min(270, cache_ttl * 0.9)` = 270s keeps the cache warm (ruflo-autopilot ADR-0001 owns that heartbeat).
- If the `ScheduleWakeup` tool description says this session uses the 1-hour TTL, a 270s wake buys nothing; poll at 1200-1800s unless the worker finishes faster.
Dispatch a worker via MCP: `mcp__plugin_ruflo-core_ruflo__hooks_worker-dispatch({ trigger: "WORKER_NAME" })`. It runs in the background by default (`background: true`), so check on it with `hooks_worker-status` instead of waiting inline.
Then schedule the next iteration. `ScheduleWakeup` needs the loop prompt back so the next firing re-enters the loop: `ScheduleWakeup({ delaySeconds: 270, reason: "next WORKER_NAME iteration", prompt: "/loop <the same /loop input>", noop: false })`
Stop the loop when the worker reports nothing new twice in a row: `ScheduleWakeup({ stop: true })`.
Available Workers (12, per ADR-0001 and `/ruflo-loop`)
| Worker | Priority | Interval | Description | |--------|----------|----------|-------------| | audit | critical | 270s | Security analysis | | optimize | high | 270s | Performance optimization | | predict | normal | 270s | Predictive preloading | | testgaps | normal | 270s | Test coverage analysis | | ultralearn | normal | 600s | Deep knowledge acquisition | | deepdive | normal | 600s | Deep code analysis | | map | normal | 600s | Codebase mapping | | document | normal | 600s | Auto-documentation | | refactor | normal | 600s | Refactoring suggestions | | benchmark | normal | 600s | Performance benchmarking | | consolidate | low | 600s | Memory consolidation | | preload | low | 270s | Resource preloading |
The intervals are suggested cadences, not enforced by the dispatcher: 270s keeps the prompt cache warm, and the heavier analysis workers run at 600s because one iteration rarely finishes sooner.
Work you start in the background (a build, a long job) finishes with its own completion notification. Do not poll it with short `ScheduleWakeup` calls; use a long fallback delay (1200s or more) so the loop survives a hung job.
MCP tool responses include `[LOOP_SUGGESTION]` and `[CRON_SUGGESTION]` hints -- follow them.
📖 RuFlo Explained — Build an AI Team That Plans, Remembers, Tests, and Improves A 14-chapter guide: from the basic idea to a first useful task, then memory, agent teams, plugins, cost and verification. Agent = Model + Harness.
Other skills on ruflo.
More skills from other plugins.
agentmail
Use your assigned AgentMail inbox to read email tasks, explicitly send or reply, and check delivery. Provided automatically by…
bmad
Answers BMad questions and recommends the next skill from what is installed. Use when the user asks bmad for help, what to do…
Questions about loop-worker.
- Which coding agents can use loop-worker?
- loop-worker installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.

