By ddaanet
Commit-msg git hook that replaces conventional-commit prefixes (feat:, fix:, docs:, ...) with gitmoji emojis. Installs the per-repo hook automatically on SessionStart whenever the plugin is enabled in the current repo.
Commit-msg git hook that replaces conventional-commit prefixes with gitmoji emojis. Ships as a Claude Code plugin with settings-driven opt-in.
On commit, the hook rewrites the first line of the commit message:
feat: add new feature → ✨ add new feature
fix: handle edge case → 🐛 handle edge case
docs: update README → 📝 update README
feat(api): add endpoint → ✨ api: add endpoint
feat!: drop python 3.8 → ✨💥 drop python 3.8
refactor(api)!: rename it → ♻️💥 api: rename it
Mapping in scripts/gitmoji.cfg. The hook is a
no-op for merge, squash, and amend messages, and leaves alone any
message already starting with a known emoji.
Invalid prefix or missing prefix → commit rejected with a listing of valid prefixes.
An optional scope in parentheses is rendered into the rewritten
subject as <scope>: <description>:
feat(api): add endpoint → ✨ api: add endpoint
fix(core/utils): bug → 🐛 core/utils: bug
Scope must be lowercase: [a-z0-9._/-]+. Empty scope (feat(): msg)
is rejected.
Mark a breaking change with ! after the type (and scope, if any). The
hook appends 💥 to the type emoji:
feat!: drop python 3.8 → ✨💥 drop python 3.8
refactor(api)!: rename method → ♻️💥 api: rename method
This follows the Conventional Commits 1.0.0
shorthand. The BREAKING CHANGE: footer is not detected — use !
in the subject line to flag breaking changes. A bare emoji subject like
💥 msg is rejected; declare a type (feat!: …, refactor!: …, etc.)
instead.
Install the plugin from the ddaanet marketplace:
/plugin marketplace add ddaanet/claude-plugins
/plugin install gitmoji@ddaanet
That enables the plugin at user scope (~/.claude/settings.json
gets enabledPlugins["gitmoji@ddaanet"] = true). The plugin's
SessionStart hook then installs .git/hooks/commit-msg in every
repo you open in Claude Code, so commit messages get rewritten
everywhere.
If you want the hook only in specific repos and want teammates to
inherit it automatically, do not enable user-scope (or set it
to false in ~/.claude/settings.json). In each repo where you
want gitmoji active, add to the checked-in .claude/settings.json:
{
"enabledPlugins": {
"gitmoji@ddaanet": true
}
}
Teammates cloning the repo inherit the opt-in. On their first Claude Code session, the plugin's SessionStart installs the hook.
To disable gitmoji in a single repo while keeping it on
elsewhere, add to .claude/settings.local.json (per-user,
gitignored):
{
"enabledPlugins": {
"gitmoji@ddaanet": false
}
}
To remove the hook from one repo:
/gitmoji:uninstall
This removes the marker-tagged hook files from .git/hooks/. It
does not touch enabledPlugins — you control that via
/plugin uninstall or hand-edit.
Important: Run /gitmoji:uninstall in each opted-in repo
before running /plugin uninstall gitmoji@ddaanet. Once the
plugin is uninstalled it can no longer clean up its own hook
files, and the persistent .git/hooks/commit-msg will keep
rewriting your messages. If you've already uninstalled, fall back
to rm .git/hooks/{commit-msg,gitmoji.sh,gitmoji.cfg} (skips
the marker check — only do this if you're sure those files came
from gitmoji).
.git/hooks/ files are treated as a cache, not state. The materializer
only touches files carrying a gitmoji-plugin-installed marker — an
existing commit-msg hook without the marker is left alone and the
materializer prints a notice so you can move it manually.
| Prefix | Emoji | Meaning |
|---|---|---|
feat | ✨ | Introduce new features |
fix | 🐛 | Fix a bug |
docs | 📝 | Add or update documentation |
style | 🎨 | Improve structure / format |
refactor | ♻️ | Refactor code |
perf | ⚡️ | Improve performance |
test | ✅ | Add / update / pass tests |
build | 📦️ | Add or update compiled files or packages |
ci | 👷 | Add or update CI build system |
chore | 🔧 | Add or update configuration files |
revert | ⏪️ | Revert changes |
hotfix | 🚑️ | Critical hotfix |
release | 🔖 | Release / version tags |
Edit scripts/gitmoji.cfg to customise.
bash and git. No jq at runtime — the materializer and
uninstall script are pure shell with no JSON parsing.
MIT
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
npx claudepluginhub ddaanet/claude-plugins --plugin gitmojiPre-/clear task snapshot for Claude Code: agent writes current task + open decisions; at next session start, a hook scrapes the prior transcript and injects task + last-N prompts + files touched into the fresh agent automatically.
Opinionated agent framework for Claude Code
Forces `git status` to run with the Claude Code command sandbox disabled, so it reports the real working tree instead of phantom sandbox-mount entries.
Candidature assistée : préparation, lettre de motivation, CV adapté, relecture, suivi des retours. Stockage Notion. Contenu français.
Shell scripting gotchas skill plus automatic shellcheck feedback on edited shell files
Claude + Obsidian knowledge companion. Sets up a persistent, compounding wiki vault (Karpathy's LLM Wiki pattern). v1.7 "Compound Vault" + v1.8 methodology modes close 5 of 5 priority gaps from the May 2026 compass artifact. Ships: substrate alignment with kepano/obsidian-skills, default Obsidian CLI transport, hybrid retrieval (contextual prefix + BM25 + cosine rerank per Anthropic's Sept 2024 research), per-file advisory locking for multi-writer safety, pre-commit verifier agent, AND methodology modes (LYT / PARA / Zettelkasten / Generic) for first-class organizational support no other Claude+Obsidian competitor offers. v1.7.x audit closure: every BLOCKER + HIGH + MEDIUM + LOW finding from the v1.7.0 audit is CLOSED or DEFERRED-with-rationale. Optional DragonScale Memory extension (log folds, deterministic addresses, semantic tiling lint, boundary-first autoresearch).
Complete AI coding workflow system. Self-correcting memory + persistent FTS5-indexed research wikis + auto-research loop + multi-LLM council on a single SQLite store. 33 skills, 8 agents, 22 commands, 37 hook scripts across 24 events. Cross-agent via SkillKit.
Make your AI agent code with your project's architecture, rules, and decisions.