Skip to main content
skill Claude Code CX Codex Cursor GitHub Copilot

release — Claude Code skill: what it does, how to install

This skill manages a project release by checking the changelog, installing git hooks, and updating release versions. Use it when the project has a defined release flow.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add tobi/qmd --skill release -a claude-code
Open on GitHub

What release does

The skill starts a release with /release <version> or /release patch. It gathers repository status, commits, changed files, the [Unreleased] section, and the previous release entry. It can commit outstanding work, prepare CHANGELOG.md, and then run scripts/release.sh <version>. That script updates versions in package.json and .claude-plugin/marketplace.json, creates a commit, and adds a tag.

Before cutting the release, the skill checks sqlite-vec, platform packages, node-llama-cpp, and better-sqlite3 with pnpm outdated. Dependencies must use exact versions. It prints the resulting changelog and waits for confirmation before running git push origin main --tags.

Git hooks are installed by the context script, through skills/release/scripts/install-hooks.sh, or during bun install. The pre-push hook checks the package version, the matching CHANGELOG.md entry, and GitHub CI before allowing v* tags to be pushed. Check GitHub CI access before relying on that gate.

What it helps with

  • validate the changelog before cutting a version
  • collect commits and file changes for release notes
  • synchronize project and plugin versions
  • install git hooks that check release tags
  • hold the push until the changelog is confirmed

Example prompts for the agent

  • Run `/release 1.0.5` and prepare the release after checking the changelog.
  • Cut the next patch release with `/release patch`.
  • Review the final changelog and wait for confirmation before pushing the tags.

How to install release

1Skills CLI (Vercel)

npx skills add tobi/qmd --skill release -a claude-code

2Manually: put the files in place

~/.claude/skills/release/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/release/

From the same set2

The whole set →

Similar

hunt tw93 Pinpoints root causes before touching code when an app crashes or regresses. Enforces reproducible evidence and verification before applying any fix. Claude Code CX Codex Cursor +1 14,900installs git-advanced-workflows Seth Hobson This skill covers Git history editing, commit transfers, bug hunting, worktrees, and reflog recovery. Use it for complex branches or cleaner pull requests. Claude Code CX Codex Cursor 19,356installs paseo-handoff getpaseo Transfers the current task to a fresh agent with context, decisions, and constraints. Useful when moving work into a clean session or an isolated git worktree. Claude Code CX Codex Cursor +1 4,800installs voicestudio-maintainer debpalash Guides maintenance tasks for VoiceStudio by triaging issues, reviewing PRs, diagnosing CI runs, and staging Electron releases. It is not designed for audio synthesis. Claude Code CX Codex Cursor +1 795installs claude-security official Anthropic Scans repositories or pull request diffs for vulnerabilities and prepares verified patch files. Helpful for security audits directly inside your Claude Code session. Claude Code 2,304installs version-bump thedotmack This skill runs a plugin release from version selection to npm publishing. Use it when manifests, builds, tags, changelog, and release checks must follow one workflow. Claude Code CX Codex Cursor +1 1,800installs triage Matt Pocock This skill moves issues and external PRs through triage states, verification, and agent briefs. It fits maintainers managing an issue queue. Claude Code 990,453installs code-review Matt Pocock Reviews changes from a chosen reference point against repository standards and the originating spec. Use it for a branch, PR, or work in progress. Claude Code 789,521installs

Questions about release

How do I install release in Claude Code?

Run npx skills add tobi/qmd --skill release -a claude-code, then run npx skills add tobi/qmd --skill release -a claude-code again and check ~/.claude/skills/release/SKILL.md.

What does release do?

The skill gathers repository context, checks the changelog and selected dependencies, updates project versions, and creates a commit and tag. It shows the final changelog before asking for confirmation to push.

What does the pre-push hook check?

It checks that the package.json version matches the tag, that CHANGELOG.md contains the release entry, and that GitHub CI has passed.

Source text

SKILL.md · MIT
---
name: release
description: Manage releases for this project. Validates changelog, installs git hooks, and cuts releases. Use when user says "/release", "release 1.0.5", "cut a release", or asks about the release process. NOT auto-invoked by the model.
disable-model-invocation: true
---

# Release

Cut a release, validate the changelog, and ensure git hooks are installed.

## Usage

`/release 1.0.5` or `/release patch` (bumps patch from current version).

## Process

When the user triggers `/release <version>`:

1. **Gather context** — run `skills/release/scripts/release-context.sh <version>`.
   This silently installs git hooks and prints everything needed: version info,
   working directory status, commits since last release, files changed, current
   `[Unreleased]` content, and the previous release entry for style reference.

