Format
Type
The commit type must be one of the following:feat - New Features
feat - New Features
A new feature for the user or a particular part of the application.
fix - Bug Fixes
fix - Bug Fixes
A bug fix that resolves an issue.
docs - Documentation
docs - Documentation
Documentation only changes.
style - Code Style
style - Code Style
Changes that don’t affect code meaning (formatting, missing semicolons, etc.).
refactor - Code Refactoring
refactor - Code Refactoring
Code change that neither fixes a bug nor adds a feature.
test - Testing
test - Testing
Adding missing tests or correcting existing tests.
chore - Maintenance
chore - Maintenance
Changes to build process, dependencies, or auxiliary tools.
ci - CI/CD
ci - CI/CD
Changes to CI/CD configuration files and scripts.
build - Build System
build - Build System
Changes affecting build system or external dependencies.
perf - Performance
perf - Performance
Code changes that improve performance.
revert - Revert Changes
revert - Revert Changes
Reverts a previous commit.
Other Types
Other Types
Additional types used in GAIA:
deps- Dependency updatesinfra- Infrastructure changessecurity- Security fixesenv- Environment configurationi18n- Internationalizationux- User experience improvementsconfig- Configuration changesassets- Asset updatesmeta- Meta changesrelease- Release commits
Scope
The scope is optional but recommended. It provides context about what part of the codebase is affected. Common scopes:agents- Agent systemtools- Agent toolsapi- Backend APIweb- Web applicationdesktop- Desktop applicationmobile- Mobile applicationdb- Databaseauth- Authenticationintegrations- Third-party integrations
Description
The description is a short summary of the change:- Use imperative, present tense: “add” not “added” nor “adds”
- Don’t capitalize first letter
- No period (.) at the end
- Keep it concise (under 72 characters)
Body
The body is optional but recommended for complex changes:- Explain what and why, not how
- Use bullet points for multiple changes
- Wrap at 72 characters
- Separate from description with blank line
Footer
The footer is optional and used for:Breaking Changes
Issue References
Co-authors
Examples
Simple Commit
Commit with Body
Breaking Change
Multiple Changes
Real Examples from GAIA
Feature Addition
Bug Fix
Performance Improvement
Documentation
Commit Message Tips
Write Clear Descriptions
Make the one-line description informative enough to understand the change without reading the body.
Explain Why, Not How
The diff shows how you changed the code. The commit message should explain why.
Commit Message Template
Create a git commit template:Validation
GAIA validates commit messages and PR titles automatically:PR Title Validation
GitHub Actions validates PR titles (.github/workflows/pr-naming-conventions.yml):
Pre-commit Hooks
Optionally add commitlint to pre-commit hooks:Tools
Commitizen
Interactive commit message builder:Git Commit Editor
Use your editor for multi-line commits:Benefits
Following conventional commits provides:Automated Changelogs
Generate changelogs automatically from commit history.
Semantic Versioning
Determine version bumps based on commit types.
Better Git History
Easy to understand project history at a glance.
Automated Releases
Trigger releases automatically based on commits.
Resources
Next Steps
Contributing
Full contribution workflow
Pull Requests
PR requirements and process
Code Style
Code formatting guidelines