Agent skill

Release Fabric Consumers

by tetherto in tetherto/qvac

Release the qvac-fabric consumers to npm after the bundled version-bump PR merges — one release branch + on-merge dispatch per consumer, stopping at the npm approval gate.

Apache-2.0Auto-check: warningsAI & LLM Engineering

Install Release Fabric Consumers

The automated check flagged lines worth reading first. See the safety section below.

skills CLI
$ npx skills add tetherto/qvac --skill release-fabric-consumers -a claude-code

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

GitHub CLI
$ gh skill install tetherto/qvac release-fabric-consumers --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/release-fabric-consumers .claude/skills/release-fabric-consumers && 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
release-fabric-consumers
GitHub stars
683
Token cost
~4.3k tokens
SKILL.md length
2,083 words
Files
1
Skills in repo
50
Repo updated
First seen
Licence
Apache-2.0

At a glance

Release the qvac-fabric consumers to npm after the bundled version-bump PR merges — one release branch + on-merge dispatch per consumer, stopping at the npm approval gate.

  • Works in 6 steps: Sync and read target versions → Create + assert + push each release branch → Dispatch the on-merge workflow → …
  • AI & LLM Engineering work in your project
  • SKILL.md covers Usage, Prerequisites, The consumers and Working repo & the golden…, plus 4 more sections
  • Calls git, gh and npm; needs NPM_TOKEN

What it does

Release Fabric Consumers is an agent skill from tetherto/qvac. Release the qvac-fabric consumers to npm after the bundled version-bump PR merges — one release branch + on-merge dispatch per consumer, stopping at the npm approval gate. Supports --exclude to hold packages back. Phase C after rollout-phase-b.

Its SKILL.md is about 4.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 AI & LLM Engineering. 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

  • AI & LLM Engineering work in your project

Example prompts

  • “/release-fabric-consumers”

Workflow steps

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

  1. Sync and read target versions
  2. Create + assert + push each release branch
  3. Dispatch the on-merge workflow
  4. Monitor to the approval gate (do NOT approve)
  5. After the user approves, verify
  6. Report

What it can do on your machine

Read from SKILL.md and the folder at commit f874b3a. 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
    • gh
    • npm
    • 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, gh and npm, 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 these keys or tokens, usually read from environment variables:

    • NPM_TOKEN

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

Context cost

Release Fabric Consumers loads about 4.3k tokens when it runs. Until then it costs about 67 tokens; SKILL.md has 2,083 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~67
When it runs · the whole SKILL.md, loaded when a task matches
~4.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: warnings

The automated check found patterns that need a careful read before installing.

  • WarningMentions a credentials file (SSH keys, cloud or package-manager tokens)SKILL.md:235
    bare registry `.npmrc` and an **isolated `HOME`** (so the user's token is never read),

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 f874b3a, republished under its Apache-2.0 licence (© tetherto). 2,083 words, ~4,299 tokens.

Download SKILL.mdSave it as .claude/skills/release-fabric-consumers/SKILL.md (or your agent's skills folder).
name
release-fabric-consumers
description
Release the qvac-fabric consumers to npm after the bundled version-bump PR merges — one release branch + on-merge dispatch per consumer, stopping at the npm approval gate. Supports --exclude to hold packages back. Phase C after rollout-phase-b.
argument-hint
[base-branch] [--exclude <pkg>[,<pkg>...]]
disable-model-invocation
true

Release qvac-fabric consumers to npm

Publish the qvac-fabric consumers to npm in one coordinated pass. This is the final phase of a fabric rollout — the step after rollout-phase-b's bundled version-bump PR (vcpkg version>= + package.json + CHANGELOG.md for the full roster) has merged to main. It applies the single-package release workflow to every consumer in the release set at once.

It reuses the same mechanics as /release (cut a release-* branch → dispatch on-merge-nx.yml with the package as an input → the on-merge workflow builds prebuilds, publishes to npm with the latest tag, and creates a git tag), but for the whole release set, and it is aware of the per-consumer quirks and the mandatory human approval gate.

The release set is the full consumer roster (see the table below) minus anything named in --exclude. Every step below operates on the release set, not the roster.

Usage

/release-fabric-consumers [base-branch] [--exclude <pkg>[,<pkg>...]]

/release-fabric-consumers
/release-fabric-consumers main --exclude model-fit
/release-fabric-consumers main --exclude model-fit,vla-ggml
  • [base-branch] — optional; the branch the version bumps landed on. Defaults to main.
  • --exclude <pkg>[,<pkg>...] — optional; comma-separated packages/ directory names (the first column of the consumer table) to hold back from this pass. Everything else in the roster is released.

Validate --exclude before touching anything. A value that does not match a packages/ dir name in the table is a hard error, not a silent no-op — a typo like --exclude modelfit would otherwise quietly release the very package the user meant to hold back. Report the unmatched name and stop before creating any release branch. Excluding every consumer is likewise an error, not an empty success.

Prerequisites

  • The consumer bump is merged to <base-branch> — either rollout-phase-b's own bundled PR (e.g. qvac#3334) or, in --on-top-of-pr mode, the feature PR the bumps rode in on (e.g. qvac#3725). The target versions live on origin/<base-branch>.
  • For each consumer in the release set, origin/<base-branch>'s package.json version is higher than the current npm latest (i.e. npm is one bump behind). If not, the version bump PR hasn't merged yet — stop.
  • Each release-set consumer's CHANGELOG.md has a ## [<version>] - <date> section (bracketed heading — the release-merge-guard requires this exact format).

These are checked only for the release set — a package held back by --exclude is never inspected, which is the point of excluding it.

Watch for a never-published consumer

The "npm is one bump behind" check can pass for the wrong reason. A package whose npm latest reads 0.0.0 with no release tag has never actually been published — 0.0.0 is a name placeholder, so any real version compares as "higher" and the precondition passes while the package is in a first-publish state this skill otherwise assumes away.

bash
npm view @qvac/<pkg> dist-tags.latest
git -C <repo> ls-remote --tags origin "<tag-prefix>-v*"

Both signals together (0.0.0 and no tag) mean a first release. 0.0.0 here is a sentinel, not a version that drifts — it is npm's placeholder for a name reserved but never published, so it stays literal. Which package is in that state does drift, so run the two commands above across the roster rather than trusting a name written here; model-fit was the instance when this was written and has since published. When a package is in that state, its first release needs two things settled before dispatch:

  1. a dated ## [<version>] - <date> entry — a CHANGELOG.md holding only an ## [Unreleased] block is what the release extractor will not accept as a version section;
  2. a decision on whether the version already on origin/main publishes as-is, or is superseded by the rollout bump. Do not bump past an unpublished version without asking — that silently burns a version number.

Until both are settled, hold it back with --exclude <pkg> rather than dispatching it and dealing with a failed release-merge-guard. That is the supported way to release the rest of the roster on schedule while a first-publish package waits.

The consumers

This table is the full roster. The release set is this list minus --exclude.

Package dir (packages/)npm nameon-merge workflowgit-tag created
embed-llamacpp@qvac/embed-llamacppon-merge-nx.ymlllamacpp-embed-v<ver>
fabric@qvac/fabricon-merge-nx.ymlfabric-v<ver>
llm-llamacpp@qvac/llm-llamacppon-merge-nx.ymlllamacpp-llm-v<ver>
model-fit@qvac/model-fiton-merge-nx.ymlmodel-fit-v<ver>
ocr-ggml@qvac/ocr-ggmlon-merge-nx.ymlocr-ggml-v<ver>
translation-nmtcpp@qvac/translation-nmtcppon-merge-nx.ymlv<ver> (bare)
vla-ggml@qvac/vla-ggmlon-merge-nx.ymlvla-v<ver>

The git-tag column is not uniform. Use the package's entry when checking a release.

classification-ggml is not in this list. It dropped the qvac-fabric vcpkg dependency and now consumes the published npm package @qvac/fabric, so it is not part of a fabric rollout — see Release fabric first below for the one follow-up it needs.

Working repo & the golden guardrail

  • Run all git/gh operations in the code working repo (e.g. ~/repo/qvac) — NOT a stale/read-only worktree. Verify the repo is on the right remote (tetherto/qvac).
  • Base every release branch on origin/<base-branch>, never on local HEAD (local main is often behind).
  • GOLDEN RULE — a release branch modifies ZERO files. It is an exact copy of origin/<base-branch>. Create it without a checkout, then assert an empty diff before pushing. Never edit anything under .github/workflows/**. If the diff is non-empty, STOP and report — do not push.

Workflow

Do the whole release set in parallel unless told otherwise (version-only bumps were already build-validated on the fabric sync PR; a canary-first order is a fine alternative).

Release fabric first

@qvac/fabric is the shared runtime addon the others build against, and it is also a caret dependency of @qvac/classification-ggml. Publish it ahead of the rest so downstream installs resolve against the new build rather than the previous one.

Then check the caret. Read both values rather than assuming either — they move every release, so any version written here would be wrong by the time you read it:

bash
git -C <repo> grep -h "@qvac/fabric" origin/main -- packages/classification-ggml/package.json
git -C <repo> grep -h '"version"' origin/main -- packages/fabric/package.json

On a 0.x version a caret locks the minor: ^0.<m>.<p> absorbs later 0.<m>.x automatically but will not cross to 0.<m+1>.0. So if this release moves @qvac/fabric's minor past the one classification-ggml's caret pins, classification-ggml needs a manual dependency bump — track it as a follow-up after the release, not as part of the rollout PR. This has happened before and is expected to recur; packages/classification-ggml/CHANGELOG.md records each crossing.

If fabric is in --exclude, this ordering step does not apply to that pass and the classification-ggml caret follow-up does not arise — release the rest of the set in parallel and say in the report that the ordering constraint was moot.

Step 1 — Sync and read target versions
bash
git -C <repo> fetch origin <base-branch>

Resolve the release set first (roster minus --exclude, with --exclude validated per Usage), then for each consumer in the release set read the version off origin/<base-branch> (git -C <repo> show origin/<base-branch>:packages/<pkg>/package.json) and confirm npm view @qvac/<pkg> version is lower. Also confirm no target release-* branch already exists on the remote (git -C <repo> ls-remote --heads origin "release-<pkg>-<ver>").

State the resolved release set and the excluded packages before proceeding, so the user can catch a wrong set before any branch is pushed.

Step 2 — Create + assert + push each release branch
bash
git -C <repo> branch release-<pkg>-<ver> origin/<base-branch>    # no checkout
git -C <repo> diff --stat origin/<base-branch>..release-<pkg>-<ver>   # MUST be empty
git -C <repo> push origin release-<pkg>-<ver>                    # non-force, non-main
Step 3 — Dispatch the on-merge workflow
bash
gh workflow run on-merge-nx.yml --repo tetherto/qvac \
  --ref release-<pkg>-<ver> -f package=<pkg>

package is a required choice input and takes the package directory name, the same string the branch carries.

Pushing a fresh release-* branch usually does not auto-trigger (path filter sees no new commits), so the explicit dispatch is the trigger — but check gh run list --branch release-<pkg>-<ver> and, if a push-triggered run already exists, do NOT double-dispatch.

Show full SKILL.md (913 more words)Show less
Step 4 — Monitor to the approval gate (do NOT approve)

Poll until each run pauses at publish-npm. Read the run URL straight from gh rather than hand-assembling it from a run id:

bash
gh run list --branch release-<pkg>-<ver> --repo tetherto/qvac --limit 1 --json databaseId,url,status,conclusion
gh api repos/tetherto/qvac/actions/runs/<run-id>/pending_deployments

Job order per run: label-gate (auto) → publish-logic + release-merge-guard (env release, branch-policy only) → build (prebuilds, ~9 platforms) → publish-npm (env npm, required reviewers) ← PAUSES HERE → create-tag.

When a run reaches the npm pending-deployment gate, STOP and hand off to the user.

Required output format. Emit the CI run links as one line per addon, in the order of the consumer table, and nothing else on those lines:

<addon>: <CI run link>
  • <addon> is the packages/ directory name (fabric, embed-llamacpp, vla-ggml, translation-nmtcpp, …) — not the npm name, not the workflow name.
  • <CI run link> is the run's url from the gh run list --json call above, i.e. https://github.com/tetherto/qvac/actions/runs/<run-id>.
  • Only the release set appears. Packages held back by --exclude get no line.
  • Every addon in the set gets a line, even if its run has not yet reached the gate — append a short state marker (— awaiting gate, — build running, — failed) so the list is never partial and a missing package is always a real problem rather than a timing artifact.

Worked example (--exclude model-fit):

fabric: https://github.com/tetherto/qvac/actions/runs/31390432306
embed-llamacpp: https://github.com/tetherto/qvac/actions/runs/31390431726
llm-llamacpp: https://github.com/tetherto/qvac/actions/runs/31390432200
ocr-ggml: https://github.com/tetherto/qvac/actions/runs/31390430929
translation-nmtcpp: https://github.com/tetherto/qvac/actions/runs/31390430912
vla-ggml: https://github.com/tetherto/qvac/actions/runs/31390432221 — build running

After the list, note the gate detail once — gated job publish-npm, environment npm, and which runs are already pending approval. That is context; the list is the hand-off artifact.

Never approve the deployment yourself (the automation token has can_approve=false anyway; only a qvac-internal-release member can).

Step 5 — After the user approves, verify

Once publish-npm + create-tag complete for a consumer:

bash
npm view @qvac/<pkg> dist-tags.latest                 # == <ver>
git -C <repo> ls-remote --tags origin "<git-tag>"     # tag exists (see per-package table)

Public-access check (token-less): install each @qvac/<pkg>@<ver> into a clean dir with a bare registry .npmrc and an isolated HOME (so the user's token is never read), --ignore-scripts --no-package-lock; confirm the installed package.json version matches. Put this loop in a script file and run bash <file> (see Bash discipline).

Step 6 — Report

Consolidated table: package, npm latest, git tag, public-install ✓, CI run link. Release branches are never merged back to main; offer to delete the leftover local branches.

State explicitly which packages were excluded and why (e.g. model-fit — first publish, awaiting dated CHANGELOG entry and version decision). A pass that silently covers six of seven is indistinguishable later from one that dropped a package by accident.

Restrictions & nuances (hard-won)

  • All consumers publish from on-merge-nx.yml, selected by the package input. Both the input and the release branch use the package directory name, including release-vla-ggml-<ver>.
  • The release branch name is load-bearing. detect parses release-<pkg>-<x.y.z>, requires packages/<pkg>/project.json to exist, and refuses to publish unless the run selected exactly that package. A misnamed branch fails the run rather than publishing the wrong thing.
  • git-tag naming varies per package — do NOT assume <pkg>-v<ver>. Use the table: llamacpp-embed-v<ver>, fabric-v<ver>, llamacpp-llm-v<ver>, model-fit-v<ver>, ocr-ggml-v<ver>, bare v<ver> for translation-nmtcpp, and vla-v<ver>. The tag comes from create-release-tag.yml, which builds <repo_name>-v<published_version> from repoName in each package's project.json (targets.on-merge.options.ci) — read that rather than guessing from the directory name if a new consumer appears.
  • label-gate auto-authorises release dispatches. The label-gate/Authorise job treats push and workflow_dispatch as trusted events (authorised=true) — so a release-* branch dispatch needs no labels at all. PR events are the contrasting case, and they do not want verified either: they need the granular stage labels (prebuilds plus the four run-*), which are the only names ci-router reads. verified selects nothing anywhere — the label gate was retired repo-wide.
  • The npm approval gate is mandatory and human-only. publish-npm runs in the npm environment, protected by required_reviewers (team qvac-internal-release). Every run pauses there. Detect via .../pending_deployments. Never approve — hand off to the user. (Earlier jobs use env release, which has only a branch_policy allowing release-*, so they never gate.)
  • No GitHub Release objects are created. This pipeline produces npm publishes + git tags only. gh release view <tag> returns "release not found" — that is EXPECTED, not a failure. (The create-github-release.yml workflow is unrelated/defunct on another branch.) Do not treat a missing GitHub Release as an error.
  • Release branches never merge back to main; local copies remain after the run — offer to clean them up. If a target release-* branch already exists on the remote, ask the user before reusing or aborting.
  • Bash discipline (repo CLAUDE.md). In direct commands: no heredocs, no $() command substitution, no &&/||/; chaining, no pipes or redirects. Put polling loops / the public-install check in a script file and run bash <file>. Use git -C <path> and gh --repo <repo> instead of cd.
  • Sequencing. All-6-in-parallel is safe for version-only fabric bumps (already build-validated on the fabric sync PR). Canary-first (release one, verify, then fan out) is a valid slower alternative if the fabric change was risky.

Error handling

  • release-merge-guard fails → version not bumped or CHANGELOG.md missing the ## [<version>] - <date> section. Fix on main (new PR) and re-dispatch.
  • A prebuild platform fails → gh run view <run-id> --repo tetherto/qvac --log-failed.
  • npm publish fails → the version may already exist (someone released it) or NPM_TOKEN is invalid; check npm view @qvac/<pkg> versions.
  • Never delete/skip tests or weaken CI to get a release through.

Reference — the PR #3334 run (worked example)

qvac#3334 (qvac-fabric 9840.0.0) released all 6 consumers of that time via this exact flow. Runs: classification-ggml 29736362703, embed-llamacpp 29736364449, llm-llamacpp 29736366470, ocr-ggml 29736373159, translation-nmtcpp 29736374927, vla-ggml 29736376662. All paused at publish-npm; after a qvac-internal-release member approved, all 6 published to npm latest and created their (differently-named) git tags.

This is a historical record, not the current roster — classification-ggml was still a fabric consumer then, and fabric / model-fit had not been added. The flow it demonstrates is unchanged; use the table above for who to release.

© 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/release-fabric-consumers of tetherto/qvac.

Open the folder on GitHubat commit f874b3a

Compare with similar skills

Release Fabric Consumers 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.

Release Fabric Consumers compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Release Fabric Consumers this skilltetherto/qvac683—~4.3kAutomated safety check: WarnApache-2.0
OmniRoute CLI Evalsdiegosouzapw/OmniRoute74k—~1.3kAutomated safety check: PassMIT
Code Change Verificationopenai/openai-guardrails-js105—~619Automated safety check: PassMIT
Openclaw SetupFerroxLabs/wayland608—~1.9kAutomated safety check: PassAGPL-3.0
Skill HubCoWork-OS/CoWork-OS474—~586Automated safety check: PassMIT
Compromise NLP for JavaScriptspencermountain/compromise12k—~1.8kAutomated safety check: PassMIT

Similar skills

  • OmniRoute CLI Evals

    diegosouzapw/OmniRoute

    Creates and runs LLM evaluation suites from the omniroute CLI, follows live runs, shows scorecards, compares models and ties eval runs into CI.

    74k GitHub stars~1.3k tokensUpdated yesterday
    AI & LLM EngineeringAuto-check passed
  • Code Change Verification

    openai/openai-guardrails-js

    Official

    Select and run Guardrails verification for code, dependency, test, tooling, documentation, or repository-workflow changes.

    105 GitHub stars~619 tokensUpdated 2 days ago
    AI & LLM EngineeringAuto-check passed
  • Openclaw Setup

    FerroxLabs/wayland

    OpenClaw usage expert: Helps you install, deploy, configure, and use OpenClaw personal AI assistant.

    608 GitHub stars~1.9k tokensUpdated 3 days ago
    AI & LLM EngineeringAuto-check passed
  • Skill Hub

    CoWork-OS/CoWork-OS

    Use the skill-hub CLI to search, install, update, and publish agent skills from skill-hub.com.

    474 GitHub stars~586 tokensUpdated today
    AI & LLM EngineeringAuto-check passed
  • Compromise NLP for JavaScript

    spencermountain/compromise

    Guide for writing correct code with the compromise rule-based NLP library: tagging, match syntax, in-place transforms and common tasks like tense changes and redaction.

    12k GitHub stars~1.8k tokensUpdated yesterday
    AI & LLM EngineeringAuto-check passed
  • Tavily Search API Integration

    andrewyng/context-hub

    Guides building Tavily integrations for web search, URL extraction, site crawling and AI-assisted research in Python or JavaScript agent and RAG projects.

    14k GitHub stars~1.1k tokensUpdated 4 mo ago
    AI & LLM EngineeringAuto-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.

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

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

    683 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…

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

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

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

Works with

Questions about Release Fabric Consumers

What does Release Fabric Consumers do?

Release the qvac-fabric consumers to npm after the bundled version-bump PR merges — one release branch + on-merge dispatch per consumer, stopping at the npm approval gate. Release Fabric Consumers is an agent skill from tetherto/qvac. Release the qvac-fabric consumers to npm after the bundled version-bump PR merges — one release branch + on-merge dispatch per consumer, stopping at the npm approval gate.

When should I use Release Fabric Consumers?

Release Fabric Consumers fits situations like: AI & LLM Engineering work in your project.

How do I install Release Fabric Consumers in Claude Code?

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

How do I install Release Fabric Consumers in Codex?

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

Can I use Release Fabric Consumers 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 release-fabric-consumers -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/release-fabric-consumers, .gemini/skills/release-fabric-consumers, .github/skills/release-fabric-consumers and .opencode/skills/release-fabric-consumers in your project.

What does Release Fabric Consumers need to run?

Going by SKILL.md and its folder, Release Fabric Consumers needs the command-line tools its instructions call (git, gh, npm and bash) and credentials named NPM_TOKEN.

Does Release Fabric Consumers access the network?

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

Is Release Fabric Consumers safe to install?

Our automated static check of SKILL.md flagged 1 warning(s): mentions a credentials file (ssh keys, cloud or package-manager tokens). Read the flagged lines before installing; the check is not a guarantee either way.

What licence does Release Fabric Consumers use?

Release Fabric Consumers 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 Release Fabric Consumers use?

About 4.3k tokens (SKILL.md is roughly 17k 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 Release Fabric Consumers?

Skills that share tags, products or a category with Release Fabric Consumers: OmniRoute CLI Evals (diegosouzapw/OmniRoute, 74k stars), Code Change Verification (openai/openai-guardrails-js, 105 stars), Openclaw Setup (FerroxLabs/wayland, 608 stars) and Skill Hub (CoWork-OS/CoWork-OS, 474 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Release Fabric Consumers?

tetherto (a GitHub organization) maintains it in tetherto/qvac, which has 683 GitHub stars. The repository holds 50 skills in this directory. The repository was last updated on October 9, 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.