Gitmoji Commits
Create clean, intentional commits with the right emoji and scope.
Workflow (use in order)
Inspect working tree
- Run:
git status --short and git diff --stat
- Identify file groups by intent (feature, fix, docs, tests, config).
Plan commit boundaries
- Split unrelated work into separate commits.
- Use
git add -p for mixed files.
Choose emoji (core-first)
- Preferred:
bash scripts/gitmoji_selector.sh --emoji-only "<change summary>"
- If unsure/rare case: consult
references/gitmoji-guide.md.
Draft commit message
- Format:
emoji type(scope): subject
- Keep subject imperative and concise (<= 50 chars).
Stage only intended changes
- Run:
git add <file> or git add -p
- Re-check with:
git diff --cached --stat.
Safety check before commit
- Ensure no secrets, debug logs, or accidental churn.
- Ensure commit content matches the message.
Commit and repeat
- Run:
git commit -m "<message>"
- Repeat until working tree is clean.
Commit Format
✨ feat(auth): Add two-factor login
Optional body:
✨ feat(auth): Add two-factor login
- Add TOTP enrollment and verification
- Update auth service and user model
Closes #123
Type Guide
Use Conventional Commit types:
feat, fix, refactor, docs, test, perf, style, chore, ci, build
Common scopes: auth, api, ui, db, ci, deps
Core Emoji Map (auto-detected)
| Type |
Emoji |
Keywords |
| Feature |
✨ |
add, new, implement |
| Bug fix |
🐛 |
fix, bug, error |
| Simple fix |
🩹 |
typo, quick, one-liner |
| Documentation |
📝 |
docs, readme, changelog |
| Tests |
🧪 |
test, spec, integration |
| Refactor |
♻️ |
refactor, extract, restructure |
| Performance |
⚡ |
optimize, perf, cache |
| UI/Styles |
💄 |
css, style, ui, theme |
| Dependencies |
📦 |
npm, dependency, package |
| Security |
🔐 |
security, cve, xss |
| Config |
⚙️ / 🔧 |
config, setup, settings |
| Remove |
🗑️ |
remove, delete, deprecate |
| Major |
🔨 |
rewrite, redesign, architect |
| Deploy |
🚀 |
deploy, release, ship |
| SEO |
🔍 |
seo, metadata |
| i18n |
🗣️ |
translate, locale |
| Linter |
🚨 |
eslint, prettier |
| Automation |
🔄 |
github actions, workflow |
| Test pass |
✅ |
tests passing, green build |
| Upgrade deps |
⬆️ |
upgrade, bump |
| Downgrade deps |
⬇️ |
downgrade |
| Types/Tag |
🏷️ |
type definitions, version tags |
| Copy/Text |
💬 |
copy, strings, text |
| Comments/Notes |
💡 |
comment, todo, note |
| Mocks |
🎭 |
mock, stub |
Special Cases (highest priority)
| Emoji |
When |
| ⏪ |
Revert commits |
| 🔀 |
Merge commits |
| 🚑 |
Hotfix |
| 🚧 |
WIP |
Helper Script
# Emoji only (fast)
bash scripts/gitmoji_selector.sh --emoji-only "fix critical bug"
# JSON suggestion
bash scripts/gitmoji_selector.sh "update api docs"
# Full Conventional Commit
bash scripts/gitmoji_selector.sh --conventional feat auth "Add login"
1---2name: gitmoji-commits3description: Create semantic git commits with gitmoji and Conventional Commits. Use this whenever the user asks to commit, stage changes, split work into multiple commits, choose emojis, or improve commit-message quality.4license: MIT5---67# Gitmoji Commits89Create clean, intentional commits with the right emoji and scope.1011## Workflow (use in order)12131. **Inspect working tree**14 - Run: `git status --short` and `git diff --stat`15 - Identify file groups by intent (feature, fix, docs, tests, config).16172. **Plan commit boundaries**18 - Split unrelated work into separate commits.19 - Use `git add -p` for mixed files.20213. **Choose emoji (core-first)**22 - Preferred: `bash scripts/gitmoji_selector.sh --emoji-only "<change summary>"`23 - If unsure/rare case: consult `references/gitmoji-guide.md`.24254. **Draft commit message**26 - Format: `emoji type(scope): subject`27 - Keep subject imperative and concise (<= 50 chars).28295. **Stage only intended changes**30 - Run: `git add <file>` or `git add -p`31 - Re-check with: `git diff --cached --stat`.32336. **Safety check before commit**34 - Ensure no secrets, debug logs, or accidental churn.35 - Ensure commit content matches the message.36377. **Commit and repeat**38 - Run: `git commit -m "<message>"`39 - Repeat until working tree is clean.4041## Commit Format4243```text44✨ feat(auth): Add two-factor login45```4647Optional body:4849```text50✨ feat(auth): Add two-factor login5152- Add TOTP enrollment and verification53- Update auth service and user model5455Closes #12356```5758## Type Guide5960Use Conventional Commit types:61`feat`, `fix`, `refactor`, `docs`, `test`, `perf`, `style`, `chore`, `ci`, `build`6263Common scopes: `auth`, `api`, `ui`, `db`, `ci`, `deps`6465## Core Emoji Map (auto-detected)6667| Type | Emoji | Keywords |68|------|-------|----------|69| Feature | ✨ | add, new, implement |70| Bug fix | 🐛 | fix, bug, error |71| Simple fix | 🩹 | typo, quick, one-liner |72| Documentation | 📝 | docs, readme, changelog |73| Tests | 🧪 | test, spec, integration |74| Refactor | ♻️ | refactor, extract, restructure |75| Performance | ⚡ | optimize, perf, cache |76| UI/Styles | 💄 | css, style, ui, theme |77| Dependencies | 📦 | npm, dependency, package |78| Security | 🔐 | security, cve, xss |79| Config | ⚙️ / 🔧 | config, setup, settings |80| Remove | 🗑️ | remove, delete, deprecate |81| Major | 🔨 | rewrite, redesign, architect |82| Deploy | 🚀 | deploy, release, ship |83| SEO | 🔍 | seo, metadata |84| i18n | 🗣️ | translate, locale |85| Linter | 🚨 | eslint, prettier |86| Automation | 🔄 | github actions, workflow |87| Test pass | ✅ | tests passing, green build |88| Upgrade deps | ⬆️ | upgrade, bump |89| Downgrade deps | ⬇️ | downgrade |90| Types/Tag | 🏷️ | type definitions, version tags |91| Copy/Text | 💬 | copy, strings, text |92| Comments/Notes | 💡 | comment, todo, note |93| Mocks | 🎭 | mock, stub |9495## Special Cases (highest priority)9697| Emoji | When |98|-------|------|99| ⏪ | Revert commits |100| 🔀 | Merge commits |101| 🚑 | Hotfix |102| 🚧 | WIP |103104## Helper Script105106```bash107# Emoji only (fast)108bash scripts/gitmoji_selector.sh --emoji-only "fix critical bug"109110# JSON suggestion111bash scripts/gitmoji_selector.sh "update api docs"112113# Full Conventional Commit114bash scripts/gitmoji_selector.sh --conventional feat auth "Add login"115```