mcpField
B
backend-dev-guidelines

backend-dev-guidelines

github.com/jackspace开发1645 次安装13 周前更新
代码仓库

关于 backend-dev-guidelines

为后端微服务提供一致的 Node.js、Express 和 TypeScript 开发规范。技能通过模式和检查清单指导分层 API、输入验证、配置、错误跟踪、数据库访问与测试。

主要功能

  1. 01路由、控制器和服务分层
  2. 02Zod 输入验证模式
  3. 03统一配置指南
  4. 04Sentry 错误跟踪实践
  5. 05Prisma 仓储模式
  6. 06单元与集成测试指南

适用场景

  1. 01新增 API 路由与控制器
  2. 02验证输入并处理服务错误
  3. 03组织 Prisma 数据库访问
  4. 04测试或重构后端服务

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jackspace/claudeskillz --skill backend-dev-guidelines

安装后在 Claude Code 中输入/backend-dev-guidelines确认已加载。

附带文件SKILL.json

详细介绍

后端开发准则

目的

使用现代 Node.js/Express/TypeScript 模式,在后端微服务(blog-api、auth-service、notifications-service)之间建立一致性和最佳实践。

何时使用本技能

在以下场景中工作时自动激活:

  • 创建或修改路由、端点、API
  • 构建控制器、服务、仓库
  • 实现中间件(认证、校验、错误处理)
  • 使用 Prisma 进行数据库操作
  • 使用 Sentry 进行错误跟踪
  • 使用 Zod 进行输入校验
  • 配置管理
  • 后端测试与重构

快速开始

新后端功能检查清单
  • 路由:定义清晰,委托给控制器
  • 控制器:继承 BaseController
  • 服务:使用 DI 的业务逻辑
  • 仓库:数据库访问(如果复杂)
  • 校验:Zod schema
  • Sentry:错误跟踪
  • 测试:单元测试 + 集成测试
  • 配置:使用 unifiedConfig
新微服务检查清单
  • 目录结构(参见 architecture-overview.md)
  • 用于 Sentry 的 instrument.ts
  • unifiedConfig 设置
  • BaseController 类
  • 中间件栈
  • 错误边界
  • 测试框架

架构概览

分层架构
HTTP Request
    ↓
Routes (routing only)
    ↓
Controllers (request handling)
    ↓
Services (business logic)
    ↓
Repositories (data access)
    ↓
Database (Prisma)

关键原则: 每一层只有一项职责。

完整细节参见 architecture-overview.md。


目录结构

service/src/
├── config/              # UnifiedConfig
├── controllers/         # Request handlers
├── services/            # Business logic
├── repositories/        # Data access
├── routes/              # Route definitions
├── middleware/          # Express middleware
├── types/               # TypeScript types
├── validators/          # Zod schemas
├── utils/               # Utilities
├── tests/               # Tests
├── instrument.ts        # Sentry (FIRST IMPORT)
├── app.ts               # Express setup
└── server.ts            # HTTP server

命名约定:

  • 控制器:PascalCase - UserController.ts
  • 服务:camelCase - userService.ts
  • 路由:camelCase + Routes - userRoutes.ts
  • 仓库:PascalCase + Repository - UserRepository.ts

核心原则(7 条关键规则)

1. 路由只负责路由,控制器负责控制
// ❌ NEVER: Business logic in routes
router.post('/submit', async (req, res) => {
    // 200 lines of logic
});

// ✅ ALWAYS: Delegate to controller
router.post('/submit', (req, res) => controller.submit(req, res));
2. 所有控制器都继承 BaseController
export class UserController extends BaseController {
    async getUser(req: Request, res: Response): Promise<void> {
        try {
            const user = await this.userService.findById(req.params.id);
            this.handleSuccess(res, user);
        } catch (error) {
            this.handleError(error, res, 'getUser');
        }
    }
}
3. 所有错误都上报到 Sentry
try {
    await operation();
} catch (error) {
    Sentry.captureException(error);
    throw error;
}
4. 使用 unifiedConfig,绝不使用 process.env
// ❌ NEVER
const timeout = process.env.TIMEOUT_MS;

// ✅ ALWAYS
import { config } from './config/unifiedConfig';
const timeout = config.timeouts.default;
5. 使用 Zod 校验所有输入
const schema = z.object({ email: z.string().email() });
const validated = schema.parse(req.body);
6. 使用仓库模式进行数据访问
// Service → Repository → Database
const users = await userRepository.findActive();
7. 必须进行全面测试
describe('UserService', () => {
    it('should create user', async () => {
        expect(user).toBeDefined();
    });
});

常用导入

// Express
import express, { Request, Response, NextFunction, Router } from 'express';

// Validation
import { z } from 'zod';

// Database
import { PrismaClient } from '@prisma/client';
import type { Prisma } from '@prisma/client';

// Sentry
import * as Sentry from '@sentry/node';

// Config
import { config } from './config/unifiedConfig';

// Middleware
import { SSOMiddlewareClient } from './middleware/SSOMiddleware';
import { asyncErrorWrapper } from './middleware/errorBoundary';

快速参考

HTTP 状态码
状态码使用场景
200成功
201已创建
400错误请求
401未授权
403禁止访问
404未找到
500服务器错误
服务模板

Blog API(✅ 成熟)- 用作 REST API 的模板 Auth Service(✅ 成熟)- 用作认证模式的模板


应避免的反模式

❌ 路由中包含业务逻辑 ❌ 直接使用 process.env ❌ 缺少错误处理 ❌ 没有输入校验 ❌ 到处直接使用 Prisma ❌ 使用 console.log 而不是 Sentry


导航指南

需要...阅读此文档
理解架构architecture-overview.md
创建路由/控制器routing-and-controllers.md
组织业务逻辑services-and-repositories.md
校验输入validation-patterns.md
添加错误跟踪sentry-and-monitoring.md
创建中间件middleware-guide.md
数据库访问database-patterns.md
管理配置configuration.md
处理异步/错误async-and-errors.md
编写测试testing-guide.md
查看示例complete-examples.md

资源文件

architecture-overview.md

分层架构、请求生命周期、关注点分离

routing-and-controllers.md

路由定义、BaseController、错误处理、示例

services-and-repositories.md

服务模式、DI、仓库模式、缓存

validation-patterns.md

Zod schema、验证、DTO 模式

sentry-and-monitoring.md

Sentry 初始化、错误捕获、性能监控

middleware-guide.md

认证、审计、错误边界、AsyncLocalStorage

database-patterns.md

PrismaService、仓库、事务、优化

configuration.md

UnifiedConfig、环境配置、密钥

async-and-errors.md

异步模式、自定义错误、asyncErrorWrapper

testing-guide.md

单元/集成测试、模拟、覆盖率

complete-examples.md

完整示例、重构指南


相关技能

  • database-verification - 验证列名和 schema 一致性
  • error-tracking - Sentry 集成模式
  • skill-developer - 用于创建和管理技能的元技能

技能状态:COMPLETE ✅ 行数:< 500 ✅ 渐进式披露:11 个资源文件 ✅

评论

支持 Markdown