mcpField
D
drizzle-sqlite

drizzle-sqlite

github.com/pproencaデータ・データベース218200 回インストール11 週間前に更新
リポジトリ

drizzle-sqlite について

SQLite系バックエンドでDrizzle ORMを使う開発者向けのリファレンススキルです。スキーマ、マイグレーション、クエリ、アプリケーションの型を扱い、複数のドライバーとSQLite固有の挙動を45のルールで解説します。

主な機能

  1. 018カテゴリ、45のルール
  2. 02スキーマとマイグレーションの指針
  3. 03クエリとリレーションのパターン
  4. 04トランザクションとバッチ処理
  5. 05ドライバー設定と型推論

活用シーン

  1. 01SQLiteのスキーマとインデックスの設計
  2. 02Drizzleのマイグレーション計画
  3. 03クエリ性能の改善
  4. 04トランザクションとドライバー接続の設定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/pproenca/dot-skills --skill drizzle-sqlite

インストール後、Claude Code で/drizzle-sqliteを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

AGENTS.md
metadata.json
assets/templates/
_template.md
references/
_sections.md
conn-enable-wal.md
conn-foreign-keys-pragma.md
conn-pick-driver-deliberately.md
conn-set-busy-timeout.md
conn-singleton-client.md
migrate-apply-with-migrator.md
migrate-commit-migrations-to-git.md
migrate-config-dialect-and-out.md
migrate-data-backfill-as-custom-sql.md
migrate-explicit-renames.md
migrate-generate-not-push-in-prod.md
perf-avoid-count-star-on-large-tables.md
perf-bulk-insert-multi-row-values.md
perf-covering-index-for-hot-queries.md
perf-keyset-not-offset-for-deep-pages.md
perf-prepare-hot-paths.md
query-always-limit-listings.md
query-avoid-n-plus-one-with-inarray.md
query-bind-parameters-not-concat.md
query-returning-instead-of-reselect.md
query-select-columns-not-star.md
query-toSQL-and-explain.md
query-upsert-with-onconflict.md
rel-declare-relations-for-rqb.md
rel-filter-with-where-inside-with.md
rel-leftjoin-for-flat-aggregates.md

詳細

dot-skills Drizzle SQLite ベストプラクティス

SQLite 系バックエンドで Drizzle ORM を使うためのライブラリリファレンススキルです。8 つのカテゴリーにわたる 45 のルールを、実行ライフサイクルへの影響が大きい順に並べています:スキーマ → マイグレーション → クエリ → リレーション → トランザクション → パフォーマンス → 接続 → 型。

適用するタイミング

次のような場合に、このガイドラインを参照してください:

  • sqliteTable スキーマを定義するとき — カラム型、主キー、インデックス、外部キーの選択
  • drizzle-kit generate / migrate / push を実行するとき、またはマイグレーション SQL ファイルを手動で編集するとき
  • db.select()、db.insert()、db.update()、db.delete() を使ってクエリを書くとき
  • db.query.* とリレーショナルクエリビルダーを使ってネストされたデータを取得するとき
  • 複数ステートメントの書き込みを db.transaction() または db.batch()(libsql/Turso/D1)でまとめるとき
  • .prepare() と sql.placeholder()、またはカバリングインデックスを使ってホットパスのクエリを最適化するとき
  • Drizzle クライアントを設定するとき(プラグマ、ドライバーの選択、シングルトンのライフサイクル)
  • データベースの型をアプリケーションコードに組み込むとき($inferSelect、drizzle-zod、JSON の形状)

このスキルは特定のドライバーに限定されません。better-sqlite3、libsql、bun:sqlite、expo-sqlite、op-sqlite、Cloudflare D1 に共通する動作を扱い、ドライバー固有の違いがある場合はその旨を示します。

アーキテクチャ上の背景

