SuperAPI AI 工具集

improve-codebase-architecture

编程与开发

查看项目

更新于 10-15 15:14

技能介绍

用途

该技能用于扫描代码库,识别“深化机会”(deepening opportunities)——即把浅模块(shallow modules)转化为深模块(deep modules)的重构,目标是提升可测试性与 AI 可导航性。适合在用户希望先看到架构改进候选、再决定具体动手对象的场景使用。触发语句包括:improve the architecture、find deepening opportunities、where should we refactor。

该技能导入自 mattpocock/skills(MIT),在源头属用户主动调用(user-invoked upstream)。

主要能力

  • 在扫描前先确定范围:优先关注近期变更频繁的热点区域。若用户已指明模块、子系统或痛点,则直接采用;否则通过 git log --oneline 回溯提交历史,找出频繁出现的文件与区域。
  • 在进入某个区域前,先阅读项目的领域术语表 CONTEXT.md,以及该区域的 ADR。
  • 生成子代理遍历代码库,以有机探索方式记录摩擦点,例如:理解某个概念需要在多个小模块间来回跳转;模块接口复杂度几乎等同实现;为可测试性抽取纯函数但真实缺陷藏于调用方式(缺乏 locality);紧耦合模块跨越缝隙泄漏;未测试或难以通过现有接口测试的部分。
  • 对疑似浅模块应用删除测试(deletion test):删除它是能集中复杂度,还是只是转移复杂度。
  • 以自包含 HTML 报告呈现候选方案,写至系统临时目录($TMPDIR,回退 /tmp 或 Windows 的 %TEMP%),文件名为 <tmpdir>/architecture-review-<timestamp>.html,每次运行生成新文件,并使用对应平台命令打开(Linux: xdg-open;macOS: open;Windows: start),同时告知用户绝对路径。
  • 报告通过 CDN 使用 Tailwind 进行布局与样式,通过 CDN 使用 Mermaid 绘制图/流程/时序图,并混合手工 CSS/SVG 视觉元素。每个候选方案均提供 before/after 可视化。
  • 每个候选方案的卡片包含:Files(涉及的文件/模块)、Problem(当前架构为何造成摩擦)、Solution(将会发生什么变化的通俗描述)、Benefits(以 locality 与 leverage 及测试改善角度说明)、Before/After 图(并排、手绘,展示浅与深)、Recommendation strength(Strong、Worth exploring、Speculative 徽标)。
  • 报告结尾给出 Top recommendation 部分:优先处理哪个候选及原因。
  • 在用户选定候选方案后,进入 grilling 循环,逐步厘清约束、依赖、深化后模块的形态、seam 背后的内容、哪些测试能保留。
  • 过程中按需调用 domain-modeling 同步领域模型:为 CONTEXT.md 中不存在的新概念命名时补充术语(文件不存在则惰性创建);会话中细化模糊术语时即时更新 CONTEXT.md;用户以关键理由否决候选时,询问是否记录为 ADR,以避免未来架构评审重复建议。
  • 如需探索深化模块的备选接口,可调用 codebase-design 的 design-it-twice 并行子代理模式。

使用方式(术语与词汇约束)

  • 以项目的领域模型为依据,并建立在共享设计词汇之上:调用 Skill 工具传入 "codebase-design" 获取架构词汇(module、interface、depth、seam、adapter、leverage、locality)及其原则(删除测试、“接口即测试面”、“一个 adapter = 假想 seam,两个 = 真实 seam”)。所有建议需精确使用这些术语,不漂移到 “component”“service”“API”“boundary”。
  • CONTEXT.md 中的领域语言为好的 seam 命名;docs/adr/ 中的 ADR 记录了本命令不应重新争论的决策。
  • 报告中领域词汇使用 CONTEXT.md 的用词,架构词汇使用 /codebase-design 的用词。例如 CONTEXT.md 定义了 “Order”,则应说 “the Order intake module”,而非 “the FooBarHandler” 或 “the Order service”。
  • ADR 冲突处理:若某候选与现有 ADR 矛盾,仅当摩擦足够真实、值得重新审视该 ADR 时才提出,并在卡片中明确标注(如警告提示:“contradicts ADR-0007, but worth reopening because…”)。不要列出 ADR 禁止的每一个理论性重构。
  • 在报告写入文件后,暂不提出接口方案,而是询问用户:“Which of these would you like to explore?”

适用场景

  • 用户希望在动手重构前先看到架构改进候选清单。
  • 需要定位代码库中最值得重构的热点区域。
  • 需要以可视化报告方式呈现架构摩擦与深化方案。
  • 选定方向后需要逐步厘清重构约束与测试影响。

限制与注意事项

  • 报告写入系统临时目录,避免落入代码仓库。
  • 上游流程需保持完整;若有偏离应明确记录,而非静默即兴发挥。
  • 在每个该技能标记为“由用户决定”的决策点,应停下并把控制权交还用户。
  • 优先采用小而可逆的改动,并明确陈述假设而非将其埋没。
  • 需要仓库或环境事实时,应自行查询而非询问用户。
  • 建议先用一个较窄范围应用该技能,确认输出符合上述形态,再扩展到完整任务。

参考资料

  • Upstream skill: mattpocock/skills skills/engineering/improve-codebase-architecture/SKILL.md(commit 3cca18b, MIT)
  • Companion doc: references/HTML-REPORT.md
  • Project standards: .agent-skills/skill-standardization/SKILL.md
  • Validator script: .agent-skills/skill-standardization/scripts/validate_skill.sh