Agent skill

Bump Version

by tetherto in tetherto/qvac

Bump a native addon package's version in package.json and write its CHANGELOG.md entry.

Apache-2.0Auto-check passedDevelopment

Install Bump Version

skills CLI
$ npx skills add tetherto/qvac --skill bump-version -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install tetherto/qvac bump-version --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/tetherto/qvac.git skills-src && mkdir -p .claude/skills && cp -r skills-src/packages/ocr-ggml/.agent/skills/bump-version .claude/skills/bump-version && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
bump-version
GitHub stars
681
Token cost
~3k tokens
SKILL.md length
1,417 words
Files
1
Skills in repo
50
Repo updated
First seen
Licence
Apache-2.0

At a glance

Bump a native addon package's version in package.json and write its CHANGELOG.md entry.

  • Works in 7 steps: Read the real current version → Find what changed since the last bump → Choose the bump level → …
  • Tasks that involve Changelog and release notes
  • SKILL.md covers Usage, When to use this skill, Refusals — stop, do not edit… and Step 1 — Read the real current…, plus 9 more sections
  • Calls git, npm and gh

What it does

Bump Version is an agent skill from tetherto/qvac. Bump a native addon package's version in package.json and write its CHANGELOG.md entry. Defaults to a minor bump. Use before /release.

Its SKILL.md is about 3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development, covering Changelog and release notes. It works with npm. The repository describes itself as: Open-source local AI SDK - run AI on-device with no cloud, no API keys. Supports GGUF, RAG, image, music, and video generation, speech-to-text, P2P inference, and more… The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve Changelog and release notes

Example prompts

  • “/bump-version”

Workflow steps

7 steps, taken from the step headings in SKILL.md.

  1. Read the real current version
  2. Find what changed since the last bump
  3. Choose the bump level
  4. Bump package.json
  5. Write the CHANGELOG entry
  6. Report what happens next
  7. Verify before committing

What it can do on your machine

Read from SKILL.md and the folder at commit c3a6030. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git
    • npm
    • gh
    • bash

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, npm and gh, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Bump Version loads about 3k tokens when it runs. Until then it costs about 37 tokens; SKILL.md has 1,417 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~37
When it runs · the whole SKILL.md, loaded when a task matches
~3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from tetherto/qvac at commit c3a6030, republished under its Apache-2.0 licence (© tetherto). 1,417 words, ~2,974 tokens.

