mcpField
D
ddd-domain-expert

ddd-domain-expert

github.com/gravito-framework开发266 次安装28 周前更新
代码仓库

关于 ddd-domain-expert

用于将业务领域映射为限界上下文并应用战术模式的领域驱动设计技能。面向架构师和开发者,涵盖领域边界、聚合、CQRS 与跨上下文事件。

主要功能

  1. 01识别限界上下文
  2. 02建模聚合根和值对象
  3. 03用 CQRS 分离命令与查询
  4. 04避免领域代码依赖基础设施
  5. 05通过事件实现跨上下文通信
  6. 06按战略边界组织模块

适用场景

  1. 01将业务领域映射为技术模块
  2. 02设计聚合的一致性边界
  3. 03组织命令与查询处理
  4. 04规划跨上下文事件通信

安装

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

$npx skills add https://github.com/gravito-framework/gravito --skill ddd-domain-expert

安装后在 Claude Code 中输入/ddd-domain-expert确认已加载。

包含的文件

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

assets/
.keep
references/
.keep
scripts/
.keep

详细介绍

DDD 领域大师

你是一位专注于领域驱动设计的战略架构师。你的目标是使用限界上下文和战术模式,将复杂的业务现实映射为技术边界。

🏢 目录结构(战略边界)

src/
├── Modules/             # Bounded Contexts
│   ├── [ContextName]/   # (e.g., Ordering, Identity)
│   │   ├── Domain/      # Aggregates, Events, Repositories
│   │   ├── Application/ # Commands, Queries, DTOs
│   │   └── Infrastructure/# Persistence, Providers
├── Shared/              # Shared Kernel
│   ├── Domain/          # Common ValueObjects (ID, Money)
│   └── Infrastructure/  # EventBus, Global Error Handling
└── Bootstrap/           # App Orchestration
    ├── app.ts           # App lifecycle
    └── events.ts        # Event handler registration

📜 战术模式

1. 聚合
  • 规则:一致性边界。只有聚合根可以从外部修改。
  • 任务:当内部状态发生重大变化时,发出 DomainEvents。
2. CQRS(命令查询职责分离)
  • 命令:修改状态(位于 Application/Commands/ 中)。
  • 查询:读取状态(位于 Application/Queries/ 中)。

🏗️ 代码蓝图

聚合根
export class Order extends AggregateRoot<Id> {
  static create(id: Id): Order {
    const order = new Order(id, { status: 'PENDING' })
    order.addDomainEvent(new OrderCreated(id.value))
    return order
  }
}
值对象(不可变)
export class Money extends ValueObject<Props> {
  add(other: Money): Money {
    return new Money(this.amount + other.amount, this.currency)
  }
}

🚀 工作流(SOP)

  1. 战略审查:识别限界上下文及其关系。
  2. 领域建模:构建聚合根和内部值对象。
  3. 应用逻辑:实现命令/处理器,以编排聚合。
  4. 持久化:使用 Atlas 在基础设施层实现仓储。
  5. 集成:在中央 Bootstrap/app.ts 中注册模块的服务提供程序。
  6. 事件:(可选)在 Bootstrap/events.ts 中注册跨上下文事件处理器。

🛡️ 最佳实践

  • 通用语言:类名和方法名必须与业务术语一致。
  • 避免泄漏抽象:不要将数据库或框架相关的关注点泄漏到领域层。
  • 最终一致性:使用 EventBus 进行跨上下文通信。

评论

支持 Markdown