统一语言(Ubiquitous Language)
SkillDev toolsExtract a DDD-style ubiquitous language glossary from the current conversation, flag ambiguities, and propose standardized terminology choices. Saved as `UBIQUITOUS_LANGUAGE.md`. Use when the user wants to define domain terms, build a glossary, standardize wording, enforce terminology consistency, o
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the 统一语言(Ubiquitous Language) skill
What this skill tells your AI
The instructions your AI receives, as published by programmeranthony/anything-extract in .agents/skills/ubiquitous-language/SKILL.md and read by ahel’s review.
从当前对话中抽取并形式化领域术语,整理为一份一致的术语表,并保存到本地文件中。
流程(Process)
- 在对话中扫描领域相关的名词、动词与概念
- 识别问题:
- 同一个词被用于不同概念(歧义)
- 不同词被用于同一概念(同义/别名)
- 含糊或过载的术语
- 提出一套“规范/首选”的术语表(带有你自己的选择偏好)
- 按下方格式写入
UBIQUITOUS_LANGUAGE.md到工作目录 - 在对话中内联输出一个总结
输出格式(Output Format)
将写出一个 UBIQUITOUS_LANGUAGE.md 文件,结构如下:
# 统一语言(Ubiquitous Language)
## 订单生命周期(Order lifecycle)
| 术语 | 定义 | 应避免的别名 |
|------|-----------|-----------------|
| **Order** | 客户发起的一次购买一个或多个商品的请求 | Purchase, transaction |
| **Invoice** | 在交付之后发送给客户的付款请求 | Bill, payment request |
## 人员(People)
| 术语 | 定义 | 应避免的别名 |
|------|-----------|-----------------|
| **Customer** | 下单的个人或组织 | Client, buyer, account |
| **User** | 系统中的某个认证身份(authentication identity)| Login, account |
## 关系(Relationships)
- **Invoice** 必然且仅必然属于一个且仅一个 **Customer**
- **Order** 会产生一个或多个 **Invoices**
## 示例对话(Example dialogue)
> **Dev:** “当一个 **Customer** 发起 **Order** 时,我们是否会立即创建 **Invoice**?”
> **领域专家(Domain expert):** “不。只有在确认 **Fulfillment** 之后,才会生成 **Invoice**。如果订单中的商品分批发货(**Shipments**),单个 **Order** 可能会产生多个 **Invoices**。”
> **Dev:** “那如果某个 **Shipment** 在发货前被取消,会不会生成对应的 **Invoice**?”
> **领域专家(Domain expert):** “不会。**Invoice** 的生命周期与 **Fulfillment** 绑定,而不是与 **Order** 绑定。”
## 标记出的歧义(Flagged ambiguities)
- “account” 被同时用来表示 **Customer** 和 **User**——这两个概念是不同的:**Customer** 会下订单;而 **User** 是一种认证身份,它可能代表某个 **Customer**,也可能不代表。
规则(Rules)
- 要有主见(Be opinionated)。 当多个词被用于同一概念时,选择最合适的那个,并把其他词作为“应避免的别名”列出。
- 明确标记冲突(Flag conflicts explicitly)。 如果某个术语在对话里出现歧义,请在 “Flagged ambiguities(标记出的歧义)” 部分指出,并给出清晰建议。
- 定义要收敛(Keep definitions tight)。 每个定义最多一句话。说明它“是什么”,而不是它“会做什么”。
- 展示关系(Show relationships)。 使用加粗术语名称,并在显而易见处表达基数/数量关系(cardinality)。
- 只纳入领域术语(Only include domain terms)。 除非这些概念在领域里有特定含义,否则跳过通用编程概念(array、function、endpoint 等)。
- 需要时按自然聚类分多张表。 例如按子领域、生命周期或参与者聚类。每个聚类有自己的标题与表格;如果所有术语都属于同一个紧密领域,也可以只用一张表,不要强行分组。
- 编写示例对话(Write an example dialogue)。 给出一个短对话(3-5 轮),在“开发者(dev)”与“领域专家(domain expert)”之间,展示术语之间如何自然互动。对话应澄清相关概念的边界,并展示术语被精确使用。
重新运行(Re-running)
在同一对话中再次调用本技能时:
- 读取现有的
UBIQUITOUS_LANGUAGE.md - 吸收后续讨论中新增的术语
- 如果理解发生变化,更新定义
- 将变更过的条目标注为 “(updated)”,新增条目标注为 “(new)”
- 对任何新增的歧义重新标记
- 重写示例对话以纳入新术语
输出后的指令(Post-output instruction)
写入文件后,在对话里声明:
我已写入/更新
UBIQUITOUS_LANGUAGE.md。从此刻起,我会持续一致地使用这些术语。如果我偏离了这套语言,或你发现某个术语还应当被添加,请告诉我。
Signals
- GitHub stars
- 139
- Forks
- 28
- Last commit
- May 2026
Advanced
- Catalog kind
- skill
- Gateway key
ubiquitous-language-programmeranthony- Source
- github.com/programmeranthony/anything-extract