checkpoint
Skill79 starsChanged 4 months agoMITView on GitHub
Save session progress by committing changes, pushing to remote, creating or updating a pull request, persisting decisions and patterns to memory layers, compiling session briefing, and archiving completed features. Use when saving work, creating a PR, preserving session state, or manually checkpointing progress.
- Commits and pushes
91 other projects use a version of this.
Adopted by
Most recently taken up by
- TheLunchTrae/claude-code-configstheir own version, first seen Nov 8, 2026
- codewithmukesh/dotnet-claude-kittheir own version, first seen Nov 8, 2026
- pedrohcgs/claude-code-my-workflowtheir own version, first seen Nov 7, 2026
- flonat/flonat-researchtheir own version, first seen Nov 3, 2026
- jboczek/skillstheir own version, first seen Nov 1, 2026
- AhmedMerza/claude-skillstheir own version, first seen Nov 1, 2026
Used with
Projects with it also use aside, spinoff and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
TheKREATORSSkillaside
Answer a quick side question without interrupting or losing context from the current task. Resume work automatically after answering.
Also in 3 projects that use this
AhmedMerzaSkillspinoff
After a branch is finished, harvest the work it made CHEAP — the helper you wrote that four other sites now hand-roll, the plumbing that turned a deferred feature small, the pattern that just split the codebase in two. Produces a follow-up backlog (0–3 candidates, feeding /issue), NEVER commits on the current branch. Invoke with /spinoff at the tail of the chain — after /fix-review has settled the review findings, before the MR merges — or when the user asks \"what else should we do while we're here / what did this unlock / anything to follow up on\". This is ship-check's optional twin — that finds what's MISSING and blocks the merge; this finds what's now CHEAP and blocks nothing. Restraint-gated: \"nothing spun off\" is the common and correct answer, and a finding that would have been equally valid before this branch is not a finding.
Also in 3 projects that use this
TheKREATORSSkillinstinct-export
Export instincts from project/global scope to a file
Also in 3 projects that use this
seek888Skillopen-gstack-browser
Launch GStack Browser — AI-controlled Chromium with the sidebar extension baked in. Opens a visible browser window where you can watch every action in real time. The sidebar shows a live activity feed and chat. Anti-bot stealth built in. Use when asked to "open gstack browser", "launch browser", "connect chrome", "open chrome", "real browser", "launch chrome", "side panel", or "control my browser". Voice triggers (speech-to-text aliases): "show me the browser".
Also in 5 projects that use this
diego-tobalinaSkillbuild-fix
Fix build and compilation errors systematically. Run when build fails.
Also in 5 projects that use this
seek888Skilldesign-html
Design finalization: generates production-quality Pretext-native HTML/CSS. Works with approved mockups from /design-shotgun, CEO plans from /plan-ceo-review, design review context from /plan-design-review, or from scratch with a user description. Text actually reflows, heights are computed, layouts are dynamic. 30KB overhead, zero deps. Smart API routing: picks the right Pretext patterns for each design type. Use when: "finalize this design", "turn this into HTML", "build me a page", "implement this design", or after any planning skill. Proactively suggest when user has approved a design or has a plan ready. (gstack) Voice triggers (speech-to-text aliases): "build the design", "code the mockup", "make it real".
Also in 5 projects that use this
- +2 more from TheKREATORS
- +2 more from seek888
Other versions91 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 91
- pedrohcgs/claude-code-my-workflow★ 1.7ksame name
- codewithmukesh/dotnet-claude-kit★ 808same name
- leonvanzyl/agentic-coding-starter-kit★ 447same name
- myICOR/myPKA★ 319same name
- hsantanna88/clo-author★ 262same name
- hugosantanna/clo-author★ 262same name
- sterlingcrispin/claude_slash_commands★ 200same name
- flonat/flonat-research★ 150same name
- josipjelic/orchestrated-project-template★ 96same name
- svy04/ballast★ 73same name
81 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
The file
Show its rules and text
We split this skill into the rules it gives an agent
48 rules. 0 are common, 24 are distinctive, and 24 are very specific to this project.
0
Common
Most of the 85 edited versions we read keep these.
24
Distinctive
This author's own choices. Worth a look.
24
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 11
Create a checkpoint of the current session: commit, push, PR, memory persistence, and feature archival.
- Very specific: line 40
Write a concept file dec-{NNN}-{slug}.md (next NNN from existing files.
- Distinctive: line 67
Update based on work done this session:
- Very specific: line 68
Add new file paths to structure.entryPoints, structure.components, etc.
- Very specific: line 69
Update patterns.naming with discovered naming conventions
- Very specific: line 70
Update patterns.fileOrganization with discovered structures
- Very specific: line 71
Update patterns.codeStyle with observed patterns
- Very specific: line 87
Write pat-{NNN}-{slug}.md with frontmatter (type: Pattern, id, title) and body # {pattern} + ## Source
- Distinctive: line 122
Keep under 120 lines (~1500 tokens) to avoid context bloat
- Distinctive: line 140
Add to queue for manual review (don't save)
- Distinctive: line 158
Run build/test commands appropriate for the project
- Distinctive: line 159
Check for errors and fix if possible
- Distinctive: line 167
Check loop state to determine commit prefix:
- Very specific: line 168
Read session-scoped loop state: .claude-harness/sessions/${CLAUDE_SESSION_ID}/loop-state.json
- Very specific: line 169
If type is "fix": Use fix({linkedTo.featureId}): <description> prefix
- Very specific: line 170
If type is "feature" or undefined: Use feat({feature-id}): <description> prefix
- Distinctive: line 171
Write descriptive commit message summarizing the work
- Very specific: line 177
If on a feature/fix branch (gh CLI must be authenticated -- check gh auth status on failure):
- Distinctive: line 178
Get GitHub owner/repo: use the cached values from the session context (injected at SessionStart).
- Distinctive: line 179
Check loop state type to determine if this is a feature or fix
- Very specific: line 180
Check if a PR exists for this branch: gh pr list --head {branch} --json number,url
- Distinctive: line 181
If no PR exists, create one:
- Very specific: line 200
Update PR description with latest progress: gh pr edit {number} --body "{updated body}"
- Very specific: line 201
Add comment summarizing checkpoint changes: gh pr comment {number} --body "..."
- Distinctive: line 202
Update labels based on current status
- Very specific: line 203
Check PR status: gh pr view {number} --json state,mergeable,reviewDecision,statusCheckRollup
- Distinctive: line 221
Commit hash and push status
- Distinctive: line 227
If an agentic loop just completed successfully:
- Very specific: line 229
If status is "completed" and matches current feature/fix:
- Very specific: line 231
Call TaskList to find the feature's tasks
- Distinctive: line 260
If loop is still in progress, preserve state for session continuity
- Distinctive: line 261
Optional session cleanup: If feature is archived and session is complete, the session directory can be removed (it's gitignored anyway.
- Distinctive: line 270
If any completed features exist:
- Very specific: line 271
Read ${ARCHIVE_FILE} (create if missing with {"version":3,"archived":[],"archivedFixes":[]})
- Distinctive: line 272
Add archivedAt timestamp to each completed feature
- Distinctive: line 274
Remove completed features from features array
- Distinctive: line 279
If any completed fixes exist:
- Distinctive: line 280
Add archivedAt timestamp to each completed fix
- Distinctive: line 282
Remove completed fixes from fixes array
- Very specific: line 285
Write updated ${FEATURES_FILE} and ${ARCHIVE_FILE}
- Distinctive: line 294
If status is "completed":
- Very specific: line 295
Write a Success concept to ${MEMORY_DIR}/successes/ (suc-{NNN}-{slug}.md, type: Success.
- Distinctive: line 296
If status is "failed":
- Very specific: line 297
Write a Failure concept to ${MEMORY_DIR}/failures/ (fail-{NNN}-{slug}.md, type: Failure.
- Very specific: line 299
If sharedState.discoveredPatterns has new entries:
- Very specific: line 300
Write Pattern concepts to ${MEMORY_DIR}/patterns/ (skip ones already listed in patterns/index.md)
- Very specific: line 301
If architecturalDecisions has entries:
- Very specific: line 302
Write Decision concepts to ${MEMORY_DIR}/decisions/
“Common” is measured: kept by at least 6 in 10 of the 85 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Checkpoint - Save Session Progress
Create a checkpoint of the current session: commit, push, PR, memory persistence, and feature archival.
Arguments: $ARGUMENTS
Session ID: ${CLAUDE_SESSION_ID} — session state lives in .claude-harness/sessions/${CLAUDE_SESSION_ID}/.
Phase 0: Set Paths
- Set path variables:
FEATURES_FILE=".claude-harness/features/active.json"ARCHIVE_FILE=".claude-harness/features/archive.json"MEMORY_DIR=".claude-harness/memory/"PROGRESS_FILE=".claude-harness/claude-progress.json"SESSION_DIR=".claude-harness/sessions/${CLAUDE_SESSION_ID}/"
Phase 1: Update Progress
- Update
${PROGRESS_FILE}with:- Summary of what was accomplished this session
- Any blockers encountered
- Recommended next steps
- Update lastUpdated timestamp
Phase 1.6: Persist to Memory Layers (OKF bundle)
Memory layers are an OKF v0.1 bundle at ${MEMORY_DIR}: one markdown concept file per entry with YAML frontmatter (required type field), plus an index.md listing per directory. See schemas/okf-memory.md for the format.
1.6. Persist session decisions to ${MEMORY_DIR}/decisions/:
- For each key decision made during this session:
- Write a concept file
dec-{NNN}-{slug}.md(next NNN from existing files; slug = lowercased decision, non-alphanumerics as hyphens, <=48 chars):--- type: Decision id: dec-{NNN} title: "{what was decided, <=80 chars}" timestamp: {ISO timestamp} feature: {feature-id} --- # {full decision text} ## Rationale {why this decision was made} ## Alternatives - {other options considered} ## Impact {files or areas affected} - Append
* [{id}: {title}](/decisions/{filename}) - {short description}to${MEMORY_DIR}/decisions/index.md
- Write a concept file
- Rolling window: if more than 50 decision concepts exist, delete the oldest files and their index lines (FIFO)
- Report: "Recorded {N} decisions to episodic memory"
1.7. Update semantic memory with discovered patterns:
- Read
${MEMORY_DIR}/semantic/architecture.json - Update based on work done this session:
- Add new file paths to
structure.entryPoints,structure.components, etc. - Update
patterns.namingwith discovered naming conventions - Update
patterns.fileOrganizationwith discovered structures - Update
patterns.codeStylewith observed patterns
- Add new file paths to
- Set
lastUpdatedto current timestamp - Write updated file
1.8. Update semantic entities (if new concepts discovered):
- Read
${MEMORY_DIR}/semantic/entities.json - For new concepts/entities discovered:
- Append entry with name, type, location, relationships
- Write updated file
1.9. Persist reusable patterns to ${MEMORY_DIR}/patterns/:
- Extract reusable patterns from this session:
- Code patterns that worked well
- Naming conventions used
- Project-specific rules learned
- For each NEW pattern (check
${MEMORY_DIR}/patterns/index.mdto avoid duplicates):- Write
pat-{NNN}-{slug}.mdwith frontmatter (type: Pattern,id,title) and body# {pattern}+## Source - Append a matching
* [...](...)line to${MEMORY_DIR}/patterns/index.md
- Write
- Report: "Updated procedural patterns"
Phase 1.9.5: Compile Session Briefing
1.9.5. Write persistent session briefing to .claude-harness/session-briefing.md:
- The SessionStart hook points Claude at this file on every new session
- It ensures Claude is immediately aware of project state on new sessions without manual
/start - Compile from current state -- read features, decisions, failures, rules, and status:
# Session Briefing
Last updated: {ISO timestamp}
## Active Features
- {id}: {name} [{status}]
{one-line description}
Acceptance: {N} scenarios | Files: {relatedFiles summary}
## Recent Decisions (last 5)
- {decision} ({feature}, {date})
## Approaches to AVOID
- {approach} -> {rootCause} ({feature})
## Learned Rules
- {title}: {description}
## Current Status
Last checkpoint: {commit message summary}
Branch: {current branch}
Next steps: {immediate actionable items}- Keep under 120 lines (~1500 tokens) to avoid context bloat
- Source data:
${FEATURES_FILE}plus the OKF memory bundle (${MEMORY_DIR}/decisions/,${MEMORY_DIR}/failures/,${MEMORY_DIR}/rules/concept files) -- or runpython3 "${CLAUDE_PLUGIN_ROOT}/scripts/compile-briefing.py" .claude-harness --writeto generate it - This file is git-tracked and persists across sessions,
/clear, and machine reboots
Phase 1.10: Auto-Reflect on User Corrections
1.10. Auto-reflect is always enabled:
- This phase always runs to capture learnings from the session
- High-confidence rules are auto-saved; lower-confidence go to review queue
1.11. Run reflection with auto mode:
- Execute the reflection logic (auto mode):
- Scan conversation for user correction patterns
- Filter for high-confidence corrections only
- Skip interactive approval (auto mode)
- For corrections with confidence >=
minConfidenceForAuto:- Auto-approve and save as a Rule concept: write
${MEMORY_DIR}/rules/rule-{NNN}-{slug}.md(frontmattertype: Rule,id,title,timestamp,active: true; body =# {title}+ description) and add it to${MEMORY_DIR}/rules/index.md
- Auto-approve and save as a Rule concept: write
- For lower confidence corrections:
- Add to queue for manual review (don't save)
1.12. Report auto-reflect results (if rules extracted):
AUTO-REFLECTION
High-confidence rules auto-saved: {N}
- {rule title}
- {rule title}
Lower-confidence (manual review needed): {N}
(Low-confidence rules queued for next checkpoint review)1.13. If no corrections detected:
- Continue silently to Phase 2 (no noise if nothing found)
Phase 2: Build & Test
- Run build/test commands appropriate for the project
- Check for errors and fix if possible
- Report any failures
Phase 3: Commit & Push
- ALWAYS commit changes:
- Stage harness state files first:
git add .claude-harness/(sessions/ and working/ are gitignored, so only persistent state is staged) - Stage all other modified files:
git add -A(except secrets/env files) - Check loop state to determine commit prefix:
- Read session-scoped loop state:
.claude-harness/sessions/${CLAUDE_SESSION_ID}/loop-state.json - If
typeis "fix": Usefix({linkedTo.featureId}): <description>prefix - If
typeis "feature" or undefined: Usefeat({feature-id}): <description>prefix
- Read session-scoped loop state:
- Write descriptive commit message summarizing the work
- For fixes, include:
Fixes #{fix-issue-number}andRelated to #{original-issue-number} - Push with
git push -u origin {branch}
- Stage harness state files first:
Phase 4: PR Management
If on a feature/fix branch (
ghCLI must be authenticated -- checkgh auth statuson failure):- Get GitHub owner/repo: use the cached values from the session context (injected at SessionStart); only if absent, parse once from
git remote get-url origin - Check loop state type to determine if this is a feature or fix
- Check if a PR exists for this branch:
gh pr list --head {branch} --json number,url - If no PR exists, create one:
gh pr create --title "{title}" --body "{body}" --label "{labels}"- Title follows conventional commits:
- For features:
feat: <description> - For fixes:
fix: <description> refactor: <description>for refactoringdocs: <description>for documentation
- For features:
- Body should include:
- Link to issue: "Closes #XX" or "Fixes #XX"
- For fixes: Also reference original feature issue
- Summary of changes (bullet points)
- Testing instructions
- Breaking changes (if any)
- Labels:
- For features: Copy from linked issue + add
status:ready-for-review - For fixes: Add
bugfix+linked-to:{feature-id}+status:ready-for-review
- For features: Copy from linked issue + add
- Title follows conventional commits:
- If PR exists:
- Update PR description with latest progress:
gh pr edit {number} --body "{updated body}" - Add comment summarizing checkpoint changes:
gh pr comment {number} --body "..." - Update labels based on current status
- Update PR description with latest progress:
- Check PR status:
gh pr view {number} --json state,mergeable,reviewDecision,statusCheckRollup - Update tracking:
- For features: Update
${FEATURES_FILE}features array with prNumber - For fixes: Update
${FEATURES_FILE}fixes array with prNumber
- For features: Update
- Report PR URL and status
PR Title Convention (Conventional Commits):
feat:New feature (triggers MINOR version bump)fix:Bug fix (triggers PATCH version bump)refactor:Code refactoringdocs:Documentationtest:Testschore:Maintenance
- Get GitHub owner/repo: use the cached values from the session context (injected at SessionStart); only if absent, parse once from
Phase 5: Report Status
- Report final status:
- Build/test results
- Commit hash and push status
- PR URL, CI status, review status
- Remaining work
Phase 6: Clear Loop State and Tasks (if feature/fix completed)
- If an agentic loop just completed successfully:
- Read session-scoped loop state:
.claude-harness/sessions/${CLAUDE_SESSION_ID}/loop-state.json - If
statusis "completed" and matches current feature/fix:- Mark all tasks complete (if tasks.enabled in loop-state):
- Call
TaskListto find the feature's tasks - For any tasks not yet "completed", call
TaskUpdateto mark as "completed" - Report: "All 6 tasks completed"
- Call
- Reset loop state to idle (see
schemas/loop-state.schema.jsonfor canonical shape):{ "version": 9, "feature": null, "featureName": null, "type": "feature", "linkedTo": null, "status": "idle", "attempt": 0, "maxAttempts": 12, "startedAt": null, "lastAttemptAt": null, "verification": {}, "history": [], "tasks": { "enabled": false, "chain": [], "current": null, "completed": [] }, "lastCheckpoint": "{commit-hash}", "escalationRequested": false } - Report: "Loop completed and reset"
- Mark all tasks complete (if tasks.enabled in loop-state):
- If loop is still in progress, preserve state for session continuity
- Optional session cleanup: If feature is archived and session is complete, the session directory can be removed (it's gitignored anyway; the SessionEnd hook also removes it on clean exit)
- Read session-scoped loop state:
Phase 7: Archive Completed Features and Fixes
Archive completed features and fixes:
- Read
${FEATURES_FILE}
Archive features:
- Find all features with status="passing" or passes=true
- If any completed features exist:
- Read
${ARCHIVE_FILE}(create if missing with{"version":3,"archived":[],"archivedFixes":[]}) - Add archivedAt timestamp to each completed feature
- Append completed features to the
archived[]array - Remove completed features from features array
- Read
- Report: "Archived X completed features"
Archive fixes:
- Find all fixes with status="passing"
- If any completed fixes exist:
- Add archivedAt timestamp to each completed fix
- Append completed fixes to the
archivedFixes[]array - Remove completed fixes from fixes array
- Report: "Archived X completed fixes"
- Write updated
${FEATURES_FILE}and${ARCHIVE_FILE}
- Read
Phase 8: Persist Orchestration Memory
- Persist orchestration memory (if orchestration was active):
- Read
.claude-harness/agents/context.json - Skip if no
currentSessionor noagentResults - For each entry in
agentResults(write OKF concept files, list each in the directory'sindex.md):- If status is "completed":
- Write a Success concept to
${MEMORY_DIR}/successes/(suc-{NNN}-{slug}.md,type: Success; body# {approach}+## Files+## Patterns)
- Write a Success concept to
- If status is "failed":
- Write a Failure concept to
${MEMORY_DIR}/failures/(fail-{NNN}-{slug}.md,type: Failure; body# {approach}+## Errors+## Root Cause+## Prevention)
- Write a Failure concept to
- If status is "completed":
- If
sharedState.discoveredPatternshas new entries:- Write Pattern concepts to
${MEMORY_DIR}/patterns/(skip ones already listed inpatterns/index.md)
- Write Pattern concepts to
- If
architecturalDecisionshas entries:- Write Decision concepts to
${MEMORY_DIR}/decisions/
- Write Decision concepts to
- Clear
agentResultsarray (already persisted to memory) - Set
currentSessionto null - Update
lastUpdatedtimestamp - If
teamStateis non-null (Agent Teams was active):- Persist each teammate's results to
agentResults(if not already there) - Set
teamStateto null (team cleanup complete) - Report: "Cleaned up team state for {teamState.teamName}"
- Persist each teammate's results to
- Write updated files
- Report: "Persisted {N} agent results to procedural memory"
- Read
Phase 9: Report Completion
Display checkpoint summary:
CHECKPOINT COMPLETE Progress saved to memory layers Commit: {hash} PR: #{number} (if applicable) Your progress is preserved in: - claude-progress.json (session summary) - memory/decisions/ (Decision concepts) - memory/successes/ + memory/failures/ (Success/Failure concepts) - memory/rules/ (learned Rule concepts) - session-briefing.md (pointed to at next session start)NOTE: There is no need to
/clearafter a checkpoint. Feature work runs in isolated subagents (fresh context per feature), and Claude Code's native compaction preserves task-relevant context automatically. Clear only if you want a full manual reset.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

