Kind of lightweight combination of Commitizen and Gitmoji to facilitate the writing of conventional commit messages with an emoji and compatible with semantic release.
$ dotnet add package Commitji.Cli
Kind of lightweight combination of Commitizen with Gitmoji to facilitate writing conventional commit messages supported by semantic release and including an emoji compatible with the commit type.

You may have a preferred tool to create commits.
For instance, on Windows, I use GitExtensions 🤩: practical
(as long as you don't mind using the mouse) and powerful user-interface for git.
[S] or [U],[F3]).👉 Commitji is not a replacement for such a tool, it is complementary to it, to help you write commit messages:
commitji in a (separate) terminal to get the commit message template,Following a convention in your commit messages helps to read the commit history. But there are several conventions:
feat, fix, etc.Both are interesting, but they are not compatible with each other. Moreover, only a subset of the conventional commits template is supported by semantic release.
👉 Commitji allows you to get the best of the three worlds, by following conventional commits compatible with semantic release, while using emojis to clarify the type of change, to end up with this template:
<prefix>: <emoji> #description
<BLANK LINE>
[BREAKING CHANGE: #explanation]
The <prefix>, called type in conventional commits, indicates the type of change.
There are 10 prefixes available, almost all directly supported by semantic release:
feat, fix, refactor, test.chore, docs, perf, revert, tidy, wip.Note that there are no build, ci, style.
build and ci can be included
<scope> of the chore prefix, e.g. chore(build): ⬆️ bump dependencies#description, e.g. chore: 🐛 fix CI buildstyle is confusing and not needed:
refactor instead.feat or a fix that you can complement with an UI emoji:
dizzy : 💫 Add or update animations and transitions.iphone : 📱 Work on responsive design.lipstick : 💄 Change the UI visually but not it's behaviour.The <emoji> complements the <prefix>. It is placed in front of the description to clarify the type of change.
There are 75 emojis available, most of them from Gitmoji. It is quite a lot.
👉 Commitji related features:
spa to select sparkles ✨.Gitmoji indicates the emoji codes used on GitHub. But, they may differ on other platforms you are more accustomed to,
like the OS of your mobile phone or the emoji picker on Windows 11 ([Windows]+[.]). For instance, the
Check Mark Button ✅ has the code :white_check_mark: on GitHub,
but it is check mark button on Windows 11, and is also known as Green Tick.
👉 Commitji related features:
check_mark.depe to select a change related to a dependency:
arrow_down : ⬇️ Downgrade dependencies.arrow_up : ⬆️ Upgrade dependencies.heavy_minus_sign : ➖ Remove a dependency.heavy_plus_sign : ➕ Add a dependency.pushpin : 📌 Pin dependencies to specific versions.tick to select either lipstick 💄 or check_mark ✅.The BREAKING CHANGE is an optional section to indicate a breaking change.
👉 Commitji ensures the compatibility with semantic release:
! at the end of type (e.g. feat!)
boom 💥 is used instead to get the same effect☝️ Indicate a breaking change wisely: it's not just about a technical change that may break the code; it should be related to an improvement in your product that is worth the migration cost for your users.
🔗 Practical vs. Strict Semantic Versioning
Commitji is available as a .NET global tool. You can install it using the following command:
dotnet tool install --global Commitji.Cli
You can run Commitji with the command commitji in a terminal. But notice that it will clear the console!
There are several ways to run Commitji in a dedicated windows.
For instance on Windows you can use the command cmd.exe /c "title Commitji && commitji".
/c is to close the windows at the end. Use /k if you want to keep it open.title Commitji is just to ensure that the windows will have a nice title.GitExtensions allows to define a custom script and to attach a hotkey to run it.
[OK] (and not [Apply]) to save the settings.
$host.UI.RawUI.WindowTitle = 'Commitji'; commitji[Ctrl]+[.] ([OemPeriod]), in reference to [Win]+[.] to open the emoji picker in Windows 11.Then, when you want to commit your changes, you can press:
[Ctrl]+[Space] to open the Commit popup[Ctrl]+[.] to open CommitjiNote that Commitji works better with Powershell 7 so make sure to have it installed and set as the Windows default app for .ps1 files.
The tool display a series of questions, mainly to allow you to choose:
feat, fix...) and an emoji amongst a short list of relevant emojis (e.g. sparkles ✨ for feat)lipstick 💄) and a prefix amongst a short list of relevant prefixes (e.g. feat or fix)The default mode is to start with the prefix selection. You can switch to emoji selection by pressing [:].
When you have both the prefix and the emoji, you can indicate if it's a breaking change.
Afterward, the corresponding semantic version change is indicated (Major, Minor, Patch, None),
and the commit message template is displayed. You can copy it to the clipboard by pressing [Enter].
The selection is made in various ways:
[↓]/[↑] to change the selected choice.[Enter].The search is case-insensitive, and has 2 modes:
[Alt]+[F] (or [Ctrl]+[F] when it's not intercepted by the host).[Alt]+[F] again (or [Escape] when it's not intercepted by the host).💡 In the quick search mode, if your input matches nothing, the mode is automatically expanded to full-text and a new search is performed. You will the new matches, if any. If not, the mode will automatically return to quick search mode.
At any time, you can press:
[Alt]+[Z] or [Backspace] to undo the last action (if any).[Ctrl]+[C] to close the tool.💡 These keystrokes are indicated in the hints panel that is updated to match the input and the selection.