Rel-Ease
Rel-Ease (release-cli on PyPI) is a terminal release manager that pairs a Click CLI with a Backboard assistant. The LLM reads your diff, proposes SemVer bumps, updates release_notes.md, stages commits, and for Python packages runs uv build and twine upload — all through explicit tools you control.
Requirements
- Python 3.11+
git,BACKBOARD_API_KEY- Python projects:
uv,twine(and PyPI credentials viaTWINE_USERNAME/TWINE_PASSWORDor standardtwineconfig) - Node/TypeScript:
npm(fornpm install --package-lock-onlyafter version bumps) - Rust: manual
cargo publishafter the assistant bumpsCargo.tomland commits (by design)
Install
cd rel-ease
uv sync
uv pip install -e .
# or: uv tool install .
Quick start
export BACKBOARD_API_KEY=sk-...
# Sanity-check environment and repo detection
rel-ease doctor .
# Show how the project is classified (no network)
rel-ease detect .
# Run the release assistant (creates/updates Backboard assistant named `rel-ease`)
rel-ease release .
# Read-only rehearsal
rel-ease release . --dry-run
# Extra guidance for the model
rel-ease release . --hint "User asked for a minor bump for the new API."
Optional: set REL_EASE_ASSISTANT_ID to pin a specific Backboard assistant UUID after the first run.
Repo detection (deterministic)
Order of precedence from the repository root:
- Rust —
Cargo.tomlwith a[package]version - Python —
pyproject.tomlwith[project].version - Node/TS —
package.jsonwithversion
If the kind is Python, uv_build and twine_upload run for real. For Node or Rust, those tools return a skipped result so the model does not pretend PyPI ran.
Tools exposed to the assistant
| Tool | Role |
|---|---|
get_repo_context |
Refresh kind, version file, current version |
increment_version |
Bump patch / minor / major or set explicit_version |
git_diff |
git diff with optional --stat and path filters |
git_status_files |
Porcelain status per path |
git_add |
Stage explicit paths |
git_commit |
Commit with your message |
uv_build |
Clean dist/ and uv build (Python only) |
release_notes_update |
Create/update release_notes.md (replace or append) |
twine_upload |
Upload artifacts from dist/ (Python only) |
The Backboard model interprets diffs and drives the sequence; every mutation goes through these tools on your machine.
Environment
| Variable | Purpose |
|---|---|
BACKBOARD_API_KEY |
Required for rel-ease release |
REL_EASE_ASSISTANT_ID |
Optional UUID override |
TWINE_USERNAME / TWINE_PASSWORD |
PyPI upload (if not using another twine config) |
What Rel-Ease does not do
- No automatic
git push, tags, or GitHub releases (keep usingghor CI). - No
cargo publishwrapper yet — the assistant will remind you after a Rust bump.
License
MIT
Metadata
Release files for release-cli 0.6.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| release_cli-0.6.0.tar.gz | 12.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| release_cli-0.6.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 29.3 kB
Release files / release_cli-0.6.0.tar.gz
| Download URL | release_cli-0.6.0.tar.gz |
|---|---|
| Size | 12.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1af938112a8a7834794d7299abc30a301bbf2bfdab77701feeed162c6b8aff71
|
|
BLAKE2b-256 checksum How to use checksums |
e23affd4078fa0d92be470315d5f01feed416a6c657cf84782d8d84305cc46c2
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|
Release files / release_cli-0.6.0-py3-none-any.whl
| Download URL | release_cli-0.6.0-py3-none-any.whl |
|---|---|
| Size | 16.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7a2c66a4f4038160ace7a209f4ea205bedd29fc67bbfbeeb5b9a495fe4a26cca
|
|
BLAKE2b-256 checksum How to use checksums |
c0b311d96713e70dab28292b2b1c1f26cc069916e42b6971e2f0d8a6478848f0
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.12
|