Skip to main content

repeat

Runs prompt/slash command on recurring interval until done or limit. Triggers: repeat, recurring task, poll status, run every N minutes, interval.

소스 정보

저장소
softspark/ai-toolkit
최근 소스 활동
2026년 5월 6일 09:48
감지된 SKILL.md 언어
영어
스타
180
포크
21

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
repeat
description
Runs prompt/slash command on recurring interval until done or limit. Triggers: repeat, recurring task, poll status, run every N minutes, interval.
user-invocable
true
effort
medium
argument-hint
[interval] [command or prompt] (e.g., /repeat 5m /test, defaults to 10m)
allowed-tools
Read, Write, Edit, Grep, Glob, Bash, Agent
# /repeat - Autonomous Recurring Execution $ARGUMENTS ## Argument Parsing Parse the user input into three components: 1. **Interval** — duration between iterations (default: `10m`) - Accepts: `1m`, `5m`, `10m`, `30m`, `1h` - Minimum: `1m` (enforced, reject anything lower) 2. **Command or prompt** — the slash command or freeform prompt to execute each iteration 3. **Flags**: - `--iterations N` — maximum number of iterations (default: `5`) Examples of parsed input: - `/repeat 5m /test` -> interval=5m, command=/test, iterations=5 - `/repeat 10m "check deploy status"` -> interval=10m, command="check deploy status", iterations=5 - `/repeat --iterations 3 /review` -> interval=10m, command=/review, iterations=3 - `/repeat 2m --iterations 10 /lint` -> interval=2m, command=/lint, iterations=10 ## Safety Controls These limits are constitutionally mandated (Article I, Section 4). Violating them is not permitted. ### Max Iterations - Default: **5** iterations - Configurable via `--iterations N` - Hard ceiling: the loop MUST terminate after N iterations regardless of outcome ### Circuit Breaker - Track consecutive failures (non-zero exit code, error output, exceptions) - **3 consecutive failures** -> immediate hard stop - Reset the failure counter on any successful iteration ### Minimum Interval - **Never** execute faster than 1 minute between iterations - If user requests `<1m`, override to `1m` and warn ### Exit Detection After each iteration, inspect the output for completion signals: - Exit code `0` combined with success markers - Output contains: `DONE`, `COMPLETE`, `ALL PASS`, `ALL TESTS PASSED`, `SUCCESS` - Case-insensitive matching - If detected: stop the loop early and report success ## Execution Protocol ``` For iteration = 1 to max_iterations: 1. Log iteration start (timestamp, iteration number) 2. Execute the command or prompt 3. Capture output and exit status 4. Check exit detection: - If completion marker found -> STOP, report success 5. Check circuit breaker: - If failure: increment consecutive_failures - If success: reset consecutive_failures to 0 - If consecutive_failures >= 3 -> HARD STOP, report failure 6. Log iteration result to stats 7. If not last iteration: wait for interval duration 8. Repeat After loop ends: - Print summary: total iterations, pass/fail counts, elapsed time - Final status: COMPLETED | EARLY_SUCCESS | CIRCUIT_BREAKER | MAX_ITERATIONS ``` ## Stats Logging Each iteration MUST be logged to `~/.softspark/ai-toolkit/stats.json`: ```json { "loop_runs": [ { "id": "loop-<timestamp>", "command": "/test", "interval": "5m", "max_iterations": 5, "started_at": "2026-04-01T10:00:00Z", "iterations": [ { "number": 1, "timestamp": "2026-04-01T10:00:00Z", "result": "pass", "exit_code": 0, "summary": "All 42 tests passed" }, { "number": 2, "timestamp": "2026-04-01T10:05:00Z", "result": "fail", "exit_code": 1, "summary": "3 tests failed" } ], "final_status": "EARLY_SUCCESS", "ended_at": "2026-04-01T10:10:00Z" } ] } ``` Ensure the stats directory and file exist before writing. Append to existing data, never overwrite. ## Usage Examples ```bash # Run tests every 5 minutes until all pass (max 5 iterations) /repeat 5m /test # Poll deployment status every 10 minutes /repeat 10m "check deploy status" # Run review max 3 times at default interval /repeat --iterations 3 /review # Lint every 2 minutes, up to 10 times /repeat 2m --iterations 10 /lint # Monitor CI pipeline every 5 minutes /repeat 5m "check if CI pipeline passed for current branch" ``` ## When to Use - Polling deployment or CI/CD pipeline status - Running tests repeatedly until green - Monitoring an external process for completion - Retrying a flaky operation with intervals - Watching for a condition to become true ## When NOT to Use - Anything requiring human judgment between iterations - Tasks where each iteration depends on user feedback - Long-running computations that should be a single background job - Destructive operations (deletes, drops, force pushes) -- never loop these - Intervals shorter than 1 minute -- use a proper scheduler instead
GitHub에서 보기