Auto-Loop
SkillMonitoring & opsTDD-based autonomous development loop with checkpoint recovery and observability changelog
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Auto-Loop skill
What this skill tells your AI
The instructions your AI receives, as published by claude-world/director-mode-lite in skills/auto-loop/SKILL.md and read by ahel’s review.
Execute a TDD-based autonomous development loop with full observability.
Usage
# Start new task
/auto-loop "Implement user login"
# With acceptance criteria
/auto-loop "Implement authentication
Acceptance Criteria:
- [ ] Login form (email + password)
- [ ] JWT token generation
- [ ] Error handling
"
# Resume interrupted session
/auto-loop --resume
# Force restart (clear old state)
/auto-loop --force "New task"
# Check status
/auto-loop --status
# With iteration limit
/auto-loop "Task" --max-iterations 15
How It Works
┌───────────────────────────────────────────────────────────────┐
│ TDD Iteration │
├───────────┬───────────────────────────────────────────────────┤
│ RED │ Write failing test for next AC │
│ │ → Auto-logged: file_write, test_fail │
├───────────┼───────────────────────────────────────────────────┤
│ GREEN │ Write implementation to make test pass │
│ │ → Auto-logged: file_write/edit, test_pass │
├───────────┼───────────────────────────────────────────────────┤
│ REFACTOR │ Improve code quality (no behavior change) │
│ │ → Use code-reviewer agent for suggestions │
├───────────┼───────────────────────────────────────────────────┤
│ VALIDATE │ Run full test suite + linter │
│ │ → Auto-logged: test_pass/fail │
├───────────┼───────────────────────────────────────────────────┤
│ COMMIT │ Commit changes with descriptive message │
│ │ → Auto-logged: commit │
├───────────┼───────────────────────────────────────────────────┤
│ DECIDE │ Check AC completion → continue or complete │
└───────────┴───────────────────────────────────────────────────┘
Execution
When user runs /auto-loop "<request>":
1. State Detection (Conflict Prevention)
STATE_DIR=".auto-loop"
CHECKPOINT="$STATE_DIR/checkpoint.json"
# Check for existing in-progress session
if [ -f "$CHECKPOINT" ]; then
status=$(jq -r '.status // "unknown"' "$CHECKPOINT" 2>/dev/null || echo "unknown")
iteration=$(jq -r '.current_iteration // 0' "$CHECKPOINT" 2>/dev/null || echo "0")
if [ "$status" == "in_progress" ]; then
echo "⚠️ Found interrupted session at iteration #$iteration"
echo "Options:"
echo " /auto-loop --resume → Continue"
echo " /auto-loop --force \"...\" → Start fresh"
exit 1
fi
fi
Behavior Matrix:
| Existing State | Command | Action |
|---|---|---|
| None | /auto-loop "task" | Start new |
completed | /auto-loop "task" | Archive & start new |
in_progress | /auto-loop "task" | Block - prompt user |
in_progress | /auto-loop --resume | Continue |
in_progress | /auto-loop --force "task" | Archive & start new |
2. Initialize
# Archive old changelog if > 100 lines
CHANGELOG_DIR=".director-mode"
CHANGELOG="$CHANGELOG_DIR/changelog.jsonl"
if [ -f "$CHANGELOG" ] && [ $(wc -l < "$CHANGELOG") -gt 100 ]; then
mv "$CHANGELOG" "$CHANGELOG_DIR/changelog.$(date +%Y%m%d_%H%M%S).jsonl"
fi
# Create state directories
mkdir -p "$STATE_DIR" "$CHANGELOG_DIR"
# Initialize checkpoint
# Build with jq so multiline requests or embedded double quotes stay valid JSON
# (a raw heredoc would break on the quoted acceptance-criteria usage above).
jq -n --arg req "$ARGUMENTS" \
'{request: $req, current_iteration: 0, max_iterations: 20, status: "in_progress", started_at: (now | todate), acceptance_criteria: [], last_test_result: null, files_changed: []}' \
> "$CHECKPOINT"
# acceptance_criteria stays empty here; the parse step below fills it in.
3. Parse Acceptance Criteria
Input:
"Implement authentication
Acceptance Criteria:
- [ ] Login form
- [ ] JWT token
"
Parsed:
{
"acceptance_criteria": [
{ "id": 1, "description": "Login form", "done": false },
{ "id": 2, "description": "JWT token", "done": false }
]
}
4. DECIDE - Completion Check
┌─────────────────────────────────────────────────────────────┐
│ DECIDE - Iteration #3 │
├─────────────────────────────────────────────────────────────┤
│ [x] 1. Login form ← test passing │
│ [x] 2. JWT token ← test passing │
│ [ ] 3. Error handling ← NO TEST YET │
├─────────────────────────────────────────────────────────────┤
│ Decision: 2/3 complete → CONTINUE │
└─────────────────────────────────────────────────────────────┘
Complete when:
- All AC marked
done: true - All tests passing
Stop when:
max_iterationsreached.auto-loop/stopfile exists
Flags
| Flag | Description |
|---|---|
--resume | Continue interrupted session |
--force | Clear old state, start fresh |
--status | Show current session status |
--max-iterations N | Set iteration limit (default: 20) |
Observability
All events are automatically logged via PostToolUse hooks:
| Event | Trigger | Hook |
|---|---|---|
file_write | Write tool | log-file-change.sh |
file_edit | Edit tool | log-file-change.sh |
test_pass/fail | Bash (test) | log-bash-event.sh |
commit | Bash (git commit) | log-bash-event.sh |
Query with /changelog:
/changelog # Recent events
/changelog --summary # Statistics
/changelog --type test # Filter by type
Stop / Resume
# Interrupt (stop after current iteration)
touch .auto-loop/stop
# Check status
/auto-loop --status
# Resume
/auto-loop --resume
# Force restart
/auto-loop --force "New task"
Related
- /changelog - View development events
- code-reviewer - Code quality review
- debugger - Error analysis
- test-runner - Test automation
Signals
- GitHub stars
- 82
- Forks
- 11
- Last commit
- Aug 2026
Advanced
- Catalog kind
- skill
- Gateway key
auto-loop- Source
- github.com/claude-world/director-mode-lite