gitmoji-commit ยท git:20261031.d29d693 ยท 2026-10-31 ยท sha256 725e891b2a8a204f

gitmoji-commit git:20261031.d29d693F

Immutable. This exact content never changes and is served at /api/v1/blob/725e891b2a8a204f.

---
name: gitmoji-commit
description: 'Commit the currently staged files with a gitmoji + conventional-commit message like "๐Ÿ› fix: Fix scrollbar behaviour". Reads the staged diff, picks the emoji and type, adds a scope only in monorepos, splits unrelated changes into several commits when it helps, and runs git commit without pushing. Use when the user says "/gitmoji-commit", "commit my staged files", "write a commit message", or "gitmoji commit".'
---

# Gitmoji commit

Look at what is staged, write a gitmoji commit message, and run `git commit`. **Never push.** The user reviews and pushes themselves.

## Message format

```
<emoji> <type>[(scope)]: <Summary>
```

- **One emoji** from the mapping below, matching the primary purpose of the change.
- **Type** is a Conventional Commit type (`feat`, `fix`, `style`, `refactor`, `docs`, `chore`, `perf`, `test`, `ci`, `build`, `revert`, `dx`, `infra`, ...). Where the table lists several, pick the one that fits the diff.
- **Summary**: sentence case (capital first letter, rest lowercase except proper nouns and identifiers), imperative present tense ("Fix", "Add", "Remove", not "Fixed" or "Adds"), no trailing period, ideally under 72 characters total. Say what changed in plain words, not file names.
- **Scope**: omit by default. Add one only in a monorepo (see below).
- **Body**: omit by default. Only for large changes (many files, or several distinct things in one commit): a blank line, then 2โ€“5 short `- ` bullets of what changed. No explanations of why, no issue numbers.
- Keep the repo's history in mind: run `git log --format=%s -10` and match any local habit that doesn't contradict the above.

Examples:

```
๐Ÿ› fix: Fix scrollbar behaviour
โœจ feat: Add watch tracker support
๐Ÿ’„ style: Make card grid spacing consistent
๐Ÿ› fix(A1): Fix scrollbar behaviour
๐Ÿ“ docs: Update installation guide
```

## Procedure

1. **Inspect the index.**
   - `git status --short` and `git diff --cached --name-status`
   - `git diff --cached --stat`, then `git diff --cached` (for big diffs, read per file or per group).
   - If nothing is staged, say so and stop. Do not stage anything on your own.
   - Ignore pure noise (lockfiles, generated files) when deciding the message, but still commit them with the change that caused them.
2. **Decide whether to split.** Most of the time: one commit. Split only when staged files clearly fall into separate concerns that a reviewer would want as separate commits, for example:
   - a bug fix plus an unrelated docs update,
   - a feature plus an unrelated dependency bump or config change,
   - changes to different projects in a monorepo (always split per project).
   Rules for splitting:
   - Split by **whole files** only. Never use `git add -p` or split hunks. If one file mixes concerns, put it in the commit it mostly belongs to.
   - Don't split into tiny commits. Two or three groups is typical.
   - Tell the user the plan (groups and messages) in a few lines before running it, then continue without waiting.
3. **Commit.**
   - Single commit: `git commit -m "<subject>"` (add a second `-m` for a body). Use the staged index as it is.
   - Split: save the staged file list, `git reset -q` to unstage everything, then for each group `git add -- <files>` and `git commit -m "..."`. Order commits sensibly (e.g. fix before the docs about it). If any step fails, re-stage the files that haven't been committed so the user's index ends up as close to the original as possible, and report what happened.
   - Quote messages safely for the shell in use (PowerShell vs Bash). Emoji need no escaping, but don't use backticks or `$` unquoted.
   - Never use `--no-verify`, `--amend`, or `--force`. If a hook fails, show the error, fix the cause if it is in the staged changes, otherwise stop and report.
   - If the environment asks for an attribution trailer on commits, add it. Otherwise add none.
4. **Report** with `git log --oneline -n <count>` for the commits you made, and remind the user nothing was pushed. Keep it to a couple of lines.

## Monorepo scope

A repo is a monorepo when it holds several independent projects in folders (e.g. `apps/*`, `packages/*`, or top-level folders that each have their own `package.json` / project config), not one app with a `src/` tree.

- If every staged file is inside one project folder: add that folder name as the scope, e.g. `๐Ÿ› fix(A1): Fix scrollbar behaviour`. Use the folder name exactly as it appears.
- If files span multiple projects: split into one commit per project.
- Files at the repo root (README, CI, root config) get no scope.
- In a single-app repo, never add a scope, even for areas like `catalog` or `search`.

When unsure whether a repo is a monorepo, look at the top-level directory listing and `git log` for existing `type(scope):` usage.

## Gitmoji โ†’ type mapping

Pick the emoji by the primary purpose of the change. When several fit, prefer the more specific one.

