{"id":14567817,"url":"https://github.com/cococonscious/koji","last_synced_at":"2025-09-04T09:32:30.153Z","repository":{"id":39986233,"uuid":"419508134","full_name":"cococonscious/koji","owner":"cococonscious","description":"🦊 An interactive CLI for creating conventional commits. ","archived":false,"fork":false,"pushed_at":"2024-12-27T23:07:23.000Z","size":2214,"stargazers_count":259,"open_issues_count":11,"forks_count":9,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-12-28T00:17:41.649Z","etag":null,"topics":["cli","conventional-commits","developer-tools","git","rust","rust-cli","semver"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cococonscious.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-10-20T22:30:23.000Z","updated_at":"2024-12-27T22:35:01.000Z","dependencies_parsed_at":"2024-01-06T17:41:18.124Z","dependency_job_id":"b137087e-344f-4972-8a5f-1c3b47fb5b77","html_url":"https://github.com/cococonscious/koji","commit_stats":null,"previous_names":["cococonscious/koji"],"tags_count":19,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cococonscious%2Fkoji","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cococonscious%2Fkoji/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cococonscious%2Fkoji/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cococonscious%2Fkoji/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cococonscious","download_url":"https://codeload.github.com/cococonscious/koji/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":231949212,"owners_count":18450456,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","conventional-commits","developer-tools","git","rust","rust-cli","semver"],"created_at":"2024-09-07T06:01:09.239Z","updated_at":"2024-12-31T05:32:24.195Z","avatar_url":"https://github.com/cococonscious.png","language":"Rust","readme":"\u003cdiv align=\"center\"\u003e\n  \u003ch1\u003e🦊 koji\u003c/h1\u003e\n\n  An interactive CLI for creating [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/),\n  built on [cocogitto](https://github.com/oknozor/cocogitto) and inspired by\n  [cz-cli](https://github.com/commitizen/cz-cli).\n  \n  [![GitHub Actions Workflow Status](https://img.shields.io/github/actions/workflow/status/cococonscious/koji/push-pr-lint-test.yml)](https://github.com/cococonscious/koji/actions/workflows/push-pr-lint-test.yml?query=branch%3Amain)\n  [![Codecov](https://img.shields.io/codecov/c/gh/cococonscious/koji)](https://codecov.io/gh/cococonscious/koji)\n  [![Crate Version](https://img.shields.io/crates/v/koji)](https://crates.io/crates/koji)\n  [![Current Release](https://img.shields.io/github/v/release/cococonscious/koji)](https://github.com/cococonscious/koji/releases)\n  [![Dependency Status](https://deps.rs/repo/github/cococonscious/koji/status.svg)](https://deps.rs/repo/github/cococonscious/koji)\n  [![License](https://img.shields.io/github/license/cococonscious/koji)](LICENSE)\n\n  [![Commit with koji](https://github.com/cococonscious/koji/raw/main/meta/demo.gif)](https://github.com/cococonscious/koji/raw/main/meta/demo.gif)\n\u003c/div\u003e\n\n## Features\n\n- Create conventional commits with ease\n- Use alongside [cocogitto](https://github.com/oknozor/cocogitto)\nfor automatic versioning, changelog generation, and more\n- Use emoji 👋 (or, [shortcodes](https://github.com/ikatyang/emoji-cheat-sheet))\n- Autocomplete for commit scope\n- Run as a git hook\n- Custom commit types\n\n## Installation\n\n### webi\n\n```bash\ncurl -sS https://webinstall.dev/koji | bash\n```\n\n### cargo\n\n```bash\ncargo install --locked koji\n```\n\nBe sure to have [git](https://git-scm.com/) installed first.\n\n## Usage\n\nThe basic way to use koji is as a replacement for `git commit`,\nenforcing the [conventional commit](https://www.conventionalcommits.org/en/v1.0.0/)\nstandard by writing your commit through an interactive prompt.\n\n```bash\n# Do some work\ncd dev/koji\ngit add README.md\n\n# Commit your work\nkoji\n```\n\nSee `koji --help` for more options.\n\nUse `koji completions \u003cSHELL\u003e` to generate completion scripts for your shell.\n\n## Using as a git hook\n\nAn alternative way to use koji is as a [git hook](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks),\nrunning it any time you run `git commit`.\n\n### Manually\n\nUpdate `.git/hooks/prepare-commit-msg` with the following code:\n\n```bash\n#!/bin/bash\nexec \u003c /dev/tty \u0026\u0026 koji --hook || true\n```\n\n### [husky](https://github.com/typicode/husky)\n\n```bash\nnpx husky add .husky/prepare-commit-msg \"exec \u003c /dev/tty \u0026\u0026 koji --hook || true\n```\n\n### [rusty-hook](https://github.com/swellaby/rusty-hook)\n\nAdd this to your `.rusty-hook.toml`:\n\n```toml\nprepare-commit-msg = \"exec \u003c /dev/tty \u0026\u0026 koji --hook || true\"\n```\n\nSimilar should work for any hook runner, just make sure you're using\nit with the `prepare-commit-msg` hook.\n\nWhen using it as a hook, any message passed to `git commit -m` will be used\nfor the commit summary. Writing your commit as a conventional commit,\ne.g. `git commit -m \"feat(space): delete some stars\"`, will bypass\nkoji altogether.\n\n## Configuration\n\nConfig values are prioritized in the following order:\n\n- Passed in as arguments (see: `koji --help`)\n- Read from file passed in via `--config`\n- `.koji.toml` in the working directory\n- `~/.config/koji/config.toml`\n- The [default](https://github.com/cococonscious/koji/blob/main/meta/config/default.toml) config\n\n### Options\n\n#### `autocomplete`\n\n- Type: `bool`\n- Optional: `true`\n- Description: Enables auto-complete for scope prompt via scanning commit history.\n```toml\nautocomplete = true\n```\n\n#### `breaking-changes`\n- Type: `bool`\n- Optional: `true`\n- Description: Enables breaking change prompt.\n```toml\nbreaking_changes = true\n```\n\n#### `commit-types`\n\n- Type: `Vec\u003cCommitType\u003e`\n- Optional: `true`\n- Description: A list of commit types to use instead of the [default](https://github.com/cococonscious/koji/blob/main/meta/config/default.toml).\n```toml\n[[commit_types]]\nname = \"feat\"\nemoji = \"✨\"\ndescription = \"A new feature\"\n```\n\n#### `emoji`\n\n- Type: `bool`\n- Optional: `true`\n- Description: Prepend the commit summary with relevant emoji based on commit type.\n```toml\nemoji = true\n```\n\n#### `issues`\n\n- Type: `bool`\n- Optional: `true`\n- Description: Enables issue prompt, which will append a reference to an issue in the commit body.\n```toml\nissues = true\n```\n\n","funding_links":[],"categories":["Rust"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcococonscious%2Fkoji","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcococonscious%2Fkoji","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcococonscious%2Fkoji/lists"}