Scope: only the terms of the current feature, plus the existing terms it touches. Do not model the whole system. Do not introduce DDD structure: no aggregates, entities, value objects, bounded contexts or repositories.
Inputs
.scratchpad/<slug>/interview-decisions.md- The code, tests and UI text that the feature touches. Existing names win unless they are wrong.
- The UI languages of the project (for example: the shop in Spanish and English, the back office in English only).
Steps
- List every noun and verb in the interview decisions that names a thing, a person, a state or an action of the feature.
- Group synonyms. For each group, choose one term. Prefer the word a user of the feature would say, then the word the code already uses.
- For each term, write one table row: term, definition in one sentence, code identifier (table, column, type, route segment), UI text in each UI language, and the words to avoid.
- For each record with a lifecycle, list its states and the actions that move it between states, with who can do each action. Add a
stateDiagram-v2(plain-visual-docs). - Write the open ambiguities: a word that means two things, or a concept without a name. Resolve each one with the recommended option, or ask the user.
- Check the result against the code. Every identifier that already exists must match its current spelling. Check URL paths, query parameters and form field names too. They are public names that are hard to change later.
Output
Save .scratchpad/<slug>/domain-language.md in the conversation language, with code identifiers as the code spells them. write-acceptance-spec copies the table and the state diagram into a ## Domain language section of the spec, so the language stays in the repository.
From then on, specs, plans, code, tests, commit messages and UI text use only the chosen terms. A review that finds a word from the "avoid" column reports it as a 🟡 finding.
Template
| Term | Definition | Code | UI (es) | UI (en) | Avoid |
| --- | --- | --- | --- | --- | --- |
| order | What a customer bought in one checkout, from payment to delivery or cancellation | `orders`, `Order` | pedido | order | purchase, sale, cart |
Use one UI column per UI language of the project.