elastic-claude

Kirill-Babkin's avatarfrom Kirill-Babkin

Index and search project knowledge. Use when starting a new task to find related prior work, when ingesting documents or chats, or when searching project history for context.

⭐0stars🔀0forks📁View on GitHub🕐Updated Jan 2, 2026⬇️1downloads

When & Why to Use This Skill

Elastic-Claude is a robust local search infrastructure designed to index and retrieve project-specific knowledge, including documents, chat histories, and code snippets. By providing a persistent memory layer, it enables Claude to maintain deep context across sessions, allowing for efficient retrieval of prior work, architectural decisions, and technical documentation to streamline complex development workflows.

Use Cases

  • Project Onboarding: Search through historical project data and documentation to quickly understand context and prior work when starting new tasks.
  • Automated Document Ingestion: Index markdown files, READMEs, and technical docs with rich metadata (project, title, tags) for instant, high-relevance retrieval.
  • Persistent Chat Memory: Save and search previous Claude session transcripts to recall specific logic, debugging steps, or requirements discussed in the past.
  • Contextual Code Discovery: Index local codebases to help the agent find specific implementations or code patterns relevant to the current coding objective.
nameelastic-claude
descriptionIndex and search project knowledge. Use when starting a new task to find related prior work, when ingesting documents or chats, or when searching project history for context.

Elastic-Claude

Local search infrastructure for project knowledge.

CLI Commands

Add an entry

# From file path (preferred - Rust reads the file)
elastic-claude add -t <type> -p <file_path> [-m '<json_metadata>']

# Inline content (for small content)
elastic-claude add -t <type> -c "<content>" [-m '<json_metadata>']

# From stdin
cat <file> | elastic-claude add -t <type> [-m '<json_metadata>']

Arguments:

  • -t, --entry-type: Entry type (e.g., "document", "chat", "code")
  • -p, --path: Read content from file (also sets file_path in DB)
  • -c, --content: Inline content (conflicts with -p)
  • -m, --metadata: JSON metadata (optional)

Example:

elastic-claude add -t document -p /path/to/file.md -m '{"project": "my-project", "title": "My Doc", "category": "docs"}'

Search entries

elastic-claude search "<query>"

Returns matching entries with snippets, scores, and metadata.

Save current chat session

# Get path to current chat file
elastic-claude current-chat --path-only

# Ingest current chat with metadata (always include project)
elastic-claude current-chat -m '{"project": "my-project", "title": "Session title", "tags": ["topic1", "topic2"]}'

Auto-detects the current Claude session and ingests the chat file.

Get entry by ID

# Get full entry details
elastic-claude get <id>

# Get just the content
elastic-claude get <id> --content-only

# Show tsvector tokens (for debugging search)
elastic-claude get <id> --tsv

Workflow for Ingesting Documents

When asked to ingest files:

  1. Determine the project name from the current working directory or ask the user
  2. Read each file's content
  3. Extract metadata from content and path:
    • project: always include - the project/repo name
    • title: from first heading or filename
    • category: from directory path
    • tags: from content keywords
  4. Call elastic-claude add for each file

Example for a markdown file:

elastic-claude add -t document -p /path/to/file.md -m '{"project": "CQR", "title": "Extracted Title", "category": "documentation"}'

Workflow for Searching

When asked to find information:

  1. Run elastic-claude search "<relevant keywords>"
  2. Review the results (snippets, file paths, metadata)
  3. If needed, read the full files for more context
  4. Summarize findings for the user

Schema Reference

See references/schema.md for database schema details.

Entry types:

  • document: Markdown docs, READMEs, etc.
  • chat: Chat session transcripts
  • code: Code snippets or files