Project

ikuzo

0.0
No release in over a year
Ikuzo delivers short, humorous, and motivational commit messages so you can satisfy Conventional Commit lint rules and get back to coding—life is short, take time to code—whether you call it from the CLI or as a library.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies

Development

~> 2.0
~> 13.0
 Project Readme

ikuzo 行くぞ (いくぞ)

Gem Version

"Buy Me A Coffee"

Ikuzo is a Ruby gem that generates short, motivational commit messages for developers. Use it as a CLI tool or as a library inside your scripts when you need an instant morale boost.

I built it after one too many blank stares at my terminal, trying to squeeze yet another branch name into a Conventional Commit subject. Life is short, take time to code, so I'd rather spend the focus on shipping than negotiating with commit lint rules. With Ikuzo, I can fire off a compliant, upbeat message in seconds and get back to building.

Installation

gem install ikuzo

If you are developing locally:

bundle install

Usage

CLI

Outputs vary because messages are chosen at random. Ikuzo commits automatically; add --no-commit if you only want to print the message.

Commit with a random message (default: feat):

$ ikuzo
git commit -m "feat: main linted the vibes not the code"
[main abc1234] feat: main linted the vibes not the code
 1 file changed, 1 insertion(+)

Print a random message from a specific category without committing:

$ ikuzo funny --no-commit
This commit was pair-programmed with caffeine.

Commit with a random message explicitly (also default behavior):

$ ikuzo commit
git commit -m "It compiled on my machine, scout's honor."
[main abc1234] It compiled on my machine, scout's honor.
 1 file changed, 1 insertion(+)

Skip committing and just print the message:

$ ikuzo --no-commit
feat: main linted the vibes not the code

Specify a category explicitly and commit:

$ ikuzo --category dev
git commit -m "Logs cleaned, metrics gleam."
[main ghi9012] Logs cleaned, metrics gleam.
 1 file changed, 1 insertion(+)

Generate a Conventional Commit message from the current branch (omit --no-commit to auto commit):

$ ikuzo feat --no-commit
feat: main no rubber duck was harmed in this fix

Append BTC or XAU pricing to the generated message (use xau or gold):

$ ikuzo --price=btc --no-commit
fix: stack trace more like snack trace (BTC: $64,123.45)

$ ikuzo --price=xau --no-commit
chore: merge dreams into main (XAU: $2,045.67)

Pricing data comes from CoinGecko (BTC) and GoldPrice.org (XAU). If the lookup fails, Ikuzo keeps the original message without the price suffix. When Ruby cannot complete the HTTPS request, Ikuzo retries with curl if it is available. TLS certificate checks are disabled by default for CoinGecko requests; set IKUZO_INSECURE_SSL=0 if you want to enforce verification instead.

Pick any Conventional Commit type that you need:

$ ikuzo fix
git commit -m "fix: main stack trace more like snack trace"
[main jkl3456] fix: main stack trace more like snack trace
 1 file changed, 1 insertion(+)

Supported types align with the Conventional Commits 1.1.0 spec: build, ci, chore, docs, feat, fix, perf, refactor, revert, style, and test.

List available categories:

$ ikuzo --list-categories
Available categories:
  - general
  - funny
  - motivation
  - dev
  - build - Changes that affect the build system or external dependencies (example scopes: gulp, broccoli, npm)
  - ci - Changes to CI configuration files and scripts (example scopes: Travis, Circle, BrowserStack, SauceLabs)
  - chore - Changes which don't affect source code or tests e.g. build process, auxiliary tools, libraries
  - docs - Documentation only changes
  - feat
  - fix
  - perf
  - refactor
  - revert
  - style
  - test

Show the installed version:

$ ikuzo --version
1.1.0

Each Conventional Commit category builds a <type>: ... message from your current Git branch, appends a cleaned-up motivational quip, and falls back to a default subject if the branch cannot be detected.

Library

require "ikuzo"

message = Ikuzo.random
# Defaults to the feat category
puts message

Development

After checking out the repo, run bundle install to install dependencies. You can run bundle exec rake release to build and release the gem.

License

MIT License © 2025 Dang Quang Minh