AgentSkillsCN

codebase-core-analyse

深度剖析代码库的核心业务流程、前后端 API 接口交互、数据格式规范,以及 C++ 类的功能实现细节。适用于梳理业务逻辑、理解接口契约、生成接口文档时使用。

SKILL.md
--- frontmatter
name: codebase-core-analyse
description: 深度分析代码库的核心业务流程、前后端API接口交互、数据格式规范以及C++类的功能实现细节。适用于梳理业务逻辑、理解接口契约、生成接口文档时使用。
allowed-tools: Read, Grep, Glob, Bash

代码库核心业务分析

对代码库进行深度分析,重点关注核心业务流程前后端接口交互实现细节严禁输出大而全的代码库分析文档! 比如项目架构,技术框架,编译配置,目录结构,项目特点,开发指南这些统统都不需要。只需要关注核心业务相关的内容!

分析目标:当前工作区中的代码库

分析优先级

1. API接口分析(最高优先级)

当发现API端点或接口定义时,必须详细记录:

API端点基本信息

  • 接口路径:完整的URL路径(如 /api/v1/users/login
  • 请求方法:GET/POST/PUT/DELETE/PATCH
  • 业务用途:此接口服务的业务功能
  • 前端调用位置文件名.ts:行号
  • 后端处理位置文件名.cpp:行号

请求数据格式(必须精确)

记录每个字段的完整信息:比如

code
字段名     | 类型    | 必填 | 说明           | 示例值    | 验证规则
-----------|---------|------|----------------|-----------|------------------
username   | string  | 是   | 用户登录名     | "admin"   | 4-20个字符,仅字母数字
password   | string  | 是   | 用户密码       | "pass123" | 6-32个字符,MD5加密
rememberMe | boolean | 否   | 是否保持会话   | true      | 默认值:false

响应数据格式(必须精确)

记录完整的响应结构,包括嵌套对象:比如

json
{
  "code": 200,           // 响应状态码
  "message": "成功",     // 提示信息
  "data": {
    "userId": 12345,     // 用户唯一标识符(int64类型)
    "token": "eyJ...",   // JWT认证令牌(string类型,256字符)
    "expireAt": 1234567890, // 令牌过期时间戳(unix时间戳)
    "profile": {
      "name": "张三",    // 用户显示名称(string,最大50字符)
      "email": "a@b.com" // 用户邮箱(string,有效邮箱格式)
    }
  }
}

请求/响应示例

提供完整的可运行示例:

  • 完整的请求(包含请求头)
  • 成功响应示例(200)
  • 错误响应示例(400、401、403、404、500)及实际错误信息
  • 如果响应数据中包含了新的API接口,那么也需要进行详细分析

2. C++类实现分析

对每个核心C++类,提供以下信息:

类概览

  • 完整类名:包含命名空间(如 MyApp::Services::UserManager
  • 头文件位置UserManager.h
  • 实现文件位置UserManager.cpp
  • 继承关系:父类和子类关系及层次结构图
  • 核心职责:用一句话说明该类的主要职责

成员变量(记录重要的变量)

cpp
class UserManager {
private:
    int m_userId;              // 当前登录用户ID(0表示未登录)
    std::string m_sessionToken; // JWT会话令牌,用于API认证
    DatabasePool* m_dbPool;    // 数据库连接池指针(非拥有关系)
    std::map<int, User> m_cache; // 用户对象缓存,key=userId,登出时清空
};

成员函数(详细说明关键方法)

对每个重要方法,记录:

函数签名

cpp
bool UserManager::authenticateUser(
    const std::string& username,  // 用户登录名,4-20个字符
    const std::string& password,  // 明文密码,内部会进行哈希处理
    bool rememberMe = false       // 可选:是否创建长期会话
)

功能说明:从业务角度说明此函数的作用

参数说明:每个参数的类型、约束条件和用途

返回值说明

  • true/false 分别表示什么,或
  • 返回对象包含什么内容,或
  • 可能的返回码及其含义

线程安全性:此方法是否线程安全?是否使用了锁?

性能注意事项:是否有缓存?数据库查询?IO操作?

3. 业务流程分析

追踪从前端到后端到数据库的完整数据流:比如

mermaid
sequenceDiagram
    participant 用户
    participant 前端
    participant API网关
    participant 用户服务
    participant 数据库

    用户->>前端: 点击登录按钮
    前端->>API网关: POST /api/v1/auth/login<br/>{username, password}
    API网关->>用户服务: authenticate(username, password)
    用户服务->>数据库: SELECT * FROM users WHERE username=?
    数据库-->>用户服务: 用户记录 {id, passwordHash, ...}
    用户服务->>用户服务: 验证密码哈希
    用户服务->>数据库: INSERT INTO sessions (userId, token, expireAt)
    数据库-->>用户服务: 会话创建成功
    用户服务-->>API网关: {token, userId, profile}
    API网关-->>前端: 200 OK {code:200, data:{token...}}
    前端-->>用户: 跳转到控制台

4. 关键业务逻辑

识别并解释:

  • 关键决策点:业务规则在哪里应用
  • 状态转换:对象如何在不同状态间转换
  • 数据转换:数据格式在哪里/如何变化
  • 验证逻辑:每一层发生了什么验证
  • 错误处理策略:错误如何传播和处理

输出格式

将分析结构化为:

1. 执行摘要

  • 主要业务功能是什么?
  • 涉及哪些关键组件?

2. API接口文档

对发现的每个API端点:

  • 完整文档,包含请求/响应格式
  • 数据类型规范
  • 请求和响应示例
  • 错误场景

3. C++类文档

对每个核心类:

  • 类的用途和职责
  • 关键成员变量及其用途
  • 重要方法的详细说明
  • 使用示例

4. 业务流程图

  • 显示完整流程的序列图
  • 状态转换图(如适用)

5. 数据流分析

  • 数据如何在系统中流转
  • 数据在哪里被验证
  • 数据在哪里被转换

6. 关键发现

  • 安全问题
  • 性能瓶颈
  • 代码质量问题
  • 缺失的错误处理

7. 文档输出格式规范

  • 生成的文档必须用中文,并且是UTF-8编码的
  • 文档格式使用 markdown 格式
  • 文档生成的位置在当前工作区的doc目录下,文档名为:codebase-core-workflow.md

重要规则

  1. 如果当前工作区的doc目录下已经存在了codebase-core-workflow.md,那么就根据最新的代码更新文档,而不是从0开始重新编写文档
  2. 始终使用可点击的引用文件名.cpp:42
  3. 数据类型必须精确:不要只说"string",要说"string(最大255字符,UTF-8编码)"
  4. 记录所有字段:请求/响应文档中绝不遗漏任何字段
  5. 展示真实示例:使用代码中的实际值或真实的示例
  6. 追踪完整流程:从开始到结束跟踪代码执行
  7. 注明安全影响:认证、授权、输入验证
  8. 忽略样板代码:专注业务逻辑,除非关键否则不关注日志/工具函数

分析步骤

  1. 识别入口点:API端点、主函数、事件处理器
  2. 追踪数据流:跟随数据从输入到输出
  3. 记录接口:精确捕获所有API契约
  4. 分析类:理解类的职责和交互
  5. 映射业务逻辑:识别业务规则在哪里实现
  6. 创建图表:用mermaid图表可视化流程
  7. 提供示例:展示如何使用API/类

重点在于理解和记录业务逻辑,而不是批评代码风格。