Download SKILL.mdSave it as .claude/skills/bump-version/SKILL.md (or your agent's skills folder).
name
bump-version
description
Bump a native addon package's version in package.json and write its CHANGELOG.md entry. Defaults to a minor bump. Use before /release.
argument-hint
<package-name> [major|minor|patch]
disable-model-invocation
true

Bump Version

Bump a native addon package's version in package.json and write the matching CHANGELOG.md entry, so /release can publish it. Defaults to a minor bump.

$ARGUMENTS is <package-name> [major|minor|patch] — the package directory name under packages/, plus an optional explicit bump level.

Usage

/bump-version llm-llamacpp              # minor (default): 0.39.0 -> 0.40.0
/bump-version llm-llamacpp patch        # 0.39.0 -> 0.39.1
/bump-version ocr-ggml minor
/bump-version translation-nmtcpp major  # never chosen automatically — must be explicit

When to use this skill

Use it when work has merged to main for an addon package and the package still carries the previous version — i.e. the feature is on main but unreleasable because nothing bumped it. This is the routine gap that /addon-changelog and /release both refuse to fill:

  • /addon-changelog writes the changelog but refuses to bump — it stops with a VERSION BUMP REQUIRED banner if package.json is unchanged vs main.
  • /release validates the bump then stops and tells you to bump first.

Do not use it for:

CaseUse instead
SDK/TS pods: sdk, cli, rag, logging, error, ai-sdk-provider/sdk-changelog
Back-porting a fix onto a shipped release-* line/release-patch
A qvac-fabric bump across all 7 consumers/rollout-phase-b
Publishing an existing bump/release

Refusals — stop, do not edit anything

  1. SDK pods. Their root CHANGELOG.md is machine-generated by scripts/sdk/generate-changelog-sdk-pod.cjs (rebuildRootChangelog()); a hand-edit is destroyed on the next generator run. Tell the user to run /sdk-changelog and stop.
  2. Version not higher than npm latest. Report both numbers and stop.
  3. Working branch is a release-* branch. That is /release-patch territory — a release branch must stay a byte-exact copy of its base. Stop.
  4. Package has no CHANGELOG.md. Ask the user before creating one.

fabric is NOT a refusal. An earlier version of this skill refused it, claiming its release read packages/fabric/release-notes/v<ver>.md via create-github-release-fabric.yml. That workflow does not exist and is referenced nowhere; on-merge-nx.yml passes changelog-path: packages/fabric/CHANGELOG.md, and that file is current and correctly bracketed. packages/fabric/release-notes/ holds only a v0.1.0.md leftover and is not the release source. Treat fabric like any other addon.

Step 1 — Read the real current version

Never trust the local checkout; it is routinely days or thousands of commits behind.

bash
git -C <repo> fetch origin main
git -C <repo> show origin/main:packages/<pkg>/package.json

Read version from that output. Cross-check the published version:

bash
npm view @qvac/<pkg> dist-tags.latest

Expect npm to equal or trail origin/main. If origin/main is already ahead of npm, a bump is already pending — say so and confirm with the user before adding another.

Step 2 — Find what changed since the last bump

Resolve the previous release tag (see Step 6 — do not guess it from the directory name), then:

bash
git -C <repo> log <prev-tag>..origin/main --oneline -- packages/<pkg>/

If the tag is missing, fall back to the last commit that touched packages/<pkg>/package.json and diff from there. Harvest PR numbers from the commit subjects ((#1234)) for the ### Pull Requests list, and read the PR titles:

bash
gh pr view <number> --repo tetherto/qvac --json title,body

Drop any PR whose diff does not touch packages/<pkg>/. Read the actual source diff for the user-visible behaviour — do not paraphrase commit messages, which go stale. (A real example: a merged commit advertised an opt-in env var that did not exist in the merged code.)

Step 3 — Choose the bump level

Honour an explicit major|minor|patch argument. Otherwise default to minor, and state the reasoning before editing. The de-facto rule from this repo's history:

ChangeLevel
New public API, new config key, new supported model, changed defaultminor
Bug fix onlypatch
qvac-fabric dependency bumpminor for 0.x, major for >=1.0 — see /rollout-phase-b
Breaking changemajor — never selected automatically

Never auto-select major. For a package already at major ≥ 1 still default to minor here; a major bump must be an explicit user decision, passed as the major argument.

translation-nmtcpp is the only current post-1.0 addon (9.0.0). Its history used to be inconsistent — the same rollout landed as both minor and major — but 8.3.1 → 9.0.0 (#3567), a dependency-floor alignment with no breaking API change, settled it: post-1.0 packages take the major on a fabric rollout. /rollout-phase-b codifies that and passes major explicitly, which satisfies the never-auto-select rule.

Note that for a 0.x package a minor bump is technically the SemVer breaking-change signal; this repo leans on that deliberately, so a minor default is correct rather than conservative.

Print the decision before touching files:

llm-llamacpp: 0.39.0 -> 0.40.0 (minor)
  reason: adds new supported finetuning architectures (new accepted config values)

Step 4 — Bump package.json

Edit packages/<pkg>/package.json with the Edit tool, changing only the version field. Nothing else in that file, and no other file — in particular never vcpkg.json (that is a dependency floor, not the package version) and never vcpkg-configuration.json's default-registry.baseline.

Step 5 — Write the CHANGELOG entry

Insert at the top of packages/<pkg>/CHANGELOG.md, directly below the preamble and above the previous version heading. The dominant addon shape:

markdown
## [<version>] - <YYYY-MM-DD>

<optional 1-3 sentence intro — worth it for a feature release, skip for a one-line fix>

### Added

- <bullet; backtick identifiers; use -> for transitions; explain why it matters, not just what changed>

### Pull Requests

- [#3509](https://github.com/tetherto/qvac/pull/3509) - <PR title>

Rules:

  • The heading must be bracketed — literally ## [0.40.0]. ## 0.40.0, ##[0.40.0] and ### [0.40.0] all fail the extractor at .github/actions/verify-changelog-notes/action.yml, whose awk is $0 ~ "^## \\[" version "\\]". This is the single most common way this task goes wrong.
  • Use the date the bump lands, YYYY-MM-DD.
  • Section headings are level-3: ### Added, ### Changed, ### Fixed. Pick by intent — new capability is Added, altered behaviour or a dependency bump is Changed, a defect fix is Fixed. Do not use the level-2 ## Features / ## Bug Fixes style; /addon-changelog's own documentation still shows it, but that documentation is stale and no current addon entry uses it.
  • The body must be non-empty until the next ^## [, or the extractor errors with Changelog section for version X is empty.
  • ## [Unreleased] blocks exist in ocr-ggml, tts-ggml and decoder-audio. Insert the new dated entry below the Unreleased block. Do not fold Unreleased content into your version, and do not insert above it — that makes the extractor slice your body off at ## [Unreleased]. Precedent: commit dfd1fd7eb on ocr-ggml.
  • Match the file's existing preamble. Some packages have a Keep-a-Changelog + SemVer preamble, some just # Changelog. Do not add one that was not there.
  • If the version documents work someone else merged, describe the merged code, and say so if a commit message contradicts it.
Show full SKILL.md (488 more words)Show less

Step 6 — Report what happens next

Look up the git tag by reading repoName from packages/<pkg>/project.json (targets.on-merge.options.ci), which on-merge-nx.yml passes to create-release-tag.yml. Never derive the tag from the directory name — several are counter-intuitive:

PackageTag
llm-llamacppllamacpp-llm-v<ver> (reversed)
embed-llamacppllamacpp-embed-v<ver> (reversed)
vla-ggmlvla-v<ver> (no -ggml)
translation-nmtcppbare v<ver>
ocr-ggmlocr-ggml-v<ver>
classification-ggmlclassification-ggml-v<ver>

Addons get a git tag only, no GitHub Release — on-merge-nx.yml calls create-release-tag.yml since #2602. Do not promise a Releases-page entry; only the SDK publishes one.

Then tell the user the next step is /release <pkg>, which cuts release-<pkg>-<version>, dispatches on-merge-nx.yml with package=<pkg>, and pauses at the human-only npm approval gate.

Step 7 — Verify before committing

bash
grep -nE "^## \[<version>\]" packages/<pkg>/CHANGELOG.md
git -C <repo> diff --stat origin/main
  • The grep must match. This is the extractor's own regex — if it does not match, the release fails later, not now.
  • package.json version must equal the heading version exactly.
  • The diff must show exactly two files: package.json and CHANGELOG.md. Anything else means something was swept in.

Then commit on a branch off origin/main — never on main, never on a release-* branch:

bash
git -C <repo> worktree add -b <TICKET>/bump-<pkg>-<version> <path> origin/main

Commit title follows the repo convention TICKET prefix[tags]: subject, with chore as the prefix (precedent: chore: bump llm-llamacpp to 0.38.1):

QVAC-12345 chore: bump <pkg> to <version> for <reason>

Add no [api] tag unless the public API or config surface actually changed — widening the set of accepted values is not an API change. Add no AI signature or Co-Authored-By trailer.

PR body uses the repo's four-section format: problem / how / tested / breaking changes.

What CI actually enforces

Be accurate about this; two in-repo docs are wrong.

For addons, release-merge-guard (.github/actions/release-merge-guard/) asserts exactly three things:

  1. the branch matches release-<slug>-x.y.z;
  2. package.json version equals the version in the branch name;
  3. CHANGELOG.md was modified (skipped on initial branch push and on workflow_dispatch).

It does not validate the heading text for addons, and no CI check anywhere compares the new version against the previous one. So a malformed heading will not fail the guard — it fails /release Step 1, and would fail the release-body extractor for the SDK and the two lib packages that still use it.

Write the bracketed heading regardless: /release, /addon-changelog, /release-patch and /release-fabric-consumers all assume it.

Do not copy from ci-validation.mdc:234 (claims the guard checks the heading, and shows an unbracketed ## x.y.z) or from /addon-changelog's level-2 section example. Both are stale.

Bash discipline

Per repo CLAUDE.md: no heredocs, no $() command substitution, no &&/||/; chaining, no pipes or redirects. Use Read / Write / Edit / Grep / Glob instead of cat / sed / grep / find, and git -C <path> instead of cd. Put anything longer than a single command in a script file and run bash <file>.

Error handling

  • release-merge-guard fails on merge — version not bumped, the branch name does not match the version, or CHANGELOG.md was not modified.
  • /release Step 1 fails — the changelog heading is missing or unbracketed. Fix the heading.
  • npm publish rejects the version — it already exists. Check npm view @qvac/<pkg> versions and pick the next free one.
  • Never weaken, skip, or delete a test to get a bump through.

© tetherto, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in packages/ocr-ggml/.agent/skills/bump-version of tetherto/qvac.

Open the folder on GitHubat commit c3a6030

Compare with similar skills

Bump Version next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Bump Version compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Bump Version this skilltetherto/qvac681—~3kAutomated safety check: PassApache-2.0
Phoenix Release NotesArize-ai/phoenix12k—~6.7kAutomated safety check: PassCustom licence
Cutting A ReleaseTriliumNext/Trilium38k—~3.2kAutomated safety check: PassAGPL-3.0
Verdaccio Pull Request Workflowverdaccio/verdaccio18k—~1.9kAutomated safety check: PassMIT
Version ReleaseNG-ZORRO/ng-zorro-antd9.2k—~3.1kAutomated safety check: PassMIT
AionUi Version BumpiOfficeAI/AionUi33k—~2.1kAutomated safety check: PassApache-2.0

Similar skills

  • Phoenix Release Notes

    Arize-ai/phoenix

    Create Phoenix release documentation grounded in actual code changes.

    12k GitHub stars~6.7k tokensUpdated today
    DevelopmentAuto-check passed
  • Cutting A Release

    TriliumNext/Trilium

    A skill your agent uses when cutting, preparing, or debugging a Trilium release — bumping the monorepo version, tagging, or diagnosing a failed "Release" workflow run.

    38k GitHub stars~3.2k tokensUpdated today
    DevelopmentAuto-check passed
  • Takes a change through a verdaccio pull request: branch, local checks, changeset, title and body, labels, CI and review rounds, and ports to other release lines.

    18k GitHub stars~1.9k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Version Release

    NG-ZORRO/ng-zorro-antd

    NG-ZORRO/ng-zorro-antd repository release workflow. An agent skill from NG-ZORRO/ng-zorro-antd.

    9.2k GitHub stars~3.1k tokensUpdated today
    DevelopmentAuto-check passed
  • AionUi Version Bump

    iOfficeAI/AionUi

    Automates an AionUi release: checks the latest AionCore release and its artifacts, updates package.json, writes the changelog, opens a PR and tags the release.

    33k GitHub stars~2.1k tokensUpdated 28 days ago
    DevelopmentAuto-check passed
  • Hunk Release Workflow

    modem-dev/hunk

    Maintainer workflow for preparing, publishing, verifying and curating Hunk releases, with confirmation gates before tags, publishes and public edits.

    9.5k GitHub stars~3.8k tokensUpdated today
    DevelopmentAuto-check passed

More from tetherto/qvac

All 50 skills in this repo
  • Creates a Solutions page in the QVAC documentation website from a real use case, generalizing the case into reusable guidance and registering the page in the site navigation.

    681 GitHub stars~2.8k tokensUpdated today
    Auto-check passed
  • Qv Docs Update

    tetherto/qvac

    Updates the docs website after a change to the SDK or CLI. An agent skill from tetherto/qvac.

    681 GitHub stars~11k tokensUpdated today
    Auto-check passed
  • Qv Agent Stack Sync

    tetherto/qvac

    Plan and prepare the QVAC agent-stack release cascade across @qvac/inference, @qvac/sdk, @qvac/cli, @qvac/ai-sdk-provider, @qvac/opencode-plugin, and @qvac/openclaw-plugin.

    681 GitHub stars~2k tokensUpdated today
    Auto-check passed
  • Run the deterministic code-quality audit, turn related findings into contextual remediation groups, prepare approval-gated Asana proposals, reconcile recurring runs, or configure twice-monthly…

    681 GitHub stars~1.6k tokensUpdated today
    Auto-check passed
  • Review C++ changes for string parameter and call-site efficiency conventions (std::stringview, std::string&&, const std::string&, const char, and TransparentStringMap lookup).

    681 GitHub stars~702 tokensUpdated today
    Auto-check passed
  • Qv Addon Changelog

    tetherto/qvac

    Generate changelog entries for a target add-on package. An agent skill from tetherto/qvac.

    681 GitHub stars~1.7k tokensUpdated today
    Auto-check passed

Works with

Questions about Bump Version

What does Bump Version do?

Bump a native addon package's version in package.json and write its CHANGELOG.md entry. Bump Version is an agent skill from tetherto/qvac.md entry.

When should I use Bump Version?

Bump Version fits situations like: tasks that involve Changelog and release notes.

How do I install Bump Version in Claude Code?

Run `npx skills add tetherto/qvac --skill bump-version -a claude-code`. Or copy the skill folder (packages/ocr-ggml/.agent/skills/bump-version in tetherto/qvac) into .claude/skills/bump-version in your project. Claude Code loads it when a task matches its description.

How do I install Bump Version in Codex?

Run `npx skills add tetherto/qvac --skill bump-version -a codex`. Or copy the skill folder (packages/ocr-ggml/.agent/skills/bump-version in tetherto/qvac) into .agents/skills/bump-version in your project. Codex loads it when a task matches its description.

Can I use Bump Version in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add tetherto/qvac --skill bump-version -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/bump-version, .gemini/skills/bump-version, .github/skills/bump-version and .opencode/skills/bump-version in your project.

What does Bump Version need to run?

Going by SKILL.md and its folder, Bump Version needs the command-line tools its instructions call (git, npm, gh and bash).

Does Bump Version access the network?

SKILL.md contains no URLs. Its commands use git, npm and gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Bump Version safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Bump Version use?

Bump Version is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Bump Version use?

About 3k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Bump Version?

Skills that share tags, products or a category with Bump Version: Phoenix Release Notes (Arize-ai/phoenix, 12k stars), Cutting A Release (TriliumNext/Trilium, 38k stars), Verdaccio Pull Request Workflow (verdaccio/verdaccio, 18k stars) and Version Release (NG-ZORRO/ng-zorro-antd, 9.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Bump Version?

tetherto (a GitHub organization) maintains it in tetherto/qvac, which has 681 GitHub stars. The repository holds 50 skills in this directory. The repository was last updated on October 7, 2026.

Source: tetherto/qvac on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.