| name | ls-conversation-lookup |
| description | Find, search, and summarize Claude Code conversations. BM25 + semantic (vector) + hybrid search across indexed messages. Uses all-MiniLM-L6-v2 embeddings (sentence-transformers). USE PROACTIVELY when you need historical context — don't rg through JSONL files manually. Triggers on 'find conversation', 'search conversations', 'search convos', 'convo search', 'what conversation did we', 'which session did we', 'when did we build', 'find where we discussed', 'remember when we', or when a bare 8-char hex ID is given. Also use when the user references past work and you need to locate it. Use '--mode semantic' for conceptual queries, '--mode hybrid' for best results. |
| user_invocable | true |
| command | convo |
Conversation Lookup & Search
Find conversations by ID, or search across all conversations using BM25, semantic vectors, or hybrid mode.
Prerequisites
Modes
| Flag | What it does |
|---|
<id> | Lookup by ID prefix — return path, project, size, date |
<id> --summarize | Lookup + extract + Devstral summary |
<id> --extract | Lookup + extract condensed transcript (no LLM) |
--search "query" | BM25 keyword search (default) |
--search "query" --mode semantic | Vector similarity search (conceptual) |
--search "query" --mode hybrid | BM25 + vector combined (best results) |
--index | Build/update the FTS5 search index (incremental) |
--index-embeddings | Build/update vector embeddings (incremental) |
--stats | Show index statistics |
Search Modes
BM25 (default) — keyword matching
Best for: exact terms, function names, error messages, file paths.
python ${CLAUDE_SKILL_DIR}/find_conversation.py --search "navigator.clipboard"
Semantic — vector similarity via all-MiniLM-L6-v2
Best for: conceptual queries ("how does the terminal work"), fuzzy matches, finding conversations about a topic even when exact words differ.
python ${CLAUDE_SKILL_DIR}/find_conversation.py --search "debugging PowerShell PATH issues" --mode semantic
Hybrid — BM25 + vector combined (30% keyword / 70% vector)
Best overall results. Combines keyword precision with semantic understanding.
python ${CLAUDE_SKILL_DIR}/find_conversation.py --search "clipboard copy paste terminal" --mode hybrid
Setup
FTS5 index (required for BM25 and hybrid):
python ${CLAUDE_SKILL_DIR}/find_conversation.py --index
Embeddings (required for semantic and hybrid):
python ${CLAUDE_SKILL_DIR}/find_conversation.py --index-embeddings
Both are incremental — re-running only processes new/modified files. Use --force for full rebuild.
Common Options
-n 20
--project LiteSuite
--type user
--hours 48
--date 2026-04-12
--force
When to use which mode:
- Exact terms (function names, errors) →
--search "term" (BM25 default)
- Conceptual queries ("when did we fix the auth bug") →
--mode semantic
- Best of both →
--mode hybrid
- User says "use rag" → use
--mode hybrid
- User gives an ID → lookup mode (no --search)
- "This happened yesterday/recently" → add
--hours 24 or --hours 72
- "I know it was the 12th" → add
--date 2026-04-12
Lookup Mode (Original)
- Extract the ID from the user's message (8+ hex characters)
- Determine the mode:
- If the user says "summarize", "summary", "what happened in" → use
--summarize
- If the user says "extract", "transcript" → use
--extract
- Otherwise → lookup only
- Run:
python ${CLAUDE_SKILL_DIR}/find_conversation.py <id> [--summarize | --extract]
- Report the results to the user.
For --summarize: Requires LM Studio running with Devstral loaded. Falls back to qwen3.5-0.8b if Devstral isn't available.
For lookup only: Do NOT read the file contents into context — just return the path.