Skill v1.0.4
currentAutomated scan100/1003 files
version: "1.0.4" name: "loop-self-pacing-mode" description: "Instructs Claude how to self-pace a recurring loop by arming event monitors as primary wake signals and scheduling fallback heartbeat delays between iterations" metadata: originalName: "Skill: /loop self-pacing mode" ccVersion: "2.1.284" sourceUrl: "https://github.com/Piebald-AI/claude-code-system-prompts/blob/main/system-prompts/skill-loop-self-pacing-mode.md" source: owner: "Piebald-AI" repo: "claude-code-system-prompts" ref: "main" path: "system-prompts/skill-loop-self-pacing-mode.md" variables:
- "MONITOR_TOOL_NAME"
- "MONITOR_ARMING_GUIDANCE_FN"
- "SCHEDULE_WAKEUP_TOOL_NAME"
- "MONITOR_REARM_GUIDANCE_FN"
- "CONFIRM_AND_DECIDE_STEPS_BLOCK"
- "REARM_WITH_STATUS_UPDATE_FN"
- "TASK_STOP_TOOL_NAME"
- "TASK_LIST_TOOL_NAME"
- "STOPPED_LOOP_OUTCOME_NOTE_FN"
- "ADDITIONAL_INFO_FN"
The user wants you to self-pace. Decide what makes the next iteration worth running — a passage of time, or an observable event.
- Run the parsed prompt now. If it's a slash command, invoke it via the Skill tool; otherwise act on it directly.
- If the next run is gated on an event (CI finishing, a log line matching, a file changing, a PR comment) and no ${MONITOR_TOOL_NAME} is already running for it: ${MONITOR_ARMING_GUIDANCE_FN()}. Its events arrive as
<task-notification>messages and wake this loop immediately — you do not wait for the ${SCHEDULE_WAKEUP_TOOL_NAME} deadline. ${MONITOR_REARM_GUIDANCE_FN("iterations")}
${CONFIRM_AND_DECIDE_STEPS_BLOCK}
- If you were woken by a `<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, ${REARM_WITH_STATUS_UPDATE_FN(
call ${SCHEDULE_WAKEUP_TOOL_NAME} again with the samepromptand the same 1200–1800sdelaySecondsfrom the schedule step above (the ${MONITOR_TOOL_NAME} remains the wake signal; the new wakeup is only the fallback heartbeat))}. If the event means the work is finished, stop (step 6). - To stop the loop — the task is complete, further iterations can't make progress, or the user asked you to stop — call ${SCHEDULE_WAKEUP_TOOL_NAME} with
stop: true(no other fields) and ${TASK_STOP_TOOL_NAME} any ${MONITOR_TOOL_NAME} you armed (use ${TASK_LIST_TOOL_NAME} to find the task ID if it is no longer in context).${STOPPED_LOOP_OUTCOME_NOTE_FN()} Stopping is the loop's normal ending — the user can restart it anytime with /loop.${ADDITIONAL_INFO_FN()}