commit is a CLI program used to manage your conventional commits.
- Interactive prompts for commit type, scope, description
- Enforces the Conventional Commits standard
- Built with Python and the user-friendly
questionaryprompt toolkit - Displays your git status before committing
- Tracks your commit history locally (SQLite database)
- Prevents commits without changes
To use commit, run the following file within the repository:
python3 -m commit.mainTo view your statistics, run the following file with the --stats flag:
python3 -m commit.main --statsAlternatively, you can use the flake provided and run it as a standalone CLI program.
- Clone the repository
- Install the required dependencies (I recommend using
uv) - Alias the entry point to your shell.
# flake.nix
{
description = "Flake with commit";
inputs = {
nixpkgs.url = "github:NixOS/nixpkgs/nixos-25.05";
commit = {
url = "github:1blckhrt/commit";
inputs.nixpkgs.follows = "nixpkgs";
};
};
outputs = {
self,
nixpkgs,
commit,
...
} @ inputs: let
system = "x86_64-linux";
lib = nixpkgs.lib;
forAllSystems = lib.genAttrs [system];
in {
homeConfigurations = {
# replace with your info
"user@host" = home-manager.lib.homeManagerConfiguration {
pkgs = nixpkgs.legacyPackages.${system};
extraSpecialArgs = {inputs = {inherit self nixpkgs commit;};};
modules = [
./home.nix
{
home.packages = [
commit.packages.${system}.default
];
}
];
};
};
};
}
# home.nix
{
config,
pkgs,
inputs,
lib,
...
}: {
home.packages = with pkgs; [
inputs.commit.packages.x86_64-linux.default
];
}You can also install it via the nix profile install command (NOT recommended), but do note that any bugs you may encounter with this tool or your system are your responsibility, not mine.
nix profile install github:1blckhrt/commitContributions are welcome! Please open an issue or submit a pull request for any changes you'd like to make.
- Add more commit types
- Implement more advanced statistics
- Add improved alias installation instructions
- Make the installation process more user-friendly (e.g., provide a setup script or binary)