Continue
How to use
Use this when you reach a natural stopping point.
Prompt
Generate Handoff Checkpoint
Compress the current conversation into a checkpoint precise enough that a fresh
session resumes the work without asking a single question.
If the user passed arguments, treat them as the focus of the next session and
scope the checkpoint to that.
Rules
- Do not duplicate. Anything already captured in a spec, ADR, issue,
commit or diff is referenced by path or URL, never restated. The checkpoint
is the connective tissue between those artefacts, not a copy of them. - Redact. Never carry API keys, tokens, passwords, connection strings or
personal data into the checkpoint. Replace them with[REDACTED]. This file
gets pasted into another session and may be read by another tool. - Interpolate. Replace every bracketed
[...]placeholder with real data.
Never print literal brackets. - Brevity. Bullet points stay under 15 words.
- Active files. Only what is being modified or investigated right now, not
every file mentioned. - Atomic tasks. One unambiguous action per task, no conjunctions.
- State precision. The exact last completed action, line number or error
message — never a general description. - Open questions. Anything that needs a human decision goes there, not
into Outstanding Tasks. A task the next agent cannot start alone is not a
task.
1. Write the checkpoint
Take the stamp from the clock, not from memory:
date +%Y-%m-%d-%H%MWrite the filled-in template to .temp/handoff-<stamp>.md. The directory is
gitignored. A file survives a closed terminal and can be fed to a CLI;
scrollback cannot.
I am continuing a previous session. Review the checkpoint below, read the Active
Files, and immediately proceed with Outstanding Task #1. Do not ask for
permission.
# CONVERSATION CHECKPOINT
## Objective
[1-2 sentences max defining the exact active task and its success criterion]
## Context & Decisions
- **Architecture:** [Core approach or pattern decided; include framework/library if relevant]
- **State:** [Exact last completed action, line number, or error message — be specific]
- **Constraints:** [Any strict limitations to observe; include hard blockers or non-negotiables]
- **Key Decision:** [Most recent consequential design or implementation choice made]
## Active Files
- `[relative/path/to/file.ext]` ([Specific action taken and current status])
## Artifacts
- `[path or URL]` ([What it holds — spec, ADR, PR, branch, failing run])
## Open Questions
- [Unresolved point needing a human decision, and what blocks on it]
## Outstanding Tasks
1. [ ] [Immediate next atomic step — single action, no conjunctions]
2. [ ] [Subsequent step — dependent on Task 1 completion]
3. [ ] [Contingency or validation step if applicable]
## Gotcha Candidates
- **[Name]** ([Category]) — [Observed behaviour and its root cause, in the evidence
a `memories` run needs. Omit the whole section when nothing qualifies.]
## Suggested Skills
- `[skill-name]` — [when the next agent should reach for it]A gotcha candidate is a reproducible, monorepo-specific constraint with a
concrete technical root cause — the bar memories applies. General best
practice, industry knowledge and "vibes" are not candidates, and most sessions
produce none. An empty section is the normal outcome; inventing entries to fill
it poisons the knowledge base.
Record the candidates. Do not run memories here, and do not offer to: it
reads the whole knowledge base and writes files, and this skill fires exactly
when context is scarce. Capturing the evidence is cheap and must not be traded
against the checkpoint itself.
Nothing is lost by deferring. The candidates travel in the checkpoint with
their evidence, so list memories under Suggested Skills and let the fresh
session file them from first-hand material rather than from a summary.
2. Start the new session
Preferred path: launch a fresh session seeded with the file, so nothing is
copied by hand. Use the CLI the user is working in:
claude "$(cat .temp/handoff-<stamp>.md)"
codex "$(cat .temp/handoff-<stamp>.md)"
gemini -i "$(cat .temp/handoff-<stamp>.md)"Offer the command, do not run it — a new session replaces the current one and
that is the user's call.
Inside an IDE or any surface with no CLI, fall back to copy-paste. The
checkpoint contains fenced blocks of its own, so wrapping it in one more fence
breaks at the first inner fence. Print it unfenced, after a --- separator,
then print exactly:
**Copy everything below the separator** and paste it into a new chat to resume.