mcpField
M
modular-decomposition

modular-decomposition

github.com/tech-leads-club开发7.1k184 次安装3 天前更新
代码仓库

关于 modular-decomposition

该技能引导 Agent 按顺序执行五种模式,在提取服务前分析代码库。它将组件清单、耦合分析等结果逐步用于候选领域分组,并可按需参考 DDD。

主要功能

  1. 01按序执行模式 1–5 的分析流程
  2. 02识别并评估组件规模
  3. 03检测重复领域逻辑
  4. 04分析层级结构与耦合
  5. 05领域分组及可选 DDD 分析

适用场景

  1. 01拆分单体前分析代码库
  2. 02梳理组件依赖与耦合
  3. 03将组件归为候选领域
  4. 04提取服务前检查有界上下文

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/tech-leads-club/agent-skills --skill modular-decomposition

安装后在 Claude Code 中输入/modular-decomposition确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
domain-analysis-examples.md
domain-analysis-quick-reference.md
domain-analysis.md
pattern-01-identify-and-size-quick-reference.md
pattern-01-identify-and-size.md
pattern-02-common-domain-quick-reference.md
pattern-02-common-domain.md
pattern-03-flattening-quick-reference.md
pattern-03-flattening.md
pattern-04-coupling.md
pattern-05-domain-grouping-quick-reference.md
pattern-05-domain-grouping.md

详细介绍

模块化分解

此技能会在服务提取前运行 Patterns 1–5 分析流程。每个模式都是 references/ 下的纯 Markdown 文件;加载对应步骤的文件,并针对用户的代码库执行。

使用方法

快速开始(用户可以这样说)
  • 完整流程:“对这个仓库运行 Patterns 1 到 5 的模块化分解”,“分析这个单体应用以确定拆分方案——盘点、耦合和领域分组。”
  • 单个前期步骤:“识别并评估这里的组件”,“查找各模块中重复的领域逻辑”,“分析我们各个包之间的耦合。”
  • 采用 DDD 视角:“将组件归入领域并检查限界上下文”,“在对服务分组之前,对这个代码库使用 DDD 战略设计。”

如果用户只想在分析完成后了解 提取顺序、阶段或迁移路线图,请改用 decomposition-planning-roadmap。如果他们需要 完整的遗留系统迁移计划(绞杀者模式、调研、多技术栈),在这是主要诉求时,也可以或应该改用 legacy-migration-planner。

Agent 应如何运行
  1. **范围:**确认任务是结构分析(盘点 → 耦合 → 分组),而不是编写路线图。如果不明确,询问一次他们需要完整的有序流程还是其中一部分。
  2. **顺序:**按 1 → 2 → 3 → 4 → 5 的顺序运行这些模式。除非用户明确限制范围,否则不要跳过任何步骤;如果跳过了,说明跳过了哪些模式,以及这会如何限制后续结论。
  3. **加载参考资料:**对于每个模式,打开对应的 references/pattern-NN-*.md 文件并遵循其中的说明。如果简短检查清单就足够,也可以使用相同编号的可选 *-quick-reference.md。
  4. **沿用上下文:**在后续模式中复用先前模式的输出(例如,Pattern 1 的组件清单可为 Pattern 4 的耦合分析和 Pattern 5 的分组提供依据)。引用前面步骤中的具体路径、模块或表格。
  5. **领域语言(Pattern 5):**如果需要结合结构以外的信息来明确子域或限界上下文,请在 Pattern 5 之前或同时阅读 references/domain-analysis.md。也可以打开 references/domain-analysis-quick-reference.md 或 references/domain-analysis-examples.md,查看精简规则或示例。
  6. **交付:**按模式给出清晰、可执行的发现,或提供一份整合报告;始终以仓库中的证据(文件、依赖、指标)为依据,而不是泛泛而谈。
使用示例

示例 1 — 完整流程

User: "We're going to split this monolith—run the full decomposition analysis (Patterns 1–5)."

Agent: Execute patterns 1→5 in order, loading each references/pattern-NN-*.md, preserving outputs between steps, then summarize cross-cutting recommendations.

示例 2 — 盘点后的耦合分析

User: "We already have a rough module list—focus on coupling (Pattern 4) and then domain grouping (Pattern 5)."

Agent: If no prior inventory exists in the thread, either run Pattern 1 briefly or derive an explicit module list from the repo before 4 and 5. State any assumptions.

示例 3 — 分组前采用 DDD

User: "Map bounded contexts and language, then group components into domains."

Agent: Read references/domain-analysis.md (and optional quick reference/examples) in parallel with or immediately before Pattern 5; align Pattern 5 groupings with linguistic boundaries where evidence supports it.

前置条件

  • 除非用户明确缩小范围,否则应先完成 Pattern N,再开始 Pattern N+1。后续模式依赖前面的结果(例如,盘点和结构分析为耦合分析和分组提供依据)。
  • 如果业务词汇、子域或限界上下文不明确,请在 Pattern 5 之前或同时使用 references/domain-analysis.md(参见下文“限界上下文”)。

有序工作流(模式 1–5)

步骤模式主要参考资料
1识别并评估组件规模references/pattern-01-identify-and-size.md(可选:pattern-01-identify-and-size-quick-reference.md)
2常见领域检测references/pattern-02-common-domain.md(可选:pattern-02-common-domain-quick-reference.md)
3扁平化/层级结构references/pattern-03-flattening.md(可选:pattern-03-flattening-quick-reference.md)
4耦合分析references/pattern-04-coupling.md
5领域识别与分组references/pattern-05-domain-grouping.md(可选:pattern-05-domain-grouping-quick-reference.md)

模式 6 — 规划与提取

模式 6(创建领域服务/提取)在此不重复介绍。完成模式 5 后,请切换到 decomposition-planning-roadmap,以规划分阶段提取顺序、里程碑和迁移方案。对于完整的遗留系统迁移策略(绞杀者模式、跨技术栈重写、研究密集型计划),还可选用 legacy-migration-planner。

限界上下文与 DDD 战略设计

  • 模式 1–4 聚焦于代码库各部分的结构性盘点、重复、层级和耦合。
  • 模式 5 会生成与解决方案空间边界相一致的候选分组(哪些组件应归为同一服务)。
  • 战略 DDD(子域、限界上下文、通用语言)见 references/domain-analysis.md,还可选读 domain-analysis-quick-reference.md 和 domain-analysis-examples.md。当你需要依据业务语言验证或优化边界,而非仅依据文件夹结构时,请使用这些资料。

评论

支持 Markdown