| Emoji | Type(s) | Meaning |
|---|---|---|
| โœจ | feat | New feature |
| ๐Ÿ› | fix | Fix a bug |
| ๐Ÿš‘๏ธ | fix | Critical hotfix |
| ๐Ÿฉน | fix | Small non-critical fix |
| ๐Ÿฅ… | fix \| refactor | Catch errors |
| ๐Ÿฆบ | feat \| fix | Validation |
| ๐Ÿ‘ฝ๏ธ | fix \| refactor | Adapt to external API changes |
| ๐Ÿ”’๏ธ | fix \| sec | Security or privacy fix |
| ๐Ÿ›‚ | feat \| sec | Auth, roles, permissions |
| ๐Ÿšจ | style \| fix | Fix compiler/linter warnings |
| ๐Ÿ’ฅ | feat! \| fix! | Breaking changes |
| ๐Ÿ’„ | style | UI or styling |
| ๐ŸŽจ | style | Improve code structure/format |
| โœ๏ธ | docs \| style | Fix typos |
| ๐Ÿ“ฑ | style \| feat | Responsive design |
| ๐Ÿ’ซ | style \| feat | Animations or transitions |
| โ™ฟ๏ธ | accessibility \| style | Accessibility |
| ๐Ÿšธ | ux \| feat | Improve user experience |
| ๐Ÿฑ | chore \| style | Assets |
| โšก๏ธ | perf | Performance |
| ๐Ÿงต | refactor \| perf | Concurrency |
| โ™ป๏ธ | refactor | Refactor code |
| ๐Ÿ”ฅ | refactor \| chore | Remove code or files |
| โšฐ๏ธ | refactor | Remove dead code |
| ๐Ÿ—‘๏ธ | refactor \| chore | Deprecate code |
| ๐Ÿšš | refactor \| chore | Move or rename files/paths/routes |
| ๐Ÿ—๏ธ | arch \| refactor | Architectural change |
| ๐Ÿ’ฉ | refactor | Improve poor code |
| ๐Ÿฆ– | refactor | Backwards compatibility |
| ๐Ÿท๏ธ | types \| feat | Add or update types |
| ๐Ÿ“ | docs | Documentation |
| ๐Ÿ’ก | docs | Source code comments |
| ๐Ÿ’ฌ | feat \| docs | Text and literals |
| โœ… | test | Add/update tests |
| ๐Ÿงช | test | Add a failing test |
| ๐Ÿคก | test | Mocks |
| ๐Ÿ“ธ | test | Snapshots |
| ๐Ÿง | chore \| test | Data inspection |
| ๐Ÿ‘ท | ci | CI configuration |
| ๐Ÿ’š | ci | Fix CI build |
| ๐Ÿ”ง | chore | Config files |
| ๐Ÿ”จ | chore | Dev scripts |
| ๐Ÿง‘โ€๐Ÿ’ป | dx \| chore | Developer experience |
| ๐Ÿงฑ | infra \| chore | Infrastructure |
| ๐Ÿš€ | chore \| build | Deploy |
| ๐Ÿ“ฆ๏ธ | build \| chore | Compiled files or packages |
| โž• | chore \| deps | Add a dependency |
| โž– | chore \| deps | Remove a dependency |
| โฌ†๏ธ | chore \| deps | Upgrade dependencies |
| โฌ‡๏ธ | chore \| deps | Downgrade dependencies |
| ๐Ÿ“Œ | chore \| deps | Pin dependency versions |
| ๐Ÿ”– | chore \| release | Release/version tag |
| ๐ŸŽ‰ | chore | Initial commit / project setup |
| ๐Ÿ™ˆ | chore | .gitignore |
| ๐Ÿ“„ | chore | License |
| ๐Ÿ” | chore | Secrets |
| ๐Ÿ‘ฅ | chore | Contributors |
| ๐Ÿ”Š | chore | Add/update logs |
| ๐Ÿ”‡ | chore | Remove logs |
| ๐Ÿ—ƒ๏ธ | db \| chore | Database change |
| ๐ŸŒฑ | db \| chore | Seed files |
| ๐ŸŒ | feat \| i18n | Internationalization |
| ๐Ÿ”๏ธ | seo \| feat | SEO |
| ๐Ÿ“ˆ | feat \| chore | Analytics |
| ๐Ÿšฉ | feat | Feature flags |
| ๐Ÿ‘” | feat | Business logic |
| ๐Ÿฉบ | feat \| chore | Health checks |
| โœˆ๏ธ | feat | Offline support |
| ๐Ÿ’ธ | feat \| chore | Sponsorship/financial infrastructure |
| ๐Ÿฅš | feat | Easter egg |
| โš—๏ธ | experiment \| feat | Experiments/prototypes |
| ๐Ÿป | feat \| refactor | Experimental or playful code |
| ๐Ÿšง | wip | Work in progress |
| โช๏ธ | revert | Revert changes |
| ๐Ÿ”€ | merge | Merge branches |

Source: https://dev-mountain.vercel.app/resources/tools-workflow/commit-lint-guide#gitmoji--commit-type-mapping