
Find Session
- 19 installs
- 309 repo stars
- Updated May 1, 2026
- fleurytian/awesome-claude-skills
Identify a specific Claude Code conversation by UUID by grepping session jsonl files and pin it as a one-word shell function to resume reliably.
About
Finds the correct Claude Code session UUID by scanning the jsonl files under ~/.claude/projects and writes a one-word shell function for exact resume. A developer uses it when claude --continue picks the wrong session or when they want to reliably resume a specific long-running conversation across reboots.
- Locates the encoded-cwd directory and lists session jsonl files
- Writes a shell function so claude --resume <uuid> becomes one word
Find Session by the numbers
- 19 all-time installs (skills.sh)
- Ranked #364 of 550 CLI & Terminal skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/fleurytian/awesome-claude-skills --skill find-sessionAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 19 |
|---|---|
| repo stars | ★ 309 |
| Last updated | May 1, 2026 |
| Repository | fleurytian/awesome-claude-skills ↗ |
What it does
Identify a specific Claude Code conversation by UUID by grepping session jsonl files and pin it as a one-word shell function to resume reliably.
Files
find-session — pin a specific Claude conversation
claude --continue picks "most recent in cwd" — unreliable when multiple sessions share a directory. claude --resume <uuid> is exact. This skill finds the right UUID by grepping jsonl files, then writes a one-word shell function so the user types e.g. aichain to resume that exact conversation.
When to use
- User says "I can't find my session" / "claude --continue picks wrong one"
- User wants a one-word resume command for a specific long-running conversation
- Multiple
.jsonlfiles in~/.claude/projects/<encoded-cwd>/exist
Workflow
1. Find the encoded-cwd directory
Sessions are stored under ~/.claude/projects/<encoded-cwd>/. The encoding replaces / with -, so cwd /Users/foo/Desktop/MyProj becomes -Users-foo-Desktop-MyProj. Often the cwd at session-start was the user's HOME, even if work happened in a subdirectory.
If unsure which encoded-cwd to scan:
ls -dt ~/.claude/projects/*/ | head -5The most recently modified directory is likely the right one.
2. List active session files
ls -lt ~/.claude/projects/<encoded-cwd>/*.jsonl 2>/dev/null | head -10Multiple files = multiple sessions. The biggest by size is NOT necessarily the right one — both the current assistant and other parallel sessions can be wrong about that.
3. Get a unique-content hint from the user
Ask: "What's something only this conversation would contain? A specific filename you created, a unique tool you ran, a project name, etc."
Good hints (highly unique):
- A hostname / URL the conversation generated (e.g.
waqvu5.png) - A file path that was created by this session (e.g.
kimi_research_results) - A specific function name written in this session (e.g.
compute_factor_scores) - A unique error message they remember
Bad hints (too common, will match multiple):
- Generic words like "Python", "test", "fix"
- Common library names
4. grep to find matching session
for f in ~/.claude/projects/<encoded-cwd>/*.jsonl; do
echo "=== $(basename "$f") ==="
grep -c "<unique-string>" "$f" 2>/dev/null
doneThe session with non-zero hits (ideally many hits) is the answer. Confirm with 2-3 different unique strings if the first match is ambiguous.
5. Offer to pin as shell function
Once UUID is identified, ask user for a short name (e.g. aichain, work, headsup). Then append to ~/.zshrc:
# <project description> — resume specific session
<short-name>() {
cd "$HOME" && claude --resume "<uuid>"
}cd "$HOME" matters: sessions are indexed by their starting cwd, so the alias must cd to the same place where the session was originally created (often HOME, even if the actual work touched subdirectories).
After write, tell user to either:
- Run
source ~/.zshrcin current terminal, OR - Open a new terminal
Important notes
- Each
.jsonlis the full transcript log of one session. Sizes can mislead;
always rely on grep'd content matches, not file size.
- The UUID is stable forever — once pinned, the alias keeps working across
reboots, OS upgrades, even years (assuming the .jsonl isn't deleted).
- If user has multiple long-running parallel sessions (e.g., two different
projects, both started from HOME), each needs its own pin. Repeat the workflow once per session.
- Don't confuse session UUIDs across different conversations. If two Claude
instances both claim the same UUID, at least one is wrong — only grep on actual unique content can verify.
Quick check
After pinning, verify:
source ~/.zshrc && type <short-name>Should show the function definition.
find-session
Pin a specific Claude Code conversation by UUID and resume it with a one-word shell command.
What it solves
claude --continue picks the most recent conversation in the current directory — unreliable when:
- You have multiple long-running parallel conversations in the same project
- You started Claude Code from
~(so all your sessions live in the home-dir bucket) - The "most recent" jumps around as you switch tasks
claude --resume <uuid> is exact, but you have to find the right UUID, and there can be more than one Claude instance claiming the same one.
This skill walks Claude through the right grep-the-jsonl workflow, then pins the verified UUID as a ~/.zshrc shell function so you can type e.g. headsup from any new terminal and land in the exact same conversation.
When to use
- "I can't find my conversation" / "claude --continue picks the wrong one"
- "I want a one-word command to resume my long-running [project] session"
- Multiple
.jsonlfiles exist under~/.claude/projects/<encoded-cwd>/
How to invoke
我找不到我的对话, 帮我找出来or explicitly:
/find-sessionThe skill will:
1. List ~/.claude/projects/*/ and find the most recently active bucket 2. List all .jsonl files in that bucket (each = one conversation) 3. Ask you for a unique-content hint (a filename, URL, function name only this conversation would contain) 4. grep -c that string across every .jsonl to identify the right one 5. Confirm UUID, ask for a short alias name (e.g. aichain, headsup, work) 6. Append a function to ~/.zshrc:
<name>() {
cd "$HOME" && claude --resume "<uuid>"
}7. Tell you to source ~/.zshrc (or open a new terminal) — done.
Why grep-not-size
The biggest .jsonl is not necessarily yours. Multiple Claude Code processes can attach to the same conversation file simultaneously and any of them might be confused about which UUID it lives under. Only matching against unique content you remember writing or generating is reliable.
Why cd "$HOME"
Sessions are indexed by their starting cwd, not by where the work happened. A session started from ~ lives under ~/.claude/projects/-Users-yourname/, even if the conversation cd'd into a project subdirectory. The alias must cd "$HOME" so claude --resume <uuid> looks in the right project bucket.
License
MIT — see repo root.