Skip to main content

Find and resume Claude Code conversations using smart hybrid extraction and JIT indexing

Project description

Conversation Search

Find and resume past Claude Code conversations using smart hybrid extraction and JIT indexing. Get session IDs and project paths to easily jump back into previous work.

Features

  • Session Resumption: Get exact commands to resume past conversations
  • Unified CLI: Single conversation-search command with intuitive subcommands
  • Smart Extraction: Hybrid indexing (full user content + smart assistant extraction)
  • JIT Indexing: Instant indexing before search (no AI calls, no delays)
  • Progressive Exploration: Simple search → broader search → manual exploration
  • Conversation Context: Expand context incrementally around any message
  • Claude Code Skill: Integrated Skill that outputs session resumption commands
  • Multi-Project Support: Works across all your Claude Code projects

Quick Start

Installation via Claude Code Plugin (Recommended)

Install the complete plugin (skill + CLI tool instructions) directly in Claude Code:

/plugin install akatz-ai/cc-conversation-search

Then follow the installation instructions shown by Claude to:

  1. Install the CLI tool: uv tool install cc-conversation-search
  2. Initialize the database: conversation-search init

Manual Installation

1. Install CLI Tool

# Using uv (recommended)
uv tool install cc-conversation-search

# Or using pip
pip install cc-conversation-search

2. Initialize Database

conversation-search init

This creates the database and indexes your last 7 days of conversations.

3. Install Skill (Optional)

