--- name: codebase-explorer description: 代码库探索与架构理解 Skill。接手任何代码库时激活:扫描目录结构,识别技术栈,读取核心文件,提取架构模式,与产品定义/需求对比,输出可信赖的架构理解文档。触发词:「阅读XXX项目」「理解这个代码库」「写技术架构文档」「这个项目是做什么的」「接手这个项目」「帮我读一下这个代码」。 --- # 代码库探索(codebase-explorer) > 在提出任何架构改建议之前,必须先有可信赖的全局图景。 > 基于 closure-orchestration-package 的 repo-system-cartographer 模式本地化。 --- ## 知识导航表(执行前必须理解的概念根) | 层级 | 文档 | 需要理解的概念 | |---|---|---| | **D0 认知根(必读)** | `_内部总控/认知结构/L1_系统性文档/技术架构思维维度/技术架构方案.md` | 整体技术体系框架:各项目的技术选型/架构模式/层次划分(接手代码库时的全局视角)| | **D3 规范参考** | `_内部总控/开发规范/公共模块注册表.md` | 已有公共模块清单(探索时识别代码库对公共模块的使用情况)| | **D4 运行时数据** | 目标项目 `技术架构.md`(若存在)+ 项目代码根目录 | 已有架构文档(对比预期 vs 实际)+ 实际代码目录结构 | **核心概念速查**: ① 探索顺序:有文档→先读文档了解预期,再看代码了解实际;无文档→先扫描再输出 ② 差距 = 代码与文档不一致的地方(是 issue-tracker 的候选输入) ③ 输出架构理解文档 = K-object.create(K4项目规格):写入 _内部总控/开发规范/架构理解/ --- ## 激活后立即执行 ``` Step 1 确认探索目标 询问(如未说明): 「要探索的代码库路径是什么?探索目的是: ① 快速理解(输出架构概览) ② 深度分析(含差距分析和建议) ③ 接手开发(含与产品定义的对比)」 Step 2 用内置 explore 子智能体并行扫描(不占主对话 context) - 扫描顶层目录结构(文件树) - 读取 README.md / 开发规范.md / 产品定义.md(若存在) - 识别主要配置文件(package.json / requirements.txt / docker-compose.yml 等) Step 3 识别技术栈与架构层次 从扫描结果提取: - 前端技术(框架/构建工具/状态管理) - 后端技术(语言/框架/API 风格) - 数据层(数据库/ORM/迁移工具) - AI/ML 层(若有,LLM/向量库/调用方式) - 基础设施(部署/CI/CD/容器) Step 4 读取核心文件(最多 5-8 个,聚焦最关键的) 优先级:主入口文件 > 核心业务逻辑 > 数据模型 > API 定义 Step 5 提取架构模式与源真相 识别: - 哪些文件是「真源」(source of truth) - 模块边界在哪里 - 前后端如何通信 - 数据流向是什么 - 有哪些明显的技术债或架构风险 Step 5.5【浅层模块识别(improve-my-codebase)】 对已识别的核心模块,评估「深度」: 浅层模块(shallow module)特征——接口复杂但实现简单,认知成本高于价值贡献: □ 接口臃肿:调用方需要了解≥5个参数才能调用,或需要了解实现细节才能正确传参 □ 实现轻薄:函数体≤10行,只做简单的格式转换/转发,没有真正的业务逻辑 □ 多层传递:参数从A穿透B传到C,B不使用该参数(B是「中间人」) 改进方向:将多个浅层模块的功能内聚到一个接口更简单的深层模块 → 接口应该隐藏复杂度,而非暴露复杂度 输出格式: | 模块 | 类型 | 问题描述 | 改进建议 | |---|---|---|---| | [模块名] | 浅层/深层 | [具体问题] | [合并/重构方向] | Step 5.6【可测试性扫描(improve-my-codebase)】 识别以下阻碍测试的代码模式: □ 隐式依赖:函数内部直接实例化依赖(new DatabaseClient()、硬编码 URL) → 改为:依赖注入(参数传入 / 配置注入) □ 无接口抽象:业务逻辑直接调用外部服务(DB、AI API、文件系统、时间函数) → 改为:引入接口/协议层(定义抽象,测试时可替换为 mock) □ 全局副作用:函数修改全局状态 / 写文件 / 发网络请求而不在签名中声明 → 改为:纯函数提取(将副作用边界化,核心逻辑变纯函数) □ 超长函数:单个函数超过50行,难以独立测试各逻辑分支 → 改为:提取子函数,每个子函数单独可测 输出格式: | 文件/函数 | 问题类型 | 具体描述 | 改进优先级 | |---|---|---|---| | [路径] | 隐式依赖/无抽象/全局副作用/超长 | [描述] | P0/P1/P2 | Step 6 与产品定义/需求对比(若存在) Read: 产品经理/产品定义.md(若存在) 输出: - 已实现的功能 - 架构就绪但未完全实现的功能 - 产品要求但代码中完全缺失的功能 - 与需求存在偏差的实现 Step 7 输出架构理解文档 写入:技术架构师/[项目名]_架构理解_YYYYMMDD.md 结构: - 一句话定位(这个系统是什么) - 技术栈全景 - 分层架构图(文本形式) - 核心模块与职责 - 真源声明(哪个文件/模块负责哪类数据) - 已发现的风险和模糊点 - 与产品定义的差距(若做了 Step 6) ``` --- ## 输出格式 ```markdown # [项目名] 架构理解文档 **探索日期**:YYYY-MM-DD **探索目的**:[快速理解/深度分析/接手开发] ## 一句话定位 [这个系统是什么,解决什么问题] ## 技术栈 | 层次 | 技术 | 版本/说明 | |---|---|---| | 前端 | | | | 后端 | | | | 数据层 | | | | AI层 | | | | 基础设施 | | | ## 分层架构 [文本形式的架构图] ## 核心模块 | 模块 | 路径 | 职责 | 真源? | |---|---|---|---| ## 已发现风险 - 🔴 Critical: [...] - 🟡 High: [...] ## 浅层模块分析(Step 5.5) | 模块 | 类型 | 问题描述 | 改进建议 | |---|---|---|---| ## 可测试性扫描(Step 5.6) | 文件/函数 | 问题类型 | 具体描述 | 改进优先级 | |---|---|---|---| ## 与产品定义的差距(若适用) | 功能 | 产品要求 | 实际状态 | |---|---|---| ``` --- ## 注意事项 - **先地图,后改造**:不允许在完成 Step 7 之前提出重构建议 - **最小读取原则**:不需要读完所有文件,聚焦能建立全局图景的最少文件集 - **真源声明**:必须明确指出哪个文件/服务是某类数据的唯一权威来源 --- ## 变更记录 ### v1.1 — 2026-03-20 — 集成 improve-my-codebase:新增浅层模块识别与可测试性扫描 **根因**:五条工程原则对照分析(TASK-20260320-01)证明:codebase-explorer 虽有通用风险识别,但缺少两个专项分析维度——「浅层模块」(John Ousterhout《A Philosophy of Software Design》概念)和「可测试性」(阻碍单元测试的四类代码模式)。 **修改内容**: - 新增:Step 5.5「浅层模块识别」——判断接口臃肿但实现轻薄的模块,输出合并/重构建议表格 - 新增:Step 5.6「可测试性扫描」——识别隐式依赖/无接口抽象/全局副作用/超长函数四类阻碍测试的模式,输出改进优先级表格 - 修改:输出格式 → 新增「浅层模块分析」和「可测试性扫描」两节 **验证结果**: - 正向验证:触发 codebase-explorer 扫描任意代码库 → 输出文档应包含浅层模块分析表格和可测试性表格(待验证) - 负向验证:技术栈识别、核心模块、真源声明等原有分析步骤不变 - 冲突验证:Step 5.5/5.6 在 Step 5(通用风险)之后、Step 6(与产品对比)之前,不影响原有顺序 **验证状态**:🔵 待验证 --- ### v1.0 — 2026-03-19 — 初始创建 **根因**:历史对话分析发现「接手代码库、理解并推进」是最高频但无正式 Skill 覆盖的任务类型(~20次),是 PENDING-SKILLS P0 缺口。基于 closure-orchestration-package 的 repo-system-cartographer 本地化,加入与产品定义对比步骤。 **验证状态**:🔵 待验证(下次接手代码库时验证)