Skip to content

Everything Claude Code 的 nestjs-patterns Skill 是专为 TypeScript/NestJS 后端设计的生产级架构模式库。它帮助开发者和 AI 编程助手(如 Claude Code、Codex、Cursor 等)自动化生成和重构模块、控制器、DTO 验证、Guards、异常处理、环境配置等关键代码结构,实现高内聚、可维护、易测试的企业级后端。无论是初次接触 NestJS,还是需要深度定制 AI 生成的项目结构,使用该 Skill 都能极大提升开发效率与代码质量。

Everything Claude Code NestJS Patterns Skill:模块、控制器、DTO 验证、Guards 与生产级 TypeScript 后端

NestJS 作为现代 TypeScript 后端开发的主流框架,强调模块化、依赖注入、类型安全和可扩展性。然而,实际项目中如何组织模块、控制器、DTO、Guards、全局配置与异常处理,往往因团队经验和项目复杂度而大相径庭。Everything Claude Code 的 nestjs-patterns Skill 正是为了解决这些痛点,将生产环境下验证过的 NestJS 架构模式,系统化地嵌入到 AI 编程助手的自动化输出中。

无论你是用 Claude Code 让 AI 生成新模块、重构遗留代码,还是希望在团队内统一后端开发规范,这个 Skill 都能作为「架构教练」,让每一次自动化生成都符合最佳实践,极大减少返工和安全隐患。下面将分步骤介绍如何在实际项目中用好 nestjs-patterns Skill,并结合典型输出示例、常见配套 Agent 及与其他 Skill 的协作方式,帮助你系统性提升 AI 辅助下的 NestJS 开发效率。


1. Skill 解决了什么问题?

传统做法痛点:

  • 项目结构随意,模块、DTO、Guards、配置等散落各处,维护困难
  • 控制器肥大,业务逻辑与 HTTP 解析混杂,难以测试和复用
  • DTO 验证不统一,容易遗漏安全检查或数据转换
  • 缺乏全局异常处理和一致的错误响应格式
  • 环境变量和配置管理混乱,开发/生产环境易出错
  • 测试用例与生产代码脱节,难以保证一致性

nestjs-patterns Skill 的价值:

  • 规范化项目结构(modules、common、config、database 等目录)
  • 强制分层(控制器只做 HTTP,业务逻辑进 service/provider)
  • 自动为每个 DTO 生成 class-validator 校验和类型转换
  • 提供全局 ValidationPipe、ExceptionFilter、ClassSerializerInterceptor 等配置代码模板
  • 集成环境变量校验与类型安全的配置服务
  • 输出可复用的 Guards、拦截器、异常过滤器等 cross-cutting 组件
  • 统一测试模式,确保开发、测试、生产环境行为一致

2. 什么时候激活 nestjs-patterns Skill?

  • 新建 NestJS 项目或新模块时:让 AI 生成标准目录结构和基础代码骨架
  • 自动化重构/代码审查时:AI 检测到结构混乱、DTO/异常/配置不规范,自动建议并输出最佳模式
  • 集成新功能(如认证、角色权限、输入校验)时:AI 自动插入合适的 Guards、Pipes、Filters
  • 写测试用例时:AI 按生产配置自动生成测试环境初始化代码
  • 与其他后端模式 Skill 协作时:如 backend-patternsapi-design Skill 联合输出

3. 实际使用流程(Step by Step)

Step 1:激活 Skill 并生成标准项目结构

在 Claude Code/Codex 等 AI 编程助手中,输入类似:

帮我用生产级模式初始化一个 NestJS 用户管理模块,要求包含 DTO 校验、全局异常处理和环境变量校验。

AI 会自动应用 nestjs-patterns Skill,输出如下结构:

text
src/
├── app.module.ts
├── main.ts
├── common/
│   ├── filters/
│   ├── guards/
│   ├── interceptors/
│   └── pipes/
├── config/
│   ├── configuration.ts
│   └── validation.ts
├── modules/
│   ├── users/
│   │   ├── dto/
│   │   ├── entities/
│   │   ├── users.controller.ts
│   │   ├── users.module.ts
│   │   └── users.service.ts
└── prisma/ 或 database/

要点:

  • 领域代码归属于 feature module(如 users)
  • 通用拦截器、过滤器、守卫等放在 common/
  • DTO 紧贴所属模块,便于维护

Step 2:配置全局 ValidationPipe、异常过滤器和序列化

AI 会自动输出 main.ts 启动代码:

