From recap
Show recent Claude Code sessions across all projects, so the user can re-enter work after a reboot or context switch. Lists per session the absolute project path, a short summary, last activity, turn count, git branch, model, and a ready-to-paste resume command, and can re-open all of them at once in new terminal tabs. Use when the user asks "what was I working on", "which projects did I touch recently", "where did I leave off", "list my recent sessions", "how do I get back into that session", "open all my sessions again", or invokes /recap. Reads only local files; the default run is instant and offline.
How this skill is triggered — by the user, by Claude, or both
Slash command
/claude-code-recap:recapThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
One command, full overview of recent sessions across every project on this machine. Built for the post-reboot moment: which projects, what was each session about, and the exact command to jump back in.
One command, full overview of recent sessions across every project on this machine. Built for the post-reboot moment: which projects, what was each session about, and the exact command to jump back in.
Personal or project install (the skill directory is on disk next to this file):
python3 ~/.claude/skills/recap/recap.py [flags]
Plugin install (Claude Code exports the plugin root):
python3 "$CLAUDE_PLUGIN_ROOT/skills/recap/recap.py" [flags]
Nothing to install beyond Python 3 (stdlib only, no third-party packages).
| Flag | Meaning |
|---|---|
| (none) | last 15 sessions, newest first, instant, no network |
--since 7d | only sessions active in the window (30m, 24h, 7d, 2w) |
--project foo | filter by substring of the absolute project path; separators are interchangeable (my_app, my-app, work/my_app) |
--limit N | max rows (default 15) |
--json | machine-readable output with full session ids and resume commands |
--smart | real one-sentence summaries via ONE claude -p haiku call (network, ~10s) |
--pick | choose a row interactively, then cd + claude -r into it directly |
--open | open EVERY listed session in its own new terminal tab and resume it there (macOS) |
--claude-flags "..." | extra flags for each resumed claude (e.g. "--chrome --dangerously-skip-permissions"); also shown in the printed resume lines and --json |
--terminal auto|iTerm2|Terminal | which app --open drives (default: iTerm2 when installed) |
--yes / -y | skip the --open confirmation prompt (required when stdin is not a TTY) |
--dry-run | with --open: print the tabs and commands, open nothing |
--color | force ANSI colors when output is piped (e.g. inside Claude Code) |
--plain | no ANSI at all (also honors NO_COLOR / FORCE_COLOR env) |
# after a reboot: what was I doing?
python3 ~/.claude/skills/recap/recap.py
# everything in one repo this week
python3 ~/.claude/skills/recap/recap.py --since 7d --project my-repo
# jump straight back into a session
python3 ~/.claude/skills/recap/recap.py --pick
# re-open yesterday's whole working set in terminal tabs, browser enabled, no permission prompts
python3 ~/.claude/skills/recap/recap.py --since 24h --limit 12 \
--open --yes --claude-flags "--chrome --dangerously-skip-permissions"
# preview first, open nothing
python3 ~/.claude/skills/recap/recap.py --open --dry-run
# feed into other tooling
python3 ~/.claude/skills/recap/recap.py --json --limit 50
--open flagRestores a whole working set at once. It opens one new tab per listed session and types the resume command into it. Rules:
CLAUDE_CODE_SESSION_ID), so it never re-opens itself.--limit / --since / --project decide exactly which tabs appear. Check with --dry-run before committing.--yes it asks for confirmation; with piped stdin (Claude Code's Bash tool) it refuses to open unless --yes is passed.--claude-flags is passed through verbatim to every tab. --dangerously-skip-permissions disables all permission checks in each opened session; the script prints a warning before doing it.osascript, so it is macOS-only. On other platforms --open exits with a clear message; --open --dry-run still prints the commands so they can be pasted anywhere.Run the script with Bash, ALWAYS with --color (tool output is piped, auto-detection would strip the colors; Claude Code renders ANSI). Add --since/--project if the user narrowed the question, then relay the table. Quote the resume command (cd <path> && claude -r <id>) for any session the user wants to re-enter. Only add --smart if the user explicitly asks for better summaries; it makes a network call.
Use --open only when the user explicitly asks to re-open or resume the sessions. Because the Bash tool pipes stdin, --open needs --yes; treat the user's request as the confirmation, and set the scope with --limit/--since so no unwanted session gets a tab. Pass --claude-flags only with flags the user named; state the permission-bypass warning in your reply whenever --dangerously-skip-permissions is among them.
~/.claude/history.jsonl is the fast index (prompt text, timestamp, project path, session id). CLAUDE_CONFIG_DIR is honored when set.~/.claude/projects/<encoded>/<session>.jsonl transcripts are parsed only for the displayed rows (title, branch, model, turn count). Project paths always come from the cwd/project fields, never decoded from folder names (that encoding is lossy). Because claude -r only finds a session from the directory it started in, recap resolves the path to the first recorded cwd whose encoding matches the transcript's folder, so a mid-session cd never produces an unresumable command; a session with no cwd at all borrows one from a sibling transcript.ai-title line, else the first real user prompt, else (no prompt).--smart privacy: the only path that leaves the machine. It shells out to the local claude CLI once and sends, for the listed sessions only, each session's 8-character id prefix, its title (first 150 characters), and its first user prompt (first 300 characters). No file bodies, no transcript contents, no other sessions. If claude is not on PATH, --smart is skipped with a warning and the offline summaries are used.--open and --pick are the only side-effecting paths: --open drives iTerm2/Terminal via osascript, --pick execs claude -r in the chosen directory. Neither writes or touches session data.alias recap='python3 ~/.claude/skills/recap/recap.py'
npx claudepluginhub noluyorabi/claude-code-recap --plugin claude-code-recapRecaps Claude Code sessions using claude-view tools to list recent ones, fetch details, and summarize duration, model, turns, commits, metrics. Activates on recap/summary/review requests.
Analyzes Claude Code sessions in three modes: Handoff Document (exhaustive context extraction), Error Forensics (complete error/warning inventory), and Chronological Summary (dense technical timeline).
Displays summaries of recent Claude Code sessions including timestamps, durations, edited files, token usage, and waste percentages for quick context recovery. Useful after restarting sessions.