Phoenix Release Notes
Arize-ai/phoenix
Create Phoenix release documentation grounded in actual code changes.
Bump a native addon package's version in package.json and write its CHANGELOG.md entry.
$ npx skills add tetherto/qvac --skill bump-version -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install tetherto/qvac bump-version --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "bump-version" agent skill from https://github.com/tetherto/qvac/tree/main/packages/ocr-ggml/.agent/skills/bump-version into .claude/skills/bump-version/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bump-version", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/tetherto/qvac/tree/main/packages/ocr-ggml/.agent/skills/bump-versionType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add tetherto/qvac --skill bump-version -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install tetherto/qvac bump-version --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tetherto/qvac.git skills-src && mkdir -p .agents/skills && cp -r skills-src/packages/ocr-ggml/.agent/skills/bump-version .agents/skills/bump-version && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "bump-version" agent skill from https://github.com/tetherto/qvac/tree/main/packages/ocr-ggml/.agent/skills/bump-version into .agents/skills/bump-version/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bump-version", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add tetherto/qvac --skill bump-version -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install tetherto/qvac bump-version --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tetherto/qvac.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/packages/ocr-ggml/.agent/skills/bump-version .cursor/skills/bump-version && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "bump-version" agent skill from https://github.com/tetherto/qvac/tree/main/packages/ocr-ggml/.agent/skills/bump-version into .cursor/skills/bump-version/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bump-version", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/tetherto/qvac.git --path packages/ocr-ggml/.agent/skills/bump-version--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add tetherto/qvac --skill bump-version -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install tetherto/qvac bump-version --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tetherto/qvac.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/packages/ocr-ggml/.agent/skills/bump-version .gemini/skills/bump-version && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "bump-version" agent skill from https://github.com/tetherto/qvac/tree/main/packages/ocr-ggml/.agent/skills/bump-version into .gemini/skills/bump-version/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bump-version", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install tetherto/qvac bump-versionInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add tetherto/qvac --skill bump-version -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/tetherto/qvac.git skills-src && mkdir -p .github/skills && cp -r skills-src/packages/ocr-ggml/.agent/skills/bump-version .github/skills/bump-version && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "bump-version" agent skill from https://github.com/tetherto/qvac/tree/main/packages/ocr-ggml/.agent/skills/bump-version into .github/skills/bump-version/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bump-version", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add tetherto/qvac --skill bump-version -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install tetherto/qvac bump-version --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tetherto/qvac.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/packages/ocr-ggml/.agent/skills/bump-version .opencode/skills/bump-version && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "bump-version" agent skill from https://github.com/tetherto/qvac/tree/main/packages/ocr-ggml/.agent/skills/bump-version into .opencode/skills/bump-version/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "bump-version", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
bump-versionBump a native addon package's version in package.json and write its CHANGELOG.md entry.
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.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit c3a6030. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
gitnpmghbashFrom the folder's file list and the shell code blocks in SKILL.md.
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.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
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.
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.
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.
The full file from tetherto/qvac at commit c3a6030, republished under its Apache-2.0 licence (© tetherto). 1,417 words, ~2,974 tokens.
.claude/skills/bump-version/SKILL.md (or your agent's skills folder).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.
/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 explicitUse 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:
| Case | Use 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 |
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.latest. Report both numbers and stop.release-* branch. That is /release-patch territory — a release branch
must stay a byte-exact copy of its base. Stop.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.
Never trust the local checkout; it is routinely days or thousands of commits behind.
git -C <repo> fetch origin main
git -C <repo> show origin/main:packages/<pkg>/package.jsonRead version from that output. Cross-check the published version:
npm view @qvac/<pkg> dist-tags.latestExpect 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.
Resolve the previous release tag (see Step 6 — do not guess it from the directory name), then:
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:
gh pr view <number> --repo tetherto/qvac --json title,bodyDrop 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.)
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:
| Change | Level |
|---|---|
| New public API, new config key, new supported model, changed default | minor |
| Bug fix only | patch |
qvac-fabric dependency bump | minor for 0.x, major for >=1.0 — see /rollout-phase-b |
| Breaking change | major — 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)package.jsonEdit 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.
Insert at the top of packages/<pkg>/CHANGELOG.md, directly below the preamble and above the previous
version heading. The dominant addon shape:
## [<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:
## [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.YYYY-MM-DD.### 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.^## [, 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.# Changelog. Do not add one that was not there.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:
| Package | Tag |
|---|---|
llm-llamacpp | llamacpp-llm-v<ver> (reversed) |
embed-llamacpp | llamacpp-embed-v<ver> (reversed) |
vla-ggml | vla-v<ver> (no -ggml) |
translation-nmtcpp | bare v<ver> |
ocr-ggml | ocr-ggml-v<ver> |
classification-ggml | classification-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.
grep -nE "^## \[<version>\]" packages/<pkg>/CHANGELOG.md
git -C <repo> diff --stat origin/maingrep 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.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:
git -C <repo> worktree add -b <TICKET>/bump-<pkg>-<version> <path> origin/mainCommit 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.
Be accurate about this; two in-repo docs are wrong.
For addons, release-merge-guard (.github/actions/release-merge-guard/) asserts exactly three
things:
release-<slug>-x.y.z;package.json version equals the version in the branch name;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.
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>.
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 view @qvac/<pkg> versions and
pick the next free one.© 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
Just SKILL.md in packages/ocr-ggml/.agent/skills/bump-version of tetherto/qvac.
Open the folder on GitHubat commit c3a6030
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Bump Version this skilltetherto/qvac | 681 | — | ~3k | Automated safety check: Pass | Apache-2.0 | |
| Phoenix Release NotesArize-ai/phoenix | 12k | — | ~6.7k | Automated safety check: Pass | Custom licence | |
| Cutting A ReleaseTriliumNext/Trilium | 38k | — | ~3.2k | Automated safety check: Pass | AGPL-3.0 | |
| Verdaccio Pull Request Workflowverdaccio/verdaccio | 18k | — | ~1.9k | Automated safety check: Pass | MIT | |
| Version ReleaseNG-ZORRO/ng-zorro-antd | 9.2k | — | ~3.1k | Automated safety check: Pass | MIT | |
| AionUi Version BumpiOfficeAI/AionUi | 33k | — | ~2.1k | Automated safety check: Pass | Apache-2.0 |
Arize-ai/phoenix
Create Phoenix release documentation grounded in actual code changes.
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.
verdaccio/verdaccio
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.
NG-ZORRO/ng-zorro-antd
NG-ZORRO/ng-zorro-antd repository release workflow. An agent skill from NG-ZORRO/ng-zorro-antd.
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.
modem-dev/hunk
Maintainer workflow for preparing, publishing, verifying and curating Hunk releases, with confirmation gates before tags, publishes and public edits.
tetherto/qvac
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.
tetherto/qvac
Updates the docs website after a change to the SDK or CLI. An agent skill from tetherto/qvac.
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.
tetherto/qvac
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…
tetherto/qvac
Review C++ changes for string parameter and call-site efficiency conventions (std::stringview, std::string&&, const std::string&, const char, and TransparentStringMap lookup).
tetherto/qvac
Generate changelog entries for a target add-on package. An agent skill from tetherto/qvac.
Works with
Categories
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.
Bump Version fits situations like: tasks that involve Changelog and release notes.
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.
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.
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.
Going by SKILL.md and its folder, Bump Version needs the command-line tools its instructions call (git, npm, gh and bash).
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.
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.
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.
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.
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.
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.