К основному содержанию
скилл CX Codex

database-design · spencerpauly — скилл для Claude Code: что делает и как установить

Скилл помогает спроектировать реляционную схему базы данных, расставить внешние ключи, индексы и сгенерировать модели для Prisma или Drizzle по требованиям к проекту.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add spencerpauly/awesome-cursor-skills --skill database-design -a claude-code
Открыть на GitHub

Что делает database-design

Скилл разбирает требования к системе на сущности и формирует SQL-таблицы. Для связей задаются внешние ключи с правилами ON DELETE вроде CASCADE или RESTRICT, а для полей проставляются типы данных: TIMESTAMPTZ для дат, UUID для распределённых систем или BIGSERIAL для внутренних идентификаторов. Также шаблон генерирует схему для ORM — Prisma или Drizzle.

Внутри заложен пошаговый процесс от нормализации до типовых архитектурных паттернов. Сюда входят мягкое удаление через deleted_at, таблицы аудита, иерархические деревья и теги через промежуточные таблицы. Начинать здесь предписано строго с третьей нормальной формы (3NF), а денормализацию откладывать до реальных замеров узких мест.

Инструкция прямо запрещает вешать индексы на таблицы размером меньше 1000 строк и столбцы с низкой кардинальностью. Это исключает лишнюю нагрузку на запись.

Какие задачи решает

  • Спроектировать таблицы и связи между сущностями по текстовому описанию
  • Расставить индексы под частые фильтры и условия соединений JOIN
  • Сгенерировать схему для Prisma или Drizzle с таймзонами и внешними ключами
  • Настроить мягкое удаление записей и аудит событий в базе

Примеры запросов агенту

  • Спроектируй схему базы данных для трекера задач с проектами, пользователями и комментариями
  • Добавь индексы и правила удаления для таблиц заказов и позиций заказа в Drizzle
  • Покажи структуру таблиц для иерархических категорий с поддержкой аудита изменений

Как установить database-design

1Через Skills CLI (Vercel)

npx skills add spencerpauly/awesome-cursor-skills --skill database-design -a claude-code

2Вручную: положить файлы

~/.claude/skills/database-design/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/database-design/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора59

auditing-performance Скилл проводит аудит производительности приложения: размер бандла, рендеринг, запросы к базе и Core Web Vitals. Пригодится, когда страница грузится долго или интерфейс тормозит. CX Codex +1 476установок suggesting-cursor-hooks Скилл отслеживает повторяющиеся команды вроде линтинга или тестов и предлагает автоматизировать их через хуки Cursor. Пригодится, когда надоело вручную просить агента проверять код. CX Codex +1 475установок building-skills-from-patterns Скилл находит повторяющиеся цепочки действий и оформляет их в файлы SKILL.md. Он пригодится, когда ассистенту приходится трижды объяснять один и тот же рабочий сценарий. CX Codex +1 466установок creating-pr Скилл проводит агента по шагам создания пул-реквеста: подготовка ветки, заголовок, описание, самопроверка и запрос ревьюеров. CX Codex +1 465установок parallel-exploring Запускает несколько explore-субагентов сразу, чтобы быстро разобраться в большом проекте. Пригодится на онбординге и при изучении незнакомой архитектуры. CX Codex +1 459установок seo-auditing Проверяет техническое SEO веб-проекта: метатеги, микроразметку, robots.txt, карту сайта и метрики Core Web Vitals. Пригодится перед релизом сайта в прод. CX Codex +1 456установок writing-commit-messages Скилл задаёт агенту формат conventional commits: тип, scope, тело и футер. Пригодится, когда сообщения коммитов пишет модель, а не человек. CX Codex +1 454установок monitoring-terminal-errors Скилл смотрит за выводом запущенного процесса — dev-сервера, тестов, сборки — и чинит падения по стек-трейсу. Пригодится, когда сервер сыпет ошибками, а вы не хотите читать лог вручную. CX Codex +1 449установок

Другие версии database-design

Похожие

database-migrations affaan-m Скилл описывает безопасные и обратимые миграции схемы: expand-contract, индексы CONCURRENTLY, батч-бэкфиллы и рабочие процессы для PostgreSQL, Prisma, Drizzle, Kysely, Django и golang-migrate. CX Codex +1 5 200установок neon-database-architect davila7 Субагент для проектирования схем Neon, настройки Drizzle ORM и оптимизации запросов в serverless-окружении. 478установок database-testing kindlmann Скилл для тестирования баз данных: проверяет миграции вперёд и назад, ограничения схемы, seed-данные и планы запросов. Пригодится, когда миграция проходит, а данные теряются. CX Codex +1 1 100установок postgresql-database-engineering manutej Помогает проектировать схемы, выбирать индексы и оптимизировать медленные запросы в PostgreSQL. Пригодится при партиционировании больших таблиц и настройке репликации. CX Codex +1 1 800установок database-performance-debugging aj-geddes Скилл помогает найти медленные SQL-запросы и разобрать их планы выполнения. Пригодится, когда приложение тормозит или база упирается в CPU. CX Codex +1 493установок database-indexing-strategy aj-geddes Скилл помогает проектировать индексы: выбирает тип, собирает составные и частичные, подсказывает по обслуживанию. Пригодится, когда запросы тормозят. CX Codex +1 486установок

