| name | dbcrust-release |
| description | Use this skill when the user asks to cut, publish, prepare, or automate a DBCrust release. It runs release checks, uses Commitizen to bump the version/changelog/tag, pushes the release tag, and waits for the GitHub Release workflow (binaries, GitHub Release, PyPI publish). |
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, and mise.
- Verifies GitHub CLI authentication.
- Requires a clean
main branch.
- Fetches
origin/main and tags, then fast-forwards local main if 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 release to let Commitizen update Cargo.toml, pyproject.toml, CHANGELOG.md, commit the bump, and create the annotated tag. The bump runs the pre-bump hooks from .cz.toml (cargo check to refresh Cargo.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
main and the new v* 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
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 --branch and gh auth status if 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 via workflow_dispatch on release.yml with 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
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).