skills/clouder0/checkpoint/SKILL.md
Robust workflow checkpoint and resume. Handles session interruption, state recovery, and safe resume across all workflow phases.
npx skillsauth add aiskillstore/marketplace checkpointInstall 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.
Pattern for saving workflow state and resuming after interruption.
claude -rThe dotagent workflow uses file-based state that survives session interruption:
Session crash/exit
↓
State files persist on disk:
- memory/state/phase.json # Which phase we're in
- memory/state/execution.json # Task-level progress
- memory/reports/*.json # Completed phase outputs
↓
claude -r (resume session)
↓
Orchestrator reads state, continues from last checkpoint
memory/state/phase.json{"workflow_id":"string","started_at":"ISO-8601","last_updated":"ISO-8601","current_phase":"REQUIREMENTS|ARCHITECTURE|IMPLEMENTATION|VERIFICATION|REFLECTION","phase_status":"pending|in_progress|complete|failed","completed_phases":[{"phase":"REQUIREMENTS","completed_at":"ISO-8601","output":"memory/reports/demand.json"}],"user_checkpoints":[{"phase":"REQUIREMENTS","approved_at":"ISO-8601"}],"interruption_safe":true}
memory/state/execution.jsonSee executor agent for detailed schema with:
ON WORKFLOW START:
checkpoint = Read("memory/state/phase.json")
IF checkpoint exists AND checkpoint.phase_status == "in_progress":
→ This is a RESUME
→ Log: "Detected interrupted workflow: {workflow_id}"
→ Go to Step 2
ELSE:
→ Fresh start, create new checkpoint
VALIDATE:
1. Check all referenced output files exist
2. Check timestamps are reasonable (not future, not ancient)
3. Check phase progression is valid
4. Check for incomplete writes (interruption_safe flag)
IF validation fails:
→ Ask user: "State appears corrupted. Start fresh? [y/N]"
→ Archive corrupted state to memory/state/.archive/
RESUME LOGIC by phase:
REQUIREMENTS (in_progress):
- Check if demand.json exists and is valid
- If valid: advance to ARCHITECTURE
- If not: re-spawn PM agent
ARCHITECTURE (in_progress):
- Check for design files in memory/reports/designs/
- Check for final_design.json
- If final exists: advance to IMPLEMENTATION
- If designs exist but no final: spawn Roundtable
- If no designs: re-spawn Architects
IMPLEMENTATION (in_progress):
- Read execution.json
- Run executor recovery checks
- Continue execution loop
VERIFICATION (in_progress):
- Check for verification.json
- If exists: advance to REFLECTION
- If not: re-spawn QA
REFLECTION (in_progress):
- Check for reflection file
- If exists: workflow complete
- If not: re-spawn Reflector
LOG to user:
"Resuming workflow {id} from {phase} phase"
"Last activity: {timestamp}"
"Completed: {list of completed phases}"
IF current_phase requires user approval (was at checkpoint):
→ Re-confirm with user before proceeding
Always update checkpoint atomically:
# BAD: Can leave corrupted state
Write(checkpoint_file, new_state)
# GOOD: Atomic update
1. Set interruption_safe = false
2. Write to checkpoint_file.tmp
3. Rename checkpoint_file.tmp → checkpoint_file
4. Set interruption_safe = true
State: task-001 status="running", no output file
Recovery:
- Detect orphaned task
- Increment attempts
- Reset to "pending"
- Re-spawn on next loop
State: task-001 status="running", output file EXISTS
Recovery:
- Detect output file
- Read status from output
- Update state to match
State: phase=ARCHITECTURE, has designs but no final_design
Recovery:
- Detect we're at approval checkpoint
- Re-present options to user
- Don't re-run architects
State: started_at is 7 days ago
Recovery:
- Warn user about stale state
- Offer to archive and start fresh
- If continue: proceed with caution
Update checkpoint after:
When starting fresh or after completion:
Archive pattern:
memory/state/.archive/{workflow_id}_{timestamp}/
- phase.json
- execution.json
Keep last 5 archives, delete older
## Resume Check
Before starting workflow:
1. Check for existing phase.json
2. If exists and in_progress:
- Show resume prompt to user
- "Resume workflow from {phase}? [Y/n]"
3. If user confirms: load checkpoint, continue
4. If user declines: archive old state, start fresh
## On Completion
Before returning:
1. Write output file
2. Update phase.json:
- Add to completed_phases
- Advance current_phase
- Set phase_status = complete
3. Log checkpoint saved
development
Apple Human Interface Guidelines for content display components. Use this skill when the user asks about charts component, collection view, image view, web view, color well, image well, activity view, lockup, data visualization, content display, displaying images, rendering web content, color pickers, or presenting collections of items in Apple apps. Also use when the user says how should I display charts, what's the best way to show images, should I use a web view, how do I build a grid of items, what component shows media, or how do I present a share sheet. Cross-references: hig-foundations for color/typography/accessibility, hig-patterns for data visualization patterns, hig-components-layout for structural containers, hig-platforms for platform-specific component behavior.
tools
Automate HelpDesk tasks via Rube MCP (Composio): list tickets, manage views, use canned responses, and configure custom fields. Always search tools first for current schemas.
testing
Expert Haskell engineer specializing in advanced type systems, pure functional design, and high-reliability software. Use PROACTIVELY for type-level programming, concurrency, and architecture guidance.
tools
GraphQL gives clients exactly the data they need - no more, no less. One endpoint, typed schema, introspection. But the flexibility that makes it powerful also makes it dangerous. Without proper controls, clients can craft queries that bring down your server. This skill covers schema design, resolvers, DataLoader for N+1 prevention, federation for microservices, and client integration with Apollo/urql. Key insight: GraphQL is a contract. The schema is the API documentation. Design it carefully.