Skip to content
Skills Library
Programming · Learning & explanation

git-commit-trailers

/git-commit-trailers

Git commit trailer conventions — BREAKING CHANGE, Co-authored-by, Signed-off-by. Use when composing messages with trailers or parsing via git interpret-trailers.

Licence
MIT
Last repository change
24.10.2026

Assessment and security

95/ 100Class: good
Format25 / 25
Frontmatter with name and description, valid name, description up to 1,024 characters, name matching the folder.
Discoverability25 / 25
Description explains when to use the skill, has a reasonable length and uses third person.
Content30 / 35
At least 150 words and at most 500 lines, headings, step lists, examples or code.
Hygiene15 / 15
No placeholders such as TODO, no Windows paths, with a licence.
Riskno signals detected in the scan
Files in this package
1
Scripts
0
HTML comments
0
URLs in SKILL.md
0
Deprecation

No signals detected. Repository changed on 24.10.2026, without references to retired models or APIs.

Licence

MIT, open: use and modify while retaining author attribution.

What it does and when to use it

Git commit trailer conventions — BREAKING CHANGE, Co-authored-by, Signed-off-by. Use when composing messages with trailers or parsing via git interpret-trailers.

Original author description

Git commit trailer conventions — BREAKING CHANGE, Co-authored-by, Signed-off-by. Use when composing messages with trailers or parsing via git interpret-trailers.

How it works

  1. When to Use This Skill
  2. When to Use
  3. Release-Please Trailers
  4. Attribution Trailers
  5. Decision Tree
  6. Detecting Project Conventions
  7. Composing Trailers with git interpret-trailers
  8. Agentic Optimizations
Original SKILL.md headings · 161 lines, 807 words
SKILL.md preview
---
created: 2026-03-05
modified: 2026-05-09
reviewed: 2026-04-25
name: git-commit-trailers
description: "Git commit trailer conventions — BREAKING CHANGE, Co-authored-by, Signed-off-by. Use when composing messages with trailers or parsing via git interpret-trailers."
user-invocable: false
allowed-tools: Bash(git interpret-trailers *), Bash(git log *), Bash(git config *), Read, Grep, Glob
---

# Git Commit Trailers

## When to Use This Skill

| Use this skill when... | Use the alternative when... |
|---|---|
| Adding `BREAKING CHANGE:`, `Release-As:`, `Co-authored-by:`, or `Signed-off-by:` trailers | Use `git-commit-workflow` for the type/scope/subject portion of the message |
| Driving release-please version bumps via trailer metadata | Use `release-please-configuration` to set up the manifest and changelog rules |
| Parsing or programmatically adding trailers via `git interpret-trailers` | Use `github-issue-autodetect` to insert `Fixes #N` / `Closes #N` references |
| Auditing existing commits for missing or malformed trailer keys | Use `git-commit-push-pr` for the end-to-end commit-to-PR macro |

Structured key-value metadata at the end of commit messages. Trailers drive release-please automation, attribution, and issue linking.

## When to Use

| Need | Skill |
|------|-------|
| Trailer lines in commits (this skill) | **git-commit-trailers** |
| Commit message format (type/scope/subject) | **git-commit-workflow** |
| Issue reference keywords (Fixes/Closes/Refs) | **github-issue-autodetect** |
| Release-please config setup | **release-please-configuration** |

## Release-Please Trailers

These trailers directly control version bumps and changelog generation.

### BREAKING CHANGE

Triggers a **major** version bump. Both forms are recognized:

```
feat(api)!: redesign authentication endpoints

BREAKING CHANGE: /v1/users endpoint removed. Use /v2/users instead.
```

| Approach | Example | When to Use |
|----------|---------|-------------|
| `!` suffix | `feat(api)!: remove endpoint` | Short, self-evident breaks |
| Footer trailer | `BREAKING CHANGE: detailed explanation` | Needs migration context |
| Both | `feat!:` subject + `BREAKING CHANGE:` footer | Maximum clarity |

Both `BREAKING CHANGE:` and `BREAKING-CHANGE:` (hyphenated) are recognized.

### Release-As

Force a specific version in the next release. Case-insensitive.

```bash
git commit --allow-empty -m "chore: release 2.0.0" -m "Release-As: 2.0.0"
```

| Use Case | Example |
|----------|---------|
| Initial 1.0.0 from 0.x | `Release-As: 1.0.0` |
| Calendar versioning | `Release-As: 2026.03.0` |
| Skip version numbers | `Release-As: 3.0.0` |

### Multiple Changes in One Commit

A single commit can produce multiple changelog entries via footer messages:

```
feat: add v4 UUID to crypto

This adds support for v4 UUIDs to the library.

fix(utils): unicode no longer throws exception
  BREAKING-CHANGE: encode method no longer throws.

feat(utils): update encode to support unicode
```

