
Release
- 2.1k installs
- 28.6k repo stars
- Updated June 24, 2026
- tobi/qmd
release is an agent skill that Manage releases for this project. Validates changelog, installs git hooks, and cuts releases. Use when user says "/relea.
About
Cut a release validate the changelog and ensure git hooks are installed release 1 0 5 or release patch bumps patch from current version 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 The release agent skill provides documented workflows prerequisites triggers and safety guidance from its SKILL md source Agents load it when user requests match the description and follow step by step instructions without inventing capabilities It integrates with standard agent tooling for the tasks inputs outputs and failure modes described in the repository documentation
- description: Manage releases for this project. Validates changelog, installs git hooks, and cuts releases. Use when user
- Cut a release, validate the changelog, and ensure git hooks are installed.
- `/release 1.0.5` or `/release patch` (bumps patch from current version).
- Follow release SKILL.md steps and documented constraints.
- Follow release SKILL.md steps and documented constraints.
Release by the numbers
- 2,148 all-time installs (skills.sh)
- +74 installs in the week ending Aug 4, 2026 (Skillselion tracking)
- Ranked #544 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Security screen: HIGH risk (skills.sh audit)
- Data as of Aug 5, 2026 (Skillselion catalog sync)
release capabilities & compatibility
- Capabilities
- description: manage releases for this project. v · cut a release, validate the changelog, and ensur · `/release 1.0.5` or `/release patch` (bumps patc · follow release skill.md steps and documented con
- Use cases
- orchestration
What release says it does
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 pr
Cut a release, validate the changelog, and ensure git hooks are installed.
`/release 1.0.5` or `/release patch` (bumps patch from current version).
npx skills add https://github.com/tobi/qmd --skill releaseAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 2.1k |
|---|---|
| repo stars | ★ 28.6k |
| Security audit | 3 / 3 scanners passed |
| Last updated | June 24, 2026 |
| Repository | tobi/qmd ↗ |
When should an agent use release and what problem does it solve?
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 au
Who is it for?
Developers invoking release as documented in the skill source.
Skip if: Skip when requirements fall outside release documented scope.
When should I use this skill?
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 au
What you get
Outputs aligned with the release SKILL.md workflow and stated deliverables.
- versioned git tag
- validated changelog
- installed git hooks
Files
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. Cut the release — run scripts/release.sh <version>. This renames [Unreleased] → [X.Y.Z] - date, inserts a fresh [Unreleased], bumps package.json, commits, and tags.
5. Show the final changelog — print the full [Unreleased] + minor series rollup via scripts/extract-changelog.sh <version>. Ask the user to confirm before pushing.
6. Push — after explicit confirmation, run git push origin main --tags.
7. 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-statusThe agent will be notified when CI completes and should report the result.
7. 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.
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 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.
## [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`)
### 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).
#!/usr/bin/env bash
set -euo pipefail
# Install git hooks for release validation.
# Idempotent — safe to run multiple times.
REPO_ROOT=$(git rev-parse --show-toplevel 2>/dev/null)
if [[ -z "$REPO_ROOT" ]]; then
echo "Error: not in a git repository" >&2
exit 1
fi
HOOKS_DIR="$REPO_ROOT/.git/hooks"
SOURCE="$REPO_ROOT/scripts/pre-push"
if [[ ! -f "$SOURCE" ]]; then
echo "Error: scripts/pre-push not found at $SOURCE" >&2
exit 1
fi
# Install pre-push hook
if [[ -L "$HOOKS_DIR/pre-push" ]] && [[ "$(readlink "$HOOKS_DIR/pre-push")" == "$SOURCE" ]]; then
echo "pre-push hook: already installed (symlink)"
elif [[ -f "$HOOKS_DIR/pre-push" ]]; then
# Existing hook that isn't our symlink — back it up
BACKUP="$HOOKS_DIR/pre-push.backup.$(date +%s)"
echo "pre-push hook: backing up existing hook to $(basename "$BACKUP")"
mv "$HOOKS_DIR/pre-push" "$BACKUP"
ln -sf "$SOURCE" "$HOOKS_DIR/pre-push"
echo "pre-push hook: installed (symlink → scripts/pre-push)"
else
ln -sf "$SOURCE" "$HOOKS_DIR/pre-push"
echo "pre-push hook: installed (symlink → scripts/pre-push)"
fi
# Ensure the source is executable
chmod +x "$SOURCE"
echo "Done."
Related skills
How it compares
Choose release over generic versioning advice when working inside the tobi/qmd repo and needing its bundled release-context.sh script and changelog validation workflow.
FAQ
What is release?
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 rel
When should I use release?
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 rel
Is release safe to install?
Review the Security Audits panel on this page before production use.