Skip to content

FAQ ​

The hook does not ask anything ​

  • The hook skips commits that already have a message: git commit -m, -F, merges, squashes and --amend.
  • It also skips commits without a terminal: IDE git panels, GUI clients, and Windows, where Node cannot open the terminal of a hook. git then opens its editor as usual.
  • A hook in .git/hooks must be executable: chmod +x .git/hooks/prepare-commit-msg.
  • core.hooksPath set by another tool? jazzer init --hook writes the hook there; with husky it goes to .husky/.
  • With commit.template set, git reports every commit as a template commit, and the hook leaves those alone.

npx jazzer runs something else ​

jazzer is the command name, not the package name. Before installing, run npx commit-jazzer; after npm install --save-dev commit-jazzer, npx jazzer works too.

Commitizen uses an old Inquirer. Does that matter? ​

No. Commitizen passes its Inquirer 8 to the adapter; commit-jazzer ignores it and uses the current @inquirer prompts.

How do I commit with a message I already have? ​

git commit -m "…" as usual. With the hook installed it is left alone.

A hook rejected my commit. Do I have to answer everything again? ​

No: jazzer --retry commits the last message again. The message of a jazzer commit that failed stays in .git/commit-jazzer/last-message until a commit goes through. Messages of the hook and of git cz are not stored there, but git keeps them in .git/COMMIT_EDITMSG.

Can I use it without a terminal? ​

Yes. Pass the required answers as flags; see Scripts, CI and coding agents.

How does it compare to other tools? ​

As of October 2026, from the documentation of each tool:

commit-jazzercz-git / czggitmoji-clibetter-commits
Standalone CLI✅✅✅✅
Commitizen adapter✅✅——
prepare-commit-msg hook✅✅✅—
Conventional Commits output✅✅— (:emoji: (scope): title)✅
Non-interactive flags✅aliasesprefill only✅
Reads the commitlint configscopes, lengths✅——
Type and ticket from the branch✅via recipe—✅
ConfigJSON / TS / JS / package.jsonJS / TS / commitlint configJSON / package.jsonJSONC
Built-in prompt translations13 languages— (texts are configurable)——
AI suggestions—✅——

Pick cz-git if you want AI messages or one config file shared with commitlint; gitmoji-cli if you want gitmoji's own format.

How do I add a language? ​

Copy src/core/i18n/locales/en.json, translate the values, and add the language to LANGUAGES in src/shared/constants.ts and to src/core/i18n/i18n.ts. A test checks that every language has the same keys and placeholders.

Released under the MIT License.