From travcjohnson-claude-skills
Recover a Claude Code session that fails to resume with "No conversation found" — finds the session file across all encoded project directories, extracts the real cwd from inside the jsonl, and reruns the corrected `claude --resume` command. Trigger when the user pastes a failing `cd … && claude --resume <id>` block, asks to "resume that session", "open the lost session", or any variant of recovering a Claude session that errored on resume. Also trigger if the user asks how to install or set up this skill.
How this skill is triggered — by the user, by Claude, or both
Slash command
/travcjohnson-claude-skills:resume-claude-sessionThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
If the user was given this file and asks to set it up, do it for them:
If the user was given this file and asks to set it up, do it for them:
mkdir -p ~/.claude/skills/resume-claude-session
# copy or write this SKILL.md into that folder
That's it — Claude Code auto-discovers skills in ~/.claude/skills/<name>/SKILL.md. Tell them to start a new session and say "resume my lost session" (or paste the failing command) to trigger it. No dependencies beyond claude itself and standard Unix tools (find, grep, cut).
The user pastes (or describes) a failing resume attempt like:
cd '/path/to/dir' && claude --resume '<uuid>'
No conversation found with session ID: <uuid>
The cause is almost always that the cd path doesn't match the cwd where the session was originally created — claude --resume is scoped to ~/.claude/projects/<encoded-cwd>/, not searched globally.
Extract the session ID from the pasted command (UUID after --resume). If the user doesn't have an ID, list candidates: the most recently modified *.jsonl files under ~/.claude/projects/ are the most recent sessions:
find ~/.claude/projects -maxdepth 2 -name "*.jsonl" -not -path "*/subagents/*" -newer /tmp -print 2>/dev/null
ls -t ~/.claude/projects/*/*.jsonl 2>/dev/null | head -10
Locate the actual session file. Search ALL project dirs, not just the one implied by the failed command:
SESSION_FILE=$(find ~/.claude/projects -maxdepth 2 -name "<id>.jsonl" -not -path "*/subagents/*" -print -quit)
claude --continue (resumes the most recent session in the current directory) instead. Stop.Extract the real cwd from the jsonl. The directory name is lossy (/ and _ both encode to -), so don't try to decode it — read the canonical field from inside the file:
REAL_CWD=$(grep -m1 -o '"cwd":"[^"]*"' "$SESSION_FILE" | cut -d'"' -f4)
If REAL_CWD is empty (very old session formats), fall back to attempting to decode the directory name and ask the user to confirm before proceeding.
Preserve any flags from the original command (e.g. --dangerously-skip-permissions). Include a flag only if the original command had it.
Hand back the corrected command for the user to run in their terminal:
cd '<REAL_CWD>' && claude --resume '<id>'
You cannot run this for them — claude is interactive and would nest inside the current session. Print it clearly and tell them to paste it into a NEW terminal tab/window/pane. If their terminal multiplexer has a CLI you can drive (tmux, cmux, etc.), offer to open the pane and send the command — e.g. for tmux:
tmux split-window -h "cd '<REAL_CWD>' && claude --resume '<id>'"
Report back to the user with:
<wrong-cwd>, real cwd is <right-cwd> — run the command above in a new terminal."cd will fail. Recreate the directory (mkdir -p) or advise the user the session's working directory is gone; resuming from a recreated empty dir still restores the conversation, just not the files.~/.claude/projects/ has one subdirectory per cwd that ever ran claude. A git worktree at <repo>/.claude/worktrees/<branch> is a different cwd from the main repo root, so they get separate session dirs. Whatever generated the failed resume command (often another tool that captured the session ID without capturing the cwd) paired the right ID with the wrong path.
When claude --resume <id> says "No conversation found":
find ~/.claude -name "<id>*" 2>/dev/null
~/.claude/projects/<encoded-cwd>/ → session exists, wrong cwd. Use this skill.--continue instead.Never accept "not found" from a path-scoped CLI as ground truth. Verify with the filesystem.
Provides a checklist for code reviews covering functionality, security, performance, maintainability, tests, and quality. Use for pull requests, audits, team standards, and developer training.
npx claudepluginhub travcjohnson/claude-skills --plugin resume-claude-session