Best for
- Use when user says "/release", "release 1.
tobi/qmd/skills/release/SKILL.md
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.
Decision brief
Cut a release, validate the changelog, and ensure git hooks are installed.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/tobi/qmd --skill "skills/release"Inspect the Agent Skill "release" from https://github.com/tobi/qmd/blob/dbfd0b4736aeaf761d1a16ca8e424f071df8feb9/skills/release/SKILL.md at commit dbfd0b4736aeaf761d1a16ca8e424f071df8feb9. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
/release 1.0.5 or /release patch (bumps patch from current version).
When the user triggers /release :
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").
The changelog lives in CHANGELOG.md and follows Keep a Changelog conventions.
[Unreleased] — accumulates entries between releases
Permission review
The documentation asks the agent to run terminal commands or scripts.
standard below. Re-run the context script after committing if needed.Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 92/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 29,209 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
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>:
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.
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.
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.
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.
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.
Show the final changelog — print the full [Unreleased] +
minor series rollup via scripts/extract-changelog.sh <version>.
Ask the user to confirm before pushing.
Push — after explicit confirmation, run git push origin main --tags.
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.
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").
The changelog lives in CHANGELOG.md and follows Keep a Changelog conventions.
## [Unreleased] — accumulates entries between releases## [X.Y.Z] - YYYY-MM-DD — released versionsEach 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)
#NNN (thanks @username) for
external PRs. No need to credit the repo owner.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.
The pre-push hook (scripts/pre-push) blocks v* tag pushes unless:
package.json version matches the tagCHANGELOG.md has a ## [X.Y.Z] - date entry for the versionHooks 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).
Frequently asked questions
Cut a release, validate the changelog, and ensure git hooks are installed.
The source record exposes this install command: npx skills add https://github.com/tobi/qmd --skill "skills/release". Inspect the command and pinned source before running it.
Static rules flagged exec-script in the source; the page lists the matching lines and excerpts.
Alternatives
nexus-substrate/nexus-agents
Execute a release following project standards. Use when publishing a new version, creating release tags, or deploying. Triggers on "release", "publish", "version bump", "create release".
Postpartum-genushyacinthus29/dotnet-skills
Build long-running .NET background services with `BackgroundService`, Generic Host, graceful shutdown, configuration, logging, and deployment patterns suited to workers and daemons.
vasilyu1983/AI-Agents-public
Guides iOS testing with XCTest, XCUITest, Swift Testing, simctl, and xcresult. Use when choosing destinations, controlling flakes, or parsing test artifacts for native apps.
garrytan/gbrain
Generate a publication-quality PDF from any brain page via the gstack make-pdf binary. Strips YAML frontmatter, sanitizes emoji, applies running headers and page numbers. Brain page is always the source of truth; PDF is a rendering.