mcpField
D
drizzle-database

drizzle-database

github.com/blogic-czデータ・データベース376 回インストール1 日前に更新
リポジトリ

drizzle-database について

Drizzle ORMのスキーマ、クエリ、マイグレーションを実装・レビューするスキルです。既存のプロジェクト規約に沿い、マイグレーションと関連テストで変更を検証します。

主な機能

  1. 01既存のスキーマ・クエリ規約を踏襲
  2. 02リレーションと結合要件を明示
  3. 03マイグレーションの検証を案内
  4. 04変更箇所に関わるテストを実行

活用シーン

  1. 01Drizzleのテーブルやリレーションの追加・変更
  2. 02型付きDrizzleクエリの構成
  3. 03マイグレーション更新とDB変更のテスト

インストール

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

$npx skills add https://github.com/blogic-cz/blogic-marketplace --skill drizzle-database

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

同梱ファイル

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

references/
migrations-and-testing.md
query-patterns.md
schema-patterns.md

詳細

Drizzle Database パターン

このスキルは、プロジェクトで一貫した型付け、リレーションのモデリング、マイグレーション/テストによる検証を適用して、Drizzle ORM のスキーマやクエリーコードを実装・レビューする際に使用します。

このスキルを使用する場合

次のような、Drizzle ORM のプリミティブを明示的に扱う作業で使用します。

  • pgTable(...) によるスキーマ定義
  • relations(...) によるリレーション宣言
  • Drizzle の select/クエリービルダーの構成(db.select、db.query.*)
  • Drizzle のマイグレーションとスキーマの進化
  • Drizzle を利用するテスト向けの、型付けされたテスト DB のシードデータ作成

Drizzle の実装に関連しない、一般的な SQL/データベースの議論では、このスキルを使用しないでください。

標準ワークフロー

スキーマやクエリーを変更するたびに、次の手順を適用します。

  1. 対象リポジトリ内の近くにあるスキーマヘルパーと、既存の Drizzle パターンを調べます。
  2. 新しいスタイルを独自に作るのではなく、確立されたローカルパターン(型、命名、インデックス、リレーションのスタイル)を踏襲します。
  3. 必要最小限のスキーマ/クエリー変更を実装します。
  4. 生成または適用されたマイグレーションの内容が、変更と整合していることを確認します。
  5. 変更したテーブル/クエリー経路を検証する関連テストを実行します。

詳細な例については、以下をお読みください。

  • references/schema-patterns.md
  • references/query-patterns.md
  • references/migrations-and-testing.md

規約とルール

常に適用するルール
  1. リレーションの多重度(one と many)を明示し、FK フィールドを参照先の ID と一致させます。
  2. オプションの結合と必須の結合を明示します(オプションの場合は leftJoin、必須の場合は innerJoin)。
  3. スキーマ変更後は、タスクの完了とみなす前にマイグレーションとテストを確認します。
プロジェクトの規約(ローカルのコードベースで別の確立されたパターンを使用している場合を除く)
  1. プロジェクトで使用されている場合は、カラムにブランド型/型付き ID を使用します。
id: text("id").primaryKey().$type<UserId>();
  1. 既存のテーブルでそのスタイルが使われている場合、生成 ID/タイムスタンプには .$defaultFn(...) を優先します。
createdAt: timestamp("created_at")
  .$defaultFn(() => new Date())
  .notNull();
  1. ローカルのスキーマファイルでそのようにしている場合、インデックス/複合制約は pgTable の第 3 引数に配置します。
(table) => [
  index("sessions_user_id_idx").on(table.userId),
  unique().on(table.userId, table.organizationId),
];
  1. コードベースがリレーショナルクエリーヘルパーに依存している場合は、完全なスキーマを drizzle(...) に渡します。

クエリー戦略の指針

往復回数を減らし、ロジックを読みやすく保てる場合は、結合/SELECT 投影を使った単一の複合クエリーを優先します。

リレーションクエリーヘルパー(with を使った db.query.<table>.findMany/findFirst)で読み取りを明確に表現でき、型を簡潔に保ち、不必要なクエリーの複雑さを避けられる場合は、これを使用します。

リレーションクエリーヘルパーでは必要なフィルタリング、投影、集計を効率的に表現できない場合は、カスタムの結合/集計クエリーを使用します。

対象範囲の境界

このスキルは、Drizzle のスキーマ/クエリー/マイグレーションの実装パターンに焦点を当てます。

主な目的がパフォーマンス調査である場合は、より広範なデータベースパフォーマンスのトリアージや本番環境のインデックス戦略を process-db-report または performance-optimization に委ねます。

リソース

必要な場合にのみ、詳細な例を読み込みます。

  • references/schema-patterns.md - テーブル、リレーション、型付け、インデックスの詳細な例
  • references/query-patterns.md - クエリー、結合、集計、変更操作の詳細な例
  • references/migrations-and-testing.md - マイグレーションのワークフローとテスト/シードの例

コメント