pitfalls-drizzle-orm
Drizzle ORM patterns and migration safety rules. Use when defining schemas, running migrations, or debugging database issues. Triggers on: Drizzle, schema, migration, db:push, $inferSelect, array column.
下記のコマンドをコピーしてターミナル(Mac/Linux)または PowerShell(Windows)に貼り付けてください。 ダウンロード → 解凍 → 配置まで全自動。
mkdir -p ~/.claude/skills && cd ~/.claude/skills && curl -L -o pitfalls-drizzle-orm.zip https://jpskill.com/download/17445.zip && unzip -o pitfalls-drizzle-orm.zip && rm pitfalls-drizzle-orm.zip
$d = "$env:USERPROFILE\.claude\skills"; ni -Force -ItemType Directory $d | Out-Null; iwr https://jpskill.com/download/17445.zip -OutFile "$d\pitfalls-drizzle-orm.zip"; Expand-Archive "$d\pitfalls-drizzle-orm.zip" -DestinationPath $d -Force; ri "$d\pitfalls-drizzle-orm.zip"
完了後、Claude Code を再起動 → 普通に「動画プロンプト作って」のように話しかけるだけで自動発動します。
💾 手動でダウンロードしたい(コマンドが難しい人向け)
- 1. 下の青いボタンを押して
pitfalls-drizzle-orm.zipをダウンロード - 2. ZIPファイルをダブルクリックで解凍 →
pitfalls-drizzle-ormフォルダができる - 3. そのフォルダを
C:\Users\あなたの名前\.claude\skills\(Win)または~/.claude/skills/(Mac)へ移動 - 4. Claude Code を再起動
⚠️ ダウンロード・利用は自己責任でお願いします。当サイトは内容・動作・安全性について責任を負いません。
🎯 このSkillでできること
下記の説明文を読むと、このSkillがあなたに何をしてくれるかが分かります。Claudeにこの分野の依頼をすると、自動で発動します。
📦 インストール方法 (3ステップ)
- 1. 上の「ダウンロード」ボタンを押して .skill ファイルを取得
- 2. ファイル名の拡張子を .skill から .zip に変えて展開(macは自動展開可)
- 3. 展開してできたフォルダを、ホームフォルダの
.claude/skills/に置く- · macOS / Linux:
~/.claude/skills/ - · Windows:
%USERPROFILE%\.claude\skills\
- · macOS / Linux:
Claude Code を再起動すれば完了。「このSkillを使って…」と話しかけなくても、関連する依頼で自動的に呼び出されます。
詳しい使い方ガイドを見る →- 最終更新
- 2026-05-18
- 取得日時
- 2026-05-18
- 同梱ファイル
- 1
📖 Skill本文(日本語訳)
※ 原文(英語/中国語)を Gemini で日本語化したものです。Claude 自身は原文を読みます。誤訳がある場合は原文をご確認ください。
Drizzle ORM の落とし穴
Drizzle ORM でよくある落とし穴と正しいパターンについて説明します。
どのような時に使うか
- データベーススキーマの定義
- マイグレーションの実行 (db:push)
- insert/select 型の作成
- array カラムの操作
- Drizzle ORM のコードレビュー
ワークフロー
ステップ 1: スキーマ型の検証
型が正しくエクスポートされていることを確認します。
ステップ 2: Array 構文の確認
array カラムが正しい構文を使用していることを確認します。
ステップ 3: マイグレーションの安全なテスト
本番環境で主キーの型を絶対にに変更しないでください。
重要なルール
// ❌ 主キーの型を絶対にに変更しないでください
// serial → varchar または varchar → uuid はマイグレーションを破壊します
// ✅ Array カラム - 正しい構文
allowedTokens: text('allowed_tokens').array() // 正しい
// ❌ 間違い: array(text('allowed_tokens'))
// ✅ insert/select 型を常に作成する
export type Strategy = typeof strategies.$inferSelect;
export type NewStrategy = typeof strategies.$inferInsert;
// ✅ バリデーションには drizzle-zod を使用する
import { createInsertSchema } from 'drizzle-zod';
export const insertStrategySchema = createInsertSchema(strategies);
マイグレーションの安全性
# 安全なスキーマ同期
npm run db:push
# データ損失の警告が表示され、それが確実な場合
npm run db:push --force
# バックアップなしで本番環境で絶対に実行しない
型推論パターン
// ✅ スキーマから型を推論する
import { strategies } from './schema';
type Strategy = typeof strategies.$inferSelect;
type NewStrategy = typeof strategies.$inferInsert;
// ✅ Zod バリデーションを使用する
import { createInsertSchema, createSelectSchema } from 'drizzle-zod';
import { z } from 'zod';
const insertSchema = createInsertSchema(strategies);
type StrategyInput = z.infer<typeof insertSchema>;
簡単なチェックリスト
- [ ] 主キーの型の変更がないこと
- [ ] Array カラムが
text().array()構文を使用していること - [ ] モデルに対して insert/select 型がエクスポートされていること
- [ ] バリデーションに drizzle-zod を使用していること
- [ ] マイグレーションが本番環境に適用される前に開発環境でテストされていること
📜 原文 SKILL.md(Claudeが読む英語/中国語)を展開
Drizzle ORM Pitfalls
Common pitfalls and correct patterns for Drizzle ORM.
When to Use
- Defining database schemas
- Running migrations (db:push)
- Creating insert/select types
- Working with array columns
- Reviewing Drizzle ORM code
Workflow
Step 1: Verify Schema Types
Check that types are exported correctly.
Step 2: Check Array Syntax
Verify array columns use correct syntax.
Step 3: Test Migrations Safely
Never change primary key types in production.
Critical Rules
// ❌ NEVER change primary key types
// serial → varchar or varchar → uuid BREAKS migrations
// ✅ Array columns - correct syntax
allowedTokens: text('allowed_tokens').array() // CORRECT
// ❌ WRONG: array(text('allowed_tokens'))
// ✅ Always create insert/select types
export type Strategy = typeof strategies.$inferSelect;
export type NewStrategy = typeof strategies.$inferInsert;
// ✅ Use drizzle-zod for validation
import { createInsertSchema } from 'drizzle-zod';
export const insertStrategySchema = createInsertSchema(strategies);
Migration Safety
# Safe schema sync
npm run db:push
# If data-loss warning and you're sure
npm run db:push --force
# NEVER in production without backup
Type Inference Pattern
// ✅ Infer types from schema
import { strategies } from './schema';
type Strategy = typeof strategies.$inferSelect;
type NewStrategy = typeof strategies.$inferInsert;
// ✅ With Zod validation
import { createInsertSchema, createSelectSchema } from 'drizzle-zod';
import { z } from 'zod';
const insertSchema = createInsertSchema(strategies);
type StrategyInput = z.infer<typeof insertSchema>;
Quick Checklist
- [ ] No primary key type changes
- [ ] Array columns use
text().array()syntax - [ ] Insert/select types exported for models
- [ ] Using drizzle-zod for validation
- [ ] Migration tested in dev before prod