用途
Domain Modeling 是一个在项目设计过程中主动构建和打磨领域模型的技能。它强调主动的领域建模纪律:质疑术语、发明边缘案例场景,并在术语和决策确定时立即写入词汇表和决策记录。仅仅阅读 GLOSSARY.md 获取词汇不属于此技能,那只是任何技能都能做到的一行习惯。此技能适用于正在改变模型而非仅仅消费模型的场景。
主要能力
- 对照词汇表质疑:当用户使用的术语与 GLOSSARY.md 中现有语言冲突时,立即指出。例如:“你的词汇表将‘cancellation’定义为 X,但你似乎指的是 Y,到底是哪个?”
- 锐化模糊语言:当用户使用模糊或过载的术语时,提出精确的规范术语。在可用 AskUserQuestion 时,将候选作为选项,推荐项在前,每个选项的描述说明选择它会让模型承诺什么;否则在聊天中以相同形式提问。
- 讨论具体场景:当讨论领域关系时,用具体场景进行压力测试。发明探测边缘案例的场景,强制明确概念之间的边界。例如:“一个 Customer 有两个 Subscription,在周期中取消其中一个,已发出的 Invoice 会怎样?”
- 与代码交叉引用:当用户陈述某事物如何工作时,检查代码是否一致。在 Laravel 代码库中,模型存在于比散文更多的地方,对照以下内容检查词汇表术语:Eloquent 模型和关系名称(app/Models、HasMany 方法名)、迁移中的表和列名、枚举案例(app/Enums)、策略名称和能力字符串、Filament 资源/页面标签和导航名称、路由名称、任务名称、事件名称。如果发现矛盾,提出来。
- 内联更新 GLOSSARY.md:当术语确定时,立即更新 GLOSSARY.md。不要批量处理,随发生随捕获。如果会话可能并行运行,在写入前立即重新读取 GLOSSARY.md,只添加自己的条目,以免并发编辑被覆盖。GLOSSARY.md 必须完全不含实现细节。
- 谨慎提供 ADR:仅当以下三点全部为真时才提供创建 ADR:难以逆转(以后改变主意的成本有意义)、无上下文时令人惊讶(未来读者会想知道“为什么他们这样做?”)、真实权衡的结果(存在真正的替代方案,你因特定原因选择了一个)。如果缺少任何一点,跳过 ADR。
使用方式
该技能与 grilling 会话(grill-with-docs 是配对两者的前门)、wayfinder grilling 工单和 to-spec 综合配合运行:在任何术语被决定的地方。它是支持性工作,不是流水线阶段:它从不打印流水线会话结束块,无论是嵌套还是直接运行,调用技能(或用户的下一步)负责路由。
文件结构
大多数仓库有单一上下文:
/
├── GLOSSARY.md
├── docs/
│ └── adr/
│ ├── 0001-single-db-multi-tenancy.md
│ └── 0002-money-as-integer-minor-units.md
└── app/
如果根目录存在 GLOSSARY-MAP.md,则仓库有多个上下文。映射指向每个上下文所在位置:在 Laravel 模块化单体中,即模块根:
/
├── GLOSSARY-MAP.md
├── docs/
│ └── adr/ ← 系统级决策
└── app/Domain/ ← 或 modules/、app-modules/,遵循仓库
├── Ordering/
│ ├── GLOSSARY.md
│ └── docs/adr/ ← 上下文特定决策
└── Billing/
├── GLOSSARY.md
└── docs/adr/
惰性创建文件:仅在有内容可写时创建。没有 GLOSSARY.md?在第一个术语解决时创建一个。发现旧的 CONTEXT.md / CONTEXT-MAP.md?在首次写入前,用 git mv 将其重命名为 GLOSSARY.md / GLOSSARY-MAP.md 并修复映射的链接。没有 docs/adr/?在需要第一个 ADR 时创建。格式:references/glossary-format.md 和 references/adr-format.md。
会话期间
- 对照词汇表质疑
- 锐化模糊语言
- 讨论具体场景
- 与代码交叉引用
- 内联更新 GLOSSARY.md
- 谨慎提供 ADR
当术语根据代码当前命名解决时,重命名是真实的构建工作,在此记录决策,将重命名本身留给规范(或 tickets/ 工单,一旦存在),绝不要作为 wayfinder 决策映射工单,后者只保存已决定的事项,而非已构建的事项。绝不静默吸收。
适用场景
- 正在设计或修改领域模型时
- 术语被决定或需要澄清时
- 与 grilling 会话、wayfinder grilling 工单、to-spec 综合配合时
- 需要将领域术语与代码实现交叉验证时
限制
- 仅阅读 GLOSSARY.md 获取词汇不属于此技能
- 它是支持性工作,不是流水线阶段,不负责路由
- GLOSSARY.md 必须完全不含实现细节
- ADR 仅在满足三个条件时创建
- 重命名本身留给规范或工单,不作为 wayfinder 决策映射工单
- 关于收费、价格、平台、效果等具体信息暂未提供