| name | claude-session-load |
|---|---|
| description | Load a specific Claude Code session into the current conversation by session id, given as a rough/possibly-mistyped uuid (e.g. "01935a40-5a79-4142-966a-47a1da99c3bb"). Reads the matching <session-id>.jsonl under ~/.claude/projects/**/ (and Claude desktop's local-agent-mode-sessions), produces a concise summary of what was asked, done, and changed, and keeps the raw file path on hand to look up exact detail later in the conversation. Use when the user invokes /claude-session-load <id>, says "load claude session <id>", "what happened in claude session <id>", "summarize this claude session", or pastes a Claude session id and asks what it contains. |
Bring one Claude Code session into context as a compact summary, not a wall of raw JSONL. The point is to load enough to answer questions about that session immediately, while keeping a path back to the raw transcript for anything the summary doesn't cover.
This is the Claude-side counterpart to codex-session-load — same idea, different file format.
Take whatever id-like string the user gives you (full uuid, partial, or slightly mistyped) and run the bundled script:
python3 ~/.claude/skills/claude-session-load/scripts/load_session.py "<id-or-substring>"This searches ~/.claude/projects/**/*.jsonl and Claude desktop's
~/Library/Application Support/Claude/local-agent-mode-sessions/**/*.jsonl, first by exact filename
match (<id>.jsonl), then substring, then a fuzzy match against the filename's id portion (handles
a stray/missing character from copy/paste). It returns one of:
{"status": "ok", "path": ..., "digest": {...}}— exactly one match, parsed.{"status": "ambiguous", "candidates": [...]}— more than one close match. List the candidate paths (the parent directory name encodes the project path, e.g.-Users-name-project-a→/Users/name/project-a) and ask the user which one they meant.{"status": "not_found", ...}— no match. Tell the user and ask them to double check the id, or offer to list recent sessions for a project (ls ~/.claude/projects/<project-dir>/*.jsonl).
The digest already strips boilerplate (<local-command-caveat>, <command-name>,
<system-reminder> wrapper text, isMeta lines) and gives you:
meta— session id, cwd, git branch, Claude Code version, start timeuser_messages— the actual things the user asked for, in orderassistant_messages— the model's text repliestool_uses— tool calls made (name + truncated input), e.g. Edit/Bash/Write calls
Turn this into a short narrative for the user, in roughly this shape:
- One-line header: project (cwd), git branch, date, how many turns.
- Timeline: each real user ask, in order, with a short note on what was done in response
(cross-reference
tool_usesnear that timestamp — e.g. "edited X", "ran git push", "created Y"). - Outcome: what shipped / what's still open, if evident from the trailing messages.
Keep it tight — a few bullets per turn, not a transcript dump. This summary is what should live in the conversation; don't paste the full raw JSON back to the user unless they ask for it.
Remember the resolved path from Step 1. If the user later asks something the summary doesn't
cover (the exact diff, an exact tool input, an exact error string), don't re-derive it from memory —
grep the original file for it:
grep -o '"name":"[A-Za-z]*"' <path> | sort -u # which tools were used
grep -n '<keyword>' <path> # find line(s) mentioning somethingThen read the matched line(s) (python3 -c "import json; print(json.loads(open('<path>').readlines()[N]))")
and answer from that specific event rather than guessing. Treat the summary as the working context
and the file as the source of truth to refer back to on demand.
- Claude Code session ids are the filename itself:
~/.claude/projects/<path-encoded-project>/<uuid>.jsonl. message.contentcan be a plain string (simple text turns) or a list of content blocks (text,tool_use,tool_result, etc.) — the script already handles both.- If several sessions are genuinely close matches (forked/resumed sessions, or the same id reused across a CLI session and a desktop local-agent-mode session), surface all of them rather than guessing — let the user disambiguate.
- This skill only loads context; it does not write anything to the wiki. For mining Claude history
into the Obsidian wiki, use
claude-history-ingestorwiki-agent(/wiki-claude) instead.