# Codebase Explorer

> 代码库探索与架构理解 Skill。接手任何代码库时激活：扫描目录结构，识别技术栈，读取核心文件，提取架构模式，与产品定义/需求对比，输出可信赖的架构理解文档。触发词：「阅读XXX项目」「理解这个代码库」「写技术架构文档」「这个项目是做什么的」「接手这个项目」「帮我读一下这个代码」。

- Skill: `tashangkd/codebase-explorer` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add tashangkd/codebase-explorer`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tashangkd/codebase-explorer/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: TashanGKD (https://skillmd.com/u/tashangkd)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/tashangkd/codebase-explorer

---


# 代码库探索（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 本地化，加入与产品定义对比步骤。

**验证状态**：🔵 待验证（下次接手代码库时验证）

