
Loop
Run a named experiment on a cron schedule so API or engineering hypotheses get retested without you babysitting the agent.
Overview
Loop is an agent skill most often used in Operate (also Build integrations, Grow analytics) that schedules recurring autonomous runs for a named experiment via cron-backed /ar:loop.
Install
npx skills add https://github.com/alirezarezvani/claude-skills --skill loopWhat is this skill?
- Start or stop loops via /ar:loop with experiment path (e.g. engineering/api-speed)
- Five interval presets: 10m, 1h, daily (~9am), weekly (Monday), monthly (1st)
- Maps intervals to cron expressions and uses CronCreate for scheduling
- Prompts for experiment pick and interval when arguments are omitted
- 5 selectable loop intervals (10m, 1h, daily, weekly, monthly)
Adoption & trust: 1.4k installs on skills.sh; 17.5k GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You have a structured experiment you care about but no reliable way to re-run it on a fixed cadence without manually restarting the agent.
Who is it for?
Solo builders who maintain experiment slugs under paths like engineering/api-speed and want hourly or daily agent iteration without staying in the chat.
Skip if: One-off tasks with no experiment record, or environments where cron scheduling and CronCreate are unavailable or disallowed.
When should I use this skill?
You want an experiment to run repeatedly at 10min, 1h, daily, weekly, or monthly intervals using /ar:loop.
What do I get? / Deliverables
An active cron-scheduled loop keeps executing your experiment at the chosen interval until you run /ar:loop stop on that path.
- Active cron job for the experiment
- Stopped loop state when using /ar:loop stop
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Recurring autonomous runs are a production habit: keep improving what you shipped rather than one-off manual retries. Iterate is where scheduled experiment loops belong—same experiment slug, new runs on 10m through monthly cadences.
Where it fits
Re-hit an API-speed experiment every hour while you implement caching changes elsewhere.
Keep a weekly loop on a reliability experiment after launch without manual re-invocation.
Run a daily experiment that re-checks a funnel or endpoint metric you encoded as an experiment path.
How it compares
Use instead of ad-hoc “run this again tomorrow” reminders when you already model work as repeatable experiments.
Common Questions / FAQ
Who is loop for?
Indie builders and small teams using Claude skills who organize engineering or API work as experiments and want autonomous re-runs on a schedule.
When should I use loop?
In Operate when iterating on production or perf hypotheses; in Build when validating integrations on a timer; in Grow when you treat recurring checks as ongoing measurement—after you have an experiment path to target.
Is loop safe to install?
It schedules recurring agent work and depends on cron tooling—review the Security Audits panel on this Prism page and confirm cron permissions fit your host before enabling tight intervals like every 10 minutes.
SKILL.md
READMESKILL.md - Loop
# /ar:loop — Autonomous Experiment Loop Start a recurring experiment loop that runs at a user-selected interval. ## Usage ``` /ar:loop engineering/api-speed # Start loop (prompts for interval) /ar:loop engineering/api-speed 10m # Every 10 minutes /ar:loop engineering/api-speed 1h # Every hour /ar:loop engineering/api-speed daily # Daily at ~9am /ar:loop engineering/api-speed weekly # Weekly on Monday ~9am /ar:loop engineering/api-speed monthly # Monthly on 1st ~9am /ar:loop stop engineering/api-speed # Stop an active loop ``` ## What It Does ### Step 1: Resolve experiment If no experiment specified, list experiments and let user pick. ### Step 2: Select interval If interval not provided as argument, present options: ``` Select loop interval: 1. Every 10 minutes (rapid — stay and watch) 2. Every hour (background — check back later) 3. Daily at ~9am (overnight experiments) 4. Weekly on Monday (long-running experiments) 5. Monthly on 1st (slow experiments) ``` Map to cron expressions: | Interval | Cron Expression | Shorthand | |----------|----------------|-----------| | 10 minutes | `*/10 * * * *` | `10m` | | 1 hour | `7 * * * *` | `1h` | | Daily | `57 8 * * *` | `daily` | | Weekly | `57 8 * * 1` | `weekly` | | Monthly | `57 8 1 * *` | `monthly` | ### Step 3: Create the recurring job Use `CronCreate` with this prompt (fill in the experiment details): ``` You are running autoresearch experiment "{domain}/{name}". 1. Read .autoresearch/{domain}/{name}/config.cfg for: target, evaluate_cmd, metric, metric_direction 2. Read .autoresearch/{domain}/{name}/program.md for strategy and constraints 3. Read .autoresearch/{domain}/{name}/results.tsv for experiment history 4. Run: git checkout autoresearch/{domain}/{name} Then do exactly ONE iteration: - Review results.tsv: what worked, what failed, what hasn't been tried - Edit the target file with ONE change (strategy escalation based on run count) - Commit: git add {target} && git commit -m "experiment: {description}" - Evaluate: python {skill_path}/scripts/run_experiment.py --experiment {domain}/{name} --single - Read the output (KEEP/DISCARD/CRASH) Rules: - ONE change per experiment - NEVER modify the evaluator - If 5 consecutive crashes in results.tsv, delete this cron job (CronDelete) and alert - After every 10 experiments, update Strategy section of program.md Current best metric: {read from results.tsv or "no baseline yet"} Total experiments so far: {count from results.tsv} ``` ### Step 4: Store loop metadata Write to `.autoresearch/{domain}/{name}/loop.json`: ```json { "cron_id": "{id from CronCreate}", "interval": "{user selection}", "started": "{ISO timestamp}", "experiment": "{domain}/{name}" } ``` ### Step 5: Confirm to user ``` Loop started for {domain}/{name} Interval: {interval description} Cron ID: {id} Auto-expires: 3 days (CronCreate limit) To check progress: /ar:status To stop the loop: /ar:loop stop {domain}/{name} Note: Recurring jobs auto-expire after 3 days. Run /ar:loop again to restart after expiry. ``` ## Stopping a Loop When user runs `/ar:loop stop {experiment}`: 1. Read `.autoresearch/{domain}/{name}/loop.json` to get the cron ID 2. Call `CronDelete` with that ID 3. Delete `loop.json` 4. Confirm: "Loop stopped for {experiment}. {n} experiments completed." ## Important Limitations - **3-day auto-expiry**: CronCreate jobs expire after 3 days. For longer experiments, the user must re-run `/ar:loop` to restart. Results persist — the new loop picks up where the old one left off. - **One loop per experiment**: Don't start multiple loops for the same experiment. - **Concurrent experiments**: Multiple experiments can loop simultaneously ONLY if they're on