Manages the release lifecycle from PR creation to version tagging.

Install

mkdir -p .claude/skills/release-psenger && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/12279" && unzip -o skill.zip -d .claude/skills/release-psenger && rm skill.zip

Installs to .claude/skills/release-psenger

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Ships completed work in the ai-agent-skills repository. Two phases depending on context: WRAP UP (on a feature branch with committed work — updates CHANGELOG, README, marketplace.json, commits, pushes, creates a PR) and CUT RELEASE (on main after a merge — determines semver bump, updates CHANGELOG version section, tags, pushes, creates a GitHub draft release). Use when the user says "ship this", "I'm done", "create a PR", "cut a release", "tag a release", "wrap this up", or "release it". Always checks GitHub auth first. Load the `conventions` skill for commit and PR formatting rules.
590 chars✓ has a “when” triggerlonger than Claude Code's old 250-char listing cap (fine on current versions)
Advanced

Key capabilities

  • Detect context to either wrap up feature branch work or cut a release on main
  • Update `CHANGELOG.md`, `README.md`, and `.claude-plugin/marketplace.json`
  • Commit and push changes to the remote repository
  • Create a draft pull request from a feature branch
  • Determine semver bump and create a GitHub draft release on main

How it works

The skill first checks GitHub authentication and then determines if it's on a feature branch (WRAP UP phase) or main (CUT RELEASE phase). It performs context-specific actions like updating files, committing, pushing, and creating PRs or draft releases.

Inputs & outputs

You give it
A git repository state (feature branch or main) and user confirmation
You get back
A pull request URL or a GitHub draft release URL

When to use release

  • Creating a pull request
  • Tagging a new release
  • Finalizing work for deployment

About this skill

Release

Ships completed work. The skill detects context and runs the right phase:

  • On a feature branch with committed work → WRAP UP phase
  • On main after a merge → CUT RELEASE phase

For all message formatting, follow the conventions skill.


Step 0 — Auth & Identity (always)

Check for a GitHub MCP server in available tools. If none:

gh auth status

Stop if neither is available: "I need the GitHub MCP server or gh CLI authenticated. Run gh auth login."

Confirm identity — use mcp__github__get_me if the GitHub MCP server is available, otherwise:

gh api user --jq '"@\(.login) — \(.name)"'

Show the result and ask: "I'll be acting as @username — is that right?" Wait for confirmation.


WRAP UP Phase

Triggered when on any non-main branch (feature/, fix/, chore/, refactor/, test/, etc.) with a clean working tree.

Step 1 — Verify State

git branch --show-current     # must not be main
git status --porcelain        # must be empty — all work committed

If the tree is dirty, stop: "You have uncommitted changes. Commit or stash them first."

Step 2 — Detect What Changed

git diff main...HEAD --name-only

Determine:

  • Was a new skill added? Look for a new directory under skills/ not present on main.
  • Was an existing skill modified? Look for changes inside skills/<name>/.
  • Is this a bug fix, refactor, or docs change? Look at changed files outside skills/.

