Analyze staged changes and generate a commit message following the project's commit convention.
Commit Format
code
<type>(<scope>): <subject> <body>
Types (빈도순)
| Type | Usage | Description |
|---|---|---|
| feat | 32% | New feature or update |
| chore | 30% | Dependencies, releases, config |
| refactor | 12% | Code reorganization |
| ci | 8% | CI/CD workflow changes |
| fix | 5% | Bug fixes |
| docs | 5% | Documentation updates |
| style | 1% | Code formatting (rare) |
| perf | rare | Performance improvements |
| test | rare | Adding or fixing tests |
Style Rules
- •Language: English only
- •Case: All lowercase (type, scope, subject)
- •Emoji: Do not use
- •Length: Keep subject under 50 characters
- •Mood: Imperative ("add" not "added")
- •Punctuation: No period at end
Scope Usage (40% of commits)
Use scope selectively:
- •
(deps): Dependency updates →chore(deps): bump next.js - •
(release): Version releases →chore(release): v1.2.3 - •
(security): Security patches →fix(security): patch vulnerability - •Most commits: Skip scope →
feat: add button component
Body Format (for complex changes)
Use bullet points with type prefixes:
code
feat: migrate to vanilla-extract * feat: add vanilla-extract/css * refactor: migrate layout components * refactor: migrate button component * chore: update vite plugin
Process
- •Run
git diff --stagedto analyze changes - •Determine the primary change type
- •Decide if scope is needed (deps/release/security)
- •Write concise lowercase subject
- •Add bullet-point body for multiple changes
- •Present ready-to-execute commit command
Examples
Simple feature:
code
feat: add loading state to button
Dependency update:
code
chore(deps): bump react to 19.0.0
Complex change with body:
code
feat: implement dark mode * feat: add theme context provider * refactor: update color tokens * docs: update readme
Release:
code
chore(release): v2.1.0