mkdir -p ~/.claude/skills/conversation-search
cp skills/conversation-search/* ~/.claude/skills/conversation-search/

Basic Usage

# Search for conversations (shows session ID and resume commands)
conversation-search search "authentication bug"

# Search with time filter
conversation-search search "react hooks" --days 30

# Get resume commands for a specific message
conversation-search resume <MESSAGE_UUID>

Using with Claude Code Skill

Once installed, ask Claude:

  • "Find that conversation where we discussed authentication"
  • "Locate the conversation about React hooks"
  • "What did we talk about regarding the database?"

Auto-Installation: If the CLI tool isn't installed, the skill will automatically attempt to install it via uv or pip, then initialize the database. In most cases, everything "just works" after installing the plugin!

Claude will show you the session ID, project path, and exact commands to resume the conversation.

Command Reference

conversation-search init

Initialize database and perform initial indexing

conversation-search init [--days 7] [--no-extract] [--force]

conversation-search index

JIT index conversations (instant, no AI calls)

conversation-search index [--days N] [--all] [--no-extract]

IMPORTANT: The skill always runs index before search for fresh data.

conversation-search search

Search conversations

conversation-search search "query" [--days N] [--project PATH] [--content] [--json]

conversation-search context

Get context around a specific message

conversation-search context MESSAGE_UUID [--depth 5] [--content] [--json]

conversation-search list

List recent conversations

conversation-search list [--days 7] [--limit 20] [--json]

conversation-search tree

View conversation tree structure

conversation-search tree SESSION_ID [--json]

Architecture

~/.claude/
├── projects/           # Claude Code conversation files (JSONL)
│   └── {project}/
│       └── {session}.jsonl
└── skills/
    └── conversation-search/  # Optional Skill

~/.conversation-search/
└── index.db           # SQLite database with indexed conversations

Key Purpose: Find session IDs and project paths to resume past conversations.

Database Schema

  • messages: Individual messages with summaries, tree structure (parent_uuid), timestamps
  • conversations: Session metadata with conversation summaries
  • message_summaries_fts: FTS5 full-text search index
  • index_queue: Processing queue for batch operations

How It Works

  1. Indexer: Scans ~/.claude/projects/ for JSONL conversation files, parses tree structure
  2. Smart Extraction: Hybrid approach - full user content + first 500/last 200 chars for assistant
  3. Search: FTS5 full-text search over extracted content with conversation tree traversal
  4. JIT Indexing: Skill runs index before search for fresh data (instant, no AI calls)

Claude Code Skill

The included Skill allows Claude to search your conversation history automatically.

Example usage:

User: "Find that conversation where we started implementing the API"
Claude: [Activates conversation-search Skill]
        [Runs Level 0: conversation-search index --days 7]  (instant JIT index)
        [Runs Level 1: conversation-search search "implementing API" --days 14 --json]
        [Finds match]
        [Displays session ID, project path, and resume commands]

        Output:
        Session: abc-123-session-id
        Project: /home/user/projects/myproject
        Time: 2025-11-13 22:50

        To resume:
          cd /home/user/projects/myproject
          claude --resume abc-123-session-id

See skills/conversation-search/SKILL.md for progressive search workflow and complete documentation.

Advanced Usage

JSON Output for Scripting

All commands support --json flag:

# Export search results
conversation-search search "authentication" --json > auth_convs.json

# Programmatic processing
conversation-search list --days 30 --json | jq '.[] | .conversation_summary'

Programmatic Use

from conversation_search.core.search import ConversationSearch
from conversation_search.core.indexer import ConversationIndexer

# Search for messages
search = ConversationSearch()
results = search.search_conversations("authentication", days_back=7)
for r in results:
    print(f"{r['message_uuid']}: {r['summary']}")  # UUID for branching

# Index conversations
indexer = ConversationIndexer()
indexer.index_all(days_back=7)
indexer.close()

Configuration

Database location: ~/.conversation-search/index.db

No configuration file needed - all settings via command-line flags.

Performance

  • Smart Extraction: Instant (no AI calls), deterministic
  • Indexing Speed: ~1000+ messages/second (no API latency)
  • Storage: ~1-2KB per message (extracted text + metadata)
  • Search Speed: SQLite FTS5 is very fast, even with 100K+ messages
  • Cost: $0 (no AI API calls during indexing)

Development

Setup

git clone https://github.com/akatz-ai/cc-conversation-search
cd cc-conversation-search
uv tool install -e .

Run Tests

pytest tests/

Project Structure

conversation-search/
├── src/
│   └── conversation_search/
│       ├── __init__.py
│       ├── cli.py              # Unified CLI
│       ├── core/
│       │   ├── indexer.py      # Conversation indexing
│       │   ├── search.py       # Search functionality
│       │   └── summarization.py # Smart hybrid extraction
│       └── data/
│           └── schema.sql      # Database schema
├── skills/
│   └── conversation-search/
│       ├── SKILL.md           # Claude Code Skill with progressive workflow
│       └── REFERENCE.md       # Complete command reference
├── pyproject.toml
└── README.md

Troubleshooting

"Database not found" error:

conversation-search init

"No conversations found":

  • Verify ~/.claude/projects/ exists and contains JSONL files
  • Use Claude Code to create some conversations first

Want to skip extraction and use raw content only:

# Store only raw content (even faster, but less optimized for search)
conversation-search init --no-extract

Skill not activating:

  • Check Skill location: ls ~/.claude/skills/conversation-search/SKILL.md
  • Verify YAML frontmatter format
  • Restart Claude Code
  • Try explicit trigger: "Search my conversations for X"

Import errors:

uv tool uninstall cc-conversation-search
uv tool install cc-conversation-search

Contributing

PRs welcome! This is an experimental tool to improve Claude Code workflow.

Areas for Contribution

  • Vector embeddings for semantic similarity search
  • Web UI for conversation tree visualization
  • Export conversation branches as markdown
  • Conversation analytics (topics, frequency, etc.)
  • Additional Claude Code Skills using the search API

License

MIT

Acknowledgments

Built for the Claude Code ecosystem. Uses smart hybrid extraction for instant, cost-free indexing.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cc_conversation_search-0.4.2.tar.gz (30.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

cc_conversation_search-0.4.2-py3-none-any.whl (25.7 kB view details)

Uploaded Python 3

File details

Details for the file cc_conversation_search-0.4.2.tar.gz.

File metadata

  • Download URL: cc_conversation_search-0.4.2.tar.gz
  • Upload date:
  • Size: 30.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for cc_conversation_search-0.4.2.tar.gz
Algorithm Hash digest
SHA256 f46568494ee454dcd64032111b1caba1726b76cab9ed1e4111aa0e9262c1edd8
MD5 3570c52f7eb0551e6f2857135cc160c6
BLAKE2b-256 f5c74e90545a22c1875ea84b88d3309b58112f38903b554c5eb04cb64abcffc0

See more details on using hashes here.

Provenance

The following attestation bundles were made for cc_conversation_search-0.4.2.tar.gz:

Publisher: publish.yml on akatz-ai/cc-conversation-search

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file cc_conversation_search-0.4.2-py3-none-any.whl.

File metadata

File hashes

Hashes for cc_conversation_search-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 324a28a3a08be68093a3a02e3980677fda02f176764ffaade5f17eae083a9e7b
MD5 19c42744b094718d4010cd827924fa81
BLAKE2b-256 feccebdae2aeade1b7abe84706d5bc33a61b44e8f3bb506d9bf85646ebbbd1d6

See more details on using hashes here.

Provenance

The following attestation bundles were made for cc_conversation_search-0.4.2-py3-none-any.whl:

Publisher: publish.yml on akatz-ai/cc-conversation-search

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page