Imported from koekoebaborak27/multi-ai-agent-sample (
prisma/AGENTS.md). Install upstream withnpx skills add koekoebaborak27/multi-ai-agent-sample --skill prisma. Copyright stays with the author.
prisma/ — DB 規約
正本は @AGENTS.md。ここは Prisma スキーマ/マイグレーションのルールのみ。
命名規約
- Prisma 標準の命名慣習に従う。テーブル名・カラム名ともに
@@map/@mapは基本使わず、モデル定義どおりの camelCase をそのままDBに反映させる。 - 既存の物理DB(レガシーシステム)に合わせて物理名を固定する必要がある場合のみ、個別に
@@map/@mapを使う。
マイグレーション運用(MUST)
運用フローの正本は @docs/prisma_operations.md。エージェントが守る最小規則:
- DB スキーマを変える手段は migration ファイルのみ。
prisma db pushと psql 等での直接 DDL はどの環境でも禁止。 - 開発:
pnpm prisma:migrate -- --name <英語snake_case>(--name必須。対話プロンプトで止まるため)。本番:prisma migrate deployのみ(ローカルから本番 DATABASE_URL に対して手動実行)。 - 適用済みマイグレーション(main マージ済み・本番適用済み)の編集・削除は禁止。修正は新しいマイグレーションの追加(forward fix)で行う。
- schema.prisma 編集 → 自動生成が原則。schema.prisma で表現できない DDL(DB 関数・トリガー・ビュー・部分インデックス・CHECK 制約・データ移行 UPDATE)のみ
--create-onlyで雛形を生成して SQL を手書きする(判断表はdocs/prisma_operations.md§1-1)。schema.prisma 管理対象(テーブル・カラム・通常インデックス)を手書き SQL で変えるのは禁止(drift になる)。 - 生成された
migration.sqlはコミット前に目視レビューする(データ損失 DDL・pgboss スキーマ混入がないこと)。 schema.prismaとmigrations/**は同一コミットに含める。スキーマ変更を含む PR はその旨を説明に明記する。- 本番は後方互換マイグレーションが基本。カラム削除・リネーム・NOT NULL 化・型変更は expand → contract の段階実施(
docs/prisma_operations.md§3-2)。 - ローカル DB は使い捨て。drift やブランチコンフリクト時は
pnpm db:resetで作り直す。 pgbossスキーマは pg-boss が起動時に自動作成する。マイグレーションでは作らない(二重管理回避)。- seed:
pnpm prisma:seed(初期 ADMIN ユーザ等)。冪等に保つ。本番では初回構築時のみ実行。
Prisma CLI 設定(prisma.config.ts)
- CLI 設定の置き場はリポジトリ直下の
prisma.config.ts(schema/migrations.path/migrations.seed)。旧来のpackage.json#prismaは非推奨で Prisma 7 で削除されるため使わない。 - この設定ファイルがあると Prisma CLI は
.envを自動読み込みしない(Prisma config detected, skipping environment variable loading.)。そのためprisma.config.tsの中でprocess.loadEnvFile()を呼んでDATABASE_URL等を読み込んでいる。この行を消すと CLI コマンドが軒並みEnvironment variable not found: DATABASE_URLで落ちる。 migrations.seedはprisma db seedとprisma migrate reset(=pnpm db:reset)から使われる。pnpm prisma:seedはtsx prisma/seed.tsの直接実行なのでこの設定を経由しない。