사용 방법
- 설치 명령을 복사하고 자신의 에이전트 환경에 설치하기 전에 소스 패키지를 확인하세요.
- 필요한 도구, 인증 정보, 지원 환경은 원본 문서에서 확인하세요.
- 입력과 원하는 산출물을 설명하고 출처와 결과를 대조하세요.
npx skills add https://github.com/j4flmao/agent_skills_nodejs_nestjs --skill validating-nestjs-dtos시작 전 확인
- 설치에는 모델 구독, API 한도, 파일 접근 권한이 포함되지 않습니다.
- 별점 수와 설치 수는 활동 지표이며 독립적인 품질·보안 검증이 아닙니다.
원본 저장소의 제목, 예시, 코드, 표, 링크, 이미지를 유지해 표시합니다.
Validating NestJS DTOs
When to use
- Adding or refactoring DTOs
- Hardening boundary input
- Removing manual validation from controllers
Core rules
- Global
ValidationPipewithwhitelist: true,forbidNonWhitelisted: true - DTOs use
class-validatordecorators:@IsEmail(),@IsString(),@MinLength() - Use
@Type()from class-transformer for type conversion - No manual validation in controllers
- DTOs in
application/dtos/folder
Reference shape (TypeScript)
DTO with class-validator
import { IsEmail, IsString, MinLength, IsEnum } from 'class-validator';
import { Type } from 'class-transformer';
export class CreateUserDto {
@IsEmail()
email: string;
@IsString()
@MinLength(12)
password: string;
@IsEnum(['user', 'admin'])
role: string;
}Global ValidationPipe
// main.ts
app.useGlobalPipes(
new ValidationPipe({
whitelist: true,
forbidNonWhitelisted: true,
transform: true,
transformOptions: { enableImplicitConversion: true },
})
);Examples — Do
@Post()
async create(@Body() dto: CreateUserDto): Promise<ApiResponse<User>> {
return toApiResponse(await this.useCase.execute(dto)); // No manual validation
}Examples — Don't
// ❌ Manual validation in controller
@Post()
create(@Body() body: any) {
if (!body.email) return { error: 'Email required' }; // No!
}Checklist
- [ ] Global ValidationPipe configured
- [ ] DTOs with class-validator decorators
- [ ] No manual validation in controllers
- [ ] DTOs in application/dtos folder
See reference/dto-patterns.md for full patterns.




