AgentSkillsCN

nestjs

NestJS框架开发指南。适用于NestJS项目、@nestjs包、.controller.ts、.service.ts、.module.ts、.guard.ts、.pipe.ts、.interceptor.ts、.filter.ts、.gateway.ts等文件的操作与自动应用。包含133篇官方文档。

SKILL.md
--- frontmatter
name: nestjs
description: NestJS 프레임워크 개발 가이드. NestJS 프로젝트, @nestjs 패키지, .controller.ts, .service.ts, .module.ts, .guard.ts, .pipe.ts, .interceptor.ts, .filter.ts, .gateway.ts 파일 작업 시 자동 적용. 133개의 공식 문서 포함.

NestJS 개발 가이드

NestJS 공식 문서 기반 개발 레퍼런스. 133개 문서 포함.

적용 시점

  • NestJS 프로젝트 코드 작성/리뷰 시
  • @nestjs 패키지 사용 시
  • Controllers, Services, Modules, Guards, Pipes, Interceptors 작업 시
  • GraphQL, WebSockets, Microservices 구현 시

문서 카테고리

Overview (핵심)

파일설명
docs/introduction.mdNestJS 소개
docs/first-steps.md첫 번째 앱 만들기
docs/controllers.mdHTTP 요청 처리, 라우팅
docs/components.md프로바이더, 서비스
docs/modules.md모듈 시스템
docs/middlewares.md미들웨어
docs/exception-filters.md예외 처리
docs/pipes.md데이터 변환/유효성 검사
docs/guards.md인증/인가
docs/interceptors.md요청/응답 가로채기
docs/custom-decorators.md커스텀 데코레이터

Fundamentals (기초)

파일설명
docs/fundamentals/dependency-injection.md의존성 주입
docs/fundamentals/async-components.md비동기 프로바이더
docs/fundamentals/dynamic-modules.md동적 모듈
docs/fundamentals/provider-scopes.md인스턴스 스코프
docs/fundamentals/circular-dependency.md순환 의존성 해결
docs/fundamentals/module-reference.md모듈 참조
docs/fundamentals/lazy-loading-modules.md지연 로딩
docs/fundamentals/execution-context.md실행 컨텍스트
docs/fundamentals/lifecycle-events.md생명주기 이벤트
docs/fundamentals/discovery-service.md메타데이터 탐색
docs/fundamentals/platform-agnosticism.md플랫폼 독립성
docs/fundamentals/unit-testing.md테스트 작성

Techniques (기법)

파일설명
docs/techniques/configuration.md환경 설정
docs/techniques/sql.md데이터베이스 (TypeORM)
docs/techniques/mongo.mdMongoDB
docs/techniques/validation.md유효성 검사
docs/techniques/caching.md캐싱
docs/techniques/serialization.md직렬화
docs/techniques/versioning.mdAPI 버전 관리
docs/techniques/task-scheduling.md작업 스케줄링
docs/techniques/queues.md큐 처리
docs/techniques/logger.md로깅
docs/techniques/cookies.md쿠키
docs/techniques/events.md이벤트
docs/techniques/compression.md압축
docs/techniques/file-upload.md파일 업로드
docs/techniques/streaming-files.md파일 스트리밍
docs/techniques/http-module.mdHTTP 요청
docs/techniques/sessions.md세션
docs/techniques/mvc.mdMVC 패턴
docs/techniques/performance.mdFastify 성능
docs/techniques/server-sent-events.mdSSE

Security (보안)

파일설명
docs/security/authentication.md인증
docs/security/authorization.md인가
docs/security/encryption-hashing.md암호화/해싱
docs/security/helmet.mdHTTP 헤더 보안
docs/security/cors.mdCORS
docs/security/csrf.mdCSRF 방어
docs/security/rate-limiting.md요청 제한

GraphQL

파일설명
docs/graphql/quick-start.md시작하기
docs/graphql/resolvers-map.md리졸버
docs/graphql/mutations.md뮤테이션
docs/graphql/subscriptions.md구독
docs/graphql/scalars.md스칼라 타입
docs/graphql/directives.md디렉티브
docs/graphql/interfaces.md인터페이스
docs/graphql/unions-and-enums.md유니온/이넘
docs/graphql/field-middleware.md필드 미들웨어
docs/graphql/mapped-types.md매핑 타입
docs/graphql/plugins.md플러그인
docs/graphql/complexity.md복잡도 제한
docs/graphql/extensions.md확장
docs/graphql/cli-plugin.mdCLI 플러그인
docs/graphql/schema-generator.mdSDL 생성
docs/graphql/sharing-models.md모델 공유
docs/graphql/guards-interceptors.md가드/인터셉터
docs/graphql/federation.md페더레이션

WebSockets

파일설명
docs/websockets/gateways.md게이트웨이
docs/websockets/exception-filters.md예외 필터
docs/websockets/pipes.md파이프
docs/websockets/guards.md가드
docs/websockets/interceptors.md인터셉터
docs/websockets/adapter.md어댑터

