一键导入
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