---
name: formatting-commits
description: Creates commits strictly following Conventional Commits format. Use when committing changes, amending commits, or when the user mentions git commits, conventional commits, or commit messages.
compatibility: Requires `git` and `formatted-commit` CLI tools
license: AGPL-3.0-or-later
metadata:
  author: Amolith <amolith@secluded.site>
---

Create/amend commits exclusively using `formatted-commit`. It has no sub-commands and the following options:

<formatted-commit_flags>
-t --type Commit type (required)
-s --scope Commit scope (optional)
-B --breaking Mark as breaking change (optional)
-m --message Commit message (required)
-b --body Commit body (optional)
-T --trailer Trailer in 'Sentence-case-key: value' format (optional, repeatable)
-a --add Stage all modified files before committing (optional)
--amend Amend the previous commit (optional)
-h --help
</formatted-commit_flags>
<formatted-commit_example>
formatted-commit -t feat -s "web/git-bug" -m "do a fancy new thing" -b "$(cat <<'EOF'
Multi-line

- Body
- Here

EOF
)"
</formatted-commit_example>

Most source code repositories require both an appropriate prefix _and_ scope. Necessity of scope increases with repository size; the smaller the repo, the less necessary the scope. Valid trailers for ticket tracking integration depend on the platform in use.

- GitHub
  - Closes:
  - Fixes:
  - Resolves:
  - References:
- SourceHut
  - Closes:
  - Fixes:
  - Implements:
  - References:

Refer to [installing-formatted-commit.md](references/installing-formatted-commit.md) if it's unavailable.
