上下文映射技能Skill context-mapping

该技能用于在领域驱动设计(DDD)中映射有界上下文之间的关系,识别上游/下游模式,生成Context Mapper DSL(CML)输出,并提供集成策略建议。适用于软件架构设计、团队边界规划等场景,帮助优化系统集成和组织结构。关键词:上下文映射、有界上下文、DDD、集成模式、CML、软件架构、防腐败层、开放主机服务。

架构设计 0 次安装 0 次浏览 更新于 3/11/2026

name: context-mapping description: 使用DDD上下文映射模式映射有界上下文之间的关系。用于定义上游/下游关系、集成策略(ACL、OHS、PL)或生成Context Mapper DSL输出。遵循事件风暴进行有界上下文发现。 argument-hint: [有界上下文文件] [–mode full|quick|guided] [–output cml|diagram|both] [–input-dir <路径>] [–dir <路径>] allowed-tools: Read, Write, Glob, Grep, Skill, Task, AskUserQuestion

上下文映射技能

交互式映射配置

使用AskUserQuestion配置上下文映射会话:

# 问题1:映射模式(MCP:DDD上下文映射方法论)
question: "您需要什么级别的上下文映射分析?"
header: "模式"
options:
  - label: "完整分析(推荐)"
    description: "系统分析所有有界上下文并生成CML输出"
  - label: "快速概览"
    description: "仅识别明显关系(约3K令牌)"
  - label: "引导发现"
    description: "交互式,确认每个关系与用户"
  - label: "模式聚焦"
    description: "专注于特定集成模式(ACL、OHS等)"

# 问题2:关系清晰度(MCP:DDD上游/下游模式)
question: "上下文边界有多清晰?"
header: "清晰度"
options:
  - label: "定义良好"
    description: "有界上下文已识别,需要关系映射"
  - label: "部分已知"
    description: "一些上下文已识别,可能发现更多"
  - label: "探索性"
    description: "从零开始,发现上下文和关系"
  - label: "来自事件风暴"
    description: "使用先前事件风暴会话的输出"

使用这些响应选择适当的映射模式并校准发现深度。

使用领域驱动设计上下文映射模式映射有界上下文之间的关系。生成Context Mapper DSL(CML)输出和集成策略建议。

何时使用此技能

关键词: 上下文映射、有界上下文、上游、下游、ACL、防腐败层、共享内核、客户供应商、开放主机服务、发布语言、顺从者、合作伙伴关系、CML、集成模式、领域关系

在以下情况下使用此技能:

  • 事件风暴后,当有界上下文已识别时
  • 定义领域之间的集成策略
  • 记录领域关系和依赖
  • 生成上下文映射图(Mermaid/PlantUML)
  • 创建Context Mapper DSL(CML)输出
  • 基于上下文关系规划团队边界
  • 识别需要防腐败层的地方

上下文映射模式

八种战略DDD模式用于定义上下文关系:

对称模式(平等关系)

模式 缩写 描述 使用时机
共享内核 SK 上下文间共享代码/模型 两个上下文需要相同的领域逻辑
合作伙伴关系 P 平等协作,相互依赖 团队共同演进,无明确上游/下游

非对称模式(上游/下游)

模式 缩写 描述 使用时机
客户/供应商 C/S 上游供应,下游消费 清晰的提供者/消费者关系
顺从者 CF 下游采用上游模型 下游团队无影响力谈判
防腐败层 ACL 下游翻译上游模型 上游模型不适合下游需求
开放主机服务 OHS 上游提供正式API 多个消费者需要标准化访问
发布语言 PL 标准化API格式(OpenAPI等) 跨团队通信需要合同

无集成

模式 缩写 描述 使用时机
分离方式 SW 无集成,独立演进 上下文之间无有意义关系

详细模式描述与示例: 参见references/pattern-catalog.md

模式选择指南

决策流程

