PluginBench
Skill
Fail
Audit score 45

release

tobi/qmd

Cut releases with validated changelogs, git hooks, and CI verification.

What is release?

Manage releases for your project by validating the changelog, installing git hooks, and cutting versioned releases. Use this skill when you need to release a new version, validate release readiness, or understand the release process. It is NOT automatically invoked by the model.

  • Gather release context including version info, working directory status, commits since last release, and current changelog state
  • Validate changelog follows Keep a Changelog conventions with proper version headings and structured entries
  • Install and enforce git pre-push hooks that verify package.json version, changelog entries, and CI status before pushing tags
  • Cut releases by renaming [Unreleased] to [X.Y.Z] with date, bumping package.json, creating commits and tags
  • Check for outdated dependencies (sqlite-vec, node-llama-cpp, better-sqlite3) and pin exact versions before release
  • Watch CI/publish workflows and report results after pushing to origin

How to install release

npx skills add null --skill release
Prerequisites
  • Git repository with git hooks support
  • package.json with version field
  • CHANGELOG.md following Keep a Changelog format
  • GitHub CLI (gh) installed for workflow monitoring
  • pnpm for dependency checking (or equivalent package manager)
Claude Code
Cursor
Windsurf
Cline

How to use release

  1. 1.Trigger the skill with `/release <version>` (e.g., `/release 1.0.5` or `/release patch`)
  2. 2.Review the context output showing version info, working directory status, commits, and current [Unreleased] content
  3. 3.Commit any outstanding work that belongs in this release using the /commit skill or direct commits
  4. 4.Write or update the [Unreleased] section in CHANGELOG.md following the changelog standard (highlights + Changes/Fixes sections)
  5. 5.Run the release script which renames [Unreleased] to [X.Y.Z] - date, bumps package.json, and creates a tag
  6. 6.Review the extracted changelog output and confirm before pushing
  7. 7.After confirmation, the skill pushes to origin main with tags and watches the CI/publish workflow
  8. 8.Monitor the background CI dispatch and wait for the skill to report the final result

Use cases

Good for
  • Release a new version with `/release 1.0.5` or `/release patch` to auto-bump from current version
  • Validate changelog completeness and format before cutting a release
  • Ensure all dependencies are pinned to exact versions (no ^ or ~ ranges) and up-to-date before release
  • Review commits and file changes since last release to inform changelog writing
  • Verify CI passes on the published release before considering it complete
Who it's for
  • Project maintainers managing version releases
  • Teams using Keep a Changelog conventions
  • Projects with automated CI/publish workflows
  • Developers enforcing strict dependency pinning policies

release FAQ

What version formats does /release accept?

You can use semantic version numbers like `1.0.5` or version shortcuts like `patch`, `minor`, or `major` which bump from the current version in package.json.

What if there are uncommitted changes when I run /release?

The skill gathers context first and shows you what's staged, modified, or untracked. You should commit outstanding work before cutting the release using the /commit skill or direct commits.

How are dependencies handled during release?

Before cutting a release, the skill checks for updates to sqlite-vec, node-llama-cpp, and better-sqlite3 using `pnpm outdated`. Any updates are pinned to exact versions (no ^ or ~ ranges) and tests are re-run before proceeding.

What does the pre-push hook validate?

The hook verifies that package.json version matches the tag, CHANGELOG.md has a corresponding [X.Y.Z] - date entry, and CI passed on GitHub before allowing the tag push.

Can I skip steps or force-push?

No. The skill never skips validation or force-pushes. If any step fails, it stops and explains the issue.

Full instructions (SKILL.md)

Source of truth, from tobi/qmd.


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. 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-status
    

    The agent will be notified when CI completes and should report the result.

  8. 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).

Related skills

More from tobi/qmd and the wider catalog.

QM

qmd

tobi/qmd

Search local markdown knowledge bases, notes, docs, and wikis with semantic and lexical queries.

3.0k installsAudited
ZIzimage-generation logo

zimage-generation

toolsai/free-zimage-skills

Generate high-quality images using ModelScope's Z-Image API. Use this skill when the user wants to generate images using the specific Z-Image model or ModelScope API they provided. Trigger words: 'Zimage', 'ModelScope', 'generate zimage'.

780 installs
MAmaestro-mobile-testing logo

maestro-mobile-testing

tovimx/maestro-mobile-testing-skill

Maestro mobile E2E testing patterns for React Native/Expo apps: YAML test flows, testID selectors, adaptive auth state, optimistic update verification, GraalJS scripting, cross-platform stability, CI/CD integration, Maestro Cloud, and MCP server integration

618 installs
BAbacktest-expert logo

backtest-expert

tradermonty/claude-trading-skills

Expert guidance for systematic backtesting of trading strategies. Use when developing, testing, stress-testing, or validating quantitative trading strategies. Covers "beating ideas to death" methodology, parameter robustness testing, slippage modeling, bias prevention, and interpreting backtest results. Applicable when user asks about backtesting, strategy validation, robustness testing, avoiding overfitting, or systematic trading development.

1.2k installsAudited
BRbreadth-chart-analyst logo

breadth-chart-analyst

tradermonty/claude-trading-skills

This skill should be used when analyzing market breadth charts, specifically the S&P 500 Breadth Index (200-Day MA based) and the US Stock Market Uptrend Stock Ratio charts. Use this skill when the user provides breadth chart images for analysis, requests market breadth assessment, positioning strategy recommendations, or wants to understand medium-term strategic and short-term tactical market outlook based on breadth indicators. Also works WITHOUT chart images by fetching CSV data directly from public sources. All analysis and output are conducted in English.

758 installs
CAcanslim-screener logo

canslim-screener

tradermonty/claude-trading-skills

Screen US stocks using William O'Neil's CANSLIM growth stock methodology. Use when user requests CANSLIM stock screening, growth stock analysis, momentum stock identification, or wants to find stocks with strong earnings and price momentum following O'Neil's investment system.

902 installs