Additional conventional commit messages must be at the **bottom** of the commit body.

### BEGIN_COMMIT_OVERRIDE

Edit a **merged** PR body to override its changelog entry. Only works with squash-merge.

```
BEGIN_COMMIT_OVERRIDE
feat: add ability to override merged commit message

fix: correct typo in error message
END_COMMIT_OVERRIDE
```

Use when a commit message needs correction after merge without reverting.

## Attribution Trailers

| Trailer | Format | When to Use |
|---------|--------|-------------|
| `Co-authored-by` | `Name <email>` | Pair programming, AI-assisted work |
| `Signed-off-by` | `Name <email>` | DCO compliance (Linux kernel, CNCF projects) |
| `Reviewed-by` | `Name <email>` | Code review attribution |
| `Tested-by` | `Name <email>` | Test verification |
| `Acked-by` | `Name <email>` | Acknowledgment without full review |

Issue references (`Fixes #N`, `Closes #N`, `Refs #N`) are also trailers — see **github-issue-autodetect** skill.

## Decision Tree

```
What trailers does this commit need?
├─ Breaking API change? → BREAKING CHANGE: <description>
├─ Force specific version? → Release-As: x.x.x
├─ AI-assisted code? → Co-authored-by: Claude <noreply@anthropic.com>
├─ DCO-required project? → Signed-off-by: Name <email>
├─ Fixes/closes an issue? → See github-issue-autodetect
└─ None of the above → No trailers needed
```

**Detect DCO requirement:**
```bash
git log -20 --format='%B' | git interpret-trailers --parse | grep -c "Signed-off-by"
```

## Detecting Project Conventions

Scan recent commits to discover what trailers a project uses:

```bash
# Parse all trailers from recent commits
git log -20 --format='%B' | git interpret-trailers --parse

# List unique trailer types
git log -20 --format='%B' | git interpret-trailers --parse | sort -u -t: -k1,1

# Count trailer usage
git log -50 --format='%B' | git interpret-trailers --parse | cut -d: -f1 | sort | uniq -c | sort -rn
```

Always match existing project conventions before adding new trailer types.

## Composing Trailers with `git interpret-trailers`

```bash
# Add a trailer to a message
echo "feat(auth): add OAuth2" | git interpret-trailers \
  --trailer "Co-authored-by: Claude <noreply@anthropic.com>"

# Add multiple trailers
echo "feat(auth): add OAuth2" | git interpret-trailers \
  --trailer "Co-authored-by: Claude <noreply@anthropic.com>" \
  --trailer "Signed-off-by: Dev <dev@example.com>"

# Parse trailers from last commit
git log -1 --format='%B' | git interpret-trailers --parse
```

## Agentic Optimizations

| Context | Command |
|---------|---------|
| Parse last commit trailers | `git log -1 --format='%B' \| git interpret-trailers --parse` |
| Check DCO convention | `git log -20 --format='%B' \| git interpret-trailers --parse \| grep -c Signed-off-by` |
| Detect trailer patterns | `git log -20 --format='%B' \| git interpret-trailers --parse \| sort -u -t: -k1,1` |
| Count trailer usage | `git log -50 --format='%B' \| git interpret-trailers --parse \| cut -d: -f1 \| sort \| uniq -c \| sort -rn` |

Versions

The database has no other skills named git-commit-trailers.

Database snapshot: 13.11.2026 · package version 97341b7edc0c (SHA-256 digest of the entire package)

Downloads in the last 30 days: 0 · ranking

Report a problem with this skill: harmful content, incorrect descriptions or an author’s removal request.

Similar skills

  • 100commit-with-costs
    Create a git commit with trailers for session cost metrics and Claude attribution. Use when the user asks you to commit changes to git.
  • 100conventional-commit
    Write git commit messages following the Conventional Commits v1.0.0 specification. ALWAYS use this skill when committing code changes, writing commit messages, reviewing or validating commit message format — even when the user simply asks to "commit this" or "write a commit…
  • 100git-practices
    Git conventions for branches, commits, and pull requests. Load this skill whenever creating branches, writing commit messages, or opening PRs. Trigger on any git workflow operation — commits, branches, pull requests, or merge operations.
  • 100git-commit-format
    Apply conventional commit formatting rules. Use when generating commit messages or creating commits.
  • 100commit-style
    This skill should be used when writing git commit messages, creating git commits, composing pull request titles and descriptions, or when the user asks to "commit", "git commit", "write commit message", "pull request", or "PR description". Provides conventions for subject lines,…
  • 100odoo-git
    Odoo's git conventions: commit message format ([TAG] scope: header, a why-first body, reference trailers), which branch a change targets, branch naming, and pull request hygiene. Use when writing or amending a commit message, choosing the branch a fix or feature goes to, or…

Feedback and reports

Your message goes to Bartosz Sokoliński. An email address is needed only for a reply. See the privacy policy.