Commit Message Standards
This skill ensures consistent, meaningful commit messages following conventional commits.
Quick Reference
Basic Format
code
<type>(<scope>): <subject> <body> <footer>
Commit Types
| English | 中文 | When to Use |
|---|---|---|
feat | 新增 | New feature |
fix | 修正 | Bug fix |
refactor | 重構 | Code refactoring (no functional change) |
docs | 文件 | Documentation only |
style | 樣式 | Formatting (no code logic change) |
test | 測試 | Adding or updating tests |
perf | 效能 | Performance improvement |
build | 建置 | Build system or dependencies |
ci | 整合 | CI/CD pipeline changes |
chore | 維護 | Maintenance tasks |
revert | 回退 | Revert previous commit |
security | 安全 | Security vulnerability fix |
Subject Line Rules
- •Length: ≤72 characters (50 ideal)
- •Tense: Imperative mood ("Add feature" not "Added feature")
- •Capitalization: First letter capitalized
- •No period: Don't end with a period
Detailed Guidelines
For complete standards, see:
Examples
✅ Good Examples (English)
code
feat(auth): Add OAuth2 Google login support fix(api): Resolve memory leak in user session cache refactor(database): Extract query builder to separate class docs(readme): Update installation instructions for Node 20
✅ Good Examples (中文)
code
新增(認證): 實作 OAuth2 Google 登入支援 修正(API): 解決使用者 session 快取記憶體洩漏 重構(資料庫): 提取查詢建構器為獨立類別
✅ Good Example (Bilingual)
code
feat(auth): Add OAuth2 Google login support. 新增 OAuth2 Google 登入支援。 Implement Google OAuth2 authentication flow for user login. 實作 Google OAuth2 認證流程供使用者登入。 Closes #123
❌ Bad Examples
code
fixed bug # Too vague, no scope feat(auth): added google login # Past tense Update stuff. # Period, vague WIP # Not descriptive
Body Guidelines
Use the body to explain WHY the change was made:
code
fix(api): Resolve race condition in concurrent user updates Why this occurred: - Two simultaneous PUT requests could overwrite each other - No optimistic locking implemented What this fix does: - Add version field to User model - Return 409 Conflict if version mismatch Fixes #789
Breaking Changes
Always document breaking changes in footer:
code
feat(api): Change user endpoint response format BREAKING CHANGE: User API response format changed Migration guide: 1. Update API clients to remove .data wrapper 2. Use created_at instead of createdAt
Issue References
code
Closes #123 # Automatically closes issue Fixes #456 # Automatically closes issue Refs #789 # Links without closing
Configuration Detection
This skill supports project-specific language configuration.
Detection Order
- •Check
CONTRIBUTING.mdfor "Commit Message Language" section - •If found, use the specified option (English / Traditional Chinese / Bilingual)
- •If not found, default to English for maximum tool compatibility
First-Time Setup
If no configuration found and context is unclear:
- •Ask the user: "This project hasn't configured commit message language preference. Which option would you like to use? (English / 中文 / Bilingual)"
- •After user selection, suggest documenting in
CONTRIBUTING.md:
markdown
## Commit Message Language This project uses **[chosen option]** commit types. <!-- Options: English | Traditional Chinese | Bilingual -->
Configuration Example
In project's CONTRIBUTING.md:
markdown
## Commit Message Language This project uses **English** commit types. ### Allowed Types feat, fix, refactor, docs, style, test, perf, build, ci, chore, revert, security
License: CC BY 4.0 | Source: universal-dev-standards