Microservices

파일설명
docs/microservices/basics.md기초
docs/microservices/redis.mdRedis
docs/microservices/mqtt.mdMQTT
docs/microservices/nats.mdNATS
docs/microservices/rabbitmq.mdRabbitMQ
docs/microservices/kafka.mdKafka
docs/microservices/grpc.mdgRPC
docs/microservices/custom-transport.md커스텀 트랜스포터
docs/microservices/exception-filters.md예외 필터
docs/microservices/pipes.md파이프
docs/microservices/guards.md가드
docs/microservices/interceptors.md인터셉터

OpenAPI (Swagger)

파일설명
docs/openapi/introduction.md소개
docs/openapi/types-and-parameters.md타입/파라미터
docs/openapi/operations.md작업
docs/openapi/security.md보안
docs/openapi/mapped-types.md매핑 타입
docs/openapi/decorators.md데코레이터
docs/openapi/cli-plugin.mdCLI 플러그인
docs/openapi/other-features.md기타 기능

CLI

파일설명
docs/cli/overview.mdCLI 개요
docs/cli/workspaces.md모노레포/워크스페이스
docs/cli/libraries.md라이브러리
docs/cli/usages.md사용법
docs/cli/scripts.md스크립트

Recipes (레시피)

파일설명
docs/recipes/repl.mdREPL
docs/recipes/crud-generator.mdCRUD 생성기
docs/recipes/swc.mdSWC (빠른 컴파일)
docs/recipes/passport.mdPassport 인증
docs/recipes/hot-reload.md핫 리로드
docs/recipes/mikroorm.mdMikroORM
docs/recipes/sql-typeorm.mdTypeORM
docs/recipes/mongodb.mdMongoose
docs/recipes/sql-sequelize.mdSequelize
docs/recipes/router-module.md라우터 모듈
docs/recipes/terminus.md헬스 체크
docs/recipes/cqrs.mdCQRS
docs/recipes/documentation.mdCompodoc
docs/recipes/prisma.mdPrisma
docs/recipes/sentry.mdSentry
docs/recipes/serve-static.md정적 파일
docs/recipes/nest-commander.mdCommander
docs/recipes/async-local-storage.mdAsync Local Storage
docs/recipes/necord.mdNecord (Discord)
docs/recipes/suites.mdSuites (Automock)

FAQ

파일설명
docs/faq/serverless.md서버리스
docs/faq/http-adapter.mdHTTP 어댑터
docs/faq/keep-alive-connections.mdKeep-Alive
docs/faq/global-prefix.md전역 접두사
docs/faq/raw-body.mdRaw body
docs/faq/hybrid-application.md하이브리드 앱
docs/faq/multiple-servers.mdHTTPS/다중 서버
docs/faq/request-lifecycle.md요청 생명주기
docs/faq/errors.md일반적 오류

기타

파일설명
docs/deployment.md배포
docs/application-context.md독립 실행형 앱
docs/migration.md마이그레이션 가이드
docs/devtools/overview.mdDevtools
docs/devtools/ci-cd.mdCI/CD 통합

핵심 패턴 요약

요청 처리 순서

code
Middleware → Guards → Interceptors (pre) → Pipes → Controller → Interceptors (post) → Exception Filter

모듈 구조

typescript
@Module({
  imports: [OtherModule],
  controllers: [UserController],
  providers: [UserService],
  exports: [UserService],
})
export class UserModule {}

컨트롤러

typescript
@Controller('users')
export class UserController {
  constructor(private readonly userService: UserService) {}

  @Get()
  findAll() { return this.userService.findAll(); }

  @Get(':id')
  findOne(@Param('id', ParseIntPipe) id: number) { return this.userService.findOne(id); }

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

서비스

typescript
@Injectable()
export class UserService {
  constructor(@InjectRepository(User) private repo: Repository<User>) {}

  findAll() { return this.repo.find(); }
}

유효성 검사

typescript
// DTO
export class CreateUserDto {
  @IsString() @MinLength(2) name: string;
  @IsEmail() email: string;
}

// main.ts
app.useGlobalPipes(new ValidationPipe({ whitelist: true, transform: true }));

가드

typescript
@Injectable()
export class AuthGuard implements CanActivate {
  canActivate(context: ExecutionContext): boolean {
    const request = context.switchToHttp().getRequest();
    return this.validate(request);
  }
}

CLI 명령어

bash
nest new project-name       # 새 프로젝트
nest g resource users       # CRUD 리소스
nest g module users         # 모듈
nest g controller users     # 컨트롤러
nest g service users        # 서비스
nest g guard auth           # 가드
nest g pipe validation      # 파이프

사용법

상세 내용이 필요하면 docs/ 폴더의 해당 파일을 Read 도구로 읽으세요.

예시:

  • Controllers 상세: docs/controllers.md
  • TypeORM 설정: docs/recipes/sql-typeorm.md
  • 인증 구현: docs/security/authentication.md