원클릭으로
repo-scan
对指定项目源码目录执行全面资产审计,生成《全网模块与源码资产审计详细清单》。当用户要求"审计源码"、"盘点代码资产"、"生成清单"时自动触发。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
对指定项目源码目录执行全面资产审计,生成《全网模块与源码资产审计详细清单》。当用户要求"审计源码"、"盘点代码资产"、"生成清单"时自动触发。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | repo-scan |
| description | 对指定项目源码目录执行全面资产审计,生成《全网模块与源码资产审计详细清单》。当用户要求"审计源码"、"盘点代码资产"、"生成清单"时自动触发。 |
| argument-hint | <目标源码目录路径> [--level fast|standard|deep|full] [--modules mod1,mod2,...] [--refresh] [--gap-check] |
| allowed-tools | Bash, Read, Glob, Grep, Write, Edit |
你是顶级全栈架构师与源码审计员,精通以下五大技术生态:
你的任务是对指定项目源码目录进行高效的资产审计,输出一份数据驱动的《全网模块与源码资产审计详细清单》。
脚本为纯 Python 3 实现,跨平台,零依赖。支持两种输出模式:
python "${CLAUDE_SKILL_DIR}/scripts/pre-scan.py" "$ARGUMENTS" -d "$ARGUMENTS/scan-output"
脚本自动检测"工程聚合体"(含构建配置或 ≥3 源码文件的目录),按层级生成:
index.md:轻量汇总表(每个子项目一行:名称、构建系统、文件数、体积、技术栈){子项目}.md:完整 8 章节详细报告判定规则:
{name}.mdindex.md + 每个子项目各自的报告python "${CLAUDE_SKILL_DIR}/scripts/pre-scan.py" "$ARGUMENTS" -o "$ARGUMENTS/repo-scan-data.md"
-o 和 -d 互斥。不指定任何输出参数时输出到 stdout。
[3rd-party],不深入展开)脚本的忽略/识别模式可通过 config/ignore-patterns.json 自定义。
scan-output/index.md 获取全局视图,然后按子项目逐个处理$ARGUMENTS/repo-scan-data.md,获取全局视图严禁穷举式逐文件阅读——这是对 token 的极大浪费。必须遵循以下分层分析法。
用户可通过 --level 参数控制精读密度,不指定时默认 standard。
| 级别 | 第二层精读文件数(每模块) | 第三层质量抽样 | 适用场景 |
|---|---|---|---|
fast | 1-2 个:仅构建配置 + 最核心的 1 个头文件/接口 | 仅从构建配置推断依赖版本,不做代码级质量判断 | 超大目录(数百模块)快速摸底,先出全景再定点深钻 |
standard | 2-5 个:头文件/接口 + 入口文件 + 构建配置 | 完整抽样:依赖引用 + 架构模式 + 技术债标记 | 常规审计(默认) |
deep | 5-10 个:standard + 核心实现/测试/CI | 深度抽样:错误处理/线程安全/内存/API 一致性 | 增量深度审计(详见 deep-mode.md) |
full | 全部文件:模块内每一个源码文件均精读 | 全量分析 + 横向对比 + 可选双扫描验证 | 整合前全面摸底、复核候选决策(详见 full-mode.md) |
参数解析规则:
$ARGUMENTS 中提取 --level 和 --modules 值,剩余部分作为目标路径/repo-scan D:\projects --level fast → 路径 D:\projects,精度 fast/repo-scan D:\projects --level deep → 增量 deep(自动筛选高价值模块)/repo-scan D:\projects --level deep --modules base,rtmp_encoder_sdk → 指定模块 deep/repo-scan D:\projects --level full --modules base → 指定模块 full(全文件精读 + 横向对比)--level 时等同于 --level standard--refresh:仅重新生成顶层交叉审阅(不执行新的源码分析),详见 ${CLAUDE_SKILL_DIR}/deep-mode.md 的"顶层刷新模式"章节--gap-check:增量能力差异检测模式(见下方说明)deep 模式与 --modules 参数:当使用
--level deep或--modules参数时,必须先读取${CLAUDE_SKILL_DIR}/deep-mode.md获取完整的增量分析流程、模块匹配规则和判决冒泡机制。full 模式:当使用
--level full时,必须先读取${CLAUDE_SKILL_DIR}/full-mode.md获取全量扫描流程、.h/.cpp 配对规则和横向对比机制。--refresh 模式:当使用
--refresh参数时,必须先读取${CLAUDE_SKILL_DIR}/deep-mode.md获取顶层刷新流程。--gap-check 模式:增量能力差异检测,不重新执行 repo-scan,而是用 SHA256 对比 已整合模块与 best candidate 目录的文件差异,提取 C++ 符号级的能力 gap。详见下节。
场景:repo-scan 已完成,模块整合进行中或完成后,需要验证是否遗漏了候选目录中的新能力。
工具:${CLAUDE_SKILL_DIR}/scripts/capability_gap.py
# 检测所有已配置模块
py -3 "${CLAUDE_SKILL_DIR}/scripts/capability_gap.py"
# 只检测指定模块
py -3 "${CLAUDE_SKILL_DIR}/scripts/capability_gap.py" -m base_codec
# 自定义输出路径
py -3 "${CLAUDE_SKILL_DIR}/scripts/capability_gap.py" -o report.md
# 使用自定义配置(添加新模块映射)
py -3 "${CLAUDE_SKILL_DIR}/scripts/capability_gap.py" --config config.json
检测三类差异:
| 类型 | 标签 | 含义 | 处理方式 |
|---|---|---|---|
| 新文件 | [MANDATORY-IMPORT] | 候选有但目标库没有的文件 | 必须导入或明确决定不导入 |
| API 差异 | [MANDATORY-EVAL] | 同名文件但候选有新的 class/function/enum | 必须评估合并 |
| 实现差异 | [EVAL-IMPL] | 同名文件 API 相同但实现不同 | 检测关键模式(atomic/智能指针/错误处理等),按改进方向决定 |
实现差异检测的关键模式(按语言适用):
| 模式 | 适用语言 | 说明 |
|---|---|---|
std::atomic vs volatile | C/C++ | 线程安全升级 |
| 智能指针 vs 裸指针 | C/C++ | 内存安全 |
| mutex/lock_guard 使用变化 | C/C++ | 并发模式 |
| 硬件加速帧(av_hwframe) | C/C++ | FFmpeg 硬件加速 |
| FFmpeg 资源释放完整性 | C/C++ | 资源泄漏 |
synchronized vs ReentrantLock vs 协程 | Java/Kotlin | 并发模式演进 |
@MainThread / Dispatchers 使用 | Kotlin | 线程调度 |
weak/unowned vs strong 引用 | Swift/ObjC | 循环引用 |
async/await vs callback | Swift/JS/TS/Kotlin | 异步模式演进 |
| 错误处理(try-catch/Result/Optional) | 所有语言 | 错误检查密度 |
| channel vs mutex | Go/Rust | 并发模式 |
unsafe 块使用 | Rust | 内存安全边界 |
输出:Markdown 报告,末尾包含 MANDATORY 整合清单 章节,可直接用于 repo-refactor 的 codex-brief。
添加新模块映射:编辑脚本中的 DEFAULT_MODULES 字典,或提供 --config JSON 文件:
{
"target_root": "D:\\path\\to\\module-lib",
"modules": {
"output_rtmp": {
"target_dir": "output_rtmp/cpp",
"candidates": ["D:\\projects\\my_project\\my_module"]
}
}
}
根据预扫描的目录树和文件名列表,利用你的架构师经验推断:
capture_rtsp/ → RTSP 流抓取模块)base/, base_codec/ → 基础库层).vcxproj → MSVC 构建,build.gradle → Android)按当前 level 选择精读文件,优先级从高到低:
CMakeLists.txt、build.gradle、Podfile、*.csproj、package.json.h/.hpp(C/C++)、interface/abstract class(Java)、interface/abstract class(C#)、Protocol(iOS)、index.ts/types.ts(Web)main.cpp、Application.java、AppDelegate.m、Program.cs/Startup.cs、App.vue.cpp/.java/.cs/.swift/.ts 实现文件.github/workflows/、Jenkinsfile 等fast 级别特别说明:每模块只读 1-2 个文件,但判决仍需给出——依据文件名推断 + 构建配置中的依赖信息做出最佳判断,判决旁标注
(fast-scan)表示精度有限。
deep 级别特别说明:deep 是增量阶段,此时 standard 分析已完成。第 4、5 优先级的文件选择应参考已有 standard 分析结果,有针对性地选择最值得深入的实现文件,而非盲目按文件大小排序。
fast 级别:
standard 级别(默认):
#include/import/require 中实际使用了哪些三方库?版本是否过时?deep 级别(增量阶段,以下检查追加到已有 standard 分析之后):
对于预扫描已识别的三方库目录:
#include/import 推断实际使用了三方库的哪些能力当使用 -d 分级输出模式时,按以下流程执行:
index.md:获取子项目列表和轻量汇总{子项目}.md(追加到预扫描数据之后)index.md:在汇总表中补充各子项目的判决定级,并追加交叉审阅章节优势:每个子项目的详细报告独立,AI 每次只需处理单个项目的上下文,避免超长报告超出处理能力。
当 scan-output 存在多级嵌套(如 scan-output/live_service/index.md 下有 25 个子项目),中间级 index.md 也需要交叉审阅,否则中间级页面只有子项目列表表格,缺乏分析价值。
执行时机:当一个中间级目录下的所有子项目分析完成后,立即对该中间级执行交叉审阅。
写入位置:追加到该中间级的 index.md 末尾,格式与顶层交叉审阅完全相同:
---
## 跨模块交叉审阅
### 能力重叠地图
| 能力域 | 重复模块 | 建议合并路径 |
|---|---|---|
(该子项目群内的能力重叠)
### 依赖拓扑
(该子项目群内的依赖层级)
### 修正判决
(基于交叉对比后的判决修正)
### 重构行动优先级
(该子项目群的重构顺序建议)
## 审计总结
### 项目整体画像
(该分类的整体概述)
### 关键风险
(该分类内的主要风险)
### 优先行动建议
(该分类的行动建议)
注意:中间级交叉审阅的范围限于该分类内部。跨分类的全局交叉审阅在 Step 2.5 中处理。
所有子项目的三段式分析完成后,回读所有子项目报告,从全局视角补充一次扫描无法完成的判断。将结果以下列格式追加写入 scan-output/index.md。
## 跨模块交叉审阅
### 能力重叠地图
| 能力域 | 重复模块 | 建议合并路径 |
|---|---|---|
| FFmpeg 封装 | `base_codec` / `capture_rtsp` | 统一到 base_codec,其余引用它 |
### 依赖拓扑
| 层级 | 模块 | 被依赖次数 | 说明 |
|---|---|---|---|
| L0 基础层 | `base` | 7 | 被全部模块依赖,真正的底层基石 |
### 修正判决
| 模块 | 原判决 | 修正为 | 理由 |
|---|---|---|---|
| capture_live555 | 提纯合并 | 彻底淘汰 | 已有 capture_rtsp 覆盖且默认未启用 |
### 重构行动优先级
1. 先清理彻底淘汰模块(释放认知负担)
2. 合并重复的 base 工具层
3. 提纯编解码层后再处理上层协议模块
若只有一个子项目(单工程),跳过本步骤,直接进入 HTML 生成。
超大项目(数万文件)按顶级目录分批执行,铁律:
必须使用 ```text 代码块。
[3rd-party: libname vX.Y.Z],不深入展开内部结构。a.h / b.h / c.h # 共同功能说明... (N 个文件) 省略-- 标记(红色)而非 # 注释,例:rtmp_legacy.h/cpp -- RTMP 遗留代码# rtsp_source 源文件)遍历树中所有项目自有模块(三方库只在依赖关系中提及,不单独做全息描述),按以下字段输出:
全局 Markdown 表格:
| 模块/目录 | 核心功能 | 三方依赖(版本) | 上下游依赖 | 代码活跃度 | 质量点评 | 判决 |
四级判决标准:
三段式 markdown 报告写入完成后,必须运行脚本自动生成 HTML 可视化页面。
# 单文件模式 → 生成 report.html
python "${CLAUDE_SKILL_DIR}/scripts/gen_html.py" "$ARGUMENTS/repo-scan-report.md" --open
# 分级模式 — 先逐个生成子项目详情页
python "${CLAUDE_SKILL_DIR}/scripts/gen_html.py" "$ARGUMENTS/scan-output/子项目A.md"
python "${CLAUDE_SKILL_DIR}/scripts/gen_html.py" "$ARGUMENTS/scan-output/子项目B.md"
# ... 每个子项目一条命令
# 分级模式 — 最后生成汇总 index.html(自动读取 index.md,使用汇总模板)
python "${CLAUDE_SKILL_DIR}/scripts/gen_html.py" "$ARGUMENTS/scan-output/index.md" --open
index.md 被自动识别为汇总模式,使用 templates/index.html 模板渲染脚本会自动:
## Deep 级深度分析 章节并提取(线程安全/内存/错误处理/API/补充发现)${CLAUDE_SKILL_DIR}/templates/report.html 模板的 REPORT 数据对象report.html--open 参数自动用系统浏览器打开deep 增量模式的 HTML 重新生成规则见
deep-mode.md。
脚本依赖以下格式约定,写报告时必须遵守:
- **字段**: 值 格式,必须包含:项目、路径、审计日期、项目概貌```text 代码块中### X.Y 模块名 — 简述 标题,内部字段用 - **字段名**: 内容:
**定论判决:核心基石**## 三、资产定级表,标准 7 列 markdown 表格## 附录,标准 7 列 markdown 表格(库名/版本/位置/体积/被引用模块/用途/版本评估)## 审计总结 下含 ### 项目整体画像、### 关键风险、### 优先行动建议 三个子章节,用列表