# Dbcrust Release

> 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).

- Skill: `tomevault-io/dbcrust-release` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/dbcrust-release`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/dbcrust-release/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/dbcrust-release

---


# 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
bash .claude/skills/dbcrust-release/scripts/release.sh
```

The helper does the full safe path:

1. Verifies required tools: `git`, `gh`, and `mise`.
2. Verifies GitHub CLI authentication.
3. Requires a clean `main` branch.
4. Fetches `origin/main` and tags, then fast-forwards local `main` if needed.
5. 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)
6. 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.
7. Pushes `main` and the new `v*` tag.
8. Waits for the GitHub Actions Release workflow for the new tag (this covers binary builds, GitHub Release creation, and PyPI publishing).
9. 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
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:

1. Start by running `git status --short --branch` and `gh auth status` if the user did not already show the repo is ready.
2. Run the helper from the repository root.
3. If the helper exits with "No release needed", report that no eligible conventional commits were found or no new tag was created.
4. If a check fails, stop and summarize the failing command. Do not push anything.
5. 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.
6. 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.
7. 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:

```bash
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](https://github.com/clement-tourriere/dbcrust) — distributed by [TomeVault](https://tomevault.io).
<!-- tomevault:4.0:skill_md:2026-07-07 -->

