Saves complete session state to STATUS.json for seamless continuation across conversations. Captures git context, in-progress tasks, service status, focus area, and next actions. Use at the end of work sessions, before context limits, or when switching to a different task. Do NOT use mid-task or for quick questions - the overhead is only worthwhile when you actually need to resume later.
Inherits all available tools
Additional assets for this skill
This skill inherits all available tools. When active, it can use any tool Claude has access to.
scripts/capture_state.pytemplates/STATUS.json.templateworkflows/capture-workflow.jsonSave current session state to STATUS.json for seamless continuation in future sessions.
Core principle: Future Claude should have everything needed to continue without asking.
Trigger: End of work session, major milestones, before context limits
{
"lastUpdate": "2025-01-15T10:30:00Z",
"project": "project-name",
"sessionType": "Fresh | Resume | Continuation",
"git": {
"branch": "feature/current-work",
"lastCommit": "abc123 - feat: add feature X",
"uncommittedFiles": 3,
"stagedFiles": 1
},
"tasks": {
"inProgress": ["Task being worked on"],
"completed": ["Recently completed task"],
"blocked": ["Task blocked by X"]
},
"services": {
"devServer": {"running": true, "port": 3000},
"database": {"running": true, "port": 5432}
},
"context": {
"focusArea": "Working on authentication flow",
"blocker": "Waiting for API response format clarification",
"nextAction": "Implement token refresh logic",
"keyDecisions": ["Using JWT for auth", "Session expiry: 1 hour"]
},
"projectData": {
"testStatus": "47 passing, 2 failing",
"buildStatus": "passing",
"lintErrors": 0
}
}
# Get current branch
git branch --show-current
# Get last commit
git log -1 --format="%h - %s"
# Count uncommitted changes
git status --porcelain | wc -l
# Get staged files
git diff --cached --name-only | wc -l
From TodoWrite:
# Check if dev server is running
curl -s http://localhost:3000/health || echo "not running"
# Check database
pg_isready -h localhost -p 5432 || echo "not running"
Capture:
# Run tests
npm test 2>&1 | tail -1
# Check build
npm run build 2>&1 | tail -1
# Run lint
npm run lint 2>&1 | tail -1
Write to .claude/STATUS.json (or project root if no .claude directory)
Automatic triggers:
Manual triggers:
{
"lastUpdate": "2025-01-15T14:30:00Z",
"project": "my-app",
"sessionType": "Resume",
"git": {
"branch": "feature/user-auth",
"lastCommit": "a7f3c2e - feat: add login form component",
"uncommittedFiles": 2,
"stagedFiles": 0
},
"tasks": {
"inProgress": ["Implement password reset flow"],
"completed": ["Create login form", "Add form validation"],
"blocked": []
},
"services": {
"devServer": {"running": true, "port": 3000},
"database": {"running": true, "port": 5432}
},
"context": {
"focusArea": "Authentication system",
"blocker": null,
"nextAction": "Add forgot password email template",
"keyDecisions": ["Using nodemailer for emails", "Password reset expires in 1 hour"]
},
"projectData": {
"testStatus": "45 passing, 0 failing",
"buildStatus": "passing",
"lintErrors": 0
}
}
Pairs with:
Hook integration: