关于 tech-debt-analyzer
用于系统盘点、评估和规划技术债务的技能,面向需要掌握代码库可维护性状况的开发团队。它结合脚本与证据置信度,支持基线追踪和风险—工作量排序,但不执行修复。
主要功能
- 01多轮代码库债务扫描
- 02置信度与证据记录
- 03风险—工作量排序
- 04分阶段修复路线图
- 05基线对比与仪表盘
适用场景
- 01盘点代码复杂度与死代码
- 02识别依赖陈旧和模式不一致
- 03比较扫描结果并追踪债务变化
- 04制定分阶段的债务处理计划
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ wyattowalsh/ agents --skill tech-debt-analyzer安装后在 Claude Code 中输入/tech-debt-analyzer确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
evals/evals.jsonexplicit-scan.jsonimplicit-trigger.jsonnegative-control.jsonprioritize-mode.jsonroadmap-mode.jsontrack-mode.jsonreferences/complexity-metrics.mddebt-taxonomy.mdprioritization-framework.mdremediation-templates.mdscripts/check.pycomplexity-scanner.pydead-code-detector.pydependency-staleness-checker.pypattern-consistency-checker.pyscripts/asset_toolkit/__init__.py_shared.pycommon.pypackage.pyvalidate_evals.pyvalidate_hooks.pyvalidate_skill.pytemplates/dashboard.html详细介绍
技术债务分析器
系统性地梳理技术债务、确定优先级并规划修复方案。 通过多轮分析,结合置信度评分和基于证据的发现。
**范围:**仅用于债务梳理和跟踪。不适用于代码审查(review)、重构执行或依赖项更新。
标准术语
| 术语 | 定义 |
|---|---|
| 债务项 | 一项具体的技术债务发现,包含类别、严重程度、置信度和证据 |
| 类别 | 债务分类:设计、测试、文档、依赖项、基础设施 |
| 严重程度 | 影响级别:CRITICAL、HIGH、MEDIUM、LOW |
| 置信度 | 每项的评分为 0.0-1.0;>=0.7 时报告,0.3-0.7 时标记,<0.3 时舍弃 |
| 复杂度 | 圈复杂度(决策路径)或认知复杂度(人类理解难度) |
| 死代码 | 在代码库中没有引用的函数、类或导入项 |
| 陈旧度 | 某个依赖项的当前版本被后续版本取代至今的天数 |
| 不一致 | 同一模式在不同文件中的实现方式不同 |
| 修复方案 | 具体的修复操作,包含工作量估算和风险级别 |
| 债务分数 | 汇总指标:所有债务项的(严重程度权重 x 置信度)之和 |
| 基线 | 存储在 ~/.{gemini |
| 热力图 | 按文件或目录显示债务项的可视化密度 |
| 风险 x 工作量 | 优先级矩阵:影响与修复成本的对比 |
调度
| $ARGUMENTS | 模式 |
|---|---|
scan 或 scan <path> | 全代码库债务梳理(或限定为指定路径) |
analyze <file/dir> | 对指定文件或目录进行有针对性的深度分析 |
prioritize | 使用风险 x 工作量矩阵对所有债务项排序 |
roadmap | 生成分阶段修复计划 |
report | 渲染仪表板可视化 |
track | 将当前扫描结果与先前基线对比 |
| 空 | 显示模式菜单及说明和示例 |
模式:扫描
梳理全代码库债务。运行全部 4 个分析脚本,汇总结果并指定类别和严重程度。
扫描步骤 1:项目概况
运行 uv run python scripts/complexity-scanner.py <path> 获取复杂度指标。
解析 JSON 输出。将 cyclomatic_complexity > 10 的函数标记为 HIGH,> 5 的标记为 MEDIUM。
扫描步骤 2:死代码检测
运行 uv run python scripts/dead-code-detector.py <path> 查找未使用的代码。
解析 JSON 输出。每个未使用项都成为一个债务项(类别:设计;严重程度根据置信度确定)。
扫描步骤 3:依赖项陈旧度
运行 uv run python scripts/dependency-staleness-checker.py <path> 检查过时的软件包。
解析 JSON 输出。已弃用的软件包为 CRITICAL。陈旧度 > 365 天为 HIGH。
扫描步骤 4:模式一致性
运行 uv run python scripts/pattern-consistency-checker.py <path> 检测不一致。
解析 JSON 输出。每项不一致都成为一个债务项(类别:设计)。
扫描步骤 5:AI 增强分析
基于脚本的检测完成后,进行额外分析:
- 文档缺失——扫描缺少文档的公共 API、README 中缺失的章节、过时的注释
- 测试覆盖缺口——搜索未经测试的模块、缺失的边缘用例,以及测试与代码的比例
- 基础设施债务——过时的 CI 配置、缺失的 lint 工具、不一致的工具链
- 设计异味——上帝类、特性嫉妒、霰弹式修改模式
为每项发现指定置信度评分(0.0-1.0)。使用 Grep 和代码库证据对 HIGH/CRITICAL 项进行研究验证。
扫描步骤 6:汇总和分类
将所有发现合并到统一清单中:
- 对不同脚本输出中的重复项进行去重
- 根据债务分类体系指定类别(参见 references/debt-taxonomy.md)
- 计算债务分数:(严重程度权重 x 置信度)之和
- 将基线存储在
~/.{gemini|copilot|codex|claude}/tech-debt/<project-slug>-<date>.json
按类别分组展示发现,并在每组内按严重程度排序。
模式:分析
针对特定文件或目录进行深入分析。对目标运行全部 4 个脚本。 应用相同的 6 步扫描流程,但深入分析每个函数。 包括:函数级复杂度细分、行内死代码、局部模式违规。
模式:优先级排序
使用风险 × 工作量矩阵为技术债项排序。加载 references/prioritization-framework.md。
| 低工作量 | 中等工作量 | 高工作量 | |
|---|---|---|---|
| 高风险 | P0:立即修复 | P1:安排在下一个冲刺 | P2:规划在下一季度 |
| 中等风险 | P1:安排在下一个冲刺 | P2:规划在下一季度 | P3:加入待办事项 |
| 低风险 | P2:批量处理易修复项 | P3:加入待办事项 | P4:接受或暂缓 |
对每项技术债估算:
- 风险:影响范围 × 严重性 × 置信度
- 工作量:受影响的代码行数 × 复杂度 × 依赖项数量
输出带优先级标签(P0-P4)的排序列表。
模式:路线图
生成分阶段的修复计划。需要先完成扫描(从 ~/.{gemini|copilot|codex|claude}/tech-debt/ 读取基线)。
阶段结构:
- 快速见效(P0 + 低工作量 P1):立即修复,风险最小
- 结构性改进(其余 P1 + 高风险 P2):设计改进、重构
- 维护(P2 + P3):文档、测试覆盖率、依赖项更新
- 战略性改进(P3 + P4):架构变更、长期改进
每个阶段包括:事项、预估工作量、依赖项、成功标准。
模式:报告
生成仪表板可视化。需要先完成扫描。
- 从
~/.{gemini|copilot|codex|claude}/tech-debt/读取最新基线 - 将
templates/dashboard.html复制到临时文件 - 将发现项 JSON 注入
<script id="data">标签 - 在浏览器中打开,或报告文件路径
仪表板板块:类别饼图、复杂度热图、趋势图(若有多个基线)、按优先级排序的待办事项表。
模式:跟踪
将当前扫描结果与先前基线比较,进行纵向跟踪。
- 执行一次全新扫描(模式:扫描,步骤 1-6)
- 从
~/.{gemini|copilot|codex|claude}/tech-debt/<project-slug>-*.json加载先前基线(最新一份) - 计算差异:新增项、已解决项、严重性变化、评分趋势
- 输出带趋势指标的对比报告
状态管理
- 状态目录:
~/.{gemini|copilot|codex|claude}/tech-debt/ - 首次使用时使用
mkdir -p创建目录 - 文件名:
<project-slug>-<YYYY-MM-DD>.json - 项目标识:项目根目录名称的净化版本
- 每次扫描后保存;跟踪模式读取历史基线
- 架构:
{ "project": str, "date": str, "score": float, "items": [...], "summary": {...} }
参考文件
每次只加载一个参考文件。不要将所有参考文件预先加载到上下文中。
| 文件 | 内容 | 读取时机 |
|---|---|---|
references/debt-taxonomy.md | 5 种技术债类别,包含子类别和修复模板 | 扫描步骤 6:对发现项分类 |
references/complexity-metrics.md | 圈复杂度和认知复杂度的定义、阈值及解读 | 解读复杂度扫描器的输出 |
references/prioritization-framework.md | 风险 × 工作量矩阵、评分标准、优先级定义 | 优先级排序模式 |
references/remediation-templates.md | 按问题类型划分的修复模式、工作量估算、风险评级 | 路线图模式,生成修复计划 |
| 脚本 | 运行时机 |
|---|---|
scripts/complexity-scanner.py | 扫描步骤 1、分析模式 |
scripts/dead-code-detector.py | 扫描步骤 2、分析模式 |
scripts/dependency-staleness-checker.py | 扫描步骤 3 |
scripts/pattern-consistency-checker.py | 扫描步骤 4、分析模式 |
| 模板 | 渲染时机 |
|---|---|
templates/dashboard.html | 报告模式——将发现项 JSON 注入 data 标签 |
债务条目结构
每个债务条目都遵循以下格式:
- 位置:
[file:line]或[file:start-end]— 精确的源代码位置 - 类别:设计 | 测试 | 文档 | 依赖项 | 基础设施
- 严重程度:CRITICAL | HIGH | MEDIUM | LOW
- 置信度:0.0-1.0 分,并注明证据依据
- 描述:说明债务内容(1-2 句话)
- 影响:说明其重要性(影响范围、风险)
- 修复方案:建议的修复方法及工作量估算
关键规则
- 呈现发现之前,运行全部 4 个分析脚本 — 部分扫描必须标注为部分扫描
- 每项发现都必须有置信度评分,并由证据支持(脚本输出或代码库 grep)
- 置信度 < 0.3 = 丢弃;0.3-0.7 = 标记为不确定;>= 0.7 = 报告
- 绝不执行修复 — 此技能用于盘点和规划,而非修复
- 每次完整扫描后都要保存基线 — 长期跟踪依赖于此
- 不要将风格偏好报告为债务 — 只报告结构、行为或可维护性问题
- 对脚本输出进行去重 — 同一个 file:line 不得重复出现
- 优先级模式需要先前的扫描记录 — 如果没有基线,提示用户先运行扫描
- 扫描输出中始终呈现债务评分(综合指标)
- 跟踪模式必须显示差异(新增/已解决/已变更)— 只有原始数字而没有比较毫无意义
- 死代码检测需要高置信度(>= 0.8)— 误报会削弱信任
- 一次只加载一个参考文件 — 不要预加载所有参考文件