/ar:loop — Autonomous Experiment Loop

Start an autonomous experiment loop with user-selected interval (10min, 1h, daily, weekly, monthly).

How to use it

Claude Code
  1. Run the line below. It pulls the whole folder into ~/.claude/skills/loop, including the files SKILL.md points to.
  2. Describe your job in plain words. Claude Code follows the skill from there.
Claude Code — installs the whole folder, not just SKILL.md
npx degit alirezarezvani/claude-skills/engineering/autoresearch-agent/skills/loop#main ~/.claude/skills/loop

For one project only, change the path to .claude/skills/loop. This skill also uses program.md, loop.json — copying SKILL.md alone won't be enough. See the folder on GitHub.

Claude (web or desktop app)
  1. On this page open ⋯ → Download .md.
  2. Save it as SKILL.md in a folder, zip the folder, then Customize → Skills → + → Create skill → Upload a skill.
  3. Pick the file and Save. Claude shows the name and description and runs a security scan.
  4. Check the skill is switched on.
  5. Start a new chat and describe your job in plain words. The AI follows the skill from there.
ChatGPT or another app
  1. ChatGPT: make a Project and paste it into Instructions.
  2. Neither? Paste it at the top of a new chat — it works for that chat.
Not working?
  • Check which app you pasted it into — the steps above name the right one.
  • Some skills need the paid tier of Claude or ChatGPT.
Step-by-step guide with screenshots · Ask in the forum

Paste into Claude, ChatGPT or Cursor.

Source of /ar:loop — Autonomous Experiment Loop

Show the full text123 lines
namedescriptioncommand
loopStart an autonomous experiment loop with user-selected interval (10min, 1h, daily, weekly, monthly). Uses CronCreate for scheduling. Use when the user runs /ar:loop or asks to run an autoresearch experiment continuously on a schedule./ar: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:

{
  "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: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 different git branches (which they are by default — each experiment gets autoresearch/{domain}/{name}).
1---
2name: "loop"
3description: "Start an autonomous experiment loop with user-selected interval (10min, 1h, daily, weekly, monthly). Uses CronCreate for scheduling. Use when the user runs /ar:loop or asks to run an autoresearch experiment continuously on a schedule."
4command: /ar:loop
5---
6 
7# /ar:loop — Autonomous Experiment Loop
8 
9Start a recurring experiment loop that runs at a user-selected interval.
10 
11## Usage
12 
13```
14/ar:loop engineering/api-speed # Start loop (prompts for interval)
15/ar:loop engineering/api-speed 10m # Every 10 minutes
16/ar:loop engineering/api-speed 1h # Every hour
17/ar:loop engineering/api-speed daily # Daily at ~9am
18/ar:loop engineering/api-speed weekly # Weekly on Monday ~9am
19/ar:loop engineering/api-speed monthly # Monthly on 1st ~9am
20/ar:loop stop engineering/api-speed # Stop an active loop
21```
22 
23## What It Does
24 
25### Step 1: Resolve experiment
26 
27If no experiment specified, list experiments and let user pick.
28 
29### Step 2: Select interval
30 
31If interval not provided as argument, present options:
32 
33```
34Select loop interval:
35 1. Every 10 minutes (rapid — stay and watch)
36 2. Every hour (background — check back later)
37 3. Daily at ~9am (overnight experiments)
38 4. Weekly on Monday (long-running experiments)
39 5. Monthly on 1st (slow experiments)
40```
41 
42Map to cron expressions:
43 
44| Interval | Cron Expression | Shorthand |
45|----------|----------------|-----------|
46| 10 minutes | `*/10 * * * *` | `10m` |
47| 1 hour | `7 * * * *` | `1h` |
48| Daily | `57 8 * * *` | `daily` |
49| Weekly | `57 8 * * 1` | `weekly` |
50| Monthly | `57 8 1 * *` | `monthly` |
51 
52### Step 3: Create the recurring job
53 
54Use `CronCreate` with this prompt (fill in the experiment details):
55 
56```
57You are running autoresearch experiment "{domain}/{name}".
58 
591. Read .autoresearch/{domain}/{name}/config.cfg for: target, evaluate_cmd, metric, metric_direction
602. Read .autoresearch/{domain}/{name}/program.md for strategy and constraints
613. Read .autoresearch/{domain}/{name}/results.tsv for experiment history
624. Run: git checkout autoresearch/{domain}/{name}
63 
64Then do exactly ONE iteration:
65- Review results.tsv: what worked, what failed, what hasn't been tried
66- Edit the target file with ONE change (strategy escalation based on run count)
67- Commit: git add {target} && git commit -m "experiment: {description}"
68- Evaluate: python {skill_path}/scripts/run_experiment.py --experiment {domain}/{name} --single
69- Read the output (KEEP/DISCARD/CRASH)
70 
71Rules:
72- ONE change per experiment
73- NEVER modify the evaluator
74- If 5 consecutive crashes in results.tsv, delete this cron job (CronDelete) and alert
75- After every 10 experiments, update Strategy section of program.md
76 
77Current best metric: {read from results.tsv or "no baseline yet"}
78Total experiments so far: {count from results.tsv}
79```
80 
81### Step 4: Store loop metadata
82 
83Write to `.autoresearch/{domain}/{name}/loop.json`:
84 
85```json
86{
87 "cron_id": "{id from CronCreate}",
88 "interval": "{user selection}",
89 "started": "{ISO timestamp}",
90 "experiment": "{domain}/{name}"
91}
92```
93 
94### Step 5: Confirm to user
95 
96```
97Loop started for {domain}/{name}
98 Interval: {interval description}
99 Cron ID: {id}
100 Auto-expires: 3 days (CronCreate limit)
101 
102 To check progress: /ar:ar-status
103 To stop the loop: /ar:loop stop {domain}/{name}
104 
105 Note: Recurring jobs auto-expire after 3 days.
106 Run /ar:loop again to restart after expiry.
107```
108 
109## Stopping a Loop
110 
111When user runs `/ar:loop stop {experiment}`:
112 
1131. Read `.autoresearch/{domain}/{name}/loop.json` to get the cron ID
1142. Call `CronDelete` with that ID
1153. Delete `loop.json`
1164. Confirm: "Loop stopped for {experiment}. {n} experiments completed."
117 
118## Important Limitations
119 
120- **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.
121- **One loop per experiment**: Don't start multiple loops for the same experiment.
122- **Concurrent experiments**: Multiple experiments can loop simultaneously ONLY if they're on different git branches (which they are by default — each experiment gets `autoresearch/{domain}/{name}`).
123 

Discussion