DBCrust release skill
This skill publishes a DBCrust release from the repository root.
Publishing a release pushes a v* tag, which triggers .github/workflows/release.yml (build binaries for all platforms, create the GitHub Release with notes generated from CHANGELOG.md, publish dbcrust to PyPI). Only run this skill when the user explicitly asks to make a release or confirms that publishing is OK.
Preferred command
Run the release helper:
bash .claude/skills/dbcrust-release/scripts/release.sh
The helper does the full safe path:
- Verifies required tools:
git,gh, andmise. - Verifies GitHub CLI authentication.
- Requires a clean
mainbranch. - Fetches
origin/mainand tags, then fast-forwards localmainif needed. - Runs release checks:
mise run check(fmt, clippy, tests)mise run release:dry-run(Commitizen bump preview; exits early with "No release needed" if no eligible conventional commits exist)
- Runs
mise run releaseto let Commitizen updateCargo.toml,pyproject.toml,CHANGELOG.md, commit the bump, and create the annotated tag. The bump runs the pre-bump hooks from.cz.toml(cargo checkto refreshCargo.lock,hk run fix) and GPG-signs the commit and tag (gpg_sign = true), so it must run where the user's GPG key is available. - Pushes
mainand the newv*tag. - Waits for the GitHub Actions Release workflow for the new tag (this covers binary builds, GitHub Release creation, and PyPI publishing).
- Waits for the GitHub Release to exist and prints its URL.
Release notes are generated by the workflow itself from the matching CHANGELOG.md section — the helper does not edit them.
Options
Use options only when the user asks for them or when recovering from a failed release:
bash .claude/skills/dbcrust-release/scripts/release.sh --increment patch # force patch/minor/major
bash .claude/skills/dbcrust-release/scripts/release.sh --skip-dry-run
bash .claude/skills/dbcrust-release/scripts/release.sh --skip-checks
bash .claude/skills/dbcrust-release/scripts/release.sh --timeout 5400
Agent workflow
When using this skill:
- Start by running
git status --short --branchandgh auth statusif the user did not already show the repo is ready. - Run the helper from the repository root.
- If the helper exits with "No release needed", report that no eligible conventional commits were found or no new tag was created.
- If a check fails, stop and summarize the failing command. Do not push anything.
- If the helper reports a dirty tree after the bump, the bump commit and tag exist locally but were not pushed — show the leftover changes to the user and let them decide before pushing manually.
- If the GitHub Release workflow fails, report the run URL. The tag is already pushed at that point; a failed run can be retried with
gh run rerun <run-id>or viaworkflow_dispatchonrelease.ymlwith the tag as input. - On success, summarize:
- released tag/version
- GitHub Release URL
- Release workflow result (includes PyPI publish and binary uploads)
Manual fallback
If the helper cannot be used, follow this sequence:
git status --short --branch
git fetch origin main --tags
git switch main
git pull --ff-only origin main
mise run check
mise run release:dry-run
mise run release # or release:patch / release:minor / release:major
git push origin main
git push origin "v$(awk -F'"' '/^version = / {print $2; exit}' Cargo.toml)"
Then wait for .github/workflows/release.yml and verify gh release view <tag>. There is also a bump-version.yml workflow (manual workflow_dispatch) that performs the bump and tag push entirely in CI if a local bump is not possible (note: CI bumps are not GPG-signed).
Source: clement-tourriere/dbcrust — distributed by TomeVault.