mirror of
https://github.com/Piebald-AI/claude-code-system-prompts.git
synced 2026-05-30 21:54:18 +08:00
48 lines
1.9 KiB
Markdown
48 lines
1.9 KiB
Markdown
<!--
|
|
name: 'Skill: /loop slash command (dynamic mode)'
|
|
description: Parses user input into an interval and prompt for scheduling recurring or dynamically self-paced loop executions
|
|
ccVersion: 2.1.101
|
|
variables:
|
|
- ADDITIONAL_PARSING_NOTES_FN
|
|
- CRON_CONVERSION_RULES
|
|
- SCHEDULE_FIXED_INTERVAL_FN
|
|
- DYNAMIC_MODE_INSTRUCTIONS
|
|
- USER_INPUT
|
|
-->
|
|
# /loop — schedule a recurring or self-paced prompt
|
|
|
|
Parse the input below into `[interval] <prompt…>` and schedule it.
|
|
|
|
## Parsing (in priority order)
|
|
|
|
1. **Leading token**: if the first whitespace-delimited token matches `^\d+[smhd]$` (e.g. `5m`, `2h`), that's the interval; the rest is the prompt.
|
|
2. **Trailing "every" clause**: otherwise, if the input ends with `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.
|
|
3. **No interval**: otherwise, the entire input is the prompt and you'll self-pace dynamically (see "Dynamic mode" below).
|
|
|
|
If the resulting prompt is empty, show usage `/loop [interval] <prompt>` and stop.
|
|
|
|
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 usage
|
|
${ADDITIONAL_PARSING_NOTES_FN()}
|
|
## Fixed-interval mode (rules 1 and 2)
|
|
|
|
Convert the interval to a cron expression:
|
|
|
|
${CRON_CONVERSION_RULES}
|
|
|
|
Then:
|
|
${SCHEDULE_FIXED_INTERVAL_FN()}
|
|
|
|
## Dynamic mode (rule 3 — no interval)
|
|
|
|
${DYNAMIC_MODE_INSTRUCTIONS}
|
|
|
|
## Input
|
|
|
|
${USER_INPUT}
|