金色时刻 · 15:48
让好资源,触手可及
AGENT SKILL

documentation

documentation 是面向效率工具、数据与分析、软件开发的 Agent Skill,来自 HoangNguyen0403/agent-skills-standard。查看技能说明、操作步骤与使用约定,并通过原项目了解详细用法。

Swagger automation and Generic response documentation.

SKILL.md

下载 MD ↓
nameNestJS OpenAPI
descriptionSwagger automation and Generic response documentation.
metadata{"labels": ["nestjs", "swagger", "openapi", "docs"], "triggers": {"files": ["main.ts", "**/*.dto.ts"], "keywords": ["DocumentBuilder", "SwaggerModule", "ApiProperty", "ApiResponse"]}}

OpenAPI & Documentation

Priority: P2 (MAINTENANCE)

Automated API documentation and OpenAPI standards.

  • Automation: ALWAYS use the Nest CLI Plugin (@nestjs/swagger/plugin).
  • Benefit: Auto-generates @ApiProperty for DTOs and response types. Reduces boilerplate by 50%.
  • Config: nest-cli.json -> "plugins": ["@nestjs/swagger"].
  • Versioning: Maintain separate Swagger docs for v1, v2 if breaking changes occur.

Response Documentation

  • Strictness: Every controller method must have @ApiResponse({ status: 200, type: UserDto }).
  • Generic Wrappers: Define ApiPaginatedResponse<T> decorators to document generic PageDto<T> returns properly (Swagger doesn't handle generics well by default).
  • Technique: Use ApiExtraModels + getSchemaPath() in the custom decorator to handle the generic T ref.

Advanced Patterns

  • Polymorphism: Use @ApiExtraModels and getSchemaPath for oneOf/anyOf union types.
  • File Uploads: Document multipart/form-data explicitly.
  • Decorator: @ApiConsumes('multipart/form-data').
  • Body: @ApiBody({ schema: { type: 'object', properties: { file: { type: 'string', format: 'binary' } } } }).
  • Authentication: Specify granular security schemes per route/controller.
  • Types: @ApiBearerAuth() or @ApiSecurity('api-key') (Must match DocumentBuilder().addBearerAuth()).
  • Enums: Force named enums for reusable schema references.
  • Code: @ApiProperty({ enum: MyEnum, enumName: 'MyEnum' }).

Operation Grouping

  • Tags: Mandatory @ApiTags('domains') on every Controller to group endpoints logically.
  • Multiple Docs: generate separate docs for different audiences (e.g. Public vs Internal).

typescript SwaggerModule.createDocument(app, config, { include: [PublicModule] }); // /api/docs SwaggerModule.createDocument(app, adminConfig, { include: [AdminModule] }); // /admin/docs

Self-Documentation

  • Compodoc: Use @compodoc/compodoc to generate static documentation of the module graph, services, and dependencies.
  • Use Case: New developer onboarding and architectural review.

Advanced OpenAPI

  • Polymorphism: Use @ApiExtraModels and getSchemaPath for oneOf/anyOf union types.
  • Pattern: Register generic/sub-types in controller, refer via schema $ref.
  • File Uploads: Document multipart/form-data explicitly.
  • Decorator: @ApiConsumes('multipart/form-data').
  • Body: @ApiBody({ schema: { type: 'object', properties: { file: { type: 'string', format: 'binary' } } } }).
  • Authentication: Specify granular security schemes per route/controller.
  • Types: @ApiBearerAuth() or @ApiSecurity('api-key'). Match setup in DocumentBuilder.
  • Enums: Force named enums for reusable schema references.
  • Code: @ApiProperty({ enum: MyEnum, enumName: 'MyEnum' }).
  • Grouping: Segregate public vs. internal docs.
  • Setup: SwaggerModule.createDocument(app, config, { include: [AdminModule] }).

来源:HoangNguyen0403/agent-skills-standard · MIT 许可 · 许可原文 · MD 为来源页保存的历史版本