checkpoint
Save developer context to Goldfish memory — checkpoint at meaningful milestones, not after every action
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Save developer context to Goldfish memory — checkpoint at meaningful milestones, not after every action
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
Use when the user asks for a standup, daily update, progress summary, or cross-project report built from Goldfish briefs and checkpoints
Use when starting a new session, after context loss, searching for prior work, or when the user asks what happened previously and needs Goldfish memory restored
Use when starting multi-session work, capturing approved project direction, updating goals or constraints, or when the user asks for durable strategic context that should persist across sessions
Use when the user asks for progress against current project direction, wants a status check on the active brief, or needs evidence-backed assessment across briefs, checkpoints, and docs/plans
Use when returning to a project after time away, switching harnesses, or handing work off to another agent, to produce a structured session-resumption summary from the active brief, recent checkpoints, and git delta.
استنادا إلى تصنيف SOC المهني
| name | checkpoint |
| description | Save developer context to Goldfish memory — checkpoint at meaningful milestones, not after every action |
When in doubt, checkpoint — a few extra checkpoints are better than lost context.
Space out checkpoints so each one captures a distinct piece of progress — one per logical milestone is the right cadence.
Your description becomes the markdown body of a .md file. Format it with structure — headers, bullet points, bold, code spans.
checkpoint({
description: "## Implemented JWT refresh token rotation\n\nThe existing single-token approach was vulnerable to token theft.\n\n- **Approach:** Rotate tokens on each use, limiting the attack window\n- **Added:** `RefreshTokenStore` with atomic file writes and 7-day expiry\n- **Tests:** All 12 auth tests passing\n- **Impact:** Unblocks the session management PR",
tags: ["feature", "auth", "security", "jwt", "refresh-token", "token-rotation", "session-management"]
})
GOOD (structured markdown):
## Fixed race condition in checkpoint writes
Concurrent saves could corrupt the daily markdown file.
- **Root cause:** Non-atomic write pattern
- **Fix:** Switched to write-tmp-then-rename with file locking
- **Verified:** Reproduced with parallel test, confirmed fix
BAD (no structure): "Fixed race condition in checkpoint file writes where concurrent saves could corrupt the daily markdown file. Root cause was non-atomic write pattern."
BAD (no context): "Fixed file writing bug"
Use type to classify your checkpoint for better searchability:
type: "decision" → include decision + alternativestype: "incident" → include context + evidencetype: "learning" → include impactAll types benefit from symbols, next, and impact.
Populate symbols with the key functions, classes, or modules you touched (e.g. ["recoverWorkspace", "resolveActiveBrief"]). Intent-blame recall can filter on them later with recall({ symbol: "recoverWorkspace" }).
Tags power fuzzy search recall. Write them for discoverability — how would future-you search for this?
Category tags (1-2):
feature, bug-fix, refactor, docs, testauth, api, ui, database, buildwip, blocked, discovery, decisionConcept tags (2-5) — the important part:
Example: a checkpoint about implementing retry logic for payment webhooks:
["bug-fix", "payments"]["bug-fix", "payments", "retry", "resilience", "webhooks", "fault-tolerance", "idempotency"]Example: a decision to use WebSockets over SSE for real-time updates:
["decision", "api"]["decision", "real-time", "websockets", "sse", "push", "streaming", "notifications"]You don't need to include these — Goldfish captures them:
.memories/ excluded)git.files reflects the working tree at checkpoint time. Checkpoint before committing so captured paths match what you just changed; committed-only changes are not in the diff snapshot.
Focus your description on the MEANING, not the mechanics.