# nestjs-drizzle-crud-generator

Собирает готовый модуль NestJS с Drizzle ORM: контроллер, сервис, DTO на Zod и тесты Jest по описанию полей. Пригодится, когда нужен новый раздел API под таблицу.

- скилл · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 3600 установок · ★ 363
- Автор: giuseppe-trisciuoglio
- Лицензия: MIT · policy=mirror · начало файла — в конце страницы
- Исходник: https://github.com/giuseppe-trisciuoglio/developer-kit/tree/HEAD/plugins/developer-kit-typescript/skills/nestjs-drizzle-crud-generator/SKILL.md
- Обновлён: 2026-09-10
- HTML: https://affpapa.org/nevibecode/skills/nestjs-drizzle-crud-generator

## Что делает

Скилл запускает питоновский генератор `scripts/generate_crud.py` и раскладывает результат по `libs/server/<feature-name>/`. Внутри появляются файлы контроллера, сервиса, DTO и схемы таблицы, плюс файл модуля и тесты. Поля сущности передаются JSON-массивом в аргументе `--fields`: там имя поля, тип и признак обязательности.

Контроллер получает методы POST, GET, PATCH и DELETE, проверку параметров пагинации и Zod-пайп. Сервис работает с Drizzle, умеет лимит с офсетом, фильтрацию и мягкое удаление через колонку `deletedAt`. DTO собираются из Zod-схем для создания и обновления.

После генерации модуль нужно руками подключить в `app.module.ts` через `forRootAsync`. Авторизации в сгенерированном коде нет — гарды добавляют отдельно. Жёсткое удаление тоже придётся дописать: по умолчанию стоит мягкое. Перед коммитом прогоните `npx tsc --noEmit` и тесты, а миграции для схемы создайте сами. В зависимостях названы `drizzle-orm`, `drizzle-zod`, `zod` и `nestjs-zod`.

## Установка

### Claude Code (родная платформа)

1. **Через Skills CLI (Vercel)**
```bash
npx skills add giuseppe-trisciuoglio/developer-kit --skill nestjs-drizzle-crud-generator -a claude-code
```

2. **Вручную: положить файлы**
- Файл: `~/.claude/skills/nestjs-drizzle-crud-generator/SKILL.md` — Папка скилла целиком; для одного проекта — .claude/skills/nestjs-drizzle-crud-generator/

### Codex

1. **Через Skills CLI (Vercel)**
```bash
npx skills add giuseppe-trisciuoglio/developer-kit --skill nestjs-drizzle-crud-generator -a codex
```

2. **Вручную: положить файлы**
- Файл: `.agents/skills/nestjs-drizzle-crud-generator/SKILL.md` — Для всех проектов — ~/.agents/skills/

### Cursor

1. **Через Skills CLI (Vercel)**
```bash
npx skills add giuseppe-trisciuoglio/developer-kit --skill nestjs-drizzle-crud-generator -a cursor
```

2. **Вручную: положить файлы**
- Файл: `.cursor/skills/nestjs-drizzle-crud-generator/SKILL.md` — Cursor читает и .agents/skills/, и .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install giuseppe-trisciuoglio/developer-kit nestjs-drizzle-crud-generator
```

2. **Вручную: положить файлы**
- Файл: `.github/skills/nestjs-drizzle-crud-generator/SKILL.md`

### Gemini CLI

1. **Через Skills CLI (Vercel)**
```bash
npx skills add giuseppe-trisciuoglio/developer-kit --skill nestjs-drizzle-crud-generator -a gemini-cli
```

2. **Командой платформы**
```bash
gemini skills install https://github.com/giuseppe-trisciuoglio/developer-kit --path plugins/developer-kit-typescript/skills/nestjs-drizzle-crud-generator
```

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/skills/nestjs-drizzle-crud-generator/SKILL.md` — Старый путь .windsurf/skills/ тоже читается

### OpenCode

**Через Skills CLI (Vercel)**
```bash
npx skills add giuseppe-trisciuoglio/developer-kit --skill nestjs-drizzle-crud-generator -a opencode
```

### Claude.ai

**Claude.ai**
- Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/giuseppe-trisciuoglio/developer-kit/tree/HEAD/plugins/developer-kit-typescript/skills/nestjs-drizzle-crud-generator/SKILL.md

## Когда брать
- сгенерировать модуль NestJS под новую таблицу целиком
- получить DTO с валидацией Zod без ручного письма
- добавить пагинацию и фильтрацию в сервис на Drizzle
- написать тесты Jest с замоканной базой под CRUD
- сделать мягкое удаление через колонку `deletedAt`

## Примеры запросов агенту
- Сгенерируй CRUD-модуль NestJS для сущности `order` с полями `number` и `total`, вывод в `./libs/server`
- Создай сущность `article` в NestJS с Drizzle: `title` и `body`, оба обязательные
- Перегенерируй модуль `product`, добавь в поля `sku` строкой

## Похожие
- [mcp-builder](https://affpapa.org/nevibecode/skills/mcp-builder.md) — скилл · 130949 установок
- [claude-api](https://affpapa.org/nevibecode/skills/claude-api.md) — скилл · 74198 установок
- [lark-im](https://affpapa.org/nevibecode/skills/lark-im.md) — скилл · 472900 установок
- [lark-event](https://affpapa.org/nevibecode/skills/lark-event.md) — скилл · 466800 установок
- [caveman-discover](https://affpapa.org/nevibecode/skills/caveman-discover.md) — скилл · 104400 установок
- [migration](https://affpapa.org/nevibecode/skills/migration.md) — скилл · 103900 установок

Из того же набора: [giuseppe-trisciuoglio/developer-kit](https://affpapa.org/nevibecode/by/giuseppe-trisciuoglio/developer-kit.md) — 96 карточек

_Часть страницы не вошла по размеру — она есть в HTML-версии._

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
