Log session progress and save resume state. Infers state from the conversation and Git. Triggers: 'log progress', 'session summary', 'checkpoint', 'save progress', 'end session'.
Purpose: Capture structured session progress — milestones, blockers, decisions, and resume state — by inferring from conversation and git. User confirms, Claude does the work.
Note: Claude Code's auto-memory (v2.1.59+) automatically saves basic session context. This skill is for structured progress tracking that auto-memory doesn't capture: explicit milestones, decision rationale, blocker status, and handoff state for session continuity.
Output: .shipkit/progress.json — A timeline graph artifact ideal for session history visualization.
User triggers:
Suggested after:
None required - Can start fresh.
Uses if available:
.shipkit/progress.json - Merge with existing sessionsThis skill outputs .shipkit/progress.json using the Shipkit JSON Artifact Convention.
{
"$schema": "shipkit-artifact",
"type": "work-memory",
"version": "1.0",
"lastUpdated": "2025-01-15T10:00:00Z",
"source": "shipkit-work-memory",
"summary": { "totalSessions", "currentPhase", "lastSessionDate", "activeWorkstream", "blockers", "momentum" },
"sessions": [{ "id", "date", "duration", "workstream", "phase", "accomplished", "filesModified", "decisions", "gotchas", "blockers", "nextSteps", "status" }],
"workstreams": [{ "id", "name", "status", "startDate", "sessions", "completionEstimate" }],
"resumePoint": { "lastSession", "immediateNextStep", "context", "openFiles", "relatedArtifacts" },
"timeline": [{ "date", "event", "type" }]
}
Full schema and field reference: See references/output-schema.md
Realistic example: See references/example.json
Create tasks:
TaskCreate: "Analyze session (scan conversation + git status)"TaskCreate: "Present summary for user confirmation"TaskCreate: "Write progress.json (all 10 sub-fields)"TaskCreate: "Auto-archive sessions older than 48 hours"TaskUpdate each task to in_progress when starting it, completed when done.
The progress.json write is NOT done until summary fields are recalculated and workstreams updated. The auto-archive step runs AFTER the main write — do not skip it.
Scan conversation for tool calls:
Look for Edit/Write/Read calls → files touched
Most recent Edit/Write → likely resume point
Extract from discussion:
Run git status:
git status --porcelain
→ Modified/added files = files changed this session
Build summary from inference:
Task: [Inferred from conversation topic]
Status: [in-progress | complete | blocked]
Last file: [Most recent Edit/Write target]
Modified: [Count from git status]
Next: [Extracted from "next" mentions or inferred]
Gotchas: [Errors hit, surprises discovered]
Decisions: [Choices made with rationale]
Show user what was captured:
Session Summary (inferred)
Task: Auth implementation
Status: in-progress
Last file: src/api/auth/login.ts
Modified: 4 files
Next: Add JWT generation
Gotcha: Prisma must import from @/lib/prisma
Completed:
- User schema added
- Password hashing utils
- Login endpoint started
Save to progress.json? [y/n]
If user says no or wants changes:
If user says yes:
Artifact strategy: append — Adds new entries to the existing file, preserving previous content. When the file exceeds approximately 500 lines or 50 entries, archive the oldest entries to .shipkit/archive/progress.{ISO-date}.json and continue appending to the trimmed file.
Write strategy:
.shipkit/progress.json (if exists)sessions arrayworkstreams entry for the current workstreamresumePoint with current session's resume contextsummary fields (totalSessions, lastSessionDate, blockers, momentum, etc.)lastUpdated to current ISO datetime.shipkit/progress.jsonInitialization (first session):
When no progress.json exists, create the full structure:
{
"$schema": "shipkit-artifact",
"type": "work-memory",
"version": "1.0",
"lastUpdated": "<current ISO datetime>",
"source": "shipkit-work-memory",
"summary": {
"totalSessions": 1,
"currentPhase": "<inferred>",
"lastSessionDate": "<today>",
"activeWorkstream": "<inferred>",
"blockers": 0,
"momentum": "high"
},
"sessions": [ "<new session object>" ],
"workstreams": [ "<new workstream object>" ],
"resumePoint": { "<current resume state>" },
"timeline": [ "<initial events>" ]
}
Subsequent sessions:
sessions, update workstreams, overwrite resumePointtimelinesummaryProgress saved to .shipkit/progress.json
Resume Point: src/api/auth/login.ts
Next: Add JWT generation
To resume next session, I'll read progress.json and pick up where we left off.
After saving, archive old session entries:
.shipkit/archives/progress-archive-YYYY-MM.json (same artifact envelope format)progress.json to keep it focused on recent worksummary.totalSessions to reflect only active sessionstimeline entries intact (they are lightweight and useful for visualization)Archive file structure:
{
"$schema": "shipkit-artifact",
"type": "work-memory-archive",
"version": "1.0",
"lastUpdated": "<archive date>",
"source": "shipkit-work-memory",
"summary": {
"totalSessions": 3,
"dateRange": "2025-01-01 to 2025-01-13"
},
"sessions": [ "<archived session objects>" ]
}
Notify:
Archived 3 old sessions to archives/progress-archive-2025-01.json
Look for patterns in conversation:
Priority order:
Look for:
Look for:
Look for:
Look for:
When session starts and progress.json exists:
Claude (via master or session hook) should:
.shipkit/progress.jsonresumePoint objectResume Point from last session:
Task: Auth implementation (workstream: Authentication flow)
Last file: src/middleware/auth.ts
Next: Add rate limiting to auth endpoints
Context: JWT auth is working, need to harden before deployment
Continue from here?
Claude does the work:
User just confirms:
Next session is easy:
resumePoint in progress.json has everything neededDashboard-ready data:
summary object powers dashboard cards at a glancetimeline array enables visual session history graphsworkstreams track feature-level progress across sessions| File | Purpose |
|------|---------|
| .shipkit/progress.json | Existing progress (if any) |
| Conversation history | Tool calls, discussion |
| Git status | Modified files |
| File | Strategy | Description |
|------|----------|-------------|
| .shipkit/progress.json | Overwrite resumePoint, append to sessions/timeline, recalculate summary | Primary work memory artifact |
| .shipkit/archives/progress-archive-YYYY-MM.json | Create/append | Archived sessions older than 48 hours |
Any development work:
resumePoint from progress.jsonGuardrails Check: Before moving to next task, verify:
.shipkit/?/shipkit-work-memory for continuity.Natural capabilities (no skill needed): Implementation, debugging, testing, refactoring, code documentation.
Suggest skill when: User needs to make decisions, create persistence, or check project status.
<!-- /SECTION:after-completion -->$schema, type, version, lastUpdated, source, summary)sessions arrayresumePoint overwritten with current statetimeline updated with session eventsworkstreams updated or createdsummary recalculatednpx skills add stefan-stepzero/shipkit-work-memory下载完整 Skill 目录,包含 SKILL.md 及所有相关文件
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer