ddd-subdomains · v1.1.0 · 2026-09-29 · sha256 3db4f674be7466dd
ddd-subdomains v1.1.0A
Immutable. This exact content never changes and is served at /api/v1/blob/3db4f674be7466dd.
--- name: ddd-subdomains description: "Identify business capabilities and classify subdomains (Core/Supporting/Generic), producing core-domain declarations, ownership recommendations, and bounded-context boundary candidates. Use when partitioning core/supporting/generic subdomains, or re-partitioning when god-context or circular-dependency signals suggest a subdomain misfire." risk: safe source: self tags: "[ddd, strategic, subdomains]" date_added: "2026-05-08" slug: ddd-subdomains version: 1.1.0 displayName: ddd-subdomains --- # DDD Subdomains > English version: [English](SKILL.en.md) ## 使用时机 - 已完成领域发现(事件流与命令/事件候选已就绪),需要将领域切分为子域。 - 需要明确"什么是核心竞争力、什么可以外购/复用"的战略决策。 - `ddd-context-map` 报告"上帝上下文"或子域误分时,作为回溯目标重新执行。 ## 输入要求 - **必需**:事件流、命令/事件候选、边界线索(来自 `ddd-discover`)。 - **可选**:当前系统能力清单或模块清单、业务差异化假设、竞争优势描述(来自 `ddd-scope`)。 **输入缺失时的可观察出口**:若必需工件缺失或事件流为空,**不要**自行臆测分类。输出一段缺失声明:写明"缺少 <工件名>,来自 `ddd-discover`",并列出为补齐需要跑的入口(无事件流 → 先跑 `ddd-discover`;价值主张不清 → 先跑 `ddd-scope`),然后停下等待。收到补齐材料后从头重跑流程。 **NOT for(不适用,转交对应技能)**: - 还没做领域发现、没有事件流 → `ddd-discover` 先行。 - 业务价值主张本身模糊 → `ddd-scope` 先行。 - 已确定子域、要做上下文划分 → `ddd-contexts`;本技能产出的是子域到上下文的**候选**,不定稿上下文。 - 本技能只做战略层切分,不做战术建模(聚合/实体/不变量 → `ddd-aggregates`)。 ## 流程 1. **提取能力集**:从事件流中抽取业务能力(Capability),去重合并同义能力。 2. **属性标注**:为每个能力标注业务价值、复杂度、变更频率、外部依赖程度。 3. **分类**:按 DDD 子域类型分类——Core(核心差异化)、Supporting(必要但非差异化)、Generic(通用可复用)。 4. **核心域声明**:形成核心域声明文档——为什么它是核心、衡量指标、长期演进方向。 5. **所有权建议**:建议团队归属,对齐语言边界与一致性边界;标注跨团队协作点。 6. **输出边界候选**:为 `ddd-contexts` 提供子域到上下文的初步映射建议。 ## 输出 | 工件 | 结构要求 | | :--------- | :------------------------------------------------------------------------- | | 能力清单 | 表格:能力、说明、关联事件、上下游依赖 | | 子域分类表 | 表格:能力/能力组、子域类型(Core/Supporting/Generic)、分类理由、建议投入 | | 核心域声明 | 1 页以内:价值、边界、衡量指标、风险、演进方向 | | 所有权建议 | 表格:能力/子域、建议团队、依赖方、协作方式 | | 边界候选 | 列表:子域到上下文的初步映射建议 | ## 校验清单 - [ ] 每个能力有分类理由,业务方与技术方均可接受 - [ ] 核心域声明包含可衡量的业务指标 - [ ] 至少识别 3 个跨团队协作点并给出协作建议 - [ ] Core 子域数量 ≤ 总子域的 1/3(核心域不应过多) - [ ] 边界候选可被 `ddd-contexts` 直接消费 ## 回溯触发 - 无法区分 Core 与 Supporting(所有能力看起来同等重要) → 回溯至 `ddd-scope`,业务价值主张需重新澄清。 - 被 `ddd-context-map` 触发回溯:循环依赖或"上帝上下文"暗示子域划分有误。 ## 示例 ### 调用示例 ```text @ddd-subdomains 基于以下事件流和边界线索,帮我识别子域并分类: [粘贴 ddd-discover 的事件流表与边界线索] 请输出能力清单、子域分类表、核心域声明与所有权建议。 ``` ### 最短真实示例(前置 → 调用 → 产出摘录) 前置:`ddd-discover` 已产出事件流(下单、支付、库存扣减、对账、通知推送等事件)与边界线索。 调用: ```text @ddd-subdomains 事件流:OrderPlaced / PaymentCaptured / StockReserved / StatementReconciled / NotificationSent … 边界线索:对账有独立合规截止日;通知走第三方网关。 ``` 产出摘录(应长这样): ```text | 能力/能力组 | 子域类型 | 分类理由 | 建议投入 | | 订单履约 | Core | 差异化流程,变更频率高 | 自建团队 | | 对账/结算 | Supporting| 必要但非差异化,规则相对稳定 | 1-2 人 | | 通知推送 | Generic | 通用能力,可直接外购 | 复用 | 核心域声明(摘录):订单履约是核心,衡量指标 = 履约时长与差错率 … 边界候选:订单履约 → OrderContext(供 ddd-contexts 定稿)。 ``` ## 常见错法 → 改法 | 错法 | 改法 | | :--- | :--- | | 没有事件流就按组织架构图直接切子域 | 停在缺失声明,先走 `ddd-discover`;组织架构不是分类依据 | | 把一半以上子域标成 Core | 核心域 ≤ 总子域的 1/3;超限说明价值主张没收敛,回溯 `ddd-scope` | | 所有能力"看起来都重要",强行平均分 | 触发回溯:无法区分 Core/Supporting → `ddd-scope` 重新澄清价值主张 | | 把边界候选直接当上下文定稿 | 候选只是输入;上下文划分由 `ddd-contexts` 定稿 | | 按技术分层(前端/后端/DB)当子域 | 子域按业务能力切分,与分层无关 | | 用户没要求就自动跑子域划分 | 本技能仅在用户点名或上游技能(`ddd-context-map`)回溯触发时执行,不自主触发 | | 输出分类却不写理由 | 每条分类必须带理由,且校验清单要求业务方与技术方均可接受;写不出理由就回溯 |