Smithery Logo
MCPsSkillsDocsPricing
Login
Smithery Logo

Accelerating the Agent Economy

Resources

DocumentationPrivacy PolicySystem Status

Company

PricingAboutBlog

Connect

© 2026 Smithery. All rights reserved.

    spences10

    database-patterns

    spences10/database-patterns
    Coding
    6

    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

    SQLite operations using better-sqlite3 with prepared statements. Use when implementing CRUD operations, timestamps, and user-scoped queries with row-level security.

    SKILL.md

    Database Patterns

    Quick Start

    import { db } from '$lib/server/db';
    import { nanoid } from 'nanoid';
    
    // SELECT with user_id (row-level security)
    const contact = db
    	.prepare('SELECT * FROM contacts WHERE id = ? AND user_id = ?')
    	.get(id, user_id) as Contact | undefined;
    
    // INSERT with nanoid and timestamps
    const stmt = db.prepare(
    	'INSERT INTO contacts (id, user_id, name, created_at, updated_at) VALUES (?, ?, ?, ?, ?)',
    );
    stmt.run(nanoid(), user_id, name, Date.now(), Date.now());
    

    Core Principles

    • Prepared statements: Use for all queries (SQL injection prevention)
    • ID generation: Use nanoid() for all primary keys (no auto-increment)
    • Timestamps: Store as Unix epoch with Date.now() (milliseconds)
    • Row-level security: Always include user_id in WHERE clause (never query by ID alone)
    • Transactions: Use for multi-table operations (all-or-nothing)
    • Synchronous: better-sqlite3 is sync - no async/await needed

    Reference Files

    • schema.md - Complete schema with columns and types
    • relationships.md - Table relationships and foreign keys
    • query-examples.md - Joins, transactions, and advanced patterns
    Recommended Servers
    Neon
    Neon
    Vercel Grep
    Vercel Grep
    ThinAir Data
    ThinAir Data
    Repository
    spences10/devhub-crm
    Files