Appearance
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-patterns、api-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();要点:
- 强制开启
whitelist和forbidNonWhitelisted,杜绝多余字段注入 - 全局 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 协作
- Code Reviewer Agent:自动审查 AI 生成的 NestJS 代码是否符合最佳实践
- Backend Patterns Skill:与 nestjs-patterns Skill 联合输出,适配 Express、Next.js 等多后端架构
- API Design Skill:协助生成 RESTful 资源命名、状态码、分页等接口规范
- Verification Loop 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 组合,实现从自动生成到质量审查、测试、验证的全流程自动化。