SQLite は、本番データベースとしては独特な特徴があります:

  • クライアント/サーバー型ではありません。 「接続」とはファイルを開くことです。ローカルファイルの場合、接続プールも認証もネットワークもありません。
  • ライターは 1 つです。 接続数にかかわらず、同時に書き込めるのは 1 つだけです。WAL を使えば、読み取りは並列に実行できます。
  • ネイティブなブール値や日付はありません。 すべて INTEGER、REAL、TEXT、BLOB、または NULL です。残りの型は Drizzle のカラムモードで表現します。
  • ALTER TABLE の機能は限定的です。 可能なのは RENAME COLUMN、ADD COLUMN、DROP COLUMN のみです。型の変更や制約の追加には、テーブルの再構築が必要です。
  • 外部キーはデフォルトで無効です。 PRAGMA foreign_keys = ON は接続ごとの設定で、永続化されません。

このスキルに多くのルールがあるのは、Drizzle の API が PostgreSQL/MySQL/SQLite を統一的に抽象化している一方で、基盤となる SQLite エンジンには、Postgres と同じように扱うと実行時に問題となる制約があるためです。

優先度別のルールカテゴリー

優先度カテゴリー影響度プレフィックス
1スキーマ定義重大schema-
2マイグレーションと Drizzle Kit重大migrate-
3クエリ構築高query-
4リレーション高rel-
5トランザクションとバッチ処理中〜高tx-
6プリペアドステートメントとホットパス中〜高perf-
7接続とドライバーの設定中conn-
8型推論中types-

クイックリファレンス

1. スキーマ定義(重大)
2. マイグレーションと Drizzle Kit(CRITICAL)
  • migrate-generate-not-push-in-prod — generate + migrate を使用してください。push は調整できないカラムを削除します
  • migrate-explicit-renames — リネームのプロンプトに回答してください。デフォルトではリネームが削除+追加として扱われます
  • migrate-config-dialect-and-out — フラグなしでコマンドを実行できるように drizzle.config.ts を定義してください
  • migrate-apply-with-migrator — 生の SQL ではなく、drizzle-kit migrate またはドライバーの migrator モジュールで適用してください
  • migrate-data-backfill-as-custom-sql — DDL とアトミックにバックフィルできるよう、マイグレーション SQL を手動で編集してください
  • migrate-commit-migrations-to-git — drizzle/ の SQL と drizzle/meta/ のスナップショットを両方コミットしてください。どちらも必要です
3. クエリの構築(HIGH)
4. リレーション(HIGH)
5. トランザクションとバッチ処理(MEDIUM-HIGH)
6. プリペアドステートメントとホットパス(中〜高)
7. 接続とドライバーの設定(中)
  • conn-enable-wal — 並行読み取りと単一の書き込みには journal_mode = WAL を使用します
  • conn-set-busy-timeout — busy_timeout = 5000 により、競合時に待機するようになります
  • conn-foreign-keys-pragma — 接続ごとに foreign_keys = ON を設定します。デフォルトではオフです
  • conn-singleton-client — モジュールスコープのシングルトンを使用し、リクエストごとにインスタンスを生成しないでください
  • conn-pick-driver-deliberately — 同期、非同期、HTTP のいずれかを、デプロイ先に応じて選択します
8. 型推論(中)

使用方法

references/_sections.md で該当するカテゴリの概要を読み、次に詳細な説明とコード例が記載された個別のルールファイルを読んでください。各ルールには誤った例と正しい例があるため、レビュー対象のコードには正しいパターンを適用します。

複雑な変更(スキーマの再設計、マイグレーション戦略、パフォーマンス改善)を行う場合は、判断する前に該当するカテゴリのルールをすべて読んでください。

参照ファイル

ファイル説明
references/_sections.mdカテゴリの定義と順序
assets/templates/_template.md新しいルール用のテンプレート
metadata.jsonバージョンと参照情報

関連スキル

  • effect-ts — アプリケーションが Effect ベースの場合に使用します。Drizzle は Effect.tryPromise 経由で統合できます。
  • nextjs-bundle-optimizer — Next.js アプリで SQLite をデータレイヤーとして使用する場合に役立ちます。
  • better-auth — 認証テーブルで Drizzle SQLite とよく併用されます。テーブル生成については better-auth-scaffold を参照してください。

コメント