Рядом в теме «Данные и базы»

Все скиллы по теме «Данные и базы» →

Вопросы о database-design

Как установить database-design в Claude Code?

Выполните команду npx skills add spencerpauly/awesome-cursor-skills --skill database-design -a claude-code. Также можно вручную сохранить файл по пути ~/.claude/skills/database-design/SKILL.md.

Что делает скилл database-design?

Он направляет ИИ-ассистента при составлении реляционных схем данных: выделяет таблицы, связывает их через ключи, определяет ограничения CHECK и генерирует код миграций для SQL или ORM.

В каких случаях скилл рекомендует не создавать индексы?

Индексы не ставятся на небольшие таблицы до 1000 строк, на редко используемые в выборках поля и столбцы с низкой кардинальностью вроде булевых значений.

Исходный текст

SKILL.md · CC0-1.0
---
name: database-design
description: Design database schemas — tables, relationships, indexes, constraints, and ORM setup. Covers relational design, normalization, and common patterns.
user-invocable: true
---

# Database Design

Design a database schema from requirements.

## Workflow

### 1. Identify Entities

From the requirements, extract the core entities (nouns):
- Users, Teams, Projects, Tasks, Comments, etc.
- Each entity becomes a table

### 2. Define Relationships

| Relationship | Implementation |
|-------------|----------------|
| One-to-one | Foreign key with unique constraint, or embed in same table |
| One-to-many | Foreign key on the "many" side |
| Many-to-many | Junction/join table |
| Self-referential | Foreign key pointing to same table (e.g. `parent_id`) |

### 3. Design the Schema

For each table:

```sql
CREATE TABLE users (
  id          UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  email       TEXT NOT NULL UNIQUE,
  name        TEXT NOT NULL,
  avatar_url  TEXT,
  created_at  TIMESTAMPTZ NOT NULL DEFAULT now(),
  updated_at  TIMESTAMPTZ NOT NULL DEFAULT now()
);

CREATE TABLE projects (
  id          UUID PRIMARY KEY DEFAULT gen_random_uuid(),
  name        TEXT NOT NULL,
  owner_id    UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE,
  created_at  TIMESTAMPTZ NOT NULL DEFAULT now()
);
```

### 4. Apply Best Practices

**Primary keys:**
- Use `UUID` for distributed systems or public-facing IDs
- Use `SERIAL`/`BIGSERIAL` for internal-only IDs (faster joins)

**Timestamps:**
- Always add `created_at` and `updated_at`
- Use `TIMESTAMPTZ` (with timezone), never `TIMESTAMP`

**Naming:**
- Tables: plural snake_case (`users`, `project_members`)
- Columns: singular snake_case (`user_id`, `created_at`)
- Indexes: `idx_<table>_<columns>` (`idx_users_email`)

**Constraints:**
- `NOT NULL` on everything unless it's genuinely optional
- `UNIQUE` on natural keys (email, slug, external IDs)
- `REFERENCES` with `ON DELETE` behavior (CASCADE, SET NULL, RESTRICT)
- `CHECK` constraints for enums or value ranges

### 5. Add Indexes

```sql
-- For columns you filter/sort by frequently
CREATE INDEX idx_projects_owner_id ON projects(owner_id);

-- For unique lookups
CREATE UNIQUE INDEX idx_users_email ON users(email);

-- Composite for common query patterns
CREATE INDEX idx_tasks_project_status ON tasks(project_id, status);
```

**When to index:**
- Foreign keys (almost always)
- Columns in WHERE clauses
- Columns in ORDER BY
- Columns in JOIN conditions

**When NOT to index:**
- Small tables (<1000 rows)
- Columns with low cardinality (boolean, status with 3 values)
- Columns that are rarely queried

### 6. ORM Setup

**Prisma:**
```prisma
model User {
  id        String   @id @default(uuid())
  email     String   @unique
  name      String
  projects  Project[]
  createdAt DateTime @default(now()) @map("created_at")
  updatedAt DateTime @updatedAt @map("updated_at")
  @@map("users")
}
```

**Drizzle:**
```typescript
export const users = pgTable('users', {
  id: uuid('id').primaryKey().defaultRandom(),
  email: text('email').notNull().unique(),
  name: text('name').notNull(),
  createdAt: timestamp('created_at', { withTimezone: true }).notNull().defaultNow(),
  updatedAt: timestamp('updated_at', { withTimezone: true }).notNull().defaultNow(),
});
```

## Common Patterns

**Soft deletes:** Add `deleted_at TIMESTAMPTZ` instead of actually deleting rows
**Audit log:** Separate `audit_events` table with `entity_type`, `entity_id`, `action`, `actor_id`, `payload`
**Tags/labels:** Junction table (`task_tags`) with `task_id` + `tag_id`
**Tree/hierarchy:** `parent_id` self-reference, or materialized path (`/1/4/7/`)
**Polymorphic associations:** Use `entity_type` + `entity_id` columns (avoid if possible, prefer separate FKs)

## Tips

- Start normalized (3NF), denormalize only when you have measured performance problems
- Don't store derived data unless you have a caching/invalidation strategy
- Use database enums or check constraints for status fields, not free-text
- Always think about what happens when you delete a parent record

© spencerpauly · CC0-1.0 · spencerpauly/awesome-cursor-skills

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой