skills/auto-loop/SKILL.md
TDD-based autonomous development loop with checkpoint recovery and observability changelog
npx skillsauth add claude-world/director-mode-lite auto-loopInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Execute a TDD-based autonomous development loop with full observability.
# 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
┌───────────────────────────────────────────────────────────────┐
│ TDD Iteration │
├───────────┬───────────────────────────────────────────────────┤
│ RED │ Write failing test for next AC │
│ │ → Auto-logged: file_created, test_fail │
├───────────┼───────────────────────────────────────────────────┤
│ GREEN │ Write implementation to make test pass │
│ │ → Auto-logged: file_created/modified, 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 │
└───────────┴───────────────────────────────────────────────────┘
When user runs /auto-loop "<request>":
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 |
# 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
cat > "$CHECKPOINT" << EOF
{
"request": "$ARGUMENTS",
"current_iteration": 0,
"max_iterations": 20,
"status": "in_progress",
"started_at": "$(date -u +%Y-%m-%dT%H:%M:%SZ)",
"acceptance_criteria": [],
"last_test_result": null,
"files_changed": []
}
EOF
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 }
]
}
┌─────────────────────────────────────────────────────────────┐
│ 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:
done: trueStop when:
max_iterations reached.auto-loop/stop file exists| 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) |
All events are automatically logged via PostToolUse hooks:
| Event | Trigger | Hook |
|-------|---------|------|
| file_created | Write tool | log-file-change.sh |
| file_modified | 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
# 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"
development
Complete 5-step development workflow
tools
Test automation specialist for running tests and ensuring coverage
development
Test-Driven Development (TDD Red-Green-Refactor)
testing
Conventional Commits with quality checks