/pickup — resume from a handoff
Load a handoff written by /handoff and get to work. You have no memory of
the session that wrote it; the file is the only source.
Arguments
/pickup resume the active lane
/pickup <slug> resume that lane, active or not
/pickup --list list every lane with status, date and title; do not resume
Finding the handoff
Look in <repo root>/docs/handoffs/*.md, and <repo root>/.handoffs/*.md if
that directory is the one in use. Read each file's frontmatter for lane,
status, updated and title.
Selection:
<slug> given — use docs/handoffs/<slug>.md. If absent, list what
does exist and stop. Never guess at a near-match; a wrong lane is worse
than no lane.
- No argument, exactly one
status: active — use it.
- No argument, several active — list them with title and date, ask which.
Do not pick the newest on your own.
- No argument, none active — say so and list the inactive lanes, newest
first, in case one should be reopened.
Legacy files. A handoff with no frontmatter (e.g. an older
CURRENT_STATE.md) is still valid — read it, treat it as active, and mention
that it predates the lane format. Offer to migrate it to a named lane, but
only act on a yes.
After reading, before acting
The handoff describes the repo as it was on its updated date. Check what has
moved since, and report any drift before starting work:
git branch --show-current
git log --oneline -5
git status --short
Compare against the frontmatter branch and commit. Drift worth reporting:
- HEAD has moved — say how many commits and whether they look related.
- Different branch than recorded.
- Uncommitted changes the handoff did not mention.
- The handoff is stale — more than a couple of weeks old, or its Start
here actions reference files that no longer exist.
State drift plainly and continue; do not refuse to work because of it. A
handoff being somewhat out of date is normal, not an error.
Then
- Summarize — the lane, its one-line title, when it was written, and the
next action, in a few lines. The user has just cleared their context too
and needs re-orienting.
- Surface the load-bearing sections — Blocked, Never exercised and
Deliberately not built exist to prevent specific mistakes. Read them
before touching code. Never "fix" something listed under Deliberately not
built without asking.
- Verify a claim or two before building on it. If the handoff says the
tests passed, run them. Evidence in the file is evidence about the past.
- Confirm the next action and begin. If several are listed, take the
first unless the user redirects.
Rules
- Report what the file actually says, including where it is vague. Do not
fill gaps with plausible invention — an unclear handoff is a fact about the
handoff, and worth telling the user.
- Do not update the handoff on pickup. It is updated by
/handoff,
at the end of the next session, not at the start.
--list resumes nothing. Print the table and stop.
1---2name: pickup3description: Resume work from a handoff file written by /handoff. Reads docs/handoffs/, selects the lane (by slug argument, or the single active one), verifies the repo still matches what the handoff recorded, and states the next action. Use when the user types /pickup, /pickup <slug>, or asks to resume or continue previous work.4---56# /pickup — resume from a handoff78Load a handoff written by `/handoff` and get to work. You have no memory of9the session that wrote it; the file is the only source.1011## Arguments1213```14/pickup resume the active lane15/pickup <slug> resume that lane, active or not16/pickup --list list every lane with status, date and title; do not resume17```1819## Finding the handoff2021Look in `<repo root>/docs/handoffs/*.md`, and `<repo root>/.handoffs/*.md` if22that directory is the one in use. Read each file's frontmatter for `lane`,23`status`, `updated` and `title`.2425Selection:26271. **`<slug>` given** — use `docs/handoffs/<slug>.md`. If absent, list what28 does exist and stop. Never guess at a near-match; a wrong lane is worse29 than no lane.302. **No argument, exactly one `status: active`** — use it.313. **No argument, several active** — list them with title and date, ask which.32 Do not pick the newest on your own.334. **No argument, none active** — say so and list the inactive lanes, newest34 first, in case one should be reopened.3536**Legacy files.** A handoff with no frontmatter (e.g. an older37`CURRENT_STATE.md`) is still valid — read it, treat it as active, and mention38that it predates the lane format. Offer to migrate it to a named lane, but39only act on a yes.4041## After reading, before acting4243The handoff describes the repo as it was on its `updated` date. Check what has44moved since, and report any drift **before** starting work:4546```bash47git branch --show-current48git log --oneline -549git status --short50```5152Compare against the frontmatter `branch` and `commit`. Drift worth reporting:5354- **HEAD has moved** — say how many commits and whether they look related.55- **Different branch** than recorded.56- **Uncommitted changes** the handoff did not mention.57- **The handoff is stale** — more than a couple of weeks old, or its *Start58 here* actions reference files that no longer exist.5960State drift plainly and continue; do not refuse to work because of it. A61handoff being somewhat out of date is normal, not an error.6263## Then64651. **Summarize** — the lane, its one-line title, when it was written, and the66 next action, in a few lines. The user has just cleared their context too67 and needs re-orienting.682. **Surface the load-bearing sections** — *Blocked*, *Never exercised* and69 *Deliberately not built* exist to prevent specific mistakes. Read them70 before touching code. Never "fix" something listed under *Deliberately not71 built* without asking.723. **Verify a claim or two** before building on it. If the handoff says the73 tests passed, run them. Evidence in the file is evidence about the past.744. **Confirm the next action** and begin. If several are listed, take the75 first unless the user redirects.7677## Rules7879- **Report what the file actually says**, including where it is vague. Do not80 fill gaps with plausible invention — an unclear handoff is a fact about the81 handoff, and worth telling the user.82- **Do not update the handoff on pickup.** It is updated by `/handoff`,83 at the end of the next session, not at the start.84- **`--list` resumes nothing.** Print the table and stop.