drizzle-best-practices — скилл для Claude Code: Drizzle ORM и Postgres
Скилл подсказывает агенту, как правильно писать схемы, запросы и связи в Drizzle ORM на PostgreSQL. Пригодится, когда проект на TypeScript и Postgres.
npx skills add honra-io/drizzle-best-practices --skill drizzle-best-practices -a claude-codeЧто делает drizzle-best-practices
Скилл включается, когда в разговоре всплывают Drizzle, drizzle-orm, drizzle-kit, drizzle-zod, pgTable, db.select() или db.query. Дальше агент опирается на справочники внутри скилла: проектирование таблиц, запросы, связи, миграции, типы, производительность, драйверы. Всего 8 категорий, отсортированных по важности.
Первое, что скилл советует сделать, — заглянуть в package.json проекта. Дело в том, что Drizzle переходит на v1, и API связей различается между ветками. На ^1.0.0-rc работают defineRelations и объектный синтаксис реляционных запросов, валидаторы берутся из drizzle-orm/zod. На ^0.4x остаются старый relations() и отдельный пакет drizzle-zod. Команда npm i drizzle-orm ставит 0.45.2, а не v1 — за версией RC нужно идти явно через тег @rc.
Скилл покрывает только PostgreSQL. Для MySQL или SQLite он не сработает, как и для чистого SQL без ORM. Ещё один момент: SQL-подобный конструктор запросов одинаков в обеих версиях, поэтому переписывать db.select().from(t).where(...) в объектный синтаксис не нужно — меняется только реляционная часть. Справочники лежат в references/, включая отдельный файл под специфику Postgres: identity-колонки, JSONB, массивы, enum.
Какие задачи решает
- спроектировать таблицы Postgres через
pgTableбез типовых ошибок - описать связи один-ко-многим и многие-ко-многим в Drizzle
- разобраться, какой API связей нужен для установленной версии drizzle-orm
- сгенерировать Zod-валидаторы из схемы таблиц
- перенести проект с Prisma или TypeORM на Drizzle
Примеры запросов агенту
- Опиши схему таблиц для блога на Drizzle: пользователи, посты, теги. Проверь версию drizzle-orm в package.json перед кодом.
- Почему db.query не видит связи? У меня drizzle-orm 1.0.0-rc.3.
- Перепиши эти relations() на defineRelations и покажи, что изменится в запросах.
Как установить drizzle-best-practices
1Через Skills CLI (Vercel)
npx skills add honra-io/drizzle-best-practices --skill drizzle-best-practices -a claude-code2Вручную: положить файлы
~/.claude/skills/drizzle-best-practices/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/drizzle-best-practices/
1Через Skills CLI (Vercel)
npx skills add honra-io/drizzle-best-practices --skill drizzle-best-practices -a codex2Вручную: положить файлы
.agents/skills/drizzle-best-practices/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add honra-io/drizzle-best-practices --skill drizzle-best-practices -a cursor2Вручную: положить файлы
.cursor/skills/drizzle-best-practices/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install honra-io/drizzle-best-practices drizzle-best-practices2Вручную: положить файлы
.github/skills/drizzle-best-practices/SKILL.md1Через Skills CLI (Vercel)
npx skills add honra-io/drizzle-best-practices --skill drizzle-best-practices -a gemini-cli2Командой платформы
gemini skills install https://github.com/honra-io/drizzle-best-practicesВручную: положить файлы
.devin/skills/drizzle-best-practices/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add honra-io/drizzle-best-practices --skill drizzle-best-practices -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Похожие
Рядом в теме «Данные и базы»
Всё по теме «Данные и базы» →Вопросы о drizzle-best-practices
Как установить drizzle-best-practices в Claude?
Выполните npx skills add honra-io/drizzle-best-practices --skill drizzle-best-practices -a claude-code. После этого файл скилла окажется в ~/.claude/skills/drizzle-best-practices/SKILL.md.
Что делает drizzle-best-practices?
Даёт агенту правила по Drizzle ORM на PostgreSQL: схемы, запросы, связи, миграции, типы, производительность. Скилл сам определяет версию API по package.json и подсказывает синтаксис под неё.
Сработает ли скилл с MySQL или SQLite?
Нет. Он рассчитан на PostgreSQL и не включается для Drizzle с MySQL или SQLite, а также для чистого SQL без ORM.
Исходный текст
SKILL.md · MIT
---
name: drizzle-best-practices
description: |
Use this skill whenever the user is working with Drizzle ORM on PostgreSQL. This covers any mention of Drizzle, drizzle-orm, drizzle-kit, drizzle-zod, `pgTable`, `defineRelations`, `relations()`, `db.select()`, `db.query`, or insert/update/delete against Postgres.
Typical intents to trigger on:
- Designing or debugging Postgres table schemas, columns, identity PKs, enums, JSONB, arrays
- Modeling one-to-many or many-to-many relations and join tables in Drizzle
- Writing, optimizing, or preparing Drizzle queries (placeholders, `.prepare()`)
- Generating Zod validators from Drizzle tables
- Setting up TypeScript + Postgres projects (Neon, Supabase, postgres.js, node-postgres) with Drizzle
- Migrating from Prisma, TypeORM, or Sequelize **to Drizzle**
- Resolving Drizzle type errors; choosing between v1 RC and 0.45.x APIs
Do NOT trigger for Drizzle with MySQL/SQLite, raw SQL without an ORM, or other ORMs when Drizzle is not the target.
license: MIT
compatibility: TypeScript projects using Node.js or edge runtimes with drizzle-orm and a PostgreSQL database.
metadata:
author: Marc A. Maceira Zayas
abstract: >
Comprehensive Drizzle ORM best practices guide for TypeScript developers building on
PostgreSQL. Contains guidance across 8 categories from critical (schema design, query
patterns) to incremental (advanced features). Each reference includes explanations,
correct vs incorrect code examples, and rationale for why the pattern matters.
Engine-specific Postgres patterns (identity columns, JSONB, arrays, enums, etc.) are
documented in a dedicated reference file to keep the skill modular.
---
# Drizzle ORM Best Practices (PostgreSQL)
Comprehensive best practices guide for Drizzle ORM with PostgreSQL. Contains guidance across
8 categories, prioritized by impact to help you write correct, performant, and maintainable
database code.
## Version & API Detection (read this first)
Drizzle is mid-transition to **v1**, and the relations + relational-query APIs differ between
the two major lines. **Check the project's `package.json` before writing code** so you emit the
right syntax:
| Installed `drizzle-orm` | API to use | Install command |
|---|---|---|
| `^1.0.0-rc` or `^1.0.0-beta` | **v1 — the default in this skill.** `defineRelations`, object-syntax relational queries (`where: { … }`, `orderBy: { … }`), validators from `drizzle-orm/zod` | `npm i drizzle-orm@rc` + `npm i -D drizzle-kit@rc` |
| `^0.4x` (e.g. `0.45.2`) | **Legacy.** `relations()` helper, callback/operator relational queries, validators from the separate `drizzle-zod` package | `npm i drizzle-orm` (resolves to 0.45.2) |
The current release candidate is **`[email protected]`** (the `@rc` tag), which supersedes the
older `@beta` tag the docs still reference in places.
Three things that routinely trip up agents:
- **`@latest` is still `0.45.2`, not v1.** `npm i drizzle-orm` does *not* get you v1 — a new project
that wants the v1 API must ask for `@rc` explicitly.
- **The SQL-like query builder is unchanged across versions.** `db.select().from(t).where(eq(t.id, 1))`,
`db.insert()`, `db.update()`, `db.delete()` work identically in 0.45.x and v1. Only the relational
query API (`db.query`) and relation *definitions* changed. Never rewrite `db.select()` operator
filters into the relational object syntax.
- **On v1, the relational query API (`db.query`) is driven by `defineRelations`.** Passing a
legacy `schema` does *not* populate `db.query`. The old `relations()` helper is still importable
from `drizzle-orm/_relations` so existing relation modules keep compiling during a port, but to
query relationally on v1 you convert them to `defineRelations`. (Earlier betas exposed a
`db._query` path; it was removed before `1.0.0-rc.3`.) See `references/relations-defining.md`.
When the version is unstated, default to **v1 (RC)** for new code, but match the existing codebase's
API if you already see legacy `relations()` / callback-style `db.query` patterns in use. Throughout
the reference files, version-specific differences are marked with **"Legacy (v0.45.x)"** callouts.
## When to Apply
Reference these guidelines when:
- Defining table schemas with `pgTable`
- Writing select, insert, update, or delete queries
- Setting up relations between tables using `defineRelations` or the legacy `relations` API
- Configuring `drizzle-kit` for migrations (`generate`, `push`, `pull`)
- Inferring TypeScript types from your schema
- Choosing between the SQL-like API and the relational query API
- Optimizing query performance with prepared statements or batch operations
- Integrating Drizzle with serverless Postgres providers (Neon, Supabase, etc.)
## Rule Categories by Priority
| Priority | Category | Impact | Prefix |
|----------|----------|--------|--------|
| 1 | Schema Design | CRITICAL | `schema-` |
| 2 | Query Patterns | CRITICAL | `query-` |
| 3 | Relations | HIGH | `relations-` |
| 4 | Migrations | HIGH | `migrations-` |
| 5 | Type Safety | MEDIUM-HIGH | `types-` |
| 6 | Performance | MEDIUM | `perf-` |
| 7 | Database Drivers | MEDIUM | `driver-` |
| 8 | Advanced Patterns | LOW | `advanced-` |
## How to Use
Read individual reference files for detailed explanations and code examples:
```
references/engine-postgres.md # Postgres-specific types, features, and patterns
references/schema-table-definitions.md
references/query-select-patterns.md
references/relations-defining.md
references/_sections.md # Full index of all references
```
Each reference file contains:
- Brief explanation of why it matters
- Incorrect code example with explanation
- Correct code example with explanation
- Links to official Drizzle documentation
## References
- https://orm.drizzle.team/docs/overview
- https://orm.drizzle.team/docs/sql-schema-declaration
- https://orm.drizzle.team/docs/relations-v2
- https://orm.drizzle.team/docs/perf-queries
- https://orm.drizzle.team/docs/kit-overview
- https://orm.drizzle.team/llms.txt
© Marc A. Maceira Zayas · MIT · honra-io/drizzle-best-practices