Ubiquitous Language
用途
ubiquitous-language 是一个用于领域驱动设计(DDD)的技能,作用是从当前对话中提取并正式化领域术语,整理成一份一致的术语表,并保存为本地文件。它关注对话中出现的领域相关名词、动词和概念,帮助团队统一对业务概念的称呼。
主要能力
- 扫描对话,找出与领域相关的名词、动词和概念。
- 识别术语问题:同一词表示不同概念(歧义)、不同词表示同一概念(同义词)、含义模糊或承载过多含义的术语。
- 提出带倾向性的标准术语表,为每个概念选定推荐用词。
- 将结果写入工作目录下的 UBIQUITOUS_LANGUAGE.md 文件。
- 在对话中内联输出摘要。
输出格式
生成的 UBIQUITOUS_LANGUAGE.md 采用如下结构:
- 标题
# Ubiquitous Language - 按自然聚类分组的术语表(如按子域、生命周期或参与者),每组一个二级标题和表格,表格列为 Term、Definition、Aliases to avoid。
- Relationships 小节,用粗体术语名表达术语之间的关系,在明显处标出基数。
- Example dialogue 小节,写一段开发者与领域专家之间 3 至 5 轮对话,展示术语如何自然交互。
- Flagged ambiguities 小节,列出对话中被含糊使用的术语并给出明确建议。
规则要点
- 保持有主见:同一概念存在多个说法时,选定最佳用词,其余列为应避免的别名。
- 明确标出冲突:术语使用含糊时在 Flagged ambiguities 中说明并给出建议。
- 只收录对领域专家有意义的术语,跳过模块名或类名,除非它们在领域语言中有含义。
- 定义保持简洁,一句话以内,说明它“是什么”而非“做什么”。
- 展示关系,使用粗体术语名,并在明显处表达基数。
- 只收录领域术语,跳过通用编程概念(如 array、function、endpoint),除非它们有领域特定含义。
- 自然形成多个聚类时分组为多张表;若所有术语同属一个内聚领域,一张表即可,不必强行分组。
- 编写示例对话,用简短交流展示术语的自然使用及其边界。
使用方式
在对话中调用该技能,它会扫描当前对话并生成术语表文件,同时在对话中给出摘要。
再次运行
在同一对话中再次调用时:读取已有的 UBIQUITOUS_LANGUAGE.md,纳入后续讨论中的新术语,理解演进时更新定义,重新标注新的歧义,并重写示例对话以纳入新术语。
适用场景与限制
适用于需要围绕业务领域统一术语的讨论或开发协作场景,尤其是 DDD 相关的建模与沟通。该技能依赖当前对话内容提取术语,不提供跨对话的术语库管理功能,也不涉及代码实现或自动化集成。主要产出为本地 Markdown 文件与对话内摘要,其他平台支持、收费或价格信息暂未提供。