Vault Search Skill
Provides semantic search and SQL queries over the Obsidian vault using sqlite-vec for vector storage and ChromaDB's embedding function.
Python Environment
Interpreter: /Users/roasbeef/vault/.claude/venv/bin/python
Required packages:
- •sqlite-vec (vector search extension)
- •chromadb (embedding function only)
Database Location
Path: /Users/roasbeef/vault/.claude/vault_search/vault.db
Contains:
- •
notestable: frontmatter metadata for all markdown files - •
vec_chunkstable: vector embeddings for semantic search
Available Scripts
search.py - Semantic Search
Find notes by meaning using vector similarity.
bash
# Basic semantic search python scripts/search.py --query "options trading strategies" --n-results 5 # Filter by folder python scripts/search.py --query "earnings analysis" --folder "investing" # Filter by metadata python scripts/search.py --query "task automation" --where "status='open'" # Combined: semantic + metadata python scripts/search.py --query "portfolio risk" --where "folder LIKE 'investing%' AND status='open'"
Arguments:
- •
--query(required): Search query text - •
--n-results: Number of results (default: 5) - •
--folder: Filter by folder prefix - •
--where: SQL WHERE clause for metadata filtering - •
--db-path: Database path (default: .claude/vault_search/vault.db)
Output:
- •Human-readable results with snippets
- •JSON block for programmatic use
dataview.py - SQL Queries (Dataview Replacement)
Query frontmatter metadata using SQL.
bash
# Open tasks due this week
python scripts/dataview.py --sql "SELECT path, due, priority FROM notes
WHERE status = 'open'
AND due < date('now', '+7 days')
ORDER BY due"
# Tasks by folder
python scripts/dataview.py --sql "SELECT path, status, priority FROM notes
WHERE folder LIKE 'TaskNotes%'
AND status != 'done'"
# Investing positions
python scripts/dataview.py --sql "SELECT path, ticker, strategy, expiry FROM notes
WHERE folder LIKE 'investing/Portfolio/Positions%'"
# Query by tags (using json_each)
python scripts/dataview.py --sql "SELECT DISTINCT n.path, n.title
FROM notes n, json_each(n.tags) t
WHERE t.value = 'automation'"
Arguments:
- •
--sql(required): SQL query to execute - •
--db-path: Database path (default: .claude/vault_search/vault.db) - •
--format: Output format: "table" or "json" (default: table)
Available columns:
- •
path,folder,filename,title,modified - •Frontmatter:
status,priority,due,scheduled,tags,projects,contexts - •Investing:
ticker,strategy,expiry
index.py - Build/Rebuild Index
Rebuild the search index from vault files.
bash
# Full rebuild python scripts/index.py --vault-path /Users/roasbeef/vault --rebuild # Incremental update (default) python scripts/index.py --vault-path /Users/roasbeef/vault # Show statistics python scripts/index.py --stats
Arguments:
- •
--vault-path: Path to vault root (default: /Users/roasbeef/vault) - •
--db-path: Database path (default: .claude/vault_search/vault.db) - •
--rebuild: Force full rebuild - •
--stats: Show index statistics
When to Use This Skill
Use semantic search (search.py) when:
- •User asks to "find notes about X"
- •User wants "related notes" to a topic
- •Answering questions about vault contents
- •Exploring a topic across the vault
Use dataview queries (dataview.py) when:
- •User asks to "list tasks" or "show open tasks"
- •Filtering by specific metadata (status, due date, tags)
- •Aggregating or counting notes
- •Building dashboards or summaries
Use combined queries when:
- •"Find notes about X that are also open tasks"
- •"Show investing notes related to Y"
Example Usage
Find Related Notes
code
User: "What notes do I have about HTLC routing?" → python scripts/search.py --query "HTLC routing payment channels" --n-results 5
List Open Tasks
code
User: "Show my open high-priority tasks"
→ python scripts/dataview.py --sql "SELECT path, due FROM notes
WHERE status='open' AND priority='high'
ORDER BY due"
Combined Search
code
User: "Find investing notes about semiconductor supply chain"
→ python scripts/search.py --query "semiconductor supply chain"
--folder "investing"
--n-results 10
Rebuilding the Index
Use the /vault-index command to rebuild the index when:
- •Many files have changed
- •Search results seem stale
- •After bulk imports
Technical Details
- •Embeddings: ChromaDB DefaultEmbeddingFunction (ONNX MiniLM, 384 dims)
- •Storage: sqlite-vec virtual tables
- •Chunking: Split by markdown headings (v1)
- •Excluded folders:
.obsidian,.smart-env,.claude,assets,Templates