State Management Skill
This skill handles loading, saving, and validating workflow state.
State File Path
.claude/claude-bot.local.md
Reading State
To read the current state:
- •Check if file exists
- •Parse YAML frontmatter
- •Validate structure
- •Return state object
yaml
# State returned as object with these fields
workflow_state:
version: "1.0"
status: "active|paused|completed|blocked"
current_phase: "plan|explore|design|implement|validate|test|document|complete"
started_at: "ISO timestamp"
updated_at: "ISO timestamp"
goal:
original_request: "string"
refined_requirements: []
accepted: true
phases:
plan: { status, tasks, blockers }
explore: { status, tasks, blockers }
design: { status, tasks, blockers }
implement: { status, tasks, blockers }
validate: { status, tasks, blockers }
test: { status, tasks, blockers }
document: { status, tasks, blockers }
decisions_made: []
agent_history: []
next_actions: []
Writing State
To save state:
- •Update state object
- •Convert to YAML
- •Write to .local.md with frontmatter
markdown
--- workflow_state: version: "1.0" status: "active" current_phase: "plan" started_at: "2025-01-13T10:00:00Z" updated_at: "2025-01-13T10:05:00Z" goal: original_request: "Add JWT auth" refined_requirements: [] accepted: true # ... rest of state --- # Claude-Bot State This file contains the persistent state for the Claude-Bot autonomous workflow. Do not edit manually - use /bot-status, /bot-resume, or /bot-stop commands.
Validation
A valid state must have:
- •
workflow_statewithstatusandcurrent_phase - •
goalwithoriginal_request - •
phaseswith entries for each phase
State Transitions
Valid status transitions:
- •
active→paused(user stops) - •
active→blocked(blocker detected) - •
paused→active(resume) - •
blocked→active(resolution provided) - •
active→completed(all phases done)
Valid phase transitions:
- •Must complete current phase before moving to next
- •Can resume from any non-completed phase
Utility Functions
Check for Active Workflow
bash
# Returns true/false
if [ -f ".claude/claude-bot.local.md" ]; then
STATUS=$(grep "status:" .claude/claude-bot.local.md | head -1)
if [[ "$STATUS" =~ (active|paused|blocked) ]]; then
echo "true"
fi
fi
echo "false"
Get Current Phase
bash
# Returns phase name
awk '/^current_phase:/ {print $2}' .claude/claude-bot.local.md
Update Single Field
bash
# Update status sed -i '' 's/^status: .*/status: paused/' .claude/claude-bot.local.md
Backup
Consider creating backups before major changes:
code
.claude/claude-bot.local.md.backup
Cleanup
When workflow completes, consider archiving rather than deleting:
code
.claude/claude-bot.completed.2025-01-13.md