berkus / koji

🦊 An interactive CLI for creating conventional commits.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

🦊 koji

An interactive CLI for creating conventional commits, built on cocogitto and inspired by cz-cli.

Current Release GitHub Workflow Status Codecov Dependency Status Conventional Commits License

Commit with koji


  • Create conventional commits with ease
  • Use alongside cocogitto for automatic versioning, changelog generation, and more
  • Use emoji πŸ‘‹ (or, shortcodes)
  • Autocomplete for commit scope
  • Run as a git hook
  • Custom commit types



curl -sS | bash


cargo install --locked koji

Be sure to have git installed first.


The basic way to use koji is as a replacement for git commit, enforcing the conventional commit standard by writing your commit through an interactive prompt.

# Do some work
cd dev/nasa
git add stars

# Commit your work

See koji --help for more options.

Using as a git hook

An alternative way to use koji is as a git hook, running it any time you run git commit.


Update .git/hooks/prepare-commit-msg with the following code:

exec < /dev/tty && koji --hook || true


npx husky add .husky/prepare-commit-msg "exec < /dev/tty && koji --hook || true


Add this to your .rusty-hook.toml:

prepare-commit-msg = "exec < /dev/tty && koji --hook || true"

Similar should work for any hook runner, just make sure you're using it with the prepare-commit-msg hook.

When using it as a hook, any message passed to git commit -m will be used for the commit summary. Writing your commit as a conventional commit, e.g. git commit -m "feat(space): delete some stars", will bypass koji altogether.


Config files are prioritized in the following order:

  • Passed in via --config
  • .koji.toml in the working directory
  • ~/.config/koji/config.toml
  • The default config



  • Type: bool
  • Optional: true
  • Description: Prepend the commit summary with relevant emoji based on commit type.
emoji = true


  • Type: bool
  • Optional: true
  • Description: Enables auto-complete for scope prompt via scanning commit history.
autocomplete = true


  • Type: Vec<CommitType>
  • Optional: true
  • Description: A list of commit types to use instead of the default.
name = "feat"
emoji = "✨"
description = "A new feature"


🦊 An interactive CLI for creating conventional commits.

License:MIT License


Language:Rust 96.2%Language:Shell 3.8%