Checkpoint
Persist the current state of ongoing work — richly enough that a cold context (a compaction, a crash, a next-day
return) resumes without re-deriving the reasoning, AND without losing the decisions and whys that got the work here.
Checkpoint is the capture engine; handoff and wrap-up are terminal wrappers over it.
Announce: "Using the checkpoint skill to save selected session context to Vertiso Memory."
Consent boundary
Invoking this skill at the user's request, or affirmatively accepting an
agent's offer to run it, authorizes one capture. That capture may inspect the
current conversation and a client-exposed session transcript when needed for
exact quotations, then send selected context and attributed verbatim excerpts
to Vertiso Memory. Once invoked, do not ask a second permission question before
performing that transcript-backed capture and memory write.
One invocation does not grant standing authorization for later checkpoints.
An agent may offer a checkpoint, but it must wait for the user to request or
approve it before reading a transcript or writing memory. Omit and do not
persist passwords, API keys, authentication tokens, payment information,
illegal or illicit materials, or sensitive third-party information the user is
not authorized to store.
Secret stripping
Before composing the memory, inspect every selected source, including the
conversation, transcript, work artifacts, tool output, title, tags, and
metadata, for secrets. Treat passwords, API keys, bearer or refresh tokens,
OAuth codes, session cookies, private keys, recovery codes, and credentialed
connection strings as secrets.
Strip or redact any detected value before composing the memory. Never send the
original value to Vertiso Memory or copy it into a quote, title, tag, metadata,
link, or error detail. Do not echo the secret in the report; state only that
sensitive content was omitted. If sanitization would make the capture
meaningless, stop and ask the user for a sanitized replacement.
When to use
Two modes, one authorization boundary:
- Salient (event-driven) — the user asks to preserve a decision, an ah-ha,
a settled reason, a constraint, or a proven dead end. Capture immediately,
small and focused. If the agent notices the moment first, offer the capture
and wait for approval.
- Routine (cadence-driven) — the user invokes
/checkpoint or accepts an
offered routine checkpoint. Sweep the whole span since the last durable
capture and snapshot current state. A client reminder or agent self-check may
suggest that it is time to save; neither may start the capture by itself.
An agent may offer a checkpoint when several decisions have accumulated or the
thread has moved substantially. It must wait for the user to request or approve
it. The marketplace packages install no automatic transcript checkpoint hook.
Not this skill: handoff (you are leaving — adds a claimable resume protocol), wrap-up
(work is done — completes finished actions, archives finished intents and projects, tracks follow-on actions,
and closes), goodbye (session lifecycle). All three call this skill's assembly, then add their terminal act.
Selection — two capture paths, both valid
The goal is every decision, why, constraint, reversal, and ah-ha preserved — not the whole transcript. Two paths get
there:
- Immediate (salient mode). After the user requests or approves the
capture, preserve the flagged moment verbatim right then. Zero reconstruction,
zero bias, nothing lost to a later compaction.
- Retrospective sweep (routine mode). At a routine checkpoint, sweep the ENTIRE span since the last durable
capture — the whole session for the first checkpoint — and pull, verbatim, every turn that carries a decision, a
constraint, a correction/reversal, or an explicit why. Across every topic the span touched, not just the recent
ones. A long multi-topic session gets each topic's decisions captured; recency must not crowd out the earlier
topics. Narrowing the sweep to the current workstream and dropping the session's earlier topics is exactly how
"everything I said" gets lost — do not do it.
The hindsight-bias guard is NOT "don't look back." It is what you look for:
- Capture turns with an objective decision-marker — a choice made, a constraint stated, a correction, a reversal, an
explicit reason — plus agent turns that establish context or carry an insight/diagnosis worth keeping. Not turns
that merely felt eventful.
- The user's verbatim words are highest-priority (authored intent, easy to distort in summary), but agent turns count
when they carry signal. Attribute every capture to who spoke it.
- When unsure whether a turn matters, it probably doesn't — skip it.
- Signal turns are a small fraction of the conversation; capture those, drop the rest. Never paste the whole transcript.
Skip what is already durably captured. If a prior checkpoint, handoff, or wrap-up this session already preserved a
topic's decisions verbatim, do not re-capture them — link that memory instead. But a summary elsewhere does not
count as verbatim preservation: if the exact words matter and only a paraphrase exists, capture them.
Verbatim discipline
Verbatim is the point — a summary of why a decision was made loses the decision. But verbatim is not "dump the
transcript." Skim for the turns that carry signal; capture those, slightly more generously than a handoff would, and
skip the rest.
- Quote from the transcript, not from working memory. If the client exposes a session transcript, READ IT and pull
the exact words from it. Claude Code persists one as a
.jsonl under the session directory (its path is
surfaced in-session, e.g. a compaction notice); other harnesses may expose their own — check yours.
Reconstructing quotes from working context silently paraphrases: the words drift, the attribution blurs, and
"verbatim" becomes a claim you can't back. That defeats the whole skill. Only fall back to reconstruction when no
transcript is reachable — and when you do, mark those quotes as reconstructed (a ~ prefix or a trailing
"(reconstructed)") so a reader knows they are approximate, not exact. A quote presented as verbatim must actually
be verbatim.
- Attribute every quote to who spoke it. Vertiso Memory models authorship well, but only at the memory level
(the checkpoint's own
source), which can't say who said each quoted line inside it. So attribute inline — the
human by name, the agent by its name/source:
"we do flip both ways when the honest thing to do is to do so" — John
"the alias schemes create an edge but never chip — they'll drift" — Claude Code
- Capture the user's exact words for decisions, constraints, preferences, and reversals — highest priority, and
never cleaned up.
- Capture agent turns verbatim too when they carry context worth keeping — a diagnosis, an insight, the rationale
behind a call, a caveat you'll need later. Not every agent turn (they're bulky); skim for the ones that establish
context or are themselves the thing to remember. When it's just routine reasoning, summarize or skip.
- Layer it. The body is structured resume-state (so a receiving agent resumes with minimum follow-up work), with
the attributed verbatim excerpts cited inside the relevant slot as evidence — not a raw transcript slab appended
at the end.
Procedure
Gather state from the workstream's OWN artifacts — whatever records the work — not the transcript's
narrative, and NOT git by default. Git commits, PRs, and SHAs are software's artifacts; most work is not software.
Match the domain:
- Software / eng —
git status / git diff (INCLUDING uncommitted), git log since the boundary, gh pr
state, gate/test results.
- Writing / docs — the draft file + version + sections done vs outstanding.
- Product / PM — the PRD or spec, roadmap, ticket/issue states, the decision log.
- Design / art — file revisions, the board/canvas, what's approved vs in-progress, exports sent.
- Hardware / mechanical — CAD revisions, the BOM, test-rig results, prototype status.
- Entrepreneur / ops — the deck, the model, deal/contract stage, key emails or calls, calendar events touched.
If you can't tell what the artifacts are, ASK the user rather than forcing a git-shaped answer. Always also pull
list_recent for memories written this session. Make each slot domain-appropriate.
Sweep the span for decisions (see Selection) — the whole session for a first checkpoint, since the last durable
capture otherwise. Pull the verbatim decision turns across every topic. Source the quotes from the session
transcript where the client exposes one, not from working context (see Verbatim discipline) — reconstructed quotes
drift.
Compose the body (slots below). Distinguish done from believed — a witnessed decision is dated and attributed;
anything not directly observed is "the user said" / "believed to be."
Write a NEW memory — do not mutate a prior checkpoint. remember(type: "observation", metadata: { kind: "checkpoint", scope: <workstream>, salient: <bool> }). Append is correct: the temporal graph co-exists dated
snapshots and recall resolves recency (constraint #32768), so a checkpoint series is a lossless progress trail.
Link the prior checkpoint of the same scope (and any memory whose coverage you skipped) with the
[anchor](vertiso-memory://memories/{id}) format — link for lineage, do not claim supersession
(observation↔observation do not supersede; the reader resolves recency).
Report the new checkpoint id, its mode, the topics swept, and the one-line "next." Render every memory reference
shown to the USER as a clickable web link — [#{id}](https://memory.vertiso.ai/memories/{id}) — never a bare
#id
(GitHub-flavored markdown autolinks #nnnn to a GitHub issue). The vertiso-memory:// scheme belongs INSIDE memory
bodies for graph edges (step 4); the https://memory.vertiso.ai/memories/{id} web URL is for chat/report output.
The body — handoff's six slots, expanded for resume
- Working on — the subject / goal (or goals, if the span was multi-topic).
- Decisions + WHYs — the session's decisions, each with the verbatim words that drove it (attributed to who spoke
— the user's exact framing plus any agent turn that carried the context/insight) and the reason. Group by topic
when the span covered several; capture every topic's decisions, do not let the latest crowd out earlier ones. This
is the expanded slot and the point of the skill.
- Where it stands — the current state in the workstream's own terms. Software: uncommitted working-tree (files
touched, staged/unstaged), branch / PR / gate, what's green / red / untested. Otherwise: the artifact's current
revision + what's done / in-progress / blocked — a draft at v3 with §2 unwritten; a design approved but not yet
exported; a prototype passing 2 of 5 tests; a deal at term-sheet. Whatever tells a cold reader the work's exact
position.
- Mental model in play — the approach, the invariant held, the hypothesis being tested. What a cold reader would
otherwise re-derive.
- Next — the exact next action, concrete enough to resume without re-deriving: the command to run +
file:line
for code, or the specific artifact and step otherwise ("open the deck, redo the pricing chart on slide 7"; "call the
supplier re: the tolerance"; "export the board to PDF and send to the client").
- Open questions / blockers — what is waiting on the user, what is being debugged.
- Salient captures + skipped coverage — links to salient checkpoints since the last routine one, and to any
memory whose decisions were skipped as already-captured.
- Verify before operating — standing advisory: re-check slot 3 against current reality and re-confirm any slot-2
decision before acting; this snapshot is a point in time.
Salient-mode body collapses to the single moment: the flagged decision/ah-ha (verbatim) + its why + where it leaves the
work + the next step. Written immediately.
Shared engine
handoff and wrap-up use this skill to gather the past context — its Procedure steps 1-2 (gather + retrospective
sweep = the attributed verbatim decisions + where-it-stands state). That gathered context FILLS one part of each
wrapper's body; the wrapper then composes its OWN remaining slots on top and writes through its own verb. Checkpoint
gathers the past; the wrappers build the rest on it — checkpoint's body does NOT replace a wrapper's slots.
The transfer is VERBATIM. The attributed quotes and the detailed state snapshot come across intact — the wrapper
carries checkpoint's captured block word-for-word into its slot, it does NOT paraphrase, compress, or re-summarize it.
That is the whole point: the verbatim that a hand-summarized handoff or wrap-up would lose is exactly what checkpoint
preserves. Build your own slots around that preserved block; never distill it.
- checkpoint composes its full body (all slots) and writes/links a new checkpoint memory (this skill).
- handoff takes the gathered context into its "What happened" / "Where it stands" slots, builds its forward slots
(Next, Open questions, Verify), and writes via the
handoff verb (claimable resume protocol).
- wrap-up takes the gathered context into its "Decisions + WHYs" slot, builds its terminal slots (What shipped /
closed / Next steps), tracks follow-ons as actions (intents only for new measurable outcomes), closes the finished
work (completes actions, archives intents and projects), then writes via
remember.
Factor the gather, not the write — each caller composes its own body and persists through its own verb.
Authoring honesty
A checkpoint is trusted only if a claim and a verified fact do not look identical. Verbatim quotes must be actual
quotes — do not fabricate or clean up the user's words. Mark anything not directly observed. A slot-5 "next" with no
basis, or a slot-2 decision that was never witnessed, poisons the resume.
1---2name: checkpoint3description: Save work-in-progress to Vertiso Memory without ending the session, preserving decisions and their reasons verbatim across every topic. Use when the user asks to checkpoint, save progress, capture this, or not forget something, or affirmatively accepts an agent's checkpoint offer. An agent may offer on a cadence or after a salient moment but must not perform the capture without the user's request or approval.4---56# Checkpoint78Persist the current state of ongoing work — richly enough that a cold context (a compaction, a crash, a next-day9return) resumes without re-deriving the reasoning, AND without losing the decisions and whys that got the work here.10Checkpoint is the capture *engine*; handoff and wrap-up are terminal wrappers over it.1112**Announce:** "Using the checkpoint skill to save selected session context to Vertiso Memory."1314## Consent boundary1516Invoking this skill at the user's request, or affirmatively accepting an17agent's offer to run it, authorizes one capture. That capture may inspect the18current conversation and a client-exposed session transcript when needed for19exact quotations, then send selected context and attributed verbatim excerpts20to Vertiso Memory. Once invoked, do not ask a second permission question before21performing that transcript-backed capture and memory write.2223One invocation does not grant standing authorization for later checkpoints.24An agent may offer a checkpoint, but it must wait for the user to request or25approve it before reading a transcript or writing memory. Omit and do not26persist passwords, API keys, authentication tokens, payment information,27illegal or illicit materials, or sensitive third-party information the user is28not authorized to store.2930### Secret stripping3132Before composing the memory, inspect every selected source, including the33conversation, transcript, work artifacts, tool output, title, tags, and34metadata, for secrets. Treat passwords, API keys, bearer or refresh tokens,35OAuth codes, session cookies, private keys, recovery codes, and credentialed36connection strings as secrets.3738Strip or redact any detected value before composing the memory. Never send the39original value to Vertiso Memory or copy it into a quote, title, tag, metadata,40link, or error detail. Do not echo the secret in the report; state only that41sensitive content was omitted. If sanitization would make the capture42meaningless, stop and ask the user for a sanitized replacement.4344## When to use4546Two modes, one authorization boundary:4748- **Salient** (event-driven) — the user asks to preserve a decision, an ah-ha,49 a settled reason, a constraint, or a proven dead end. Capture immediately,50 small and focused. If the agent notices the moment first, offer the capture51 and wait for approval.52- **Routine** (cadence-driven) — the user invokes `/checkpoint` or accepts an53 offered routine checkpoint. Sweep the whole span since the last durable54 capture and snapshot current state. A client reminder or agent self-check may55 suggest that it is time to save; neither may start the capture by itself.5657An agent may offer a checkpoint when several decisions have accumulated or the58thread has moved substantially. It must wait for the user to request or approve59it. The marketplace packages install no automatic transcript checkpoint hook.6061Not this skill: **handoff** (you are leaving — adds a claimable resume protocol), **wrap-up**62(work is done — completes finished actions, archives finished intents and projects, tracks follow-on actions,63and closes), **goodbye** (session lifecycle). All three call this skill's assembly, then add their terminal act.6465## Selection — two capture paths, both valid6667The goal is every decision, why, constraint, reversal, and ah-ha preserved — not the whole transcript. Two paths get68there:6970- **Immediate (salient mode).** After the user requests or approves the71 capture, preserve the flagged moment verbatim right then. Zero reconstruction,72 zero bias, nothing lost to a later compaction.73- **Retrospective sweep (routine mode).** At a routine checkpoint, sweep the ENTIRE span since the last durable74 capture — the whole session for the first checkpoint — and pull, verbatim, every turn that carries a decision, a75 constraint, a correction/reversal, or an explicit *why*. **Across every topic the span touched, not just the recent76 ones.** A long multi-topic session gets each topic's decisions captured; recency must not crowd out the earlier77 topics. Narrowing the sweep to the current workstream and dropping the session's earlier topics is exactly how78 "everything I said" gets lost — do not do it.7980The hindsight-bias guard is NOT "don't look back." It is *what* you look for:81- Capture turns with an objective decision-marker — a choice made, a constraint stated, a correction, a reversal, an82 explicit reason — plus agent turns that establish context or carry an insight/diagnosis worth keeping. Not turns83 that merely felt eventful.84- The user's verbatim words are highest-priority (authored intent, easy to distort in summary), but agent turns count85 when they carry signal. Attribute every capture to who spoke it.86- When unsure whether a turn matters, it probably doesn't — skip it.87- Signal turns are a small fraction of the conversation; capture those, drop the rest. Never paste the whole transcript.8889**Skip what is already durably captured.** If a prior checkpoint, handoff, or wrap-up this session already preserved a90topic's decisions verbatim, do not re-capture them — link that memory instead. But a *summary* elsewhere does not91count as verbatim preservation: if the exact words matter and only a paraphrase exists, capture them.9293## Verbatim discipline9495Verbatim is the point — a summary of *why* a decision was made loses the decision. But verbatim is not "dump the96transcript." Skim for the turns that carry signal; capture those, slightly more generously than a handoff would, and97skip the rest.9899- **Quote from the transcript, not from working memory.** If the client exposes a session transcript, READ IT and pull100 the exact words from it. Claude Code persists one as a `.jsonl` under the session directory (its path is101 surfaced in-session, e.g. a compaction notice); other harnesses may expose their own — check yours.102 Reconstructing quotes from working context silently paraphrases: the words drift, the attribution blurs, and103 "verbatim" becomes a claim you can't back. That defeats the whole skill. Only fall back to reconstruction when no104 transcript is reachable — and when you do, mark those quotes as reconstructed (a `~` prefix or a trailing105 "(reconstructed)") so a reader knows they are approximate, not exact. A quote presented as verbatim must actually106 be verbatim.107- **Attribute every quote to who spoke it.** Vertiso Memory models authorship well, but only at the memory level108 (the checkpoint's own `source`), which can't say who said each *quoted line* inside it. So attribute inline — the109 human by name, the agent by its name/source:110 > "we do flip both ways when the honest thing to do is to do so" — John111 > "the alias schemes create an edge but never chip — they'll drift" — Claude Code112- **Capture the user's exact words** for decisions, constraints, preferences, and reversals — highest priority, and113 never cleaned up.114- **Capture agent turns verbatim too when they carry context worth keeping** — a diagnosis, an insight, the rationale115 behind a call, a caveat you'll need later. Not every agent turn (they're bulky); skim for the ones that establish116 context or are themselves the thing to remember. When it's just routine reasoning, summarize or skip.117- **Layer it.** The body is structured resume-state (so a receiving agent resumes with minimum follow-up work), with118 the attributed verbatim excerpts cited *inside* the relevant slot as evidence — not a raw transcript slab appended119 at the end.120121## Procedure1221231. **Gather state from the workstream's OWN artifacts** — whatever records the work — not the transcript's124 narrative, and NOT git by default. Git commits, PRs, and SHAs are *software's* artifacts; most work is not software.125 Match the domain:126 - **Software / eng** — `git status` / `git diff` (INCLUDING uncommitted), `git log` since the boundary, `gh pr`127 state, gate/test results.128 - **Writing / docs** — the draft file + version + sections done vs outstanding.129 - **Product / PM** — the PRD or spec, roadmap, ticket/issue states, the decision log.130 - **Design / art** — file revisions, the board/canvas, what's approved vs in-progress, exports sent.131 - **Hardware / mechanical** — CAD revisions, the BOM, test-rig results, prototype status.132 - **Entrepreneur / ops** — the deck, the model, deal/contract stage, key emails or calls, calendar events touched.133134 If you can't tell what the artifacts are, ASK the user rather than forcing a git-shaped answer. Always also pull135 `list_recent` for memories written this session. Make each slot domain-appropriate.1362. **Sweep the span for decisions** (see Selection) — the whole session for a first checkpoint, since the last durable137 capture otherwise. Pull the verbatim decision turns across every topic. Source the quotes from the session138 transcript where the client exposes one, not from working context (see Verbatim discipline) — reconstructed quotes139 drift.1403. **Compose the body** (slots below). Distinguish done from believed — a witnessed decision is dated and attributed;141 anything not directly observed is "the user said" / "believed to be."1424. **Write a NEW memory** — do not mutate a prior checkpoint. `remember(type: "observation", metadata: {143 kind: "checkpoint", scope: <workstream>, salient: <bool> })`. Append is correct: the temporal graph co-exists dated144 snapshots and recall resolves recency (constraint #32768), so a checkpoint series is a lossless progress trail.145 Link the prior checkpoint of the same `scope` (and any memory whose coverage you skipped) with the146 `[anchor](vertiso-memory://memories/{id})` format — link for lineage, do not claim supersession147 (observation↔observation do not supersede; the reader resolves recency).1485. **Report** the new checkpoint id, its mode, the topics swept, and the one-line "next." Render every memory reference149 shown to the USER as a clickable web link — `[#{id}](https://memory.vertiso.ai/memories/{id})` — never a bare150 `#id`151 (GitHub-flavored markdown autolinks `#nnnn` to a GitHub issue). The `vertiso-memory://` scheme belongs INSIDE memory152 bodies for graph edges (step 4); the `https://memory.vertiso.ai/memories/{id}` web URL is for chat/report output.153154## The body — handoff's six slots, expanded for resume1551561. **Working on** — the subject / goal (or goals, if the span was multi-topic).1572. **Decisions + WHYs** — the session's decisions, each with the verbatim words that drove it (attributed to who spoke158 — the user's exact framing plus any agent turn that carried the context/insight) and the reason. **Group by topic159 when the span covered several**; capture every topic's decisions, do not let the latest crowd out earlier ones. This160 is the expanded slot and the point of the skill.1613. **Where it stands** — the current state in the workstream's own terms. Software: uncommitted working-tree (files162 touched, staged/unstaged), branch / PR / gate, what's green / red / untested. Otherwise: the artifact's current163 revision + what's done / in-progress / blocked — a draft at v3 with §2 unwritten; a design approved but not yet164 exported; a prototype passing 2 of 5 tests; a deal at term-sheet. Whatever tells a cold reader the work's exact165 position.1664. **Mental model in play** — the approach, the invariant held, the hypothesis being tested. What a cold reader would167 otherwise re-derive.1685. **Next** — the exact next action, concrete enough to resume without re-deriving: the command to run + `file:line`169 for code, or the specific artifact and step otherwise ("open the deck, redo the pricing chart on slide 7"; "call the170 supplier re: the tolerance"; "export the board to PDF and send to the client").1716. **Open questions / blockers** — what is waiting on the user, what is being debugged.1727. **Salient captures + skipped coverage** — links to salient checkpoints since the last routine one, and to any173 memory whose decisions were skipped as already-captured.1748. **Verify before operating** — standing advisory: re-check slot 3 against current reality and re-confirm any slot-2175 decision before acting; this snapshot is a point in time.176177Salient-mode body collapses to the single moment: the flagged decision/ah-ha (verbatim) + its why + where it leaves the178work + the next step. Written immediately.179180## Shared engine181182handoff and wrap-up use this skill to **gather the past context** — its Procedure steps 1-2 (gather + retrospective183sweep = the attributed verbatim decisions + where-it-stands state). That gathered context FILLS one part of each184wrapper's body; the wrapper then composes its OWN remaining slots on top and writes through its own verb. Checkpoint185gathers the past; the wrappers build the rest on it — checkpoint's body does NOT replace a wrapper's slots.186187**The transfer is VERBATIM.** The attributed quotes and the detailed state snapshot come across intact — the wrapper188carries checkpoint's captured block word-for-word into its slot, it does NOT paraphrase, compress, or re-summarize it.189That is the whole point: the verbatim that a hand-summarized handoff or wrap-up would lose is exactly what checkpoint190preserves. Build your own slots around that preserved block; never distill it.191192- **checkpoint** composes its full body (all slots) and writes/links a new checkpoint memory (this skill).193- **handoff** takes the gathered context into its "What happened" / "Where it stands" slots, builds its forward slots194 (Next, Open questions, Verify), and writes via the `handoff` verb (claimable resume protocol).195- **wrap-up** takes the gathered context into its "Decisions + WHYs" slot, builds its terminal slots (What shipped /196 closed / Next steps), tracks follow-ons as actions (intents only for new measurable outcomes), closes the finished197 work (completes actions, archives intents and projects), then writes via `remember`.198199Factor the *gather*, not the write — each caller composes its own body and persists through its own verb.200201## Authoring honesty202203A checkpoint is trusted only if a claim and a verified fact do not look identical. Verbatim quotes must be actual204quotes — do not fabricate or clean up the user's words. Mark anything not directly observed. A slot-5 "next" with no205basis, or a slot-2 decision that was never witnessed, poisons the resume.