with one click
domain-modeling
领域建模技能——当需要从需求中提取领域模型、定义实体和边界、建立通用语言时使用。在架构设计之前执行领域建模。
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
领域建模技能——当需要从需求中提取领域模型、定义实体和边界、建立通用语言时使用。在架构设计之前执行领域建模。
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
工作流执行引擎 Subagent — 独立上下文执行任务1~12
agents-workflow — 自动检测 task 可用性,支持所有平台
agents-workflow 安装器——用户提供仓库地址即可自动完成全部安装配置
架构评审技能——当需要审查系统架构设计、评估技术债务、检查架构腐化风险、或做多视角架构评审时使用。结合专家模拟和规则检测,输出可量化的架构健康报告。
使用百度智能云 Unlimited-OCR 进行文档解析 — 一次性长视野文档解析,支持图片、PDF、表格、手写体。 当用户需要从图片或 PDF 中提取文字、解析表格、识别文档内容时使用。 也适用于:发票识别、身份证识别、营业执照识别、试卷分析等场景。
会话交接技能——当需要把当前对话的上下文(进度、发现、决策)打包交接给另一个 AI 会话或另一个开发者时使用。
| name | domain-modeling |
| description | 领域建模技能——当需要从需求中提取领域模型、定义实体和边界、建立通用语言时使用。在架构设计之前执行领域建模。 |
在动手架构设计之前,先把问题域的核心概念、实体关系、业务规则理清楚。受 Matt Pocock domain-modeling 启发,侧重可落地的领域模型而非 UML 图。
核心理念: 代码是领域模型的映射。模型不清楚,架构就不可能清楚。
brainstorming(需求分析)
↓
domain-modeling(领域建模) ← 新加
│ 输出:领域模型文档 + 通用术语表
↓
wf-architect(架构设计)
│ 输入领域模型,输出系统设计
↓
arch-review(架构评审)
通读需求/规格,识别所有业务概念。不要技术名词(数据库、API、接口),只关注业务语言。
需求原文:"用户可以创建播放列表,添加视频,分享给好友"
提取的概念:
- 用户(User)— 系统的使用者
- 播放列表(Playlist)— 视频的集合
- 视频(Video)— 可播放的媒体内容
- 分享(Share)— 将播放列表访问权授予好友
- 好友(Friend)— 其他用户
用简单的文本描述实体之间的关系,不用画图:
实体关系:
用户 1---* 播放列表 (一个用户可以有多个播放列表)
播放列表 *---* 视频 (一个播放列表可包含多个视频,一个视频可属于多个列表)
用户 *---* 用户 (好友关系,双向)
播放列表 *---* 用户 (分享:一个播放列表可分享给多个用户)
关系类型:
1---1 — 一对一(一个用户只有一个资料)1---* — 一对多(一个用户有多个播放列表)*---* — 多对多(视频和播放列表)把概念和术语统一,消除歧义:
## 通用语言
| 术语 | 定义 | 别称(禁用) |
|------|------|-------------|
| 用户 | 系统的注册使用者 | 客户、会员 |
| 播放列表 | 视频的有序集合,有标题和描述 | 歌单、收藏夹 |
| 共享 | 将播放列表设为其他用户可见 | 分享、公开 |
| 视频 | 可播放的媒体文件,含标题、时长、封面 | 影片、素材 |
把隐含的约束显式写出来:
## 业务规则
1. 非公开播放列表对其他用户不可见
2. 一个播放列表最多包含 500 个视频
3. 只有播放列表的创建者可以删除它
4. 用户不能将播放列表分享给自己
5. 好友关系是双向的——A 是 B 的好友,则 B 也是 A 的好友
把大系统拆成有清晰边界的子域:
## 限界上下文
┌─ 用户上下文 ──────────────────┐
│ 注册、登录、个人资料、好友管理 │
└──────────────────────────────┘
┌─ 内容上下文 ──────────────────┐
│ 视频上传、转码、存储、元数据 │
└──────────────────────────────┘
┌─ 播放列表上下文 ──────────────┐
│ 创建列表、增删视频、排序、分享 │
└──────────────────────────────┘
┌─ 社交上下文 ──────────────────┐
│ 好友搜索、分享通知、时间线 │
└──────────────────────────────┘
# 领域模型:[功能名称]
## 核心概念
- [概念1]:[定义]
- [概念2]:[定义]
## 实体关系
[文本描述各实体之间的关系]
## 通用语言
[术语表:术语 → 定义 → 禁用别称]
## 业务规则
1. [规则1]
2. [规则2]
## 限界上下文
- [上下文1]:[职责]
- [上下文2]:[职责]
## 影响的范围
[涉及哪些现有模块/文件]
借鉴 grill-with-docs 的理念,领域建模过程中产生的知识持续沉淀,不只在最终文档里。
在建模过程中,每发现或确认一个业务术语,立即更新 CONTEXT.md:
CONTEXT.md 变化过程:
第 1 轮对话:用户说"一个播放列表可以包含多个视频"
→ 立即追加:
## 通用语言
- 播放列表(Playlist):视频的有序集合,有标题和描述
- 视频(Video):可播放的媒体文件
第 2 轮对话:发现"共享"和"分享"是同一个概念
→ 追加:
- 共享(Share):将播放列表设为其他用户可见
- 禁止使用"分享"(与"共享"同义,统一用"共享")
CONTEXT.md 的通用语言部分由 domain-modeling 和 brainstorming 共同维护。任何对话中只要有术语澄清,就更新它。
当做出以下类型的决策时,创建架构决策记录(ADR):
什么情况下写 ADR:
✅ 技术选型(用 A 库还是 B 库)
✅ 方案取舍(方案二是我们选的,为什么放弃方案一)
✅ 约束条件(必须用某个框架、必须兼容某个版本)
❌ 不要写:业务逻辑细节、实现步骤、临时决定
ADR 格式(存到 docs/adr/):
# ADR-0001:使用 exceljs 而非 xlsx 库
## 背景
需要导出 Excel 文件,社区主流有 xlsx 和 exceljs 两个库。
## 决策
选用 exceljs
## 理由
- 支持流式写入,大数据量不 OOM(xlsx 全量加载)
- 活跃维护(上次 commit 在 1 周内)
- 支持样式定制(xlsx 不支持)
## 后果
- 学习成本:团队需熟悉 exceljs API
- xlsx 的相关代码需迁移
docs/superpowers/domain-models/YYYY-MM-DD-<feature>-domain.md| 阶段 | 技能 | 作用 |
|---|---|---|
| 需求分析 | brainstorming | 理解需求、输出规格 |
| 领域建模 | domain-modeling(本技能) | 提炼领域模型 + 通用语言 |
| 架构设计 | wf-architect | 基于领域模型做系统设计 |
| 架构评审 | arch-review | 评审架构是否准确映射领域 |
| 编码 | wf-developer | 代码结构与领域模型对齐 |