mcpField
U
ubiquitous-language

ubiquitous-language

github.com/vinvcn开发5.4k2.1k 次安装2 天前更新
代码仓库

关于 ubiquitous-language

该 skill 从对话中提取领域术语,识别歧义与同义词,并提出规范 glossary。它将术语定义、关系和示例对话写入工作目录中的 UBIQUITOUS_LANGUAGE.md。

主要功能

  1. 01提取领域名词、动词与概念
  2. 02识别歧义、同义词和模糊术语
  3. 03制定规范术语及别名建议
  4. 04按领域分组并定义术语关系
  5. 05生成示例对话
  6. 06创建或更新 UBIQUITOUS_LANGUAGE.md

适用场景

  1. 01统一团队对领域概念的称呼
  2. 02澄清对话中的术语歧义
  3. 03记录领域术语及应避免的别称
  4. 04将后续讨论合并到现有 glossary

安装

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

$npx skills add https://github.com/vinvcn/mattpocock-skills-zh-cn --skill ubiquitous-language

安装后在 Claude Code 中输入/ubiquitous-language确认已加载。

附带文件agents/openai.yaml

详细介绍

通用语言

从当前对话中提取并形式化领域术语,整理成一致的术语表,并保存到本地文件。

流程

  1. 扫描对话,寻找与领域相关的名词、动词和概念
  2. 识别问题:
    • 同一个词被用于不同的概念(歧义)
    • 不同的词被用于同一个概念(同义词)
    • 模糊或含义过多的术语
  3. 提出规范术语表,对术语的选择保持明确立场
  4. 写入 UBIQUITOUS_LANGUAGE.md,在工作目录中使用以下格式
  5. 输出摘要,在对话中内联总结

输出格式

写一个 UBIQUITOUS_LANGUAGE.md 文件,结构如下:

# Ubiquitous Language

## Order lifecycle

| 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 |

## People

| Term         | Definition                                  | Aliases to avoid       |
| ------------ | ------------------------------------------- | ---------------------- |
| **Customer** | A person or organization that places orders | Client, buyer, account |
| **User**     | An authentication identity in the system    | Login, account         |

## Relationships

- An **Invoice** belongs to exactly one **Customer**
- An **Order** produces one or more **Invoices**

## Example dialogue

> **Dev:** "When a **Customer** places an **Order**, do we create the **Invoice** immediately?"
> **Domain expert:** "No — an **Invoice** is only generated once a **Fulfillment** is confirmed. A single **Order** can produce multiple **Invoices** if items ship in separate **Shipments**."
> **Dev:** "So if a **Shipment** is cancelled before dispatch, no **Invoice** exists for it?"
> **Domain expert:** "Exactly. The **Invoice** lifecycle is tied to the **Fulfillment**, not the **Order**."

## Flagged ambiguities

- "account" was used to mean both **Customer** and **User** — these are distinct concepts: a **Customer** places orders, while a **User** is an authentication identity that may or may not represent a **Customer**.

规则

  • 明确表态。 同一概念有多个词时,选择最合适的一个,并将其他词列为应避免的别名。
  • 明确标记冲突。 如果术语在对话中用法模糊,请在“已标记的歧义”部分指出,并给出明确建议。
  • 仅包含领域专家相关的术语。 除非模块或类名在领域语言中有意义,否则跳过。
  • 定义简洁。 最多一句。说明它是什么,而不是说明它做什么。
  • 展示关系。 使用粗体术语名称,并在明显时说明基数。
  • 仅包含领域术语。 跳过通用编程概念(数组、函数、端点),除非它们具有特定领域含义。
  • 按自然形成的类别将术语分组到多个表格中(例如按子领域、生命周期或参与者)。每组都有自己的标题和表格。如果所有术语都属于同一个紧密关联的领域,一个表格就够了,不要强行分组。
  • 编写示例对话。 撰写一段开发者与领域专家之间的简短对话(3-5 轮),展示术语如何自然地相互关联。对话应澄清相关概念的边界,并展示术语的准确用法。

示例对话

开发者:“如何在不使用 Docker 的情况下测试同步服务?”

领域专家:“提供文件系统层,而不是 Docker 层。它实现了相同的 Sandbox 服务接口,但使用本地目录作为 沙盒。”

开发者:“所以 sync-in 仍会创建一个 bundle 并将其解包?”

领域专家:“没错。同步服务不知道它调用的是哪一层。它会调用 exec 和 copyIn;文件系统层只需将它们作为本地 shell 命令运行。”

再次运行

在同一对话中再次调用时:

  1. 读取已有的 UBIQUITOUS_LANGUAGE.md
  2. 合并后续讨论中出现的新术语
  3. 如果理解有所演进,更新定义
  4. 重新标记任何新的歧义
  5. 重写示例对话,纳入新术语

评论

支持 Markdown