From qmd
Manages project releases: validates/updates CHANGELOG.md per Keep a Changelog, installs git hooks, bumps package.json version, commits/tags/pushes to GitHub main, checks deps with pnpm outdated, watches publish CI.
npx claudepluginhub tobi/qmd --plugin qmdThis skill uses the workspace's default tool permissions.
Cut a release, validate the changelog, and ensure git hooks are installed.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Performs token-optimized structural code search using tree-sitter AST parsing to discover symbols, outline files, and unfold code without reading full files.
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.
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.
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.
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.
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).