# nestjs-best-practices

Скилл с практиками NestJS 11 для приложений на TypeScript: подсказывает, как писать модули, контроллеры и сервисы, и ловит типичные ошибки при ревью.

- скилл · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 427 установок · ★ 6
- Автор: ejirocodes
- Лицензия: MIT · policy=mirror · лицензия открытая, файл — в исходнике
- Исходник: https://github.com/ejirocodes/agent-skills/tree/HEAD/nestjs/skills/nestjs-best-practices/SKILL.md
- Обновлён: 2026-06-25
- HTML: https://affpapa.org/nevibecode/skills/ejirocodes-nestjs-best-practices

## Что делает

Скилл включается, когда вы пишете, проверяете или переписываете код NestJS: модули, контроллеры, провайдеры, внедрение зависимостей, `@Injectable`, `@Controller`, `@Module`, middleware, гарды, интерцепторы, пайпы, фильтры исключений, DTO, JWT-аутентификация, стратегии Passport, TypeORM, Prisma, Drizzle, GraphQL-резолверы, микросервисы на TCP, Redis, NATS и Kafka, тесты.

Внутри — справочные файлы по темам: архитектура ядра, жизненный цикл запроса, валидация и пайпы, аутентификация, работа с базой, тестирование, OpenAPI и GraphQL, микросервисы. Плюс разбор частых ошибок: забыли `forwardRef()` при циклических зависимостях, бросили обычную ошибку вместо `HttpException`, не поставили `@Injectable()`, включили глобальный `ValidationPipe` без `whitelist: true`, импортировали модуль вместо экспорта провайдера, не вызвали `ConfigModule.forRoot()` перед асинхронным конфигом, в юнит-тестах не подменили сервис через `overrideProvider()`, а в E2E не изолировали состояние базы.

Отдельный раздел — изменения NestJS 11: минимум Node.js 20, Express v5 с именованными вайлдкардами и опциональными параметрами в фигурных скобках, обновлённый адаптер Fastify v5, а также динамические модули, которые при одинаковом конфиге, импортированном несколько раз, дают разные экземпляры. Если проект ещё на Express v4 или Node.js ниже 20, часть советов придётся отложить до обновления.

## Установка

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

1. **Через Skills CLI (Vercel)**
```bash
npx skills add ejirocodes/agent-skills --skill nestjs-best-practices -a claude-code
```

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

### Codex

1. **Через Skills CLI (Vercel)**
```bash
npx skills add ejirocodes/agent-skills --skill nestjs-best-practices -a codex
```

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

### Cursor

1. **Через Skills CLI (Vercel)**
```bash
npx skills add ejirocodes/agent-skills --skill nestjs-best-practices -a cursor
```

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

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install ejirocodes/agent-skills nestjs-best-practices
```

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

### Gemini CLI

1. **Через Skills CLI (Vercel)**
```bash
npx skills add ejirocodes/agent-skills --skill nestjs-best-practices -a gemini-cli
```

2. **Командой платформы**
```bash
gemini skills install https://github.com/ejirocodes/agent-skills --path nestjs/skills/nestjs-best-practices
```

### Windsurf (Devin Desktop)

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

### OpenCode

**Через Skills CLI (Vercel)**
```bash
npx skills add ejirocodes/agent-skills --skill nestjs-best-practices -a opencode
```

### Claude.ai

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

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/ejirocodes/agent-skills/tree/HEAD/nestjs/skills/nestjs-best-practices/SKILL.md

## Когда брать
- разложить модуль на контроллер, сервис и провайдеры без лишних связей
- настроить глобальный `ValidationPipe` с `whitelist` и `forbidNonWhitelisted`
- разорвать циклическую зависимость через `forwardRef()`
- подменить сервис в юнит-тесте через `overrideProvider()`
- перевести маршруты на Express v5 с именованными вайлдкардами

## Примеры запросов агенту
- Напиши модуль `UsersModule` с контроллером и сервисом, экспортни провайдер для других модулей
- Проверь мой контроллер: правильно ли расставлены пайпы и фильтры исключений
- Перепиши этот сервис под NestJS 11, учти изменения Express v5

## Похожие
- [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 установок

## Другие версии с тем же именем
- [nestjs-best-practices · kadajett](https://affpapa.org/nevibecode/skills/nestjs-best-practices.md) — 30400 установок
- [nestjs-best-practices · giuseppe-trisciuoglio](https://affpapa.org/nevibecode/skills/giuseppe-trisciuoglio-nestjs-best-practices.md) — 3800 установок

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

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