State persistence for autonomous coding. Use when saving progress, loading state, tracking features, managing checkpoints, or persisting data across sessions.
66
80%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Persistent state management for cross-session autonomous coding.
Maintains all state across sessions:
from scripts.state_tracker import StateTracker
state = StateTracker(project_dir)
await state.initialize()# Save current state
await state.save()
# Load state from files
current_state = await state.load()# Mark feature as passing (IMMUTABLE: false → true only!)
await state.update_feature("auth-001", passes=True)project/
├── feature_list.json # Feature tracking (immutable passes)
├── claude-progress.txt # Human-readable log
└── .claude/
├── master-state.json # Orchestrator state
├── autonomous-state.json # Execution state
├── autonomous-log.jsonl # Activity log
├── handoffs/
│ └── current.json # Mid-session handoff
└── checkpoints/
└── checkpoint-*.json # Rollback points{
"features": [
{
"id": "auth-001",
"description": "User registration endpoint",
"category": "authentication",
"status": "completed",
"passes": true,
"test_cases": [
"User can register with email",
"Validation errors shown"
],
"dependencies": [],
"estimated_effort": "4h",
"actual_effort": "2.5h",
"started_at": "2025-01-15T10:00:00Z",
"completed_at": "2025-01-15T12:30:00Z"
}
],
"total": 50,
"completed": 25,
"in_progress": 1,
"blocked": 0
}CRITICAL RULE: Features can ONLY transition passes: false → true. Never delete or edit features - this prevents the agent from "solving" by removing tasks.
{
"session_id": "session-20250115-100000",
"iteration": 12,
"status": "running",
"estimated_cost": 4.23,
"consecutive_failures": 0,
"current_feature": "auth-002",
"last_task": "Implement login endpoint",
"started_at": "2025-01-15T10:00:00Z",
"context_usage": 0.45
}{
"project_id": "my-project",
"objective": "Build chat application",
"sessions_used": 5,
"total_features": 50,
"features_completed": 25,
"current_phase": "implementation",
"last_handoff": "2025-01-15T12:00:00Z"
}state = StateTracker(project_dir)
await state.initialize()
# Creates default files if not exist
# Loads existing state if present# Mark feature complete
await state.update_feature(
feature_id="auth-001",
passes=True,
actual_effort="2.5h"
)
# Mark feature in progress
await state.update_feature(
feature_id="auth-002",
status="in_progress"
)checkpoint = await state.create_checkpoint(
name="before-refactor",
git_commit=True
)
# Returns checkpoint ID for rollbackawait state.restore_checkpoint("checkpoint-20250115-100000")
# Restores feature_list.json and git stateawait state.log_activity(
action="CONTINUE",
details="Implementing login endpoint",
iteration=12
)
# Appends to autonomous-log.jsonlawait state.save_handoff({
"current_feature": "auth-002",
"context_summary": "Completed auth, starting profile...",
"next_action": "Implement profile page"
})progress = await state.get_progress()
# Returns:
# completed: 25
# total: 50
# percentage: 50%
# current_feature: "auth-002"
# estimated_remaining: "4 hours"=== AUTONOMOUS CODING SESSION ===
Project: my-project
Started: 2025-01-15 10:00:00
Sessions: 5
=== PROGRESS ===
[25/50] 50% complete
=== CURRENT FEATURE ===
auth-002: Login with JWT
=== COMPLETED THIS SESSION ===
- auth-001: User registration [PASS]
- auth-002: Login endpoint [IN PROGRESS]
=== BLOCKERS ===
None
=== LAST UPDATED ===
2025-01-15 12:30:00references/STATE-SCHEMA.md - Complete state schemasreferences/FEATURE-LIFECYCLE.md - Feature state machinescripts/state_tracker.py - Core StateTracker classscripts/feature_manager.py - Feature list operationsscripts/checkpoint_store.py - Checkpoint storagescripts/progress_logger.py - Progress file generation93ed392
Also appears in
since Sep 12, 2026
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.