SuperAPI AI 工具集

ubiquitous-language

写作与研究

查看项目

更新于 10-15 10:54

技能介绍

用途

Ubiquitous Language 用于从当前对话中提取并形式化领域术语,形成一致的术语表,并保存到本地文件。它面向领域驱动设计(DDD)中的“通用语言”实践,帮助团队在讨论中统一对领域概念的理解。

主要能力

  • 扫描对话中与领域相关的名词、动词和概念。
  • 识别术语问题:同一词用于不同概念(歧义)、不同词用于同一概念(同义词)、含义模糊或过载的术语。
  • 提出带有明确取舍的规范术语表。
  • 将结果写入工作目录下的 UBIQUITOUS_LANGUAGE.md。
  • 在对话中输出摘要。

输出格式

生成的 UBIQUITOUS_LANGUAGE.md 包含以下结构:

  • 标题 # Ubiquitous Language。
  • 按自然聚类分组的表格,每组有独立标题和表格。表格列包括:术语(加粗)、定义、应避免的别名。
  • 关系部分:用加粗术语名表达术语间关系,并在明显处标明基数。
  • 示例对话:一段 3-5 轮的开发者与领域专家之间的简短对话,展示术语如何自然交互,澄清相关概念之间的边界。
  • 被标记的歧义:明确列出对话中含义模糊的术语,并给出清晰建议。

示例表格结构:

Term Definition Aliases to avoid
Order A customer's request to purchase one or more items Purchase, transaction
Invoice A request for payment sent to a customer after delivery Bill, payment request

使用方式

在对话中调用该技能,它会自动扫描当前对话内容并生成术语表。再次在同一对话中调用时,它会:

  1. 读取已有的 UBIQUITOUS_LANGUAGE.md。
  2. 纳入后续讨论中的新术语。
  3. 如果理解发生变化,更新定义。
  4. 重新标记任何新的歧义。
  5. 重写示例对话以纳入新术语。

适用场景

  • 团队在讨论领域模型时希望统一术语。
  • 需要从对话记录中提取并固化领域概念。
  • 发现同一概念被多个词表达,或同一词被用于多个概念,需要澄清。
  • 希望为领域专家和开发者之间建立共同语言。

限制与规则

  • 要有主见:当同一概念存在多个词时,选择最佳的一个,并将其他列为应避免的别名。
  • 明确标记冲突:如果某个术语在对话中被模糊使用,在“被标记的歧义”部分指出并给出明确建议。
  • 只包含对领域专家有意义的术语。除非模块或类名在领域语言中有意义,否则跳过。
  • 定义要简洁:最多一句话。定义它“是什么”,而不是“做什么”。
  • 展示关系:使用加粗术语名,并在明显处表达基数。
  • 只包含领域术语。跳过通用编程概念(如 array、function、endpoint),除非它们有领域特定含义。
  • 当自然聚类出现时(例如按子域、生命周期或参与者),将术语分组到多个表格中。每组有自己的标题和表格。如果所有术语属于单一内聚领域,一个表格即可,不要强行分组。
  • 编写示例对话:一段 3-5 轮的开发者与领域专家之间的简短对话,展示术语如何自然交互。对话应澄清相关概念之间的边界,并展示术语被精确使用。

示例对话

Dev: "How do I test the sync service without Docker?"

Domain expert: "Provide the filesystem layer instead of the Docker layer. It implements the same Sandbox service interface but uses a local directory as the sandbox."

Dev: "So sync-in still creates a bundle and unpacks it?"

Domain expert: "Exactly. The sync service doesn't know which layer it's talking to. It calls exec and copyIn — the filesystem layer just runs those as local shell commands."

暂未提供的信息

关于该技能的收费、价格、平台支持、具体安装命令等,资料中暂未提供。