Config-driven branch and release helpers for Git repositories
Project description
repo-release-tools
repo-release-tools keeps release policy boring in the best possible way.
Use it from GitHub Marketplace when you want CI to validate branch names, commit subjects, and changelog policy. Install it from PyPI when you want a local CLI, hook integration, version bumps, and release-branch automation.
- GitHub Marketplace action: https://github.com/marketplace/actions/repo-release-tools-policy-checks
- PyPI package: https://pypi.org/project/repo-release-tools/
Choose your entry point
Use the GitHub Action for CI policy checks
Choose the action if you want pull requests and pushes to fail fast when a repo drifts from your release policy.
- validates branch names such as
feat/add-parser - validates Conventional Commit subjects
- validates changelog policy in CI
- optionally checks that the working tree stays clean
- can run
rrt doctoras a pre-release health gate
- uses: actions/checkout@v6
with:
fetch-depth: 0
- uses: Anselmoo/repo-release-tools@v1.1.0
with:
check-branch-name: "true"
check-commit-subject: "true"
check-changelog: "true"
See the full action guide: https://github.com/Anselmoo/repo-release-tools/blob/main/docs/github-action.md
Use the Python package for local workflow automation
Choose the package if you want the developer-side tools: branch helpers, version bumps, config inspection, pre-commit hooks, and release automation.
pip install repo-release-tools
rrt init
rrt branch new feat "add parser"
rrt git commit "add parser"
rrt git doctor
rrt bump patch
Or run the CLI without installing it permanently:
uvx repo-release-tools branch new feat "add parser"
If rrt is already installed and you want the bundled agent skill for Copilot,
Claude, or Codex, install it with:
rrt skill install --target copilot-local
rrt skill install --target claude-local --target codex-local
rrt skill install --target codex-global --dry-run
For basic versioning, bump and ci-version can run without [tool.rrt] by
auto-detecting root-level pyproject.toml, package.json, and Cargo.toml.
If multiple version files are found, they are updated together. Explicit config
is for the nice extras: grouped releases, changelog paths, release branches,
lock commands, generated files, and custom patterns.
Changelog workflows
The same project can be used in two release styles. Pick the one that matches how your repository actually lands changes.
| Workflow | Best for | Hook behavior | Action changelog-strategy: auto |
rrt bump default |
|---|---|---|---|---|
incremental (default) |
teams that maintain changelog entries during development | rrt-update-unreleased and rrt-changelog stay active |
resolves to per-commit |
auto |
squash |
repositories that squash many commits into one PR merge | changelog write/check hooks skip changelog enforcement | resolves to release-only |
generate |
Minimal config:
[tool.rrt]
release_branch = "release/v{version}"
changelog_file = "CHANGELOG.md"
changelog_workflow = "incremental" # or "squash"
[[tool.rrt.version_targets]]
path = "pyproject.toml"
kind = "pep621"
Native config is also supported in package.json ("rrt": { ... }) and
Cargo.toml ([package.metadata.rrt] / [workspace.metadata.rrt]). Go repos
should use .rrt.toml or .config/rrt.toml.
What the project includes
rrtCLI for branches, bumps, config inspection, and Git helpersrrt-hooksforpre-commit,lefthook, and CI validation- a reusable GitHub Action in
action.yml - bundled agent skills for
uvxand installed-CLI workflows - docs for branch policy, hook setup, and release workflows
Start with the doc that matches your task
- Docs index: https://github.com/Anselmoo/repo-release-tools/blob/main/docs/index.md
- GitHub Action: https://github.com/Anselmoo/repo-release-tools/blob/main/docs/github-action.md
- CLI reference: https://github.com/Anselmoo/repo-release-tools/blob/main/docs/rrt-cli.md
- Hook setup: https://github.com/Anselmoo/repo-release-tools/blob/main/docs/pre-commit.md
- Conventional branches: https://github.com/Anselmoo/repo-release-tools/blob/main/docs/semantic-branches.md
- Git workflow helpers: https://github.com/Anselmoo/repo-release-tools/blob/main/docs/git-magic.md
- Agent skills: https://github.com/Anselmoo/repo-release-tools/blob/main/docs/skill.md
License
repo-release-tools is released under the MIT License.
Some workflow ideas were initially inspired by
joseluisq/gitnow, but the rrt git
surface is intentionally narrower and reshaped around conventional branching,
safe commits, and release automation.
Built with ❤️ for safe, simple release automation.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file repo_release_tools-1.1.0.tar.gz.
File metadata
- Download URL: repo_release_tools-1.1.0.tar.gz
- Upload date:
- Size: 79.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a26bbbf7657887c00e06164898c8062f2a7b90c3b969c71d52a63f4168e3b1e3
|
|
| MD5 |
d123e041457cb3846532ff63754cc132
|
|
| BLAKE2b-256 |
f151397cf2ec8a84df99dcdb45560f454cfc3472e98ea455435696d8ff974431
|
Provenance
The following attestation bundles were made for repo_release_tools-1.1.0.tar.gz:
Publisher:
cicd.yml on Anselmoo/repo-release-tools
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
repo_release_tools-1.1.0.tar.gz -
Subject digest:
a26bbbf7657887c00e06164898c8062f2a7b90c3b969c71d52a63f4168e3b1e3 - Sigstore transparency entry: 1397744206
- Sigstore integration time:
-
Permalink:
Anselmoo/repo-release-tools@471d79cdc817a2fa5da81d91e87f504cdda8c01d -
Branch / Tag:
refs/tags/v1.1.0 - Owner: https://github.com/Anselmoo
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
cicd.yml@471d79cdc817a2fa5da81d91e87f504cdda8c01d -
Trigger Event:
push
-
Statement type:
File details
Details for the file repo_release_tools-1.1.0-py3-none-any.whl.
File metadata
- Download URL: repo_release_tools-1.1.0-py3-none-any.whl
- Upload date:
- Size: 95.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
39ed6bd58febf43fa5742322f79741fad34964222a239a19e36fd4e3b19af676
|
|
| MD5 |
a46fe87a9e95c131670336a18a5283cc
|
|
| BLAKE2b-256 |
e4cc693445ed1ceebd986a72c8ff1b13f2f9f37c47f387a8e65b6ed08e56bff2
|
Provenance
The following attestation bundles were made for repo_release_tools-1.1.0-py3-none-any.whl:
Publisher:
cicd.yml on Anselmoo/repo-release-tools
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
repo_release_tools-1.1.0-py3-none-any.whl -
Subject digest:
39ed6bd58febf43fa5742322f79741fad34964222a239a19e36fd4e3b19af676 - Sigstore transparency entry: 1397744245
- Sigstore integration time:
-
Permalink:
Anselmoo/repo-release-tools@471d79cdc817a2fa5da81d91e87f504cdda8c01d -
Branch / Tag:
refs/tags/v1.1.0 - Owner: https://github.com/Anselmoo
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
cicd.yml@471d79cdc817a2fa5da81d91e87f504cdda8c01d -
Trigger Event:
push
-
Statement type: