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

nestjs — скилл для Claude Code: NestJS с Drizzle ORM

Подсказывает агенту паттерны NestJS: CRUD-модули, JWT-гарды, схемы Drizzle и миграции. Пригодится, когда собираешь API на NestJS.

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

Что делает nestjs

Скилл описывает, как в NestJS раскладывать код по слоям: контроллер, сервис, репозиторий. Агент получает готовые примеры схем Drizzle, DTO с class-validator и транзакций, поэтому не изобретает структуру заново. Внутри — инструкция из восьми шагов, от установки зависимостей до прогона миграций, плюс справочники по гардам, интерцепторам, микросервисам и GraphQL.

Ставится одной командой, отдельного ключа API не требует. Работает в Claude, Codex, Cursor, GitHub Copilot, Gemini CLI и OpenCode. Агенту разрешены Read, Write, Edit, Glob, Grep и Bash — он может и файлы править, и команды запускать.

Есть места, где легко ошибиться. Транзакции скилл советует держать короткими и не вкладывать одну в другую, а JWT-гард должен идти раньше гарда ролей. Миграции запускаются после правки схемы: сначала npx drizzle-kit generate, потом проверка SQL, потом npx drizzle-kit migrate. Если в проекте уже есть свой слой доступа к данным, паттерн репозитория из скилла будет с ним спорить — это повод проверить, стоит ли тянуть вторую схему работы с базой.

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

  • собрать CRUD-модуль на NestJS со слоями контроллер-сервис-репозиторий
  • закрыть маршруты JWT-гардом и гардом ролей
  • описать таблицы в src/db/schema.ts и сгенерировать миграцию
  • провести перевод между счетами внутри одной транзакции Drizzle
  • написать юнит-тест сервиса с замоканным репозиторием

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

  • сделай CRUD-модуль users на NestJS с Drizzle, DTO через class-validator и миграцией
  • накинь JWT-гард на маршруты users и поставь его перед проверкой ролей
  • подними микросервис на NestJS с Redis-транспортом и напиши тесты

Как установить nestjs

1Через Skills CLI (Vercel)

npx skills add giuseppe-trisciuoglio/developer-kit --skill nestjs -a claude-code

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

~/.claude/skills/nestjs/SKILL.md

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

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

Вопросы о nestjs

Как установить nestjs в Claude?

Выполни npx skills add giuseppe-trisciuoglio/developer-kit --skill nestjs -a claude-code. Файл скилла появится по пути ~/.claude/skills/nestjs/SKILL.md.

Что делает скилл nestjs?

Даёт агенту паттерны NestJS вместе с Drizzle ORM: генерацию REST и GraphQL API, гарды аутентификации, схемы базы, микросервисы и тесты.

Нужно ли что-то доустанавливать?

Скилл советует поставить зависимости проекта: npm i drizzle-orm pg && npm i -D drizzle-kit tsx. Миграции запускаются через drizzle-kit.

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

SKILL.md · MIT
---
name: nestjs
description: Provides comprehensive NestJS framework patterns with Drizzle ORM integration for building scalable server-side applications. Generates REST/GraphQL APIs, implements authentication guards, creates database schemas, and sets up microservices. Use when building NestJS applications, setting up APIs, implementing authentication, working with databases, or integrating Drizzle ORM.
allowed-tools: Read, Write, Edit, Glob, Grep, Bash
---

# NestJS Framework with Drizzle ORM

## Overview

Provides NestJS patterns with Drizzle ORM for building production-ready server-side applications. Covers CRUD modules, JWT authentication, database operations, migrations, testing, microservices, and GraphQL integration.

## When to Use

- Building REST APIs or GraphQL servers with NestJS
- Setting up authentication and authorization with JWT
- Implementing database operations with Drizzle ORM
- Creating microservices with TCP/Redis transport
- Writing unit and integration tests
- Running database migrations with drizzle-kit

## Instructions

