SQLite
SQLite is an embedded relational database that stores everything in a single file. It requires no server process and is included in Python's standard library and most operating systems.
Best use case
SQLite is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
SQLite is an embedded relational database that stores everything in a single file. It requires no server process and is included in Python's standard library and most operating systems.
Teams using SQLite should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/sqlite/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How SQLite Compares
| Feature / Agent | SQLite | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
SQLite is an embedded relational database that stores everything in a single file. It requires no server process and is included in Python's standard library and most operating systems.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# SQLite
SQLite is an embedded relational database that stores everything in a single file. It requires no server process and is included in Python's standard library and most operating systems.
## Installation
```bash
# Install SQLite CLI on Ubuntu/Debian
sudo apt-get install sqlite3
# Install SQLite CLI on macOS (pre-installed, or update via Homebrew)
brew install sqlite
# Install Node.js driver
npm install better-sqlite3
# Python — sqlite3 is built-in, no install needed
```
## CLI Basics
```bash
# Create or open a database
sqlite3 myapp.db
# Import CSV data
sqlite3 myapp.db ".mode csv" ".import data.csv users"
# Run a query from command line
sqlite3 myapp.db "SELECT count(*) FROM users;"
# Dump schema
sqlite3 myapp.db ".schema"
# Export to SQL
sqlite3 myapp.db ".dump" > backup.sql
```
## Create Tables and Index
```sql
-- schema.sql: Define tables with proper types and constraints
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
email TEXT NOT NULL UNIQUE,
name TEXT NOT NULL,
created_at TEXT DEFAULT (datetime('now'))
);
CREATE TABLE IF NOT EXISTS posts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER NOT NULL REFERENCES users(id),
title TEXT NOT NULL,
body TEXT,
published_at TEXT
);
-- Create indexes for common queries
CREATE INDEX idx_posts_user_id ON posts(user_id);
CREATE INDEX idx_posts_published ON posts(published_at);
```
## Enable WAL Mode
```sql
-- wal-mode.sql: Enable Write-Ahead Logging for better concurrent read performance
PRAGMA journal_mode = WAL;
PRAGMA busy_timeout = 5000;
PRAGMA synchronous = NORMAL;
PRAGMA foreign_keys = ON;
```
## Node.js with better-sqlite3
```javascript
// db.js: SQLite wrapper using better-sqlite3 (synchronous API)
const Database = require('better-sqlite3');
const db = new Database('myapp.db', { verbose: console.log });
// Enable WAL mode and foreign keys
db.pragma('journal_mode = WAL');
db.pragma('foreign_keys = ON');
// Prepare statements for reuse
const insertUser = db.prepare(
'INSERT INTO users (email, name) VALUES (@email, @name)'
);
const getUserByEmail = db.prepare(
'SELECT * FROM users WHERE email = ?'
);
// Use transactions for bulk inserts
const insertMany = db.transaction((users) => {
for (const user of users) {
insertUser.run(user);
}
});
insertMany([
{ email: 'alice@example.com', name: 'Alice' },
{ email: 'bob@example.com', name: 'Bob' },
]);
const user = getUserByEmail.get('alice@example.com');
console.log(user);
// Always close when done
process.on('exit', () => db.close());
```
## Python Usage
```python
# app.py: SQLite with Python's built-in sqlite3 module
import sqlite3
from contextlib import closing
def get_connection(db_path='myapp.db'):
conn = sqlite3.connect(db_path)
conn.row_factory = sqlite3.Row # Access columns by name
conn.execute('PRAGMA journal_mode=WAL')
conn.execute('PRAGMA foreign_keys=ON')
return conn
def create_user(conn, email, name):
conn.execute(
'INSERT INTO users (email, name) VALUES (?, ?)',
(email, name)
)
conn.commit()
def get_users(conn, limit=100):
cursor = conn.execute('SELECT * FROM users LIMIT ?', (limit,))
return cursor.fetchall()
# Usage
with closing(get_connection()) as conn:
create_user(conn, 'alice@example.com', 'Alice')
for row in get_users(conn):
print(dict(row))
```
## Full-Text Search
```sql
-- fts.sql: Enable full-text search with FTS5
CREATE VIRTUAL TABLE posts_fts USING fts5(title, body, content=posts, content_rowid=id);
-- Populate the FTS index
INSERT INTO posts_fts(rowid, title, body)
SELECT id, title, body FROM posts;
-- Search with ranking
SELECT p.*, rank
FROM posts_fts fts
JOIN posts p ON p.id = fts.rowid
WHERE posts_fts MATCH 'database OR sql'
ORDER BY rank;
```
## Backup and Maintenance
```bash
# backup.sh: Online backup using .backup command
sqlite3 myapp.db ".backup backup_$(date +%Y%m%d).db"
# Optimize database size
sqlite3 myapp.db "VACUUM;"
# Analyze for query planner
sqlite3 myapp.db "ANALYZE;"
# Check database integrity
sqlite3 myapp.db "PRAGMA integrity_check;"
```Related Skills
sqlite-vec-skilld
ALWAYS use when writing code importing "sqlite-vec". Consult for debugging, best practices, or modifying sqlite-vec, sqlite vec.
sqlite-ops
Patterns for SQLite databases in Python projects - state management, caching, and async operations. Triggers on: sqlite, sqlite3, aiosqlite, local database, database schema, migration, wal mode.
Turso — SQLite for Production
You are an expert in Turso, the SQLite-based database platform for production workloads. You help developers use libSQL (Turso's SQLite fork) as a primary database with features like embedded replicas (SQLite file synced from cloud), multi-region replication, vector search, branching, and edge deployment — providing sub-millisecond reads with the simplicity of SQLite and the durability of a cloud database.
axiom-sqlitedata
Use when working with SQLiteData @Table models, CRUD operations, query patterns, CloudKit SyncEngine setup, or batch imports. Covers model definitions, @FetchAll/@FetchOne, upsert patterns, database setup with Dependencies.
axiom-sqlitedata-ref
SQLiteData advanced patterns, @Selection column groups, single-table inheritance, recursive CTEs, database views, custom aggregates, TableAlias self-joins, JSON/string aggregation
axiom-sqlitedata-migration
Use when migrating from SwiftData to SQLiteData — decision guide, pattern equivalents, code examples, CloudKit sharing (SwiftData can't), performance benchmarks, gradual migration strategy
Daily Logs
Record the user's daily activities, progress, decisions, and learnings in a structured, chronological format.
Socratic Method: The Dialectic Engine
This skill transforms Claude into a Socratic agent — a cognitive partner who guides
Sokratische Methode: Die Dialektik-Maschine
Dieser Skill verwandelt Claude in einen sokratischen Agenten — einen kognitiven Partner, der Nutzende durch systematisches Fragen zur Wissensentdeckung führt, anstatt direkt zu instruieren.
College Football Data (CFB)
Before writing queries, consult `references/api-reference.md` for endpoints, conference IDs, team IDs, and data shapes.
College Basketball Data (CBB)
Before writing queries, consult `references/api-reference.md` for endpoints, conference IDs, team IDs, and data shapes.
Betting Analysis
Before writing queries, consult `references/api-reference.md` for odds formats, command parameters, and key concepts.