# Cut Release

Use this skill to cut an APM release from the current worktree: assess whether the...

- Repository: https://github.com/microsoft/apm (4171 stars)
- Category: Git and review
- License: MIT
- Last updated: 2026-10-30
- Runs scripts: yes, review before use

## Install

Claude Code: `npx skills add microsoft/apm --skill cut-release -g -a claude-code -y`
Codex: `npx skills add microsoft/apm --skill cut-release -g -a codex -y`
Cursor: `npx skills add microsoft/apm --skill cut-release -g -a cursor -y`
Gemini CLI: `npx skills add microsoft/apm --skill cut-release -g -a gemini-cli -y`

## Description

Use this skill to cut an APM release from the current worktree: assess whether the cycle since the last tag warrants a patch or minor bump (semver discipline against the merged-since-last-tag diff), sanitize the [Unreleased] CHANGELOG block into a dated version block with one concise "so what" entry per merged PR (drop internal-only churn, consolidate duplicates), bump pyproject.toml + uv.lock, run the CI-mirror lint chain, and open the release PR. Activate on "ship a release", "cut v0.x", "release prep", "bump and PR", "open release PR", "what kind of release do we need", or any phrasing that ends in opening a release PR -- even when the user does not say "skill". Stops BEFORE tagging; tagging stays a human gate that triggers the release workflow. Refuses to bump to a major (>= 1.0.0) version without explicit operator confirmation.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# cut-release -- assess, sanitize, bump, lint, open PR

This skill drives the release-cut workflow end-to-end on the current
worktree. It STOPS at "PR open"; tagging is the human-gated trigger
that fires the release workflow.

## When to use

Trigger this skill on any of these intents:

- "cut a release"
- "ship v0.x" / "ship the release"
- "release prep" / "prepare the release"
- "bump and open the PR"
- "open the release PR"
- "what kind of release do we need now"
- "we have enough merged for a release"
- Any phrasing that ends in opening a release PR.

Do NOT trigger on:

- "tag v0.16.0" -- tagging is the post-merge step the operator runs.
- "publish a blog post" / "draft release notes for the website".
- "what changed since v0.15.0" -- enumeration only, no release.
- "regenerate uv.lock" / raw version-string edits.
- "rollback to v0.15.0" -- release reversal is a different skill.

## Companion primitives

The skill DEPENDS on these existing primitives in the same source
tree. Do not duplicate their content; reference them.

- `.apm/skills/apm-strategy/SKILL.md` -- versioning judgement and
  breaking-change lens. Auto-loads via its own trigger on
  `CHANGELOG.md` and release-pipeline edits. Treat it as the
  authoritative lens for "is this BREAKING" and "does this
  positioning change warrant a migration note".
- `.apm/instructions/linting.instructions.md` -- canonical
  CI-mirror lint chain. Reference; do not re-derive ruff / pylint
  command lists in this skill.
- `.github/instructions/changelog.instructions.md` -- Keep-a-
  Changelog format contract. Reference; do not redefine the
  format.

## Output charset rule

The rest: https://github.com/microsoft/apm/blob/HEAD/.agents/skills/cut-release/SKILL.md
