agentsclimarketplace

Gitmoji commit

Skill colachg/skills/plugins/colachg/skills/gitmoji-commit

Plan and create git commits in the Gitmoji + Conventional Commits style β€” a leading emoji (✨, πŸ›, ♻️ …) plus a conventional type, like "✨ feat: add avatar upload". Splits a working tree into a clean sequence of reviewable, logically-grouped commits, isolates lockfiles into their own final commit, and runs the signed git commands. Use whenever the user wants help committing changes, writing/improving a commit message, asks "how should I commit this", wants to break work into reviewable commits, or mentions gitmoji/git-emoji/emoji commits. Shows the plan, then runs git add and git commit itself.From its SKILL.md

Install
npx -y skills add colachg/skills --skill gitmoji-commit

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

7.6 KB, ~1.9k tokens by cl100k_base, as published. Nobody here has run it

Gitmoji Commit

Turn a pile of working changes into a clean sequence of commits, each styled as an emoji + conventional type + imperative subject:

✨ feat: add avatar upload to the profile page

You plan, show the plan, then run it. Lay out the commit sequence so the user can see what's coming, then run the git add and git commit commands yourself.

Workflow

  1. Survey everything. Don't trust what's staged. Run git status, git diff --staged, git diff, and open untracked files. Read the substance, not filenames β€” a tests/ change may belong to a feature; a .md file may be docs or just a comment.

  2. Group into atomic commits. Each commit = one coherent concern a reviewer can follow on its own.

    • Keep related edits together (feature + its tests + its doc note = one story).
    • Split unrelated edits apart, even if staged together now.
    • Separate mechanical noise (formatting, renames, generated files) from logic β€” give it its own commit.
    • Default to file-level grouping for clean copy-paste (git add path/a path/b). Only suggest git add -p when one file mixes two concerns β€” and warn it's interactive.
    • Dependencies: bundle the manifest (package.json, pyproject.toml, Cargo.toml) with the feature when the feature uses the dep it adds. Give independent bumps their own commit. The lockfile is always separate and last (see below).
  3. Order sensibly. Foundational/prep first, the feature/fix that uses them next, mechanical/generated changes (formatting, lockfiles) last. Ideally the tree builds at every step.

  4. For each commit, prepare three things: the gitmoji message (subject + a why-focused body when non-trivial), the git add command(s) staging exactly that group, and a signed git commit.

  5. Show the plan, then run it. Present the commits as an ordered sequence so the user sees what's about to happen, then execute the git add / git commit commands in order. If a commit fails (e.g. signing not configured, pre-commit hook rejects), stop, report what happened, and don't blindly continue the sequence.

Lockfiles go last, in their own commit

Lockfiles always get their own commit, ordered last, never mixed with source:

package-lock.json, npm-shrinkwrap.json, yarn.lock, pnpm-lock.yaml, bun.lock, bun.lockb β€” and other ecosystems' lockfiles (Cargo.lock, poetry.lock, composer.lock).

Why: they're large, generated, and conflict constantly. Conflicts are resolved by regenerating (npm install, etc.), not hand-merging. Isolating them keeps that regeneration off your real source changes.

Use πŸ“¦οΈ build (or βž•/βž–/⬆️ for add/remove/upgrade), e.g. πŸ“¦οΈ build: update package-lock.json.

Sign each commit

Add -S to every git commit so commits are signed:

git commit -S -m "✨ feat: ..."

Check whether signing is configured before running anything: git config --get commit.gpgsign and git config --get user.signingkey. If neither is set, -S will make the commit fail β€” so don't run it. Instead, tell the user signing isn't set up (point to git config user.signingkey / gpg.format) and ask whether to commit without -S or hold off while they configure a key.

Message format

  • Subject: <emoji> <type>: <description> β€” e.g. πŸ› fix: handle null user in payment processor.
    • Imperative mood ("add", "fix" β€” not "added"). Lowercase first word, no trailing period.
    • Aim ~50 chars, hard-stop ~72. One space after the emoji. Some emoji (πŸš‘οΈ πŸ”’οΈ πŸ“¦οΈ) carry a variation selector β€” copy them as-is.
  • Scope (optional): ✨ feat(auth): add SSO login β€” use when the repo has clear modules, skip when it'd be noise.
  • Body (optional, for non-trivial changes): blank line, then the why and context β€” not a restatement of the diff. Wrap ~72 chars.
  • Breaking changes: πŸ’₯ with ! after the type and a BREAKING CHANGE: footer, e.g. πŸ’₯ feat!: drop support for Node 16.
  • Issue refs: footer like Refs: #123 / Closes: #123 when a ticket is mentioned.

