···10101111[](https://goreportcard.com/report/git.secluded.site/formatted-commit)
12121313-CLI tool that requires conformance with the Conventional Commits specification
1414-through flags, made for LLMs and not really for the operators (but I guess you
1515-can use this directly if you want). Operators would likely prefer, as the author
1313+CLI tool that produces commits following the Conventional Commits specification
1414+through flags, made for LLMs and not really their operators (but I guess you can
1515+use this directly if you want). Operators would likely prefer, as the author
1616does, [meteor](https://github.com/stefanlogue/meteor).
17171818-`formatted-commit` enforces a 50-character subject limit and sanitises/wraps the body at 72
1919-characters. I might make that configurable. Idk. It's a loose standard held by
2020-projects like the Linux kernel and I try to stick to it.
1818+I've found that LLMs consistently fail to
1919+2020+- Format trailers correctly: they add too many newlines between trailers, which
2121+ breaks tools like `git interpret-trailers`
2222+- Include proper scope notation
2323+- Follow the loose 50/72 subject/body standard held by projects like the Linux
2424+ kernel. I try to stick to it, but LLMs writing badly-formatted commit messages
2525+ means rewording work for me once they're done.
2626+2727+`formatted-commit` enforces all of this. Where possible, we "correct" the
2828+model's input. Where that's less possible, we error. For example, instead of
2929+requiring the model wrap body text at 72 columns, we let it write whatever body
3030+it wants and wrap it ourselves. We can't really fix the subject, so
3131+`formatted-commit` emits an error when the subject is too long with clear
3232+indication of where the 50-character cut-off is.
21332234## Installation
2335