typescript
async function bootstrap() {
  const app = await NestFactory.create(AppModule, { bufferLogs: true });

  app.useGlobalPipes(
    new ValidationPipe({
      whitelist: true,
      forbidNonWhitelisted: true,
      transform: true,
      transformOptions: { enableImplicitConversion: true },
    }),
  );

  app.useGlobalInterceptors(new ClassSerializerInterceptor(app.get(Reflector)));
  app.useGlobalFilters(new HttpExceptionFilter());

  await app.listen(process.env.PORT ?? 3000);
}
bootstrap();

要点:

  • 强制开启 whitelistforbidNonWhitelisted,杜绝多余字段注入
  • 全局 ValidationPipe,避免每个路由重复配置
  • 统一异常响应格式,便于前端和测试处理

Step 3:生成模块、控制器与 Provider

AI 生成的 users.module.ts、users.controller.ts、users.service.ts 示例:

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

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

  @Get(':id')
  getById(@Param('id', ParseUUIDPipe) id: string) {
    return this.usersService.getById(id);
  }

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

// users.service.ts
@Injectable()
export class UsersService {
  constructor(private readonly usersRepo: UsersRepository) {}

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

要点:

  • 控制器只做参数解析和响应,业务逻辑全部进 service
  • 依赖注入,便于测试和解耦
  • 只导出真正需要被其他模块用到的 provider

Step 4:DTO 验证与序列化

AI 自动为 DTO 添加 class-validator 装饰器:

typescript
export class CreateUserDto {
  @IsEmail()
  email!: string;

  @IsString()
  @Length(2, 80)
  name!: string;

  @IsOptional()
  @IsEnum(UserRole)
  role?: UserRole;
}

要点:

  • 每个请求 DTO 都有类型和校验
  • 响应 DTO/序列化器避免直接暴露 ORM 实体,防止敏感字段泄漏

Step 5:认证、Guards 与请求上下文

typescript
@UseGuards(JwtAuthGuard, RolesGuard)
@Roles('admin')
@Get('admin/report')
getAdminReport(@Req() req: AuthenticatedRequest) {
  return this.reportService.getForUser(req.user.id);
}

要点:

  • 认证策略和 Guards 优先模块内封装,避免全局污染
  • 粗粒度权限用 Guard,细粒度授权进 service 层
  • 显式声明请求类型,提升类型安全

Step 6:环境变量与配置校验

typescript
ConfigModule.forRoot({
  isGlobal: true,
  load: [configuration],
  validate: validateEnv,
});

要点:

  • 启动时即校验环境变量,防止运行时出错
  • 配置读取统一通过类型安全的 helper/service
  • 不同环境配置分离,避免到处 if/else

Step 7:测试与生产级默认

AI 生成的测试用例会自动复用生产配置:

typescript
describe('UsersController', () => {
  let app: INestApplication;

  beforeAll(async () => {
    const moduleRef = await Test.createTestingModule({
      imports: [UsersModule],
    }).compile();

    app = moduleRef.createNestApplication();
    app.useGlobalPipes(new ValidationPipe({ whitelist: true, transform: true }));
    await app.init();
  });
});

要点:

  • Provider 单元测试 mock 依赖
  • 请求级测试覆盖 Guards、Pipes、Filters
  • 测试环境与生产行为一致,减少环境差异 bug

4. 典型输出示例

  • 标准化的目录结构和模块骨架
  • 带全局 ValidationPipe、ClassSerializerInterceptor、ExceptionFilter 的 main.ts
  • 每个 DTO 都有 class-validator 校验
  • 认证和权限 Guards 代码模板
  • 类型安全的配置模块和环境变量校验
  • 生产级测试初始化代码

5. 常见配套 Agent 与 Skill 协作

更多整体配置和进阶用法可参考 Everything Claude Code 完全指南 以及 Claude Code 快速上手指南


FAQ

Q: nestjs-patterns Skill 适合什么规模的项目? A: 无论是个人项目还是企业级后端,只要需要 NestJS 的生产级架构与规范化,都适合使用,尤其适合团队协作和 AI 自动生成代码场景。

Q: Skill 输出的代码能直接用于生产吗? A: Skill 输出基于真实生产经验总结,结构和模式均为最佳实践,通常只需补充具体业务逻辑即可上线。

Q: 如何与其他 Claude Code Skill 或 Agent 配合? A: 可与 Code Reviewer、Backend Patterns、API Design 等 Skill/Agent 组合,实现从自动生成到质量审查、测试、验证的全流程自动化。