Skip to main content

Commit Messages

This project uses Conventional Commits for all commit messages. This convention enables automated CHANGELOG generation via git-cliff and makes the commit history scannable at a glance.

Format

<type>(<scope>): <description>

[optional body]

[optional footer(s)]

Rules:

  • Description: imperative mood, lowercase start, no trailing period, max 72 characters
  • Body: wrap at 72 characters, explain WHY not WHAT
  • Multi-scope changes: omit scope — feat: add passenger job queue

Types

TypeWhen to useCHANGELOG section
featNew feature or capabilityAdded
fixBug fixFixed
docsDocumentation onlyDocumentation
ciCI/CD pipeline changesCI/Build
refactorCode restructuring (no behavior change)Changed
styleFormatting, whitespace (no code change)(skipped)
testAdding or updating tests(skipped)
choreMaintenance, dependency updates(skipped)
perfPerformance improvementsPerformance
buildBuild system or external dependency changesCI/Build
revertReverting a previous commitReverted

Scopes

Scopes are optional. Use one when the change is clearly limited to a single area:

ScopeArea
ipaIPA skills framework (.claude/skills/, scripts/)
app-libPython backend library (app-lib/)
web-clientReact frontend (web-client/)
docsDocumentation site (docs/)
infraCloudFormation templates (infra/cfn/)

Examples

feat(ipa): add logs stack for centralized S3 log bucket
fix(web-client): resolve OIDC token refresh race condition
docs: update releasing guide for trunk-based workflow
ci: add manual tag-and-release trigger
refactor(app-lib): extract AbstractDataService from passenger service
chore: bump FastAPI to 0.115.12
build(infra): consolidate backend tier template parameters
perf(app-lib): cache DynamoDB table name resolution

Breaking Changes

Append ! after the type/scope to signal a breaking change:

feat(app-lib)!: change API response format

BREAKING CHANGE: The /api/passengers endpoint now returns paginated
results instead of a flat array. Clients must handle the new
{ items: [], next_token: string } shape.

Both the ! suffix and the BREAKING CHANGE: footer are recognized. Use ! for the subject line; use the footer to describe the migration path.

Release Commits

When preparing a release, use:

chore: release v0.2.0

Tooling

The project uses git-cliff to generate CHANGELOG.md from Conventional Commit history. Configuration is in cliff.toml at the repo root.

Non-conventional commits (from before this convention was adopted) are preserved in the CHANGELOG under "Changed" rather than dropped.