chore: add terminology Markdown catalog for Copilot review (#11764)

## Problem

ZITADEL has inconsistent naming across docs, UI, and API
([#5888](https://github.com/zitadel/zitadel/issues/5888)). We want
contributors and Copilot code-review agents to flag discouraged terms
and suggest canonical replacements automatically.

## Solution

Add a **Markdown terminology catalog** that Copilot agents read
natively.

### What's added

- **`TERMINOLOGY.md`** (repo root) — full ~35-term canonical table from
issue #5888 with:
- Action legend: `keep` / `replace` / `remove` / `internal` / `proposed`
  - Scope legend: `UI` / `Docs` / `API` / `Everywhere`
  - "Search for (discouraged)" and "Replace with / enforce" columns
  - Governance section (how to add new terms, ownership)
- **`.github/instructions/terminology.instructions.md`** — Copilot
`applyTo`-scoped instruction that activates on every PR touching
docs/i18n/proto files and tells the agent:
  - Which files map to which scope
- Not to flag identifiers/field names in proto files (only
comments/descriptions)
  - To request catalog updates when new terms are introduced

### What's updated

- `.github/copilot-instructions.md` — points to `TERMINOLOGY.md`
- `apps/docs/AGENTS.md` — updated reference, removed dead
`check-terminology` Nx target entry
- `.github/pull_request_template.md` — checklist item updated
- `.github/workflows/ready_for_review.yml` — checklist item updated

### Why Markdown over JSON

| | Markdown | JSON |
|---|---|---|
| Copilot reads natively | yes | no (needs parsing context) |
| Mirrors AGENTS.md table style | yes | no |
| Human-readable without tooling | yes | no |
| Mirrors the #5888 issue format | yes | no |
| Requires schema / parser | no | yes |

### Why root over `.github/`

`.github/` is for GitHub-specific automation files. `TERMINOLOGY.md` is
a project-wide convention document — it belongs alongside
`CONTRIBUTING.md`, `CODE_OF_CONDUCT.md`, and `AGENTS.md` at the repo
root.

## How it works in practice

When a PR touches `apps/docs/content/**`, `console/src/assets/i18n/**`,
`apps/login/locales/**`, or `proto/**/*.proto`, Copilot code review
automatically loads `.github/instructions/terminology.instructions.md`
and cross-references `TERMINOLOGY.md` to flag discouraged terms.

Human reviewers see the terminology checklist in the auto-comment on PR
open.

## Checklist
- [x] `TERMINOLOGY.md` at repo root with all ~35 terms from #5888
- [x] Plain text action/scope values (no emojis)
- [x] Copilot instruction file scoped to correct file patterns
- [x] All stale `terminology-rules.json` references removed
- [x] No linter/CI step added (guidelines-only approach)

Relates to: #5888

---------

Co-authored-by: Copilot <[email protected]>
Co-authored-by: Fabienne Bühler <[email protected]>
This commit is contained in:
Florian Forster
2026-03-11 16:20:27 +00:00
committed by GitHub
co-authored by Copilot Fabienne Bühler
parent 574e23e834
commit 4586708c06
6 changed files with 102 additions and 0 deletions
+1
View File
@@ -21,5 +21,6 @@ You are working in the ZITADEL monorepo. This codebase uses specific conventions
- Use verified Nx targets only; if unsure, run `pnpm nx show project <project>`.
- For backend changes, note we are in transition: relational data is becoming the system of record, while event writes are still required for history/audit.
- Respect terminology defined in the `Technical Glossary` section of `AGENTS.md` when generating UI text or documentation.
- For user-facing wording updates across docs/UI/API descriptions, follow the canonical table in `TERMINOLOGY.md` (issue #5888).
- Distinguish between `apps/login` (Next.js) and `console` (Angular) when suggesting frontend code.
- For deployment-related work, consult the directory-specific agents files (e.g., `deploy/compose/AGENTS.md`) for invariants, file conventions, and rejected alternatives.
@@ -0,0 +1,16 @@
---
applyTo: '{apps/docs/content/**/*.mdx,apps/docs/content/**/*.md,console/src/assets/i18n/*.json,apps/login/locales/*.json,internal/static/i18n/*.yaml,internal/static/i18n/*.yml,proto/**/*.proto}'
---
When reviewing user-facing naming changes, enforce the canonical terminology table in `TERMINOLOGY.md`.
### How to apply
- Cross-reference every changed user-facing string against the **Search for (discouraged)** column.
- If a discouraged term is found, flag it and suggest the canonical term from **Replace with / enforce**.
- For `proto/**/*.proto` files: check comments and `description:`/`summary:` text only; do not flag identifiers, field names, or enum values.
- Only apply rules where the **Scope** column matches the file type:
- `UI` → `console/src/assets/i18n/`, `apps/login/locales/`
- `Docs` → `apps/docs/content/`
- `API` → `proto/**`, API description text
- `Everywhere` → all of the above
- If a PR introduces a new policy, setting, or resource term not yet in the table, request that the contributor adds it to `TERMINOLOGY.md`.
+1
View File
@@ -21,6 +21,7 @@ Replace this example text with a concise list of additional changes that this PR
For example:
- The docs explicitly describe that the property XY is mandatory
- Adds missing translations for validations.
- Terminology updates follow issue #5888 and `TERMINOLOGY.md` (including catalog updates for newly introduced terms).
# Additional Context
+1
View File
@@ -15,6 +15,7 @@ jobs:
- [ ] I have reviewed my changes and would approve it
- [ ] Documentations and examples are up-to-date
- [ ] Terminology updates follow issue #5888 and TERMINOLOGY.md
- [ ] Logical behavior changes are tested automatically
- [ ] No debug or dead code
- [ ] My code has no repetitions