What problem does it solve? SQLite databases and their WAL files can grow to hundreds of megabytes without an obvious cause, especially under connection pooling where checkpoint truncation never fires. This Skill provides a measured, read-only-first workflow to find where the bytes actually live before attempting any fix. ## Core Features & Use Cases - Read-only diagnosis workflow: Snapshot the database with .backup, run sqlite3_analyzer for per-table space utilization, and check PRAGMA wal_checkpoint(TRUNCATE) on the snapshot to distinguish real checkpoint debt from already-checkpointed garbage. - WAL growth mechanics explained: Understand why passive auto-checkpoints cannot truncate while pooled connections hold read locks, causing unbounded WAL growth of already-checkpointed frames. - vec0 chunk storage trap: Avoid misreading vec0 chunk tables (one chunk row holds 1024 vectors) as an emptied index by validating with dbstat page counts and validity bitmaps. - Maintenance fix pattern: A BackgroundService pattern with startup/shutdown checkpoints, hourly TRUNCATE, and weekly VACUUM + ANALYZE that took a real bank from 461 MB to ~16-20 MB steady state. - Use Case: Your application's SQLite bank file shows a 431 MB WAL next to a 29 MB database. Use this Skill to prove the WAL is 100% reclaimable, truncate it in under a second, and design a bounded-footprint maintenance service. ## Quick Start Diagnose why my SQLite database file and its WAL are so large and tell me how much space I can safely reclaim.