changelog-observer
Track development session events in a daily markdown changelog, including file changes, test results, and key decisions.
TDD-based autonomous development loop with checkpoint recovery and observability changelog
$ npx -y skills add claude-world/director-mode-lite --skill auto-loop --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/auto-loopContext preview
The summary Claude sees to decide when to auto-load this skill.
TDD-based autonomous development loop with checkpoint recovery and observability changelog
name: auto-loop description: TDD-based autonomous development loop with checkpoint recovery and observability changelog user-invocable: true
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_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 │ └───────────┴───────────────────────────────────────────────────┘
---
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
# 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.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:**
**Stop when:**
---
| 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_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
---
# Interrupt (stop after current iteration) touch .auto-loop/stop # Check status /auto-loop --status # Resume /auto-loop --resume
Use Claude Code like a Director, not a Programmer. MIT toolkit with Auto-Loop, guided setup, 27 commands, 14 agents, and 32 skills.
Track development session events in a daily markdown changelog, including file changes, test results, and key decisions.
Validate custom agent file format and structure. Use after creating or editing an agent, before committing agent changes, or when an agent fails to load.
Generate custom agent from template. Use when creating a new subagent from scratch, or scaffolding an agent file with correct frontmatter.
List all available agents (core, expert, self-evolving). Use when the user asks what agents are available or runs /agents.
Verify Claude, Codex, and Grok availability plus Director guidance, relay, agents, and skills. Audit optional hooks only when selected. Use after installation…