Skip to content
Back to skills

Release

ASecurity

Plan version scope, verify release integrity (commit↔CHANGELOG, tag↔artifacts), generate changelogs, and run full releases. Use when cutting a release or bumping a version. Trigger on "cut a release", "bump the version", "generate changelog", "release plan", "verify the release".

  • 25 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added June 6, 2026
toolsrustgobashgitapi

Works with

  • api

Security analysis

A100/100

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

Scanned June 6, 2026

npx -y skills add matteocervelli/llms --skill release --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Release?

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

Security grade badge for Release
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/matteocervelli-release/badge)](https://www.skillsdirectory.com/skills/matteocervelli-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: release
description: 'Plan version scope, verify release integrity (commit↔CHANGELOG, tag↔artifacts), generate changelogs, and run full releases. Use when cutting a release or bumping a version. Trigger on "cut a release", "bump the version", "generate changelog", "release plan", "verify the release".'
allowed-tools: Read, Write, Edit, Bash, Grep, Glob
---

# Release Skill

Unified entry point for all release operations. Delegates to the right subcommand template based on the first argument.

## Subcommands

| Command                                    | What it does                                                                |
| ------------------------------------------ | --------------------------------------------------------------------------- |
| `/release plan`                            | Scope version, analyze milestones/issues/tags, create GitHub milestone      |
| `/release verify [commits\|tags\|history]` | Integrity checks: commit↔CHANGELOG, tag↔releases↔artifacts, history audit   |
| `/release changelog`                       | Generate CHANGELOG entries + version bump propagation across manifest files |
| `/release full`                            | Full orchestrator: plan → health → fix blockers → docs → tag+ship           |
| `/release`                                 | Auto-detect what's needed (see below)                                       |

## Auto-Detection (no subcommand)

```bash
LAST_TAG=$(git describe --tags --abbrev=0 --match "v*" 2>/dev/null)
UNRELEASED=$(git log --no-merges --oneline "${LAST_TAG:-$(git rev-list --max-parents=0 HEAD)}..HEAD" | wc -l)
OPEN_MILESTONE=$(gh api "repos/$(gh repo view --json nameWithOwner --jq '.nameWithOwner')/milestones" \
  --jq '[.[] | select(.state=="open")] | length' 2>/dev/null || echo 0)
CLOSED_ISSUES=$(gh api "repos/$(gh repo view --json nameWithOwner --jq '.nameWithOwner')/milestones" \
  --jq '[.[] | select(.state=="open" and .open_issues==0)] | length' 2>/dev/null || echo 0)
```

Decision tree:

1. Milestone exists with 0 open issues → suggest `/release full`
2. Unreleased commits > 0, no milestone → suggest `/release plan`
3. Clean main, recent tag → suggest `/release verify tags`
4. Default → show the subcommand table above and ask what's needed

## Execution

Load the template matching the subcommand and follow it completely:

- `plan` → `~/.claude/skills/release/templates/plan.md`
- `verify` → `~/.claude/skills/release/templates/verify.md`
- `changelog` → `~/.claude/skills/release/templates/changelog.md`
- `full` → `~/.claude/skills/release/templates/cycle.md`

Pass any additional args through:

- `/release verify commits` → load verify.md, execute the `commits` subcommand
- `/release verify tags` → load verify.md, execute the `tags` subcommand
- `/release verify history` → load verify.md, execute the `history` subcommand

## Gotchas

- Auto-detection commands fail soft (`|| echo 0`) when `gh` is unauthenticated or there's no GitHub remote — a `0` open-milestone count may mean "no GitHub access", not "no milestones"; verify before trusting the decision tree.
- `git describe --tags --match "v*"` only finds tags reachable from HEAD — a tag on a sibling branch is invisible, so "no last tag" can be a false negative.
- `/release changelog` propagates the version bump across manifest files (pyproject.toml, package.json, etc.) — verify all manifests moved together; a partial bump ships mismatched versions.
- `/release full` tags and ships — it is not a dry run. Run `/release plan` first to confirm scope.

Files in this skill

  • SKILL.md3.5 KB
  • templates/changelog-entries.md5.3 KB
  • templates/changelog-format.md4 KB
  • templates/changelog.md7.3 KB
  • templates/cycle.md15.8 KB
  • templates/plan.md6.8 KB
  • templates/verify.md15.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.