1. **Install dependencies**: `npm i drizzle-orm pg && npm i -D drizzle-kit tsx`
2. **Define schema**: Create `src/db/schema.ts` with Drizzle table definitions
3. **Create DatabaseService**: Inject Drizzle client as a NestJS provider
4. **Build CRUD module**: Controller → Service → Repository pattern
5. **Add validation**: Use class-validator DTOs with ValidationPipe
6. **Implement guards**: Create JWT/Roles guards for route protection
7. **Write tests**: Use `@nestjs/testing` with mocked repositories
8. **Run migrations**: `npx drizzle-kit generate` → **Verify SQL** → `npx drizzle-kit migrate`

## Examples

### Complete CRUD Module with Drizzle

```typescript
// src/db/schema.ts
export const users = pgTable('users', {
  id: serial('id').primaryKey(),
  name: text('name').notNull(),
  email: text('email').notNull().unique(),
  createdAt: timestamp('created_at').defaultNow(),
});

// src/users/dto/create-user.dto.ts
export class CreateUserDto {
  @IsString() @IsNotEmpty() name: string;
  @IsEmail() email: string;
}

// src/users/user.repository.ts
@Injectable()
export class UserRepository {
  constructor(private db: DatabaseService) {}

  async findAll() {
    return this.db.database.select().from(users);
  }

  async create(data: typeof users.$inferInsert) {
    return this.db.database.insert(users).values(data).returning();
  }
}

// src/users/users.service.ts
@Injectable()
export class UsersService {
  constructor(private repo: UserRepository) {}

  async create(dto: CreateUserDto) {
    return this.repo.create(dto);
  }
}

// src/users/users.controller.ts
@Controller('users')
export class UsersController {
  constructor(private service: UsersService) {}

  @Post()
  create(@Body() dto: CreateUserDto) {
    return this.service.create(dto);
  }
}

// src/users/users.module.ts
@Module({
  controllers: [UsersController],
  providers: [UsersService, UserRepository, DatabaseService],
  exports: [UsersService],
})
export class UsersModule {}
```

### JWT Authentication Guard

```typescript
@Injectable()
export class JwtAuthGuard implements CanActivate {
  constructor(private jwtService: JwtService) {}

  canActivate(context: ExecutionContext) {
    const token = context.switchToHttp().getRequest()
      .headers.authorization?.split(' ')[1];
    if (!token) return false;
    try {
      const decoded = this.jwtService.verify(token);
      context.switchToHttp().getRequest().user = decoded;
      return true;
    } catch {
      return false;
    }
  }
}
```

### Database Transactions

```typescript
async transferFunds(fromId: number, toId: number, amount: number) {
  return this.db.database.transaction(async (tx) => {
    await tx.update(accounts)
      .set({ balance: sql`${accounts.balance} - ${amount}` })
      .where(eq(accounts.id, fromId));
    await tx.update(accounts)
      .set({ balance: sql`${accounts.balance} + ${amount}` })
      .where(eq(accounts.id, toId));
  });
}
```

### Unit Testing with Mocks

```typescript
describe('UsersService', () => {
  let service: UsersService;
  let repo: jest.Mocked<UserRepository>;

  beforeEach(async () => {
    const module = await Test.createTestingModule({
      providers: [
        UsersService,
        { provide: UserRepository, useValue: { findAll: jest.fn(), create: jest.fn() } },
      ],
    }).compile();
    service = module.get(UsersService);
    repo = module.get(UserRepository);
  });

  it('should create user', async () => {
    const dto = { name: 'John', email: '[email protected]' };
    repo.create.mockResolvedValue({ id: 1, ...dto, createdAt: new Date() });
    expect(await service.create(dto)).toMatchObject(dto);
  });
});
```

## Constraints and Warnings

- **DTOs required**: Always use DTOs with class-validator, never accept raw objects
- **Transactions**: Keep transactions short; avoid nested transactions
- **Guards order**: JWT guard must run before Roles guard
- **Environment variables**: Never hardcode DATABASE_URL or JWT_SECRET
- **Migrations**: Run `drizzle-kit generate` after schema changes before deploying
- **Circular dependencies**: Use `forwardRef()` carefully; prefer module restructuring

## Best Practices

- Validate all inputs with global `ValidationPipe`
- Use transactions for multi-table operations
- Document APIs with OpenAPI/Swagger decorators

## References

Advanced patterns and detailed examples available in:
- `references/reference.md` - Core patterns, guards, interceptors, microservices, GraphQL
- `references/drizzle-reference.md` - Drizzle ORM installation, configuration, queries
- `references/workflow-optimization.md` - Development workflows, parallel execution strategies

© giuseppe-trisciuoglio · MIT · giuseppe-trisciuoglio/developer-kit

Похожие скиллы

Всё по теме «Бэкенд и API» →
nestjs-expert https://github.com/Jeffallan Скилл помогает проектировать и писать NestJS бэкенд-приложения на TypeScript: модули, сервисы, контроллеры, валидацию, аутентификацию и тесты. Нужен, если строишь REST API или GraphQL с enterprise-паттернами. CX Codex +1 5 900установок nestjs-patterns affaan-m Скилл задаёт архитектурные правила для бэкендов на NestJS и TypeScript: от структуры каталогов до валидации DTO и тестов. CX Codex +1 5 000установок nestjs-modular-monolith Felipe Rodrigues - github.com/felipfr Ведёт от анализа домена до кода: границы модулей, DDD, Clean Architecture и CQRS в одном бэкенде на NestJS. CX Codex +1 329установок openapi-to-application-nodejs-nestjs официальный Awesome Copilot Community Собирает приложение на NestJS по спецификации OpenAPI: скаффолдинг проекта, контроллеры, сервисы. Пригодится, когда контракт API уже есть, а кода ещё нет. ★ 40 418звёзд репо api-sec yaklang Маршрутизирует аудит безопасности REST, GraphQL и мобильных API. Помогает агенту выбрать правильное направление до запуска глубоких проверок. CX Codex +1 3 900установок neo4j-graphql-skill neo4j-contrib Скилл помогает собрать GraphQL API на @neo4j/graphql: типы, директивы, авторизация через JWT и подключение к Apollo Server. CX Codex +1 809установок

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

spring-boot-test-patterns Скилл подсказывает агенту, как писать тесты Spring Boot: юнит-тесты с Mockito, срезы @DataJpaTest и @WebMvcTest, интеграционные с Testcontainers. CX Codex +1 4 300установок react-code-review Скилл проверяет React-компоненты и хуки перед мержем: архитектура, зависимости в useEffect, доступность, типы. Полезен, когда правки уже готовы и нужен разбор по серьёзности. CX Codex +1 4 300установок spring-boot-rest-api-standards Задаёт правила проектирования REST API в Spring Boot: от структуры URL и статус-кодов до валидации DTO и перехвата ошибок. CX Codex +1 4 200установок typescript-docs Создаёт документацию TypeScript с JSDoc, TypeDoc и ADR. Пригодится для описания API, решений по архитектуре и кода на популярных фреймворках. CX Codex +1 4 200установок unit-test-boundary-conditions Скилл подсказывает, как писать юнит-тесты на граничные значения в Java: минимумы, максимумы, null, пустые коллекции, переполнение и точность double. CX Codex +1 4 100установок turborepo-monorepo Скилл ведёт агента по настройке Turborepo: workspace, задачи в turbo.json, тестовые пайплайны и кэш сборки. CX Codex +1 4 100установок spring-data-jpa Шаблоны и правила для слоя персистентности на Spring Data JPA: создание репозиториев, пагинация, аудит сущностей и настройка транзакций. CX Codex +1 4 100установок spring-boot-security-jwt Скилл с готовыми шаблонами JWT-аутентификации для Spring Boot 3.5.x: генерация токенов через JJWT, фильтры, RBAC и OAuth2. CX Codex +1 4 100установок

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

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