mcpField
B
backend-dev-guidelines

backend-dev-guidelines

github.com/davila7开发33.0k491 次安装今天更新
代码仓库

关于 backend-dev-guidelines

面向 Node.js、Express 和 TypeScript 微服务开发的技能,提供分层架构规范、实现清单及常见后端任务参考。

主要功能

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

适用场景

  1. 01添加路由和 API 端点
  2. 02实现中间件与输入验证
  3. 03组织数据库访问
  4. 04测试或重构后端服务

安装

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

$npx skills add https://github.com/davila7/claude-code-templates --skill backend-dev-guidelines

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

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

resources/
architecture-overview.md
async-and-errors.md
complete-examples.md
configuration.md
database-patterns.md
middleware-guide.md
routing-and-controllers.md
sentry-and-monitoring.md
services-and-repositories.md
testing-guide.md
validation-patterns.md

详细介绍

后端开发准则

目的

使用现代 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