Smithery Logo
MCPsSkillsDocsPricing
Login
Smithery Logo

Accelerating the Agent Economy

Resources

DocumentationPrivacy PolicySystem Status

Company

PricingAboutBlog

Connect

© 2026 Smithery. All rights reserved.

    TrevorS

    database

    TrevorS/database
    Data & Analytics
    1 installs

    About

    SKILL.md

    Install

    Install via Skills CLI

    or add to your agent
    • Claude Code
      Claude Code
    • Codex
      Codex
    • OpenClaw
      OpenClaw
    • Cursor
      Cursor
    • Amp
      Amp
    • GitHub Copilot
      GitHub Copilot
    • Gemini CLI
      Gemini CLI
    • Kilo Code
      Kilo Code
    • Junie
      Junie
    • Replit
      Replit
    • Windsurf
      Windsurf
    • Cline
      Cline
    • Continue
      Continue
    • OpenCode
      OpenCode
    • OpenHands
      OpenHands
    • Roo Code
      Roo Code
    • Augment
      Augment
    • Goose
      Goose
    • Trae
      Trae
    • Zencoder
      Zencoder
    • Antigravity
      Antigravity
    ├─
    ├─
    └─

    About

    Work with the SQLite database layer including FTS5, sqlite-vec, and schema operations. Use for database queries, indexing issues, or storage debugging.

    SKILL.md

    SQLite Database Layer

    Schema

    -- Main documents table
    CREATE TABLE documents (
        id TEXT PRIMARY KEY,
        chunk_kind TEXT NOT NULL,  -- 'message', 'tool_use', 'tool_result'
        content TEXT NOT NULL,
        project TEXT,
        session_id TEXT,
        role TEXT,                 -- 'user', 'assistant'
        tool_name TEXT,
        tool_id TEXT,
        tool_input TEXT,
        is_error INTEGER,
        timestamp TEXT,
        source_path TEXT NOT NULL
    );
    
    -- FTS5 full-text search
    CREATE VIRTUAL TABLE documents_fts USING fts5(
        content,
        content='documents',
        content_rowid='rowid'
    );
    
    -- Triggers for FTS sync
    CREATE TRIGGER documents_ai AFTER INSERT ON documents BEGIN
        INSERT INTO documents_fts(rowid, content)
        VALUES (NEW.rowid, NEW.content);
    END;
    
    -- Vector embeddings (512 dims for Potion-base-32M)
    CREATE VIRTUAL TABLE documents_vec USING vec0(
        id TEXT PRIMARY KEY,
        embedding FLOAT[512]
    );
    

    sqlite-vec Initialization

    CRITICAL: Must use sqlite3_auto_extension before any connections:

    use std::sync::Once;
    
    static SQLITE_VEC_INIT: Once = Once::new();
    
    fn init_sqlite_vec() {
        SQLITE_VEC_INIT.call_once(|| {
            unsafe {
                rusqlite::ffi::sqlite3_auto_extension(Some(std::mem::transmute(
                    sqlite_vec::sqlite3_vec_init as *const (),
                )));
            }
        });
    }
    
    pub fn open(path: &Path) -> Result<Database> {
        init_sqlite_vec();  // Must be before Connection::open
        let conn = Connection::open(path)?;
        // ...
    }
    

    Common Queries

    FTS5 Search

    SELECT d.*, fts.rank
    FROM documents_fts fts
    JOIN documents d ON d.rowid = fts.rowid
    WHERE documents_fts MATCH ?1
    ORDER BY fts.rank
    LIMIT ?2;
    

    Vector Search

    SELECT d.*, v.distance
    FROM documents_vec v
    JOIN documents d ON d.id = v.id
    WHERE v.embedding MATCH ?1
      AND k = ?2
    ORDER BY v.distance;
    

    Filtered Search

    SELECT d.*, fts.rank
    FROM documents_fts fts
    JOIN documents d ON d.rowid = fts.rowid
    WHERE documents_fts MATCH ?1
      AND (?2 IS NULL OR d.tool_name = ?2)
      AND (?3 = 0 OR d.is_error = 1)
    ORDER BY fts.rank
    LIMIT ?4;
    

    Database Location

    // ~/.cache/glhf/glhf.db
    pub fn database_path() -> Result<PathBuf> {
        let cache = dirs::cache_dir()
            .ok_or(Error::MissingDirectory { dir_type: "cache" })?;
        Ok(cache.join("glhf").join("glhf.db"))
    }
    

    Debugging

    Check database stats

    glhf status
    

    Inspect with sqlite3

    sqlite3 ~/.cache/glhf/glhf.db
    .tables
    SELECT COUNT(*) FROM documents;
    SELECT chunk_kind, COUNT(*) FROM documents GROUP BY chunk_kind;
    

    Verify FTS5

    SELECT * FROM documents_fts WHERE documents_fts MATCH 'search term';
    

    Verify sqlite-vec

    SELECT vec_version();
    SELECT COUNT(*) FROM documents_vec;
    
    Recommended Servers
    Neon
    Neon
    Prisma
    Prisma
    InstantDB
    InstantDB
    Repository
    trevors/glhf
    Files