Tracks micro-sprint completion state and progress for Google Sheets operations
Tracks and manages micro-sprint completion state for Google Sheets operations within CFN Loop iterations. Provides persistent state management enabling agents to resume operations after interruptions and coordinate work across multiple sprint phases.
Google Sheets operations often require multiple sequential steps (schema creation, data population, formula application). Without persistent progress tracking, agents cannot resume after failures or coordinate work between sprints. This skill enables micro-sprint checkpointing with recovery capabilities.
track-progress.shRequired Parameters:
--action: read, write, update, reset (default: read)--state-file: Path to progress state file (default: .claude/cfn-extras/.gs-progress-state.json)Optional Parameters (for write/update):
--completed: JSON array of completed sprints, e.g., ["schema_001","data_001"]--current: Current active sprint identifier, e.g., formula_001--remaining: JSON array of remaining sprints, e.g., ["formula_002"]--status: State status (in_progress, completed, blocked, paused)--metadata: Additional JSON metadata to track--task-id: Task ID for coordination contextUsage:
# Read current progress state
./.claude/cfn-extras/skills/google-sheets-progress/track-progress.sh \
--action read
# Initialize new sprint tracking
./.claude/cfn-extras/skills/google-sheets-progress/track-progress.sh \
--action write \
--completed '[]' \
--current schema_001 \
--remaining '["data_001","formula_001"]' \
--status in_progress
# Update after completing a sprint
./.claude/cfn-extras/skills/google-sheets-progress/track-progress.sh \
--action update \
--completed '["schema_001"]' \
--current data_001 \
--remaining '["formula_001"]'
# Reset state for retry
./.claude/cfn-extras/skills/google-sheets-progress/track-progress.sh \
--action reset
JSON structure managed by skill:
{
"task_id": "cfn-task-20251118-001",
"sprint_sequence": [
"schema_001",
"data_001",
"formula_001"
],
"completed": ["schema_001"],
"current": "data_001",
"remaining": ["formula_001"],
"status": "in_progress",
"timestamps": {
"created": "2025-11-18T10:30:00Z",
"last_updated": "2025-11-18T10:45:30Z",
"started": "2025-11-18T10:30:00Z",
"completed": null
},
"metrics": {
"total_sprints": 3,
"completed_count": 1,
"remaining_count": 1,
"progress_percentage": 33.33,
"estimated_completion": "2025-11-18T11:15:00Z"
},
"metadata": {
"spreadsheet_id": "abc123def456",
"sheet_name": "Operations",
"retry_count": 0,
"last_error": null
}
}
The skill enforces:
[a-z]+_[0-9]{3}in_progress, completed, blocked, pausedAfter each micro-sprint completes:
# Initialize progress for 3-phase operation
./.claude/cfn-extras/skills/google-sheets-progress/track-progress.sh \
--action write \
--completed '[]' \
--current schema_001 \
--remaining '["data_001","formula_001"]' \
--status in_progress \
--task-id "$TASK_ID" \
--metadata "{\"spreadsheet_id\": \"$SHEET_ID\", \"source\": \"loop3_agent\"}"
# After schema phase completes
./.claude/cfn-extras/skills/google-sheets-progress/track-progress.sh \
--action update \
--completed '["schema_001"]' \
--current data_001 \
--remaining '["formula_001"]'
# After data phase completes
./.claude/cfn-extras/skills/google-sheets-progress/track-progress.sh \
--action update \
--completed '["schema_001","data_001"]' \
--current formula_001 \
--remaining '[]'
Read progress for validation context:
# Check what phases are complete
PROGRESS=$(./.claude/cfn-extras/skills/google-sheets-progress/track-progress.sh --action read)
COMPLETED=$(echo "$PROGRESS" | jq -r '.completed | length')
TOTAL=$(echo "$PROGRESS" | jq -r '.metrics.total_sprints')
echo "Validator inspecting: $COMPLETED of $TOTAL sprints completed"
Use progress to determine which Loop 3 agents to spawn:
# Get current progress
PROGRESS=$(./.claude/cfn-extras/skills/google-sheets-progress/track-progress.sh --action read)
CURRENT_SPRINT=$(echo "$PROGRESS" | jq -r '.current')
REMAINING=$(echo "$PROGRESS" | jq -r '.remaining | length')
# Only spawn agents if there's remaining work
if [ "$REMAINING" -gt 0 ]; then
echo "Spawning agents for remaining $REMAINING sprints"
# Coordinator logic
fi
The script outputs structured JSON:
{
"success": true,
"action": "read",
"confidence": 0.98,
"state": {
"completed": ["schema_001"],
"current": "data_001",
"remaining": ["formula_001"],
"status": "in_progress"
},
"metrics": {
"progress_percentage": 33.33,
"execution_time_ms": 45
},
"deliverables": [".claude/cfn-extras/.gs-progress-state.json"],
"errors": []
}
Skill handles these error scenarios:
State files are stored in:
.claude/cfn-extras/.gs-progress-state.json.claude/cfn-extras/.gs-progress-${TASK_ID}.json.backups/gs-progress/[timestamp]_[hash].json--action update for multi-field changes--task-id to scope state to specific tasks--action reset at completion to prepare for next taskβ Partial state updates: Updating only some fields manually β File direct manipulation: Editing JSON file directly instead of using script β Stale state assumptions: Not reading current state before updating β Missing task context: Not including task-id for multi-task scenarios β No validation: Assuming state is always well-formed
The skill includes comprehensive test coverage:
# Run all tests
./.claude/cfn-extras/skills/google-sheets-progress/test.sh
# Run specific test
./.claude/cfn-extras/skills/google-sheets-progress/test.sh --test write_action
# Validate dependencies
./.claude/cfn-extras/skills/google-sheets-progress/validate.sh
.claude/commands/CFN_LOOP_TASK_MODE.md.claude/skills/cfn-automatic-memory-persistence/SKILL.md.claude/skills/cfn-coordination/SKILL.mddocs/AGENT_OUTPUT_STANDARDS.md