ubiquitous-language

从当前对话中抽取 DDD 风格的“统一语言”术语表(ubiquitous language glossary),标记歧义,并提出规范的术语选择。保存为 `UBIQUITOUS_LANGUAGE.md`。适用于用户希望定义领域术语、构建术语表、固化用词并强化术语一致性,或提到 “domain model” / “DDD”(领域模型与 DDD)。

Best use case

ubiquitous-language is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

从当前对话中抽取 DDD 风格的“统一语言”术语表(ubiquitous language glossary),标记歧义,并提出规范的术语选择。保存为 `UBIQUITOUS_LANGUAGE.md`。适用于用户希望定义领域术语、构建术语表、固化用词并强化术语一致性,或提到 “domain model” / “DDD”(领域模型与 DDD)。

Teams using ubiquitous-language should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/ubiquitous-language/SKILL.md --create-dirs "https://raw.githubusercontent.com/ProgrammerAnthony/Anything-Extract/main/.agents/skills/ubiquitous-language/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/ubiquitous-language/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How ubiquitous-language Compares

Feature / Agentubiquitous-languageStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

从当前对话中抽取 DDD 风格的“统一语言”术语表(ubiquitous language glossary),标记歧义,并提出规范的术语选择。保存为 `UBIQUITOUS_LANGUAGE.md`。适用于用户希望定义领域术语、构建术语表、固化用词并强化术语一致性,或提到 “domain model” / “DDD”(领域模型与 DDD)。

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# 统一语言(Ubiquitous Language)

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

## 流程(Process)

1. 在对话中扫描领域相关的名词、动词与概念
2. 识别问题:
   - 同一个词被用于不同概念(歧义)
   - 不同词被用于同一概念(同义/别名)
   - 含糊或过载的术语
3. 提出一套“规范/首选”的术语表(带有你自己的选择偏好)
4. 按下方格式写入 `UBIQUITOUS_LANGUAGE.md` 到工作目录
5. 在对话中内联输出一个总结

## 输出格式(Output Format)

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

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

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

1. 读取现有的 `UBIQUITOUS_LANGUAGE.md`
2. 吸收后续讨论中新增的术语
3. 如果理解发生变化,更新定义
4. 将变更过的条目标注为 “(updated)”,新增条目标注为 “(new)”
5. 对任何新增的歧义重新标记
6. 重写示例对话以纳入新术语

## 输出后的指令(Post-output instruction)

写入文件后,在对话里声明:

> 我已写入/更新 `UBIQUITOUS_LANGUAGE.md`。从此刻起,我会持续一致地使用这些术语。如果我偏离了这套语言,或你发现某个术语还应当被添加,请告诉我。

Related Skills

write-a-skill

135
from ProgrammerAnthony/Anything-Extract

以正确的技能结构、渐进式披露与打包资源来创建新的 agent 技能。适用于用户希望创建、编写或构建新的技能。

write-a-prd

135
from ProgrammerAnthony/Anything-Extract

通过用户访谈、代码库探索与模块设计来编写 PRD(产品需求文档),然后以 GitHub issue 的形式提交。适用于用户希望编写 PRD、创建产品需求文档,或规划一个新功能。

triage-issue

135
from ProgrammerAnthony/Anything-Extract

通过探索代码库对 Bug/Issue 进行排查归因,并基于 TDD 方式生成修复计划,同时创建对应的 GitHub issue。适用于用户报告了 bug、希望创建 issue、提到“triage”,或想调查并规划某个问题的修复方案。

tdd

135
from ProgrammerAnthony/Anything-Extract

使用 RED-GREEN-重构(red-green-refactor)循环进行测试驱动开发。适用于用户希望用 TDD 构建新功能或修复 bug,提到 “red-green-refactor”,希望使用集成测试,或询问“test-first development(先写测试)”。

request-refactor-plan

135
from ProgrammerAnthony/Anything-Extract

通过用户访谈创建一个详细的重构计划,并将其拆分成很小的提交(tiny commits),最后以 GitHub issue 的形式归档。适用于用户希望规划一次重构、创建重构 RFC,或把重构拆成安全的渐进步骤。

prd-to-plan

135
from ProgrammerAnthony/Anything-Extract

使用 tracer-bullet 竖向切片方法把 PRD 转换成多阶段的落地实施计划,并保存为本地 Markdown 文件(存放在 `./plans/`)。适用于用户希望把 PRD 拆分为多个阶段、生成实施计划、从 PRD 推导阶段计划,或提到 “tracer bullets”。

prd-to-issues

135
from ProgrammerAnthony/Anything-Extract

使用 tracer-bullet 竖向切片法,把 PRD 拆分成彼此独立、可以直接认领的 GitHub issues(并形成对应的实现工单)。适用于用户想把 PRD 转成 issues、创建实现任务,或把 PRD 拆成工作项。

improve-codebase-architecture

135
from ProgrammerAnthony/Anything-Extract

探索代码库以发现架构改进机会,重点让代码库更容易测试:通过“加深浅模块(deepening shallow modules)”的方式重构模块结构。适用于用户想改善架构、寻找可重构机会、整合强耦合模块、或让代码库更便于 AI 导航与理解。

grill-me

135
from ProgrammerAnthony/Anything-Extract

对用户在计划或设计方面进行“无情的质询”,直到形成共同理解,并逐一解决决策树中每个分支的依赖关系。适用于用户希望对某个计划进行压力测试、希望被严格追问他们的设计,或提到 “grill me(来烤我/质问我)”。

frontend-code-review

135
from ProgrammerAnthony/Anything-Extract

指导在项目中对前端代码(Next.js/React/TypeScript/Tailwind 等)进行结构、可维护性、性能与一致性审查,基于既定规则清单。适用于用户请求审查 .tsx/.ts/.js/.jsx 等前端文件或前端目录下的页面与组件。不用于后端代码(如 .py)。

edit-article

135
from ProgrammerAnthony/Anything-Extract

通过重组文章的段落结构、提升表达清晰度,并收紧措辞来编辑与改进文章。适用于用户希望编辑、修订或完善一份文章草稿。

design-an-interface

135
from ProgrammerAnthony/Anything-Extract

使用并行子 agent 为某个模块生成多个根本不同的接口设计。适用于用户希望设计某个 API、探索接口选项、对比模块形状(module shapes),或提到“design it twice(把它设计两遍)”。