---
name: recall
description: Finds every past Claude Code session about one task, pulls that task out of them, fact-checks what was said and done about it against the real files, git and tools, and writes a focused brief plus a handoff prompt for a fresh session. Use when the user asks to recall, reconstruct, cut a task out of a session, find the sessions where something was worked on, or continue one thread from earlier work.
disable-model-invocation: true
---
# Recall
A session can do many things, and one task can spread over many sessions. This skill
rebuilds the context for **one** task from all of them and checks it, so the next step starts from what is true, not from what a summary
or an earlier agent claimed.
The script is `scripts/session-timeline.py` in this skill's base directory. Run it
with `python3 -I`.
## 1. Pin the task
Take the task from the user's words. If they didn't name one, ask which task, and
stop. If the user pasted a summary or handoff prompt, it's one more source of
claims, every one counted as **agent said** until checked. A session's first message
can be such a handoff too: if it reads like one agent briefing another, treat it the
same way, even though it's recorded as typed by the user.
## 2. Find every related session
Unless the user named the sessions, search for them. Pick 2 to 4 words specific to
the task (names of files, features, commands, branches) rather than common ones:
```bash
python3 -I /scripts/session-timeline.py --find ""
```
That searches the current folder and its `.claude/worktrees/*` sessions, ranked by
how many of the words matched, then by hits. `(this session)` counts too. If nothing
relevant comes back, or the task clearly spans repos, widen it with `--all` (every
project; takes a few seconds).
Keep every session that is actually about the task: high hits, a matching title or
first prompt. Drop ones that only mention a word in passing. Say the task and the
sessions you kept, one line each with date and title, before reading. Ask only if
you can't tell which sessions belong.
## 3. Read with the session-reader agent
Spawn `mskills:session-reader` with the task in the user's words, the session ids
and the script's full path. For more than two sessions, spawn one reader per session
in parallel. Each returns the task's claims sorted into user said, agent said, done,
superseded and open. Merge them by time: a later session's decision supersedes an
earlier one's. Don't read the raw timelines in the main session; keeping them out is
the point.
## 4. Check every claim
Check each **done** and **agent said** claim yourself against the real state:
files, `git`, `gh`, installed tools, a test or command run. Use the reader's CHECKS
as a starting point, not as proof. One claim, one check. Tag each:
- `[verified]` checked and true now
- `[wrong]` checked and false; say what is actually there
- `[unverified]` can't be checked from here; say why
- `[user said]` a decision quoted from the user; it still stands unless superseded
- `[agent said]` decided or asserted by an agent and never confirmed by the user
A claim that's true on disk but rests on an agent's decision gets both tags:
`[verified] [agent said]`.
## 5. Write the brief
```
Recall: · from · claims checked
Goal
> the user's own words
Where it stands
- up to 5 bullets of verified state
Claims
| tag | claim | checked with |
Decisions to keep
- [user said] ones that still stand, newest wins
Needs your call
- [agent said] decisions the user never confirmed
- [wrong] claims and what to do about them
Left behind
- other tasks in the session, one line each, only if they touch this one
Next step
- the single next action
```
Then a **handoff prompt**: a self-contained paragraph the user can paste into a new
session to carry on this task alone. It holds only verified state, the user's
decisions in their own words, and the open items. No `[wrong]` claim, no unconfirmed
agent decision presented as settled.
Stop after the brief. Don't start the next step until the user says so.