← ClaudeAtlas

release-setuplisted

Automated releases from Conventional Commits with git-cliff — owns the canonical cliff.toml (commit types → semver bump → release notes) shared by every release flow in this repo, and fully implements the GitLab CI variant (tag vX.Y.Z + GitLab Release with generated notes on every default-branch push). Use when asked to automate releases, tagging, changelogs, or release notes — on GitLab directly; for GitHub the language setup skills (rust-setup, uv-setup) ship the workflow and copy cliff.toml from here.
bcmyguest/personal-skills · ★ 0 · AI & Automation · score 58
Install: claude install-skill bcmyguest/personal-skills
# Release automation from Conventional Commits One doctrine, shared by every release flow: - Commit types drive the version: `feat` → minor, breaking → major, else patch; the first releasable commit produces `v0.1.0` (`initial_tag`). - git-cliff computes the bump (`git cliff --bumped-version`) and renders the notes (`git cliff --unreleased --tag vX.Y.Z`); if the bumped version equals the latest tag, nothing releasable landed and the pipeline no-ops. - The committed manifest version is never hand-bumped — release pipelines stamp the tag version in at build time. - Registry publishing is **Trusted Publishing only** (OIDC) — never a long-lived token in CI secrets or variables. [`templates/cliff.toml`](templates/cliff.toml) is the **canonical copy** of the git-cliff config; the rust-setup and uv-setup release flows copy it from here. Enforce the commit convention at commit time via the **pre-commit-setup** skill's `conventional-commits.repos.yaml` fragment (with the `--hook-type commit-msg` install). ## GitHub The workflows are language-specific (binary matrices, crates.io vs PyPI), so they ship with the language skill — follow **rust-setup** or **uv-setup**, which copy `cliff.toml` from this skill. ## GitLab Fully implemented here, language-agnostic, no placeholders: ```bash cp "$SKILL/templates/cliff.toml" . cp "$SKILL/templates/release.gitlab-ci.yml" . ``` Wire it into `.gitlab-ci.yml` — add the include, and make sure a `release` stage exists (or rename the