Derive the issue number from the branch name (e.g. feature/14-add-handoff-skill#14). If none found, ask the user for the issue number.

Step 3 — Update Admin Files

CHANGELOG.md — add a bullet to ## [Unreleased] under the correct subsection:

  • New skill → ### Added
  • Updated skill → ### Changed
  • Bug fix → ### Fixed

Bullet format (see conventions skill):

- **skill-name** — <what changed and why>. ([#N](issue-url))

README.md — only if a new skill was added:

  • Add a row to the skills table
  • Add a ### skill-name prose section following the existing pattern

.claude-plugin/marketplace.json — update whenever a skill was added or modified:

  • New skill → add an entry with "version": "1.0.0"
  • Existing skill enhanced (new feature, new behaviour) → bump minor (e.g. 1.0.01.1.0)
  • Existing skill bug fix or docs only → bump patch (e.g. 1.1.01.1.1)

New skill entry format:

{
  "name": "<skill-name>",
  "source": "./skills/<skill-name>",
  "description": "<description from SKILL.md frontmatter>",
  "version": "1.0.0"
}

Step 4 — Commit Admin Updates

git add CHANGELOG.md README.md .claude-plugin/marketplace.json
git commit -m "chore(<skill-name>): update changelog, readme, and marketplace"

Only stage files that actually changed.

Step 5 — Push and Create PR

git push -u origin <branch-name>

Create a PR using the repo's PR template (.github/pull_request_template.md):

gh pr create \
  --draft \
  --title "<type>(<scope>): <subject>" \
  --body "$(cat <<'EOF'
## What
<brief description of the change>

## Why
<why this change is needed>

## Type of Change
- [x] <tick the correct box from the template>

## Skill Checklist
- [x] `SKILL.md` has valid YAML frontmatter (`name`, `description`, `allowed-tools`)
- [x] `name` is lowercase-hyphenated and matches the directory name
- [x] `description` is written in third person with trigger words
- [x] Reference files are in `references/` (one level deep)
- [x] `SKILL.md` is under 500 lines
- [x] No secrets, credentials, or PII committed
- [x] `.claude-plugin/marketplace.json` updated (if new skill)
- [x] `README.md` skills table updated (if new skill)

## Testing
- [ ] Tested locally by invoking the skill with a realistic prompt
- [ ] Verified the skill activates correctly (not confused with another skill)

Closes #<issue-number>
EOF
)"

Print the PR URL. Tell the user: "Draft PR created: <URL>. Review it, mark it ready for review, and merge to main. Then run /release again on main to cut the release."


CUT RELEASE Phase

Triggered when on main with a clean working tree.

Step 1 — Pre-flight

git branch --show-current              # must be: main
git status --porcelain                 # must be empty
git fetch origin
git rev-list HEAD..origin/main --count # must be: 0

Abort clearly if any check fails.

Step 2 — Determine Version

git describe --tags --abbrev=0          # last tag, e.g. v1.0.0
git log <last-tag>..HEAD --oneline      # commits since last tag

Apply semver rules (from conventions skill):

  • BREAKING CHANGE footer or type!:major
  • featminor
  • fix, chore, docs, refactor, testpatch

Present the proposed version and the commits that drove the decision. Wait for explicit confirmation before proceeding.

Step 3 — Update CHANGELOG.md

Three edits in order:

  1. Insert ## [Unreleased]\n\n above the current ## [Unreleased] heading
  2. Rename the existing ## [Unreleased] to ## [X.Y.Z] - YYYY-MM-DD (today's date)
  3. Update comparison links at the bottom:
    • Add: [X.Y.Z]: https://github.com/psenger/ai-agent-skills/compare/<last-tag>...vX.Y.Z
    • Update: [Unreleased]: https://github.com/psenger/ai-agent-skills/compare/vX.Y.Z...HEAD

Step 4 — Commit and Tag

git add CHANGELOG.md
git commit -m "chore(release): cut vX.Y.Z release"
git tag -a vX.Y.Z -m "Release vX.Y.Z"

Step 5 — Push

git push origin main
git push origin vX.Y.Z

Step 6 — Create Draft Release

Extract the release body from the ## [X.Y.Z] CHANGELOG section (down to the next ## [):

gh release create vX.Y.Z \
  --draft \
  --title "vX.Y.Z" \
  --notes "<extracted changelog section>"

Step 7 — Done

Print:

Draft release created: <URL>

Review on GitHub and click Publish when ready.
Publishing triggers any CI release workflows.

Do not publish the release — the user does this manually.

When not to use it

  • When GitHub authentication is not configured
  • When the working tree is dirty with uncommitted changes
  • When the user wants to publish a release directly, as this skill creates drafts

Prerequisites

gh CLI authenticated

Limitations

  • Requires GitHub authentication.
  • The working tree must be clean (no uncommitted changes).
  • It creates draft releases and PRs; publishing is a manual step.

How it compares

This skill automates the entire release process, from feature branch wrap-up to draft release creation, adapting its actions based on the current git context, which is more efficient and consistent than manual release management.

Compared to similar skills

release side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
release (this skill)03moReviewAdvanced
proof-of-work16moNo flagsIntermediate
release-version06moReviewIntermediate
release04moNo flagsBeginner

Try saying

Example prompts that trigger this skill in your AI assistant.

You might also like

proof-of-work

MadAppGang

Proof artifact generation patterns for task validation. Covers screenshots, test results, deployments, and confidence scoring.

10

release-version

corvo007

Use when releasing a new version - guides through version bump, changelog generation, commit grouping, tagging, and GitHub CI tracking. Triggers on "发布新版本", "release", "发版", or version release requests.

01

release

mantaskazlauskas

Release workflow for ChattyLittleNpc addon. Bumps the .toc version, commits and pushes to GitHub, then runs release.py to create a GitHub release. Activates for: release, bump version, publish, ship, tag, new version, deploy addon, push release.

00

chroma-release

onevcat

Chroma 的发布一体化流程(SemVer 决策、生成 changelog、同步 CLI 版本、打 git tag、发布 GitHub Release)。当被要求进行新版本发布、更新 CHANGELOG.md、升级 `ca` CLI 版本号、创建 tag 或发布 GitHub Release 时使用。

00

release-buoy

WLKRLABS

Prepare and ship a new Buoy release after repo changes by updating VERSION and CHANGELOG, running the repo validation/build/package flow, installing the new local copy, tagging the release, pushing it, and verifying the GitHub release workflow.

00

release-rapture-mac

NoiseMeldOrg

Cut a notarized Rapture for Mac release end-to-end — run the build/sign/notarize/staple/DMG pipeline, then publish it (CHANGELOG cut, git tag at the build commit, GitHub Release with the DMG attached), and optionally install it locally. Use this whenever the user says "cut a release", "cut the relea

00

Search skills

Search the agent skills registry