上下文是否共享代码或数据模型?
├── 是 → 共享内核 [SK]
└── 否 → 是否存在清晰的数据/服务流?
    ├── 否 → 团队是否平等协作?
    │   ├── 是 → 合作伙伴关系 [P]
    │   └── 否 → 分离方式 [SW]
    └── 是 → 识别上游(提供者)和下游(消费者)
        └── 下游能否影响上游的模型?
            ├── 否 → 上游模型是否适合下游需求?
            │   ├── 是 → 顺从者 [CF]
            │   └── 否 → 防腐败层 [ACL]
            └── 是 → 客户/供应商 [C/S]
                └── 上游是否服务多个消费者?
                    ├── 是 → 添加开放主机服务 [OHS]
                    │   └── 需要合同? → 添加发布语言 [PL]
                    └── 否 → 基本C/S足够

详细选择标准: 参见references/pattern-selection.md

Context Mapper DSL(CML)

基本语法

ContextMap <地图名称> {
    contains <上下文1>
    contains <上下文2>

    // 非对称:下游 [D] <- 上游 [U]
    <下游上下文> [D,<模式>]<-[U,<模式>] <上游上下文>

    // 对称:双方平等
    <上下文1> [<模式>]<->[<模式>] <上下文2>
}

符号参考

符号 含义
[D] 下游上下文
[U] 上游上下文
<- 非对称关系(上游到下游)
<-> 对称关系
[D,C] 下游 + 客户
[U,S] 上游 + 供应商
[D,ACL] 下游带防腐败层
[U,OHS,PL] 上游带开放主机服务 + 发布语言
[SK] 共享内核(对称)
[P] 合作伙伴关系(对称)
[CF] 顺从者

完整CML语法: 参见references/cml-syntax.md

多模式执行

模式选择

模式 描述 使用时机
full 系统分析所有有界上下文 综合映射,较大领域
quick 仅识别明显关系 快速概览,小领域
guided 交互式,确认每个关系 学习、验证、不确定关系

完整模式协议

  1. 清单 - 列出所有有界上下文及其聚合
  2. 依赖扫描 - 识别数据流和服务调用
  3. 模式分配 - 系统应用选择标准
  4. CML生成 - 产生完整上下文地图
  5. 图生成 - 创建视觉表示
  6. 审查输出 - 标记不确定关系供人工审查

快速模式协议

  1. 上下文列表 - 枚举已知有界上下文
  2. 明显关系 - 映射清晰的上游/下游对
  3. 基本CML - 生成最小上下文地图
  4. 跳过模糊 - 标记不确定关系后续处理

引导模式协议

  1. 呈现上下文对 - 向用户展示两个上下文
  2. 询问关系 - “这些上下文是否交互?”
  3. 确定方向 - “哪个提供数据/服务?”
  4. 选择模式 - 呈现模式选项与解释
  5. 确认 - 验证用户同意分类
  6. 重复 - 继续所有上下文对

输出工件

1. Context Mapper DSL(CML)文件

/* 上下文地图:<领域名称>
 * 生成:<日期>
 * 来源:事件风暴会话
 */

ContextMap <领域名称>Map {
    contains <上下文1>
    contains <上下文2>
    // ... 关系
}

2. Mermaid图

graph LR
    subgraph "核心领域"
        A[上下文1]
    end
    subgraph "支持"
        B[上下文2]
    end
    A -->|模式| B

3. 集成策略报告

## 集成策略

### <上下文1> -> <上下文2>
- **模式:** 客户/供应商
- **方向:** 上下文1(上游)供应上下文2(下游)
- **理由:** <为何选择此模式>
- **实施:** <技术方法>
- **团队影响:** <组织考虑>

4. 团队拓扑建议

基于上下文关系,建议团队边界遵循Team Topologies模式(流对齐、平台、启用、复杂子系统)。

团队拓扑指导: 参见references/team-topologies.md

与事件风暴集成

事件风暴输入

上下文映射消耗:

  • 有界上下文 - 命名领域边界与主要聚合
  • 领域事件 - 跨上下文边界的事件
  • 命令 - 触发跨上下文通信的操作
  • 参与者 - 与多个上下文交互的用户/系统

工作流集成

领域故事讲述
    ↓(理解业务流程)
事件风暴
    ↓(发现有界上下文)
上下文映射 ← 您在这里
    ↓(定义关系)
模块化架构
    ↓(实施结构)
适应度函数
    (强制执行边界)

跨上下文事件识别

映射上下文时,识别:

  1. 跨边界事件 - 表示集成需求
  2. 共享聚合 - 潜在的共享内核候选
  3. 翻译需求 - ACL候选
  4. API合同 - OHS/PL候选

集成策略

对于每个模式,有推荐的技术实施:

模式 实施策略
共享内核 共享NuGet包、公共项目引用
客户/供应商 内部API、MediatR通知
防腐败层 适配器模式、翻译服务
开放主机服务 REST API、gRPC服务
发布语言 OpenAPI规范、Protobuf定义
合作伙伴关系 共享事件总线、双边合同
顺从者 直接模型采用、无翻译
分离方式 无需集成代码

详细实施指导: 参见references/integration-strategies.md

示例输出

电子商务领域上下文地图

/* 上下文地图:电子商务平台
 * 生成:2025-01-15
 * 来自事件风暴会话的有界上下文
 */

ContextMap ECommercePlatform {
    contains OrderContext
    contains InventoryContext
    contains PaymentContext
    contains ShippingContext
    contains CustomerContext

    /* 订单消耗库存可用性
     * 库存拥有库存真相,订单查询它
     */
    OrderContext [D,C]<-[U,S] InventoryContext

    /* 支付隔离外部网关
     * 网关有外部模型,需要翻译
     */
    PaymentContext [D,ACL]<-[U,OHS,PL] ExternalPaymentGateway

    /* 订单和运输共同演进
     * 两个团队在履行流程上协作
     */
    OrderContext [P]<->[P] ShippingContext

    /* 客户数据共享
     * CustomerInfo值对象被多个上下文使用
     */
    OrderContext [SK]<->[SK] CustomerContext
    ShippingContext [SK]<->[SK] CustomerContext
}

诚实局限性

此技能做得好之处

  • 从有界上下文系统识别模式
  • 为Context Mapper工具生成CML语法
  • 基于模式的集成策略建议
  • 团队拓扑对齐建议
  • Mermaid/PlantUML图生成

需要人工输入之处

  • 团队动态 - 实际的组织政治和关系
  • 业务优先级 - 哪些集成最重要
  • 遗留约束 - 限制选项的现有系统
  • 变革意愿 - 组织重构准备情况
  • 权衡决策 - 当多个模式可能工作时

所有输出清晰区分建议与要求,并标记不确定分类供人工审查。

相关技能

  • 事件风暴 - 发现有界上下文(先决条件)
  • 领域故事讲述 - 理解业务流程(可选先决条件)
  • 模块化架构 - 实施模块结构(下一步)
  • ADR管理 - 文档化集成决策
  • 架构文档 - 生成架构图

参考

用户界面

当用户直接调用时,此技能映射有界上下文关系。

执行工作流

  1. 解析参数 - 提取有界上下文来源、模式和输出格式。如果无来源提供,检查 docs/event-storming/ 中的事件风暴输出或询问用户。
  2. 清单有界上下文 - 解析输入以获取上下文名称、职责、聚合、发布/消费事件和团队所有权。
  3. 基于模式执行:
    • 完整:启动 context-mapper 代理,系统分析所有关系,附带模式选择理由和团队拓扑对齐。
    • 快速:从事件对、API依赖和共享数据访问识别明显关系。应用默认模式。
    • 引导:交互式逐关系确认,展示证据并提供模式建议。
  4. 生成输出 - 产生CML文件、Mermaid图、总结报告,包括模式分布和团队拓扑建议。
  5. 保存结果 - 保存到 docs/architecture/context-map.cmldocs/architecture/context-map.md(或自定义 --dir)。
  6. 建议后续步骤 - 推荐架构文档、ADR用于模式决策、适应度函数用于边界。

版本历史

  • v1.0.0 (2025-12-22):初始发布 - 上下文映射模式、CML输出、多模式执行

最后更新: 2025-12-22 模型: claude-opus-4-5-20251101