Skip to content
Agentmart
Submit a tool

sql-migration

SQLite schema and migration patterns for Maslow

Skill by twlines

IndexedMIT
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/twlines-sql-migration

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

SQLite schema and migration patterns for Maslow

Use cases: backend

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/sql-migration

What's inside

Skill name
sql-migration
Description
SQLite schema and migration patterns for Maslow
License
MIT
Instructions
44 lines in SKILL.md · view on GitHub

Files (1)

  • SKILL.md

SKILL.md (first lines)

# SQLite Conventions

## Schema Creation
```sql
CREATE TABLE IF NOT EXISTS my_table (
  id TEXT PRIMARY KEY,
  project_id TEXT NOT NULL,
  name TEXT NOT NULL,
  metadata TEXT,
  created_at INTEGER NOT NULL,
  updated_at INTEGER NOT NULL,
  FOREIGN KEY (project_id) REFERENCES projects(id) ON DELETE CASCADE
);
CREATE INDEX IF NOT EXISTS idx_my_table_project ON my_table(project_id);
```

## Migrations (Adding Columns)
```typescript
const cols = db.pragma("table_info(my_table)") as Array<{ name: string }>
if (!cols.some((c) => c.name === "new_column")) {
  db.exec(`ALTER TABLE my_table ADD COLUMN new_column TEXT`)
  db.exec(`CREATE INDEX IF NOT EXISTS idx_my_table_new ON my_table(new_column)`)
}
```

## Prepared Statements
All queries go in the `stmts` object:
```typescript
const stmts = {
  getById: db.prepare(`SELECT * FROM my_table WHERE id = ?`),
  create: db.prepare(`INSERT INTO my_table (id, name, created_at) VALUES (?, ?, ?)`),
  update: db.prepare(`UPDATE my_table SET name = ?, updated_at = ? WHERE id = ?`),
}
```

## Rules
- Always use prepared statements — never concatenate SQL strings
- Wrap all `better-sqlite3` calls in `Effect.sync()`, not `Effect.tryPromise()`
- JSON columns: store as `TEXT`, parse with `JSON.parse()` on read
- Timestamps are INTEGER (Unix epoch milliseconds)
- IDs are TEXT (UUID via `crypto.randomUUID()`)
- `PRAGMA foreign_keys = ON` is set at connection time

From twlines/maslow, MIT.

More from twlines/maslow

Signals

Stars
0
Forks
0
Open issues
0
Last commit (this folder)
Feb 14, 2026 (8 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from twlines

Cite this page

sql-migration skill. Agent Mart. https://agentmart.dev/skills/twlines-sql-migration (last updated 2026-10-24)