ワンクリックで
find-conversation
Search past Claude Code conversations (JSONL session history) by topic, content, date, or working directory.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Search past Claude Code conversations (JSONL session history) by topic, content, date, or working directory.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Operate a local Omnigent install — crashes, blank UI, restarts, session attach/resume/dispose, process topology — and drive other agents via the sys_* MCP tools.
Extract a person's LinkedIn writing voice DNA into an 8-dimension style profile with vocabulary fingerprint, signature moves, and a Prompt Engineering Guide.
Audit third-party code (repos, npm packages, binaries, plugins) for telemetry, exfiltration, supply-chain risk, and hostile defaults before install; verdict SAFE/CAUTION/UNSAFE with file:line evidence.
When loaded: deliver reports, intake interviews (>3 fields), and option/mockup choices as one self-contained offline .html page instead of chat Markdown. Forms return answers via a copy-paste token.
Optional layer: write specs, plans, designs, and reports as MDX (Markdown + a component library) rendered locally via Vite — git-diffable, degrades to plain Markdown, no remote services.
Pre-install safety check for a software update — invoke on an update prompt, 'new version available', upgrade notice, or when asked if an installed/trusted tool is safe to update.
| name | find-conversation |
| description | Search past Claude Code conversations (JSONL session history) by topic, content, date, or working directory. |
| when_to_use | Finding a previous conversation, recalling what was discussed, locating a session, or resuming past work — 'find that conversation', 'we talked about X before', 'resume that session'. |
Search through past Claude Code conversation history stored as JSONL files.
~/.claude/projects/{encoded-cwd}/{sessionId}.jsonl/ → -, spaces → - (e.g., -Users-zarz-dev-kb-personal, -Users-zarz-dev-projects-daitw-2026; older sessions encoded under -Users-zarz-dev-life-os before the multi-repo split){UUID}.jsonl — the UUID is the session IDEach line is a JSON object:
{
"sessionId": "UUID",
"type": "user|assistant|system|progress|last-prompt|file-history-snapshot",
"timestamp": "ISO 8601 UTC",
"cwd": "/working/directory",
"version": "2.1.73",
"gitBranch": "master",
"isMeta": false,
"message": {
"role": "user|assistant",
"content": "string or array"
}
}
Run claude --resume non-interactively to get recent sessions with their first messages. This is the fastest way to scan recent work:
# List recent sessions (pipe to grep to search)
echo "" | claude --resume 2>&1 | head -50
If this doesn't work well non-interactively, skip to Step 2.
Search across ALL project directories. Never filter by file mtime — sessions can span days and mtime reflects last write, not content dates.
# Search for keywords in user messages across all sessions
grep -rl "search term" ~/.claude/projects/*/ --include="*.jsonl" | head -20
# For more targeted search (user messages only)
grep -l '"type":"user".*search term' ~/.claude/projects/*/*.jsonl
Use multiple keyword variants — the user may describe the topic differently than how it appeared in the conversation.
For each matching file, extract context:
# Get session ID from filename
basename /path/to/session.jsonl .jsonl
# Get first user message (skip isMeta records)
python3 -c "
import json, sys
with open(sys.argv[1]) as f:
for line in f:
r = json.loads(line)
if r.get('type') == 'user' and not r.get('isMeta'):
content = r['message'].get('content', '')
if isinstance(content, list):
content = ' '.join(c.get('text','') for c in content if c.get('type')=='text')
print(f\"First msg ({r['timestamp']}): {content[:200]}\")
break
" /path/to/session.jsonl
# Get working directory
python3 -c "
import json, sys
with open(sys.argv[1]) as f:
r = json.loads(f.readline())
print(f\"CWD: {r.get('cwd', 'unknown')}\")
" /path/to/session.jsonl
# Get date range (first and last timestamps)
python3 -c "
import json, sys
lines = open(sys.argv[1]).readlines()
first = json.loads(lines[0])
last = json.loads(lines[-1])
print(f\"Range: {first.get('timestamp','?')} → {last.get('timestamp','?')}\")
" /path/to/session.jsonl
Long sessions get compacted — content from early in the session may not appear in grep results because it was summarized/removed. If you suspect this:
grep -rl "keyword" ~/.claude/plans/*.mdtype: "system" records with compaction markersFor each candidate session, show:
Let the user pick. Then offer to open it:
# Resume in current terminal
claude --resume {sessionId}
# Resume in new tmux window
tmux new-window -n "session-name" "cd {cwd} && claude --resume {sessionId}"
~/.claude/plans/*.md persist even when conversation context is compacted