Emoji β†’ type (common cases)

Pick the single emoji that fits the dominant change; the type follows. Full list of all 73 in references/gitmojis.md. When two rows fit, prefer the more specific (πŸš‘οΈ over πŸ› for a hotfix; ⚰️ over πŸ”₯ for dead code).

IntentEmojiType
New feature✨feat
Bug fixπŸ›fix
Critical hotfixπŸš‘οΈfix
Simple non-critical fix🩹fix
Security/privacy fixπŸ”’οΈfix
Fix typos✏️fix
DocumentationπŸ“docs
Comments in sourceπŸ’‘docs
Refactor (no behavior change)♻️refactor
Improve structure / format🎨refactor
Remove code or filesπŸ”₯refactor
Remove dead code⚰️refactor
Move or rename🚚refactor
Performance⚑️perf
Testsβœ…test
Failing test (TDD)πŸ§ͺtest
UI / style filesπŸ’„style
Compiler / linter warnings🚨style
Config filesπŸ”§chore
Work in progress🚧chore
Dev scriptsπŸ”¨chore
LogsπŸ”Šchore
DeployπŸš€chore
Release / version tagπŸ”–chore
Begin a projectπŸŽ‰chore
Add dependencyβž•build
Remove dependencyβž–build
Upgrade dependencies⬆️build
Downgrade dependencies⬇️build
Pin dependenciesπŸ“Œbuild
Lockfiles / compiled packagesπŸ“¦οΈbuild
Add/update CIπŸ‘·ci
Fix CI buildπŸ’šci
Revertβͺ️revert
Merge branchesπŸ”€(merge)
Breaking changesπŸ’₯feat!/fix!
Types🏷️feat

Worked example

git status shows: a new debounce on a search input (search.js) + its test (search.test.js), the lodash.debounce dep it uses in package.json, an unrelated typo fix in README.md, and a regenerated package-lock.json.

The feature uses the new dep, so the manifest rides with it β†’ two concerns + a lockfile β†’ three commits, lockfile last. Show this plan, then run the commands in order:

# 1 β€” feature, its test, and the dependency it needs (one buildable story)
git add src/search.js src/search.test.js package.json
git commit -S -m "✨ feat(search): debounce query input" -m "Searching fired a request on every keystroke, hammering the API on fast typers. Debounce by 300ms so we only query once typing settles. Adds lodash.debounce and a test covering the timing."

# 2 β€” unrelated docs typo, on its own
git add README.md
git commit -S -m "✏️ fix: correct typo in README setup steps"

# 3 β€” lockfile last, isolated so a merge conflict can just be regenerated
git add package-lock.json
git commit -S -m "πŸ“¦οΈ build: update package-lock.json"

Single-commit change, no body β€” one -m is enough:

git add report.py
git commit -S -m "♻️ refactor(report): simplify build with a line-total helper"

If the user wants everything as one commit, pick the emoji for the most significant change and say what you set aside.

What ships with it: 1 file

5.4 KB alongside SKILL.md

references/

Gives 1 of the 12 instructions most pr commit review skills give in ~1.9k tokens

Counted across 888 of the 1,342 authors here whose files we hold, read 2026-08-07

  • Use conventional commits formatin 127 of 888, across 115 files
  • Keep subject line under 72 charactersin 62 of 888, across 48 files
  • Delete branches after mergein 51 of 888, across 38 files
  • Use imperative mood in subject linein 51 of 888, across 42 files
  • Use imperative mood in commit messagesin 44 of 888
  • Verify directory is ignored before creating worktreein 43 of 888, across 12 files
  • Generate a conventional commit messagein 43 of 888
  • Add unignored worktree directories to gitignorein 42 of 888, across 10 files
  • Make atomic commitsin 39 of 888, across 27 files
  • Run tests before committingin 36 of 888, across 25 files
  • Verify clean test baselinein 35 of 888, across 9 files
  • Split unrelated changes into separate commitshere, and in 35 of 888, across 30 files

Said here and by no other author read

  • group changes into reviewable atomic commits
  • keep related edits in one commit
  • check commit signing configuration before committing
  • stop the sequence if a commit fails

Grouped from the skills themselves: near-identical wordings counted once, and counted by distinct author, so one author publishing three of these counts once. Length counted with cl100k_base; the agent that loads this file may tokenize it differently.

Keep looking

Skills are one crate of 326,499. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.