2. **Commit outstanding work** — if the context shows staged, modified, or
   untracked files that belong in this release, commit them first. Use the
   /commit skill or make well-formed commits directly.

3. **Write the changelog** — if `[Unreleased]` is empty, write it now using
   the commits and file changes from the context output. Follow the changelog
   standard below. Re-run the context script after committing if needed.

4. **Check dependency updates** — before cutting the release, check for
   updates to `sqlite-vec` (and platform packages), `node-llama-cpp`,
   and `better-sqlite3`. Run `pnpm outdated` and report any available
   updates for these packages. If updates exist, bump them (pinned, no
   `^` ranges) and re-run tests before proceeding.

5. **Cut the release** — run `scripts/release.sh <version>`. This renames
   `[Unreleased]` → `[X.Y.Z] - date`, inserts a fresh `[Unreleased]`,
   bumps `package.json` and the plugin version in
   `.claude-plugin/marketplace.json` (so installed plugins see the update),
   commits, and tags.

6. **Show the final changelog** — print the full `[Unreleased]` +
   minor series rollup via `scripts/extract-changelog.sh <version>`.
   Ask the user to confirm before pushing.

7. **Push** — after explicit confirmation, run `git push origin main --tags`.

8. **Watch CI** — after the push, start a background dispatch to watch the
   publish workflow. Use `interactive_shell` in dispatch mode with:
   ```
   gh run watch $(gh run list --workflow=publish.yml --limit=1 --json databaseId --jq '.[0].databaseId') --exit-status
   ```
   The agent will be notified when CI completes and should report the result.

If any step fails, stop and explain. Never force-push or skip validation.

## Dependency Policy

All dependencies must be pinned to exact versions (no `^` or `~` ranges).
The lockfile ensures reproducible installs. When adding or updating any
dependency, always use the exact version string (e.g. `"3.18.1"` not
`"^3.18.1"`).

## Changelog Standard

The changelog lives in `CHANGELOG.md` and follows [Keep a Changelog](https://keepachangelog.com/) conventions.

### Heading format

- `## [Unreleased]` — accumulates entries between releases
- `## [X.Y.Z] - YYYY-MM-DD` — released versions

### Structure of a release entry

Each version entry has two parts:

**1. Highlights (optional, 1-4 sentences of prose)**

Immediately after the version heading, before any `###` section. The elevator
pitch — what would you tell someone in 30 seconds? Only for significant
releases; skip for small patches.

```markdown
## [1.1.0] - 2026-03-01

QMD now runs on both Node.js and Bun, with up to 2.7x faster reranking
through parallel contexts. GPU auto-detection replaces the unreliable
`gpu: "auto"` with explicit CUDA/Metal/Vulkan probing.
```

**2. Detailed changelog (`### Changes` and `### Fixes`)**

```markdown
### Changes

- Runtime: support Node.js (>=22) alongside Bun. The `qmd` wrapper
  auto-detects a suitable install via PATH. #149 (thanks @igrigorik)
- Performance: parallel embedding & reranking — up to 2.7x faster on
  multi-core machines.

### Fixes

- Prevent VRAM waste from duplicate context creation during concurrent
  `embedBatch` calls. #152 (thanks @jkrems)
```

### Writing guidelines

- **Explain the why, not just the what.** The changelog is for users.
- **Include numbers.** "2.7x faster", "17x less memory".
- **Group by theme, not by file.** "Performance" not "Changes to llm.ts".
- **Don't list every commit.** Aggregate related changes.
- **Credit contributors:** end bullets with `#NNN (thanks @username)` for
  external PRs. No need to credit the repo owner.

### What not to include

- Internal refactors with no user-visible effect
- Dependency bumps (unless fixing a user-facing bug)
- CI/tooling changes (unless affecting the release artifact)
- Test additions (unless validating a fix worth mentioning)

## GitHub Release Notes

Each GitHub release includes the full changelog for the **minor series** back
to x.x.0. The `scripts/extract-changelog.sh` script handles this, and the
publish workflow (`publish.yml`) calls it to populate the GitHub release.

## Git Hooks

The pre-push hook (`scripts/pre-push`) blocks `v*` tag pushes unless:

1. `package.json` version matches the tag
2. `CHANGELOG.md` has a `## [X.Y.Z] - date` entry for the version
3. CI passed on GitHub (warns in non-interactive shells, blocks in terminals)

Hooks are installed silently by the context script. They can also be installed
manually via `skills/release/scripts/install-hooks.sh` or automatically via
`bun install` (prepare script).

© tobi · MIT · tobi/qmd

See also

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor