Commit Message Convention
This page defines commit message conventions used in this repository.
Commit Message Format
Please provide your project and optionally the ticket number in the commit message subject. For baseline commit style semantics, refer to Conventional Commits.
Use this structure:
<type>(<PROJECT>-<ticket>): <short summary>
or without a ticket number:
<type>(<PROJECT>): <short summary>
Multiple tickets/projects in one scope (space-separated):
<type>(<PROJECT>-<ticket> <PROJECT>-<ticket>): <short summary>
Multiple type(scope): prefixes chained before the summary:
<type>(…): <type>(…): <short summary>
Example:
fix(ZMSKVR-1347): handle unpublished relation filtering
chore(ZMS): update dependencies
feat(ZMS-1 ZMS-2): shared change for two tickets
feat(ZMS-1 ZMS-2): fix(GH-1 ZMS-3): multi-type multi-ticket change
The commit-msg Git hook validates only the subject line. Merge commits use Git’s default Merge branch … subject automatically. See Git hooks (Husky) for setup and troubleshooting.
Required Components
type: The type of change. Common values in this repository:
feat: new feature or capabilityfix: bug fixclean: refactoring/cleanup without behavior changedocs: documentation-only changechore: maintenance/dependency/build tooling changes
project: The project identifier. This should be:
ZMSfor the ZMS projectZMSKVRfor the ZMSKVR projectMPDZBSfor the MPDZBS projectMUXDBSfor the MUXDBS projectGHfor GitHub-only issue tracking
ticket number: Optional digits matching the project ticket/issue ID (for example
ZMSKVR-1347). You may omit the number and use only the project scope (for examplechore(ZMS): …). MultiplePROJECT/PROJECT-123refs may be space-separated inside one scope.summary: A concise imperative statement describing the change intent. When several
type(scope):prefixes are chained, the summary comes after the last prefix.
Examples
feat(ZMS-123): add scope hint support for office mappingfix(ZMSKVR-123): prevent stale provider visibility cache readsclean(ZMS-123): simplify munich transformer duration merge logicchore(ZMSKVR-123): update vitepress dependenciesdocs(ZMS-123): document sadb visibility decision flowchore(ZMS): merge main into feature branchclean(GH): remove obsolete workflowfeat(ZMS-1 ZMS-2): shared change for two ticketsfeat(ZMS-1 ZMS-2): fix(GH-1 ZMS-3): multi-type multi-ticket change
Regular Expression
The subject line validated by the commit-msg hook matches:
^((feat|fix|clean|chore|docs)\(((ZMS|ZMSKVR|MPDZBS|MUXDBS|GH)(-[0-9]+)?)( (ZMS|ZMSKVR|MPDZBS|MUXDBS|GH)(-[0-9]+)?)*\): )+.+$
Merge commits with a subject starting with Merge are exempt (see Git hooks (Husky)).
Additional Guidelines
- Keep the subject line focused on the "why"/intent, not a full changelog.
- Use a body when context is needed (for example migration notes, behavior tradeoffs, or rollout implications).
- Prefer one logical change per commit to keep review and cherry-picking clean.
- For documentation-only updates, use
docs(...)type.