Skip to content

Commit a5a5b65

Browse files
fforootdIAM-marcolivio-a
authored
chore: update PR title convention and semantic types in AGENTS.md and CONTRIBUTING.md (zitadel#11620)
Since I and the agents sometimes get confused about which scopes and types to use in our commits and PRs, I've created an explicit list that we can verify against our existing `semantic.yml` file. Co-authored-by: Marco A. <marco@zitadel.com> Co-authored-by: Livio Spring <livio.a@gmail.com>
1 parent e41b70b commit a5a5b65

3 files changed

Lines changed: 73 additions & 6 deletions

File tree

.github/semantic.yml

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,61 @@
11
# Always validate the PR title, and ignore the commits
22
titleOnly: true
3+
4+
# Allowed types — the PR title type must be one of these.
5+
# This list is the single source of truth referenced by AGENTS.md and CONTRIBUTING.md.
6+
types:
7+
- feat # new feature
8+
- fix # bug fix
9+
- docs # documentation only (no code change)
10+
- refactor # code restructuring without behaviour change
11+
- perf # performance improvement
12+
- test # adding or fixing tests
13+
- build # build system or tooling
14+
- ci # CI/CD pipeline
15+
- chore # maintenance (deps, config, etc.)
16+
- revert # reverts a previous commit
17+
18+
# Allowed scopes — if a scope is provided it must match one of these.
19+
# Scopes are optional; omit rather than invent one not on this list.
20+
# Note: 'docs' is a type, not a scope — use the type 'docs' for documentation changes.
21+
# This list is the single source of truth referenced by AGENTS.md and CONTRIBUTING.md.
22+
scopes:
23+
# Backend — domain areas
24+
- api
25+
- session
26+
- authz
27+
- command
28+
- query
29+
- eventstore
30+
- actions
31+
- crypto
32+
- domain
33+
- feature
34+
- idp
35+
- notification
36+
- oidc
37+
- saml
38+
- webauthn
39+
# Backend — infrastructure
40+
- cache
41+
- config
42+
- database
43+
- migration
44+
- setup
45+
- telemetry
46+
- queue
47+
# Frontend
48+
- console
49+
- login
50+
# API layer
51+
- grpc
52+
- proto
53+
# Cross-cutting
54+
- build
55+
- ci
56+
- deps
57+
- i18n
58+
- integration
59+
- perf
60+
- security
61+
- test

AGENTS.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,16 @@ Run commands from the repository root.
9090
- `@zitadel/docs`: `dev`, `build`, `generate`, `check-links`, `check-types`, `test`, `lint`
9191
- `@zitadel/console`: `dev`, `build`, `generate`, `lint`
9292

93+
## PR Title Convention
94+
95+
PR titles are validated by the Semantic PR app. Format:
96+
97+
`<type>(<scope>): <short summary>`
98+
99+
**Types**: must come from the list in [`.github/semantic.yml`](.github/semantic.yml) under `types:` — e.g. `feat`, `fix`, `docs`, `refactor`, `perf`, `test`, `build`, `ci`, `chore`, `revert`.
100+
101+
**Scopes**: optional, but if used must come from the list in [`.github/semantic.yml`](.github/semantic.yml) under `scopes:`. When in doubt, omit the scope — do not invent values not on that list.
102+
93103
## Documentation
94104
- **Human Guide**: See `CONTRIBUTING.md` for setup and contribution details.
95105
- **API Design**: See `API_DESIGN.md` for API specific guidelines.

CONTRIBUTING.md

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -173,15 +173,13 @@ Make sure you use [semantic release messages format](https://github.com/angular/
173173

174174
#### Type
175175

176-
Must be one of the following:
177-
178-
- **feat**: New Feature
179-
- **fix**: Bug Fix
180-
- **docs**: Documentation
176+
Allowed values are listed in [`.github/semantic.yml`](.github/semantic.yml) under `types:`.
181177

182178
#### Scope
183179

184-
This is optional to indicate which component is affected. If in doubt, leave blank (`<type>: <short summary>`)
180+
This is optional to indicate which component is affected.
181+
Allowed values are listed in [`.github/semantic.yml`](.github/semantic.yml) under `scopes:`.
182+
When in doubt, omit the scope — `<type>: <short summary>` is always valid.
185183

186184
#### Short summary
187185

0 commit comments

Comments
 (0)