ワンクリックで
release
Prepare and publish a new release. Use when the user asks to release, cut a release, or publish a new version.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Prepare and publish a new release. Use when the user asks to release, cut a release, or publish a new version.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Guidelines for documenting reusable patterns discovered during work. Use when completing tasks that reveal non-obvious workflows or project conventions.
Guidelines for modifying the Helm chart. Use when changing values.yaml, templates, or adding new configuration options.
Guidelines for creating and maintaining example YAML files in the cmd/examples directory. Use when adding new CRD fields or modifying example code.
| name | release |
| description | Prepare and publish a new release. Use when the user asks to release, cut a release, or publish a new version. |
Release a new version of Kaniop using the release script and CI pipeline.
Use this skill when:
Before releasing, verify:
master — releases only happen from mastergit rev-list --count origin/master..HEAD must be 0)Check with:
git status --short
git rev-parse --abbrev-ref HEAD
git pull origin master
git rev-list --count origin/master..HEAD
git tag --sort=-creatordate | head -3
git log --oneline v<latest_tag>..HEAD
Use Semantic Versioning (MAJOR.MINOR.PATCH). Determine the bump type by analyzing commits since the last release.
Bump MAJOR when:
BREAKING CHANGE: or ! (e.g., feat!: ...)Bump MINOR when:
feat: commits)Bump PATCH when:
fix: commits)docs: commits)refactor: commits)chore(deps): commits)git log v<CURRENT_VERSION>..HEAD --oneline! or BREAKING CHANGE: -> MAJORfeat: -> MINORfix:, docs:, refactor:, etc. -> PATCHEnsure you're on master with no uncommitted changes, up to date with origin, and no commits ahead:
git checkout master
git pull origin master
git status # Should show "nothing to commit, working tree clean"
Verify no commits ahead of origin/master:
git rev-list --count origin/master..HEAD # Should output 0
Unshallow check — shallow clones produce incomplete changelogs:
git rev-parse --is-shallow-repository
If this outputs true, unshallow the repo before proceeding:
git fetch --unshallow origin
git fetch --tags origin
Get current version:
grep '^version =' Cargo.toml | head -1
Review commits since last release:
git log v<CURRENT_VERSION>..HEAD --oneline
Decide on MAJOR, MINOR, or PATCH bump based on the Version Decision Guide above.
git checkout -b release/v<NEW_VERSION>
Edit the root Cargo.toml and update the version in the [workspace.package] section:
version = "<NEW_VERSION>"
Then propagate the version across all workspace files:
make update-version
This automatically updates:
Cargo.tomlCargo.lockcharts/kaniop/Chart.yaml (version, appVersion, image tags, annotations).ci/cliff-chart.toml)Generate the changelog using git-cliff:
make update-changelog
This runs: git cliff -t v<VERSION> -u -p CHANGELOG.md
The changelog is generated from conventional commits and grouped by type (Added, Fixed, Documentation, Build, Refactor, Styling, Testing, Chore). Release commits are excluded.
If CRD fields were changed in this release cycle:
make examples
Stage and commit all changes:
git add .
VERSION=$(sed -n 's/^version = "\(.*\)"/\1/p' Cargo.toml | head -n1)
git commit -m "release: Version $VERSION"
git push -u origin release/v<NEW_VERSION>
Create a pull request to merge into master.
After the PR is merged to master, tagging and releasing is done automatically by CI:
auto-tag.yml reads the new version from CHANGELOG.mdv<VERSION>The tag then triggers:
docker_images.yml: Builds/pushes multi-arch Docker images (amd64, arm64), creates GitHub Releaserust.yml: Publishes crates to crates.iohelm.yml: Publishes signed Helm chart to GHCR OCI registryMonitor with:
gh run list --limit 5
Note: Do not manually create tags — CI handles this automatically.
| Mistake | Why it's wrong | Fix |
|---|---|---|
| Manually editing CHANGELOG.md | git-cliff generates it from conventional commits | Use make update-changelog |
| Manually editing Chart.yaml version | make update-version handles all of it | Use the Makefile target |
| Creating git tags manually | auto-tag.yml creates signed tags automatically | Just push to master |
| Releasing from a feature branch | Changelog generation needs master commit IDs | Checkout master first |
| Releasing with dirty working tree | Script will fail or produce incomplete release | Commit or stash changes first |
| Skipping the unshallow check | Shallow clones produce incomplete changelogs | Always check and unshallow if needed |
Forgetting make update-version after Cargo.toml edit | Version won't propagate to Chart.yaml, lock file, etc. | Always run make update-version |
Merge or push them first before starting the release.
git fetch --unshallow origin
git fetch --tags origin
cargo install git-cliff
Ensure:
## [v...] headinggit tag -l | grep <version>PAT and GPG_PRIVATE_KEY secrets are configured in GitHubEnsure make update-version was run after editing Cargo.toml. The version is read from the root Cargo.toml [workspace.package] section.
| File | Role |
|---|---|
Cargo.toml | Root workspace version (single source of truth) |
cliff.toml | git-cliff configuration for main changelog |
.ci/cliff-chart.toml | git-cliff configuration for Artifact Hub chart changes |
CHANGELOG.md | Generated changelog (auto-tag reads version from here) |
charts/kaniop/Chart.yaml | Helm chart version, appVersion, image tags, annotations |
.github/workflows/auto-tag.yml | Creates signed tag on push to master |
.github/workflows/docker_images.yml | Builds/pushes Docker images and creates GitHub Release |
.github/workflows/rust.yml | Publishes crates to crates.io on tag |
.github/workflows/helm.yml | Publishes Helm chart to GHCR on tag |
Makefile | update-version, update-changelog, and release targets |
release/v<VERSION>Cargo.tomlmake update-versionmake update-changelogmake examples (if CRD fields changed)release: Version <VERSION>| Step | Command |
|---|---|
| Check current version | grep '^version =' Cargo.toml | head -1 |
| View recent commits | git log v<CUR>..HEAD --oneline |
| Check commits ahead | git rev-list --count origin/master..HEAD |
| Check shallow clone | git rev-parse --is-shallow-repository |
| Unshallow repo | git fetch --unshallow origin && git fetch --tags origin |
| Propagate version | make update-version |
| Update changelog | make update-changelog |
| Regenerate examples | make examples |
| Commit | git commit -m "release: Version <VER>" |
| Monitor CI | gh run list --limit 5 |