README.md

formatted-commit

Go Report Card

CLI tool that requires conformance with the Conventional Commits specification through flags, made for LLMs and not really for humans (but I guess you can use this directly if you want). Humans would likely prefer, as the author does, meteor.

Installation

As this is mostly meant for agentic coding tools, you'll need one. I like Crush 💘 (and maintain a fork) or OpenCode as the best more-open options and Amp as the overall best option if you don't mind completely proprietary and paying for 100% of your API usage.

You may install formatted-commits manually using the following command. You may also skip this and just add the prompt snippet; it tells the model about the command so it can try to run it on its own or ask you to run it.

go install git.secluded.site/formatted-commits@latest

Copy/paste this into wherever you tell your models how to write commits. For Crush, that might be ~/.config/crush/CRUSH.md or ./CRUSH.md in a repo. For my Crush fork and Amp, that's ~/.config/AGENTS.md. Look up where your tool checks for rules files and put this in a section like ## Creating git commits or something.

Create commits exclusively using `formatted-commit`. Try to use it normally, but if it's not in my PATH, ask me to `go install git.secluded.site/formatted-commit@latest`. It has no sub-commands and the following options:
<formatted-commit_flags>
-b --body Commit body (optional)
-B --breaking Mark as breaking change (optional)
-h --help Help for formatted-commit
-m --message Commit message (required)
-s --scope Commit scope (optional)
-T --trailer Trailer in 'Sentence-case-key: value' format (optional, repeatable)
-t --type Commit type (required)
-v --version Version for formatted-commit
</formatted-commit_flags>
<formatted-commit_example>
formatted-commit -t feat -s "web/git-bug" -m "do a fancy new thing" -T "Crush <crush@charm.land>" -b "$(cat <<'EOF'
Multi-line

- Body
- Here

EOF
)"
</formatted-commit_example>

Contributions

Patch requests are in amolith/llm-projects on pr.pico.sh. You don't need a new account to contribute, you don't need to fork this repo, you don't need to fiddle with git send-email, you don't need to faff with your email client to get git request-pull working...

You just need:

  • Git
  • SSH
  • An SSH key
# Clone this repo, make your changes, and commit them
# Create a new patch request with
git format-patch origin/main --stdout | ssh pr.pico.sh pr create amolith/llm-projects
# After potential feedback, submit a revision to an existing patch request with
git format-patch origin/main --stdout | ssh pr.pico.sh pr add {prID}
# List patch requests
ssh pr.pico.sh pr list amolith/llm-projects

See "How do Patch Requests work?" on pr.pico.sh's home page for a more complete example workflow.

Usage

$ formatted-commit -h

  formatted-commit helps you create well-formatted Git commits that follow
  the Conventional Commits specification with proper subject length validation,
  body wrapping, and trailer formatting.

  USAGE


    formatted-commit [--flags]


  EXAMPLES


    # With co-author
    formatted-commit -t feat -m "do a thing" -T "Crush <crush@charm.land>"

    # Breaking change with longer body
    formatted-commit -t feat -m "do a thing that borks a thing" -B "$(cat <<'EOF'
    Multi-line
    - Body
    - Here

    This is what borked because of new shiny, this is how migrate
    EOF
    )"

    # Including scope for more precise changes
    formatted-commit -t refactor -s "web/git-bug" -m "fancy shmancy" \
      -b "Had to do a weird thing because..."


  COMMANDS

    help [command]  Help about any command

  FLAGS

    -b --body       Commit body (optional)
    -B --breaking   Mark as breaking change (optional)
    -h --help       Help for formatted-commit
    -m --message    Commit message (required)
    -s --scope      Commit scope (optional)
    -T --trailer    Trailer in 'Sentence-case-key: value' format (optional, repeatable)
    -t --type       Commit type (required)
    -v --version    Version for formatted-commit