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>
Example:
fix(ZMSKVR-1347): handle unpublished relation filtering
chore(ZMS): update dependencies
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): …).summary: A concise imperative statement describing the change intent.
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 workflow
Regular Expression
The subject line validated by the commit-msg hook matches:
^(feat|fix|clean|chore|docs)\((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.