Save current work context for later resumption
Save the current work session. Park has three modes. Pick one, write that shape, do not mix.
| Mode | Use when | Heading | Filename |
|---|---|---|---|
| Continuation | Bouncing to a new session, work continues | Parked: |
[topic-slug].md |
| Close-out | Work is done, capturing a record before walking away | Wrapped: |
[topic-slug]-wrapped.md |
| Idle checkpoint | Automated park triggered by inactivity/cache-expiry, not a user request | Checkpoint: |
[topic-slug]-checkpoint.md |
Pick one mode by checking these signals in order. Stop at the first one that resolves.
Signal 3 requires an interactive caller. Never reach it for a headless/automated invocation — signal 0 must have already resolved those.
Pick once and commit. Do not switch modes mid-write.
Session ID: line in the PostToolUse hook context that this plugin injects when agent-meta:park is invoked. Use that value. A Transcript: line may also be present.unknown.CLAUDE.md → ## Handoffs or ## Parking → Location:~/.claude/CLAUDE.md → same lookup.parkinglot/ in project root (verify it is gitignored)Park destination: line. This is separate from the CLAUDE.md location above and always optional — it names a command to also send the file to once it's written, e.g. filing it into a second brain vault. Not present unless the user configured AGENT_PARK_DESTINATION or AGENT_PARK_DESTINATION_HELPER. Note the template if present; it's used in "After Parking" below.Use when the user is bouncing to a new session and the work continues.
# Parked: [Topic]
**Parked:** [Date/time]
**Session:** [session ID]
**Branch:** [branch-name]
**Worktree:** [path if applicable]
## Resume Prompt
```
unpark [path]
[Tight, specific next-action paragraph. Names files, names skill to invoke,
names the open question to resolve. Copy-paste ready.]
```
## Current State
[What's done, what's in progress, what's blocked. Present tense.]
## Key Decisions
- [Decision + brief rationale]
## Relevant Files
- path/to/file.ts (new|modified|read)
## Next Steps
1. [Concrete next action]
2. [Concrete next action]
## Open Questions
[Optional. Things the next session needs to resolve.]
Resume Prompt is mandatory and must be specific. Before writing the file, check the generated prompt: if it reads as filler ("if you want to resume...", "feel free to continue...", "you could pick this up..."), regenerate it with concrete file paths, named skills to invoke, and explicit next actions. Do not write the file with a filler prompt.
Name the skill, not the raw command, for steps that have a skill. The resuming session tends to run whatever literal command the handoff spells out, and that skips the skill that would have handled it properly. So when a next step opens, edits, or comments on a PR, write "open the PR via the git:pull-request skill", not gh pr create --title ... --body .... The same goes for commits (git:commit) and working through review feedback (git:pull-feedback). Keep the step's specifics (branch, what the PR body must cover, draft vs ready). Just don't hand over a copy-paste command that routes around the skill.
Filename: [topic-slug].md
Use when the work is done and the user is walking away. There may be open threads, but no baton-pass.
# Wrapped: [Topic]
**Wrapped:** [Date/time]
**Session:** [session ID]
**Branch:** [branch-name]
**Worktree:** [path if applicable]
## Outcome
[What got done. Past tense. Reference commits where applicable.]
## Key Decisions
- [Decision + brief rationale]
## Relevant Files
- path/to/file.ts (new|modified|read)
## Open Threads
[Optional. Things noticed but not done. One line each.
Surface candidates for beans, but DO NOT auto-create them.]
Filename: [topic-slug]-wrapped.md
Close-out has no Resume Prompt and no Next Steps. If you find yourself wanting to write either, the work is probably a continuation: re-check the mode.
Use when this park was triggered automatically because the session went idle (e.g. a watchdog parking a session near its prompt-cache expiry), not because a person asked. Same shape as continuation — the person may still be about to resume, in this session or a new one — but labeled so it reads as a machine-triggered snapshot rather than a deliberate handoff, and so the next park call in this same session doesn't get confused about what already happened here.
# Checkpoint: [Topic]
**Checkpointed:** [Date/time]
**Session:** [session ID]
**Branch:** [branch-name]
**Worktree:** [path if applicable]
**Trigger:** automated (idle)
## Resume Prompt
```
unpark [path]
[Tight, specific next-action paragraph. Names files, names skill to invoke,
names the open question to resolve. Copy-paste ready.]
```
## Current State
[What's done, what's in progress, what's blocked. Present tense.]
## Key Decisions
- [Decision + brief rationale]
## Relevant Files
- path/to/file.ts (new|modified|read)
## Next Steps
1. [Concrete next action]
2. [Concrete next action]
## Open Questions
[Optional. Things the next session needs to resolve.]
Same Resume Prompt requirement as continuation: mandatory, specific, no filler.
Filename: [topic-slug]-checkpoint.md
If step 4 above found a Park destination: template, run it now, after the file is written:
{file} → the full path just written, {title} → the topic slug/heading, {mode} → continuation, close-out, or idle-checkpoint.If no Park destination: line was present, skip this section entirely — park behaves exactly as it does without one.
For continuation:
Parked to `[path]`.
To resume in a new session, ask Claude:
> unpark [path]
For close-out:
Wrapped to `[path]`.
This is a close-out record. To start fresh work that builds on it, reference the file in your next session.
For idle checkpoint:
Checkpointed to `[path]` (automated — this session went idle).
If you're still working in this session, ignore this. To resume elsewhere:
> unpark [path]
If a destination command ran, append one line noting the result either way, e.g. Also sent to [destination] or Destination command failed: [short reason].