Generates commit messages following the gitmoji convention (https://gitmoji.dev) — picks the right emoji for the intent of the change and writes a well-formed message. Use when asked to "write a gitmoji commit", "add an emoji to my commit message", "which gitmoji should I use", "gitmoji this change", or when a project uses gitmoji-style commit messages. Works from a git diff, staged changes, or a plain description of the change. Generates the message only — does not run git commands.
npx skills add https://github.com/github/awesome-copilot --skill gitmoji
Generates commit messages that follow the gitmoji convention: every commit starts with an emoji that identifies the intent of the change at a glance. Given a diff, a list of staged files, or a plain description of a change, this skill picks the single most appropriate gitmoji and writes a concise, well-formed commit message around it.
This skill only generates the message — it never runs git commit or any other git command. The output is a copyable message for the user to use.
When not to use: if the project follows plain Conventional Commits (feat:, fix:, ...) without emojis, use the conventional-commit or commit-message-storyteller skill instead. If unsure which convention the project uses, ask the user to provide recent commit history (for example, the output of git log --oneline -10).
The gitmoji specification:
<intention> [scope?][:?] <message>
Examples:
✨ add multi-tenant support to the billing service
🐛 (auth) prevent token refresh loop on expired sessions
♻️ (api): extract pagination logic into shared helper
Gitmoji supports two equivalent notations:
| Style | Example | When to prefer |
|-------|---------|----------------|
| Unicode | ✨ add dark mode | Default — renders everywhere, shorter subject line |
| Shortcode | :sparkles: add dark mode | Platforms that render shortcodes (GitHub, GitLab) or teams that grep commit logs by code |
Match the repository's existing history. If recent commits use :sparkles:-style shortcodes, generate shortcodes; otherwise default to unicode emojis.
Work from whatever the user provides:
If the intent is genuinely ambiguous (e.g. "updated auth.js" could be a fix, a feature, or a refactor), ask one short clarifying question rather than guessing.
Determine the primary purpose of the change. Common intents and their gitmojis:
| Emoji | Shortcode | Intent |
|-------|-----------|--------|
| ✨ | :sparkles: | Introduce new features |
| 🐛 | :bug: | Fix a bug |
| 🚑️ | :ambulance: | Critical hotfix |
| 📝 | :memo: | Add or update documentation |
| ♻️ | :recycle: | Refactor code (no behavior change) |
| ✅ | :white_check_mark: | Add, update, or pass tests |
| ⚡️ | :zap: | Improve performance |
| 🎨 | :art: | Improve structure / format of the code |
| 🔥 | :fire: | Remove code or files |
| 🔒️ | :lock: | Fix security or privacy issues |
| ⬆️ | :arrow_up: | Upgrade dependencies |
| 🔧 | :wrench: | Add or update configuration files |
| 💄 | :lipstick: | Add or update the UI and style files |
| 💥 | :boom: | Introduce breaking changes |
| 🚨 | :rotating_light: | Fix compiler / linter warnings |
| 🌐 | :globe_with_meridians: | Internationalization and localization |
This is only the most common subset — always consult references/gitmoji-reference.md for the full official list of 75 gitmojis before settling on one; a more specific emoji often exists (e.g. 🩹 for a trivial fix, ✏️ for a typo, 🚚 for a file move).
Rules for ambiguous cases:
Produce the commit message in a copyable code block, followed by one line explaining why that gitmoji was chosen. Do not execute git commit.
Example output:
🐛 (auth) prevent token refresh loop on expired sessions
Expired sessions triggered a refresh that failed validation and
re-triggered itself, crashing the app. A recursion guard now aborts
the cycle and returns a clean 401.
> Why 🐛: the change corrects incorrect runtime behavior — a bug fix, not urgent enough for 🚑️.
| Situation | How to Handle |
|-----------|---------------|
| Mixed changes (e.g. feature + refactor in one diff) | Pick the emoji for the *dominant* intent, and suggest splitting into separate commits if the concerns are unrelated |
| Breaking change | Use 💥 as the intention and describe the break in the body |
| Revert | ⏪️ with a subject referencing the reverted commit |
| Merge commit | 🔀 merge branch '<name>' into <target> |
| Initial commit | 🎉 begin project |
| Work in progress | 🚧 with a clear note of what remains |
| No matching emoji feels right | Re-scan the full reference; if still nothing fits, fall back to the closest generic intent (✨, 🐛, or ♻️) |
# Get your staged diff to paste into Copilot
git diff --staged
# Check which emoji style the repo already uses
git log --oneline -10
See references/gitmoji-reference.md for the complete official gitmoji list.
Comprehensive GitHub code review with AI-powered swarm coordination
Create high-quality git commits: review/stage intended changes, split into logical commits, and write clear commit messages (including Conventional Commits). Use when the user asks to commit, craft a commit message, stage changes, or split work into multiple commits.
Comprehensive truth scoring, code quality verification, and automatic rollback system with 0.95 accuracy threshold for ensuring high-quality agent outputs and codebase reliability.
GitHub CLI (gh) comprehensive reference for repositories, issues, pull requests, Actions, projects, releases, gists, codespaces, organizations, extensions, and all GitHub operations from the command line.
GitHub CLI - manage repositories, issues, pull requests, actions, releases, and more from the command line.
You are a code refactoring expert specializing in clean code principles, SOLID design patterns, and modern software engineering best practices. Analyze and refactor the provided code to improve its quality, maintainability, and performance.
You are a technical debt expert specializing in identifying, quantifying, and prioritizing technical debt in software projects. Analyze the codebase to uncover debt, assess its impact, and create acti
Refactor legacy codebases, migrate outdated frameworks, and implement gradual modernization. Handles technical debt, dependency updates, and backward compatibility. Use PROACTIVELY for legacy system updates, framework migrations, or technical debt reduction.
Take github/gitmoji from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.