12 stable releases
| 3.3.1 | Nov 30, 2025 |
|---|---|
| 3.2.0 | Jan 21, 2025 |
| 3.0.0 | Nov 26, 2024 |
| 2.2.0 | Jan 6, 2024 |
| 1.5.1 | May 1, 2022 |
#1 in #interactive-prompt
530KB
1K
SLoC
🦊 koji
An interactive CLI for creating conventional commits, built on cocogitto and inspired by cz-cli.
Features
- 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
Installation
webi
curl -sS https://webinstall.dev/koji | bash
cargo
cargo install --locked koji
Be sure to have git installed first.
Usage
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/koji
git add README.md
# Commit your work
koji
See koji --help for more options.
Use koji completions <SHELL> to generate completion scripts for your shell.
Using as a git hook
An alternative way to use koji is as a git hook,
running it any time you run git commit.
Manually
Update .git/hooks/prepare-commit-msg with the following code:
#!/bin/bash
exec < /dev/tty && koji --hook || true
husky
npx husky add .husky/prepare-commit-msg "exec < /dev/tty && koji --hook || true
prek / pre-commit
Add the prepare-commit-msg hook type and the koji hook to .pre-commit-config.yaml:
default_install_hook_types: [prepare-commit-msg, ...]
repos:
- repo: local
hooks:
- id: prepare-msg
name: prepare commit message
entry: bash -c "exec < /dev/tty && koji --hook || true"
language: system
stages: [prepare-commit-msg]
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.
Configuration
Config values are prioritized in the following order:
- Passed in as arguments (see:
koji --help) - Read from file passed in via
--config .koji.tomlin the working directory- Unix/Redox:
$XDG_CONFIG_HOME/koji/config.toml~/.config/koji/config.toml
- Windows:
%USERPROFILE%\AppData\Roaming\koji\config.toml
- The default config
Options
autocomplete
- Type:
bool - Optional:
true - Description: Enables auto-complete for scope prompt via scanning commit history.
autocomplete = true
breaking-changes
- Type:
bool - Optional:
true - Description: Enables breaking change prompt.
breaking_changes = true
commit-types
- Type:
Vec<CommitType> - Optional:
true - Description: A list of commit types to use instead of the default.
[[commit_types]]
name = "feat"
emoji = "✨"
description = "A new feature"
emoji
- Type:
bool - Optional:
true - Description: Prepend the commit summary with relevant emoji based on commit type.
emoji = true
issues
- Type:
bool - Optional:
true - Description: Enables issue prompt, which will append a reference to an issue in the commit body.
issues = true
Dependencies
~30–47MB
~767K SLoC
