improve-codebase-architecture

探索代码库以发现架构改进机会,重点让代码库更容易测试:通过“加深浅模块(deepening shallow modules)”的方式重构模块结构。适用于用户想改善架构、寻找可重构机会、整合强耦合模块、或让代码库更便于 AI 导航与理解。

Best use case

improve-codebase-architecture is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

探索代码库以发现架构改进机会,重点让代码库更容易测试:通过“加深浅模块(deepening shallow modules)”的方式重构模块结构。适用于用户想改善架构、寻找可重构机会、整合强耦合模块、或让代码库更便于 AI 导航与理解。

Teams using improve-codebase-architecture should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/improve-codebase-architecture/SKILL.md --create-dirs "https://raw.githubusercontent.com/ProgrammerAnthony/Anything-Extract/main/.agents/skills/improve-codebase-architecture/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/improve-codebase-architecture/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How improve-codebase-architecture Compares

Feature / Agentimprove-codebase-architectureStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

探索代码库以发现架构改进机会,重点让代码库更容易测试:通过“加深浅模块(deepening shallow modules)”的方式重构模块结构。适用于用户想改善架构、寻找可重构机会、整合强耦合模块、或让代码库更便于 AI 导航与理解。

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# 改进代码库架构

像 AI 一样探索一整个代码库:暴露架构摩擦点(architectural friction),发现提升可测试性的机会,并以 GitHub issue/RFC 的形式提出“模块加深(module-deepening)”的重构建议。

所谓**深模块(deep module)**(John Ousterhout,《A Philosophy of Software Design》)具有“小接口(small interface)+ 大量实现隐藏”的特征。深模块更容易测试、更便于 AI 导航,并能让你在边界处测试,而不是在内部内部测。

## 流程(Process)

### 1. 探索代码库

使用 Agent 工具(subagent_type=Explore)自然地浏览代码库。不要使用僵硬的启发式规则(heuristics)——要“有机探索”,并记录你在理解过程中感受到的摩擦:

- 理解一个概念往往需要在很多很小的文件之间来回跳转,这种情况在哪里?
- 哪些模块过于“浅”(shallow)导致接口几乎和实现一样复杂?
- 是否曾经抽出了纯函数让它们更易测试,但真正的 bug 藏在“它们如何被调用”之中?
- 哪些强耦合模块在彼此的缝隙(seams)处制造了集成风险?
- 代码库中哪些部分没有被测试,或者很难测试?

你遇到的摩擦点就是信号(the friction IS the signal)。

### 2. 给出候选项

以“编号列表”的形式呈现深化(deepening)的机会。对每个候选项,展示:

- **聚类(Cluster)**:涉及哪些模块/概念
- **为什么耦合**:共享类型、调用模式、对某一概念的共同所有(co-ownership)
- **依赖类别(Dependency category)**:依赖类别的划分见 [REFERENCE.md](REFERENCE.md) 的四种分类
- **测试影响(Test impact)**:哪些现有测试会被边界测试(boundary tests)替代

目前**不要**提出具体接口设计。先问用户:`你想要进一步探索这些候选项里的哪一个?`

### 3. 用户选择候选项

### 4. 刻画问题空间

在启动子 agent 之前,先给出一个面向用户的问题空间说明(user-facing explanation),用于所选候选项:

- 新接口需要满足的约束条件
- 新接口需要依赖的内容
- 一个粗略的示意代码草图,用来把约束落到具体形态上——这不是提案,只是为了让约束更具体

把这些内容展示给用户,然后立刻进入第 5 步:让用户阅读并思考的同时,子 agent 会并行工作。

### 5. 设计多个接口方案

使用 Agent 工具并行启动 3 个以上的子 agent。每个子 agent 都必须为“深模块(deepened module)”输出一种**根本不同(radically different)**的接口设计。

为每个子 agent 提供独立的技术简报(文件路径、耦合细节、依赖类别、需要隐藏的复杂度等)。该简报与第 4 步面向用户的解释互相独立。并确保每个 agent 的设计约束不同:

- Agent 1:`尽量缩小接口——目标是最多 1-3 个入口点`
- Agent 2:`尽量提升灵活性——支持尽可能多的用例与扩展`
- Agent 3:`优化最常见的调用者——让默认场景变得非常简单`
- Agent 4(若适用):`围绕 ports & adapters 模式为跨边界依赖进行设计`

每个子 agent 的输出应包含:

1. 接口签名(types、方法、参数)
2. 使用示例(展示调用方如何使用)
3. 内部隐藏了哪些复杂度
4. 依赖策略(如何处理依赖——见 [REFERENCE.md](REFERENCE.md))
5. 方案的取舍(trade-offs)

把这些设计方案按顺序呈现,然后用文字进行对比分析。

对比之后,给出你自己的推荐:你认为哪一种设计最强,并说明原因。如果不同设计的要素有组合空间,可以提出混合方案。要“有主见”——用户想要的是有分量的判断,而不只是菜单式列举。

### 6. 用户选择接口(或接受推荐)

### 7. 创建 GitHub issue

使用 `gh issue create` 把一次“重构 RFC(refactor RFC)”创建成 GitHub issue。并使用 [REFERENCE.md](REFERENCE.md) 中的模板。

**不要**要求用户在创建之前先审核——直接创建并把 URL 发给用户。

Related Skills

architecture-doc

135
from ProgrammerAnthony/Anything-Extract

指导在项目中编写、更新与使用架构文档(ARCHITECTURE.md)。在根目录维护架构文档,修改前后需阅读文档;文档关注最终结果与流程串联,不陷入实现细节。适用于新增/变更功能、重构、或需要理解系统整体时。

write-a-skill

135
from ProgrammerAnthony/Anything-Extract

以正确的技能结构、渐进式披露与打包资源来创建新的 agent 技能。适用于用户希望创建、编写或构建新的技能。

write-a-prd

135
from ProgrammerAnthony/Anything-Extract

通过用户访谈、代码库探索与模块设计来编写 PRD(产品需求文档),然后以 GitHub issue 的形式提交。适用于用户希望编写 PRD、创建产品需求文档,或规划一个新功能。

ubiquitous-language

135
from ProgrammerAnthony/Anything-Extract

从当前对话中抽取 DDD 风格的“统一语言”术语表(ubiquitous language glossary),标记歧义,并提出规范的术语选择。保存为 `UBIQUITOUS_LANGUAGE.md`。适用于用户希望定义领域术语、构建术语表、固化用词并强化术语一致性,或提到 “domain model” / “DDD”(领域模型与 DDD)。

triage-issue

135
from ProgrammerAnthony/Anything-Extract

通过探索代码库对 Bug/Issue 进行排查归因,并基于 TDD 方式生成修复计划,同时创建对应的 GitHub issue。适用于用户报告了 bug、希望创建 issue、提到“triage”,或想调查并规划某个问题的修复方案。

tdd

135
from ProgrammerAnthony/Anything-Extract

使用 RED-GREEN-重构(red-green-refactor)循环进行测试驱动开发。适用于用户希望用 TDD 构建新功能或修复 bug,提到 “red-green-refactor”,希望使用集成测试,或询问“test-first development(先写测试)”。

request-refactor-plan

135
from ProgrammerAnthony/Anything-Extract

通过用户访谈创建一个详细的重构计划,并将其拆分成很小的提交(tiny commits),最后以 GitHub issue 的形式归档。适用于用户希望规划一次重构、创建重构 RFC,或把重构拆成安全的渐进步骤。

prd-to-plan

135
from ProgrammerAnthony/Anything-Extract

使用 tracer-bullet 竖向切片方法把 PRD 转换成多阶段的落地实施计划,并保存为本地 Markdown 文件(存放在 `./plans/`)。适用于用户希望把 PRD 拆分为多个阶段、生成实施计划、从 PRD 推导阶段计划,或提到 “tracer bullets”。

prd-to-issues

135
from ProgrammerAnthony/Anything-Extract

使用 tracer-bullet 竖向切片法,把 PRD 拆分成彼此独立、可以直接认领的 GitHub issues(并形成对应的实现工单)。适用于用户想把 PRD 转成 issues、创建实现任务,或把 PRD 拆成工作项。

grill-me

135
from ProgrammerAnthony/Anything-Extract

对用户在计划或设计方面进行“无情的质询”,直到形成共同理解,并逐一解决决策树中每个分支的依赖关系。适用于用户希望对某个计划进行压力测试、希望被严格追问他们的设计,或提到 “grill me(来烤我/质问我)”。

frontend-code-review

135
from ProgrammerAnthony/Anything-Extract

指导在项目中对前端代码(Next.js/React/TypeScript/Tailwind 等)进行结构、可维护性、性能与一致性审查,基于既定规则清单。适用于用户请求审查 .tsx/.ts/.js/.jsx 等前端文件或前端目录下的页面与组件。不用于后端代码(如 .py)。

edit-article

135
from ProgrammerAnthony/Anything-Extract

通过重组文章的段落结构、提升表达清晰度,并收紧措辞来编辑与改进文章。适用于用户希望编辑、修订或完善一份文章草稿。