Skip to content
Back to skills

Cut Release

ASecurity

Cuts a new versioned release of claude-code-trace end-to-end without asking any questions. Detects commits since the last ancestral tag, classifies them with conventional-commit rules to pick the semver bump, bumps every version-bearing file in sync, writes the CHANGELOG entry, commits and tags on a release branch, pushes the tag to trigger the GitHub Actions release pipeline, fast-forwards `main` onto the release commit and pushes it, then cleans up the local branch. Use this skill whenever ...

  • 374 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 26, 2026
developmentbashgit

Security analysis

A100/100

Pro scans all 13 files and shows the line behind each finding

Scanned May 27, 2026

npx -y skills add delexw/claude-code-trace --skill cut-release --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Cut Release?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Cut Release
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/delexw-cut-release/badge)](https://www.skillsdirectory.com/skills/delexw-cut-release)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: cut-release
description: |
  Cuts a new versioned release of claude-code-trace end-to-end without asking
  any questions. Detects commits since the last ancestral tag, classifies them
  with conventional-commit rules to pick the semver bump, bumps every
  version-bearing file in sync, writes the CHANGELOG entry, commits and tags
  on a release branch, pushes the tag to trigger the GitHub Actions release
  pipeline, fast-forwards `main` onto the release commit and pushes it, then
  cleans up the local branch. Use this skill whenever the user mentions
  cutting, tagging, bumping, or shipping a release — including "cut a
  release", "release v1.2.3", "tag and release", "bump version", "publish a
  release", "do a patch release", or "make a new release". Trigger even when
  the user does not name the version — the skill computes it. Also use
  proactively when the user finishes a unit of work and asks to publish it.
---

# Cut a Release — `claude-code-trace`

Turns "we should release this" into a tagged, pushed, pipeline-triggered, **publicly
published** release with a curated CHANGELOG, in a way that survives the project's strict
pre-commit hook chain and stays honest about what's actually shipping.

The skill is project-local because the steps depend on this repo's specific shape (three
version files, two lockfiles, GH Actions release on `v*` tag, the spec-drift +
test-reflection pre-commit hook pair).

## Operating mode

The skill is **fully automated end-to-end** and **fully synchronous**. It never calls
`AskUserQuestion`, never waits for "yes", never branches on user preference, and
**never runs any command in the background**. Every Bash invocation runs in the
foreground so the session holds continuously from Phase 1 through Phase 9 — no
`run_in_background: true`, no trailing `&`, no `nohup`, no `disown`. This includes
long-running steps like `gh run watch` in Phase 7; set the Bash `timeout` parameter to
match the expected duration (e.g. 1800000 ms for the release pipeline) rather than
detaching.

Defaults are deterministic:

- **Scope** — always linear: every commit since `git describe --tags --abbrev=0` ships.
- **Bump tier** — highest conventional-commit tier in the subset (see
  `${CLAUDE_SKILL_DIR}/references/conventional-commits.md`). `BREAKING CHANGE:` or `!:`
  produces a **minor** bump while the version is `0.X.Y` (pre-1.0 caveat) and a **major**
  bump otherwise; the skill never silently promotes to 1.0.0.
- **CHANGELOG** — every Added/Fixed bullet is written from commit subjects + diff reads;
  `chore:` / `docs:` / `test:` / `ci:` are always skipped.
- **Push order** — tag first, then main (so CI sees the tag immediately; main catches up
  after).

The skill aborts (loudly) only on hard preconditions that would corrupt the release:

- **Duplicate version** — the proposed `vX.Y.Z` tag already exists on `origin`. Abort
  with `Error: vX.Y.Z already exists on origin (commit <sha>). Refusing to release the
same version twice.` The user must delete the remote tag intentionally if they want a
  re-release, or bump again.
- **Dirty working tree** — uncommitted changes the skill didn't create. Abort with a
  list of dirty files.
- **`npm run check` fails** — abort and surface the failure verbatim.

## Before you start

Read these references on the first invocation in a session — they describe constants the
phase files refer to.

- `${CLAUDE_SKILL_DIR}/references/project-shape.md` — version files, lockfiles, pre-commit
  hooks, release pipeline wiring.
- `${CLAUDE_SKILL_DIR}/references/conventional-commits.md` — how commit prefixes map to
  semver bump level.

`${CLAUDE_SKILL_DIR}/references/changelog-template.md` is loaded when you reach Phase 4.

## Execution

### Phase 1 — Inspect and decide

Read `${CLAUDE_SKILL_DIR}/steps/phase1-inspect-and-scope.md` and follow all instructions.

### Phase 2 — Build the release branch

Read `${CLAUDE_SKILL_DIR}/steps/phase2-build-release-branch.md` and follow all instructions.

### Phase 3 — Bump version files

Read `${CLAUDE_SKILL_DIR}/steps/phase3-bump-versions.md` and follow all instructions.

### Phase 4 — Write the CHANGELOG entry

Read `${CLAUDE_SKILL_DIR}/steps/phase4-changelog.md` and follow all instructions.

### Phase 5 — Verify, commit, tag

Read `${CLAUDE_SKILL_DIR}/steps/phase5-verify-commit-tag.md` and follow all instructions.

### Phase 6 — Push the tag (with duplicate-version preflight)

Read `${CLAUDE_SKILL_DIR}/steps/phase6-push-tag.md` and follow all instructions.

### Phase 7 — Watch the pipeline and verify the release is public

Read `${CLAUDE_SKILL_DIR}/steps/phase7-publish-github-release.md` and follow all
instructions.

### Phase 8 — Push the release commit to `main`

Read `${CLAUDE_SKILL_DIR}/steps/phase8-back-to-main.md` and follow all instructions.

### Phase 9 — Clean up

Read `${CLAUDE_SKILL_DIR}/steps/phase9-cleanup.md` and follow all instructions.

## What the skill will NOT do automatically

- Bypass pre-commit hooks with `--no-verify` — always fix the underlying issue.
- Force-push (`git push -f`) to `main`, the release tag, or any shared branch.
- Delete a remote tag or remote branch.
- Cut a **major** bump (`X.0.0`) while the version is still `0.X.Y` — pre-1.0 the skill
  caps at minor even when a breaking change is detected.
- Re-tag an existing version — the duplicate-version preflight in Phase 6 aborts first.

The harness's auto-mode classifier may still intercept pushes to shared branches (e.g.
`git push origin main`) — that is out of skill scope. When it does, surface the error
and continue with the remaining phases; the user resolves the push themselves.

Files in this skill

  • SKILL.md5.6 KB
  • references/changelog-template.md2.8 KB
  • references/conventional-commits.md3 KB
  • references/project-shape.md4 KB
  • steps/phase1-inspect-and-scope.md2.7 KB
  • steps/phase2-build-release-branch.md1.2 KB
  • steps/phase3-bump-versions.md1.7 KB
  • steps/phase4-changelog.md1.9 KB
  • steps/phase5-verify-commit-tag.md3 KB
  • steps/phase6-push-tag.md1.4 KB
  • steps/phase7-publish-github-release.md3.6 KB
  • steps/phase8-back-to-main.md2.1 KB
  • steps/phase9-cleanup.md1.2 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.