Agent Builder
shareAI-lab/learn-claude-code
Design and build AI agents for any domain. An agent skill from shareAI-lab/learn-claude-code.
Phase A of a qvac-fabric rollout — set up overlay port and validate all 7 consumers against the fabric branch before publishing to the registry.
$ npx skills add tetherto/qvac --skill rollout-phase-a -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install tetherto/qvac rollout-phase-a --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/rollout-phase-a .claude/skills/rollout-phase-a && 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 "rollout-phase-a" agent skill from https://github.com/tetherto/qvac/tree/main/packages/ocr-ggml/.agent/skills/rollout-phase-a into .claude/skills/rollout-phase-a/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rollout-phase-a", 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/rollout-phase-aType 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 rollout-phase-a -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install tetherto/qvac rollout-phase-a --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/rollout-phase-a .agents/skills/rollout-phase-a && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "rollout-phase-a" agent skill from https://github.com/tetherto/qvac/tree/main/packages/ocr-ggml/.agent/skills/rollout-phase-a into .agents/skills/rollout-phase-a/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rollout-phase-a", 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 rollout-phase-a -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install tetherto/qvac rollout-phase-a --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/rollout-phase-a .cursor/skills/rollout-phase-a && 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 "rollout-phase-a" agent skill from https://github.com/tetherto/qvac/tree/main/packages/ocr-ggml/.agent/skills/rollout-phase-a into .cursor/skills/rollout-phase-a/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rollout-phase-a", 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/rollout-phase-a--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 rollout-phase-a -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install tetherto/qvac rollout-phase-a --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/rollout-phase-a .gemini/skills/rollout-phase-a && 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 "rollout-phase-a" agent skill from https://github.com/tetherto/qvac/tree/main/packages/ocr-ggml/.agent/skills/rollout-phase-a into .gemini/skills/rollout-phase-a/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rollout-phase-a", 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 rollout-phase-aInstalls 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 rollout-phase-a -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/rollout-phase-a .github/skills/rollout-phase-a && 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 "rollout-phase-a" agent skill from https://github.com/tetherto/qvac/tree/main/packages/ocr-ggml/.agent/skills/rollout-phase-a into .github/skills/rollout-phase-a/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rollout-phase-a", 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 rollout-phase-a -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 rollout-phase-a --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/rollout-phase-a .opencode/skills/rollout-phase-a && 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 "rollout-phase-a" agent skill from https://github.com/tetherto/qvac/tree/main/packages/ocr-ggml/.agent/skills/rollout-phase-a into .opencode/skills/rollout-phase-a/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "rollout-phase-a", 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.
rollout-phase-aPhase A of a qvac-fabric rollout — set up overlay port and validate all 7 consumers against the fabric branch before publishing to the registry.
Rollout Phase A is an agent skill from tetherto/qvac. Phase A of a qvac-fabric rollout — set up overlay port and validate all 7 consumers against the fabric branch before publishing to the registry. Pass --on-top-of-pr to apply the overlay onto an open PR's head branch instead of a dedicated validation branch.
Its SKILL.md is about 5.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. 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.
10 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:
gitghcurlFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
github.comFrom 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.
Rollout Phase A loads about 5.3k tokens when it runs. Until then it costs about 68 tokens; SKILL.md has 2,554 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). 2,554 words, ~5,307 tokens.
.claude/skills/rollout-phase-a/SKILL.md (or your agent's skills folder).Prerequisites: Fabric PR open in tetherto/qvac-fabric-llm.cpp. Tag does NOT exist yet.
The 7 consumers: embed-llamacpp, fabric, llm-llamacpp, model-fit, ocr-ggml,
translation-nmtcpp, vla-ggml.
classification-ggml is not a fabric consumer — it dropped the qvac-fabric vcpkg dependency
and now consumes the published npm package @qvac/fabric. It needs neither overlay validation nor
a version>= bump during a rollout. Do not re-add it.
Re-derive the roster if in doubt — it is one command, and it changes:
git -C <repo> grep -l "qvac-fabric" origin/main -- "packages/*/vcpkg.json"Never bump default-registry.baseline in vcpkg-configuration.json. Not now, not ever during a rollout.
Why nothing breaks without it: vcpkg resolves version>= against the registry's published versions
(HEAD), not the baseline commit — the baseline is only a floor for ports with no explicit
constraint. Baselines are advanced only by separate, unrelated infra "Sync with fabric" maintenance
PRs; bumping the baseline in a rollout PR is the #1 review rejection.
| Invocation | Where the overlay lands |
|---|---|
no --on-top-of-pr | Default. A dedicated validation branch, as below. |
--on-top-of-pr <pr-url> | On top of that open PR's head branch, as one revertable commit. |
The default exists to validate fabric in isolation. --on-top-of-pr exists for the common case where
the fabric change was made because of an open feature PR: that PR already carries the consumer code
needing the new fabric, so validating on a separate branch leaves the PR's own CI building against
the published (old) fabric, and the two only meet after the whole rollout lands.
Every difference the mode makes is called out inline below under --on-top-of-pr; everything
else is shared. The overlay is scaffolding either way — /rollout-phase-b removes it, and in this
mode it does so by reverting the single commit Step 5 creates.
Do this before anything else. Nothing below runs until the user approves.
| Case | Behaviour |
|---|---|
<fabric-version> / <fabric-branch-or-commit> given on the invocation | Use them verbatim. |
| Not given | Derive from context (ladder below), recording the source of each value. |
| Neither | Name what is missing and stop. |
What was supplied is what gets used. Never substitute the registry's latest published version or
the newest fabric tag for a value the user gave you, and never "correct" a supplied value to one of
them. The version is passed bare — 10297.0.0, not v10297.0.0; the v is added at tag time in
Phase B. A v-prefixed value is malformed: report the expected form and ask.
Derivation ladder — first hit wins, and remember which one it was:
<fabric-branch-or-commit>.temp-<N> release branch with no corresponding v<N>.* tag. Fabric releases are
cut from branches named temp-<upstream-llama.cpp-build>, and the version is
<build>.<major>.<minor> — temp-10069 carries v10069.0.0, temp-9341 carries v9341.1.6. An
untagged temp-<N> is therefore the next rollout, and <N> gives the version's leading component.
The trailing .<major>.<minor> is still a human decision — propose <N>.0.0 and ask.Never derive the version from the registry's latest entry, the newest v* tag, or the consumers'
current version>= floors. All three hold the previous version.
Resolve against the remote — read-only; the fabric repo is public, so no token:
| Fact | Command |
|---|---|
| ref → commit sha | git ls-remote https://github.com/tetherto/qvac-fabric-llm.cpp <ref> |
v<VERSION> must NOT exist yet | git ls-remote --tags https://github.com/tetherto/qvac-fabric-llm.cpp "v<VERSION>" |
| commit subject + date | gh api repos/tetherto/qvac-fabric-llm.cpp/commits/<sha> --jq '{sha:.sha,msg:.commit.message,date:.commit.committer.date}' |
Do not compare the ref against master — it tracks upstream, not the release line, and reports
diverged for every legitimate rollout.
--on-top-of-pr — resolve and vet the target PROnly in this mode, and before anything else in Step 0 is presented:
gh pr view <n> --repo tetherto/qvac \
--json number,title,state,isDraft,headRefName,headRefOid,headRepositoryOwner,baseRefName,labels,filesHard stops. Report the reason, not a bare failure — each of these means the run cannot do what it claims to:
| Condition | Why it stops the run |
|---|---|
the URL is not a tetherto/qvac PR | a fabric-repo PR URL is the likely slip — that is the change being validated, not the target |
PR is not OPEN | nothing to validate |
head repo ≠ tetherto/qvac (a fork) | the overlay commit cannot be pushed to a fork's head branch |
baseRefName ∉ main / release-* / feature-* / tmp-* | every on-pr-<consumer>.yml carries that branches: filter, so no consumer workflow fires at all |
PR already carries overlay-ports or vcpkg-overlays/ports/qvac-fabric/ | already overlaid — re-applying doubles it |
local worktree dirty, or local branch ≠ headRefOid | the commit would sweep in unrelated work |
Then the stage-eligibility report — this is the check that makes the mode honest. CI stages are
routed by event, and pull_request_target is not a trusted event:
.github/actions/ci-router/action.yml enables every stage for workflow_dispatch / workflow_call /
push / schedule, but for a PR event it enables only run_verified_checks plus whatever the
granular labels select — and a draft PR routes nothing at all.
That matters because run_verified_checks gates only sanity-checks and cpp-lint. The prebuild
job — the one that actually compiles the addon against fabric — is gated on run_prebuilds.
Compute the report from the PR's own labels and draft state; never assume it:
target PR #3352 "QVAC-21981 feat[api]: ABot-World …"
head QVAC-21981/abot-world @ a2d3265d -> base main
labels: (none) draft: no
sanity-checks eligible
cpp-lint eligible
prebuild NOT eligible <- needs `prebuilds`
cpp tests NOT eligible <- needs `run-cpp-addon-tests`
desktop tests NOT eligible <- needs `run-desktop-addon-tests`
mobile tests NOT eligible <- needs `run-mobile-addon-tests`
⚠ Without at least `prebuilds`, the overlay is never compiled — the PR
goes green having built nothing against the new fabric.A draft PR is its own ⚠: it routes nothing, so the overlay sits inert until the PR is marked ready.
This is the same failure the misplaced-overlay warning in Step 3 describes — a green result that
validated the old version — reached by a different route, so treat it with the same seriousness.
Present, then ask. Label every value (as given) or (derived: <source>) — that label is what
lets the user catch a bad derivation, so never omit it. Render an anomaly (unknown ref, v<VERSION>
already present) as a ⚠ row naming its consequence:
Phase A — confirm before proceeding:
fabric version 10297.0.0 (derived: temp-10297 is untagged)
validating ref temp-10297 (derived: newest untagged release branch)
resolves to 6a32c29a7 "<subject>" <date>
tag v10297.0.0 does not exist yet ✓ (Phase B creates it)
target validation branch (default mode)In --on-top-of-pr mode the last row names the PR instead, and the stage-eligibility report above is
printed immediately below the block:
target PR #3352 on tetherto/qvac (as given)
head QVAC-21981/abot-world @ a2d3265d -> base mainThen AskUserQuestion with exactly:
Proceed · Correct a value (say which) · Abort
The run does not start until Proceed is chosen — silence is not consent, and approval is required
even when every value resolves cleanly. When a ⚠ is present, Proceed's description must name what
is being accepted — an unlabelled PR means accepting that nothing will be compiled. If nothing yields
a version, say which value is missing and stop; never guess one.
--on-top-of-pr: the working branch for Steps 1–4 is the PR's head branch — gh pr checkout <n> --repo tetherto/qvac. Do not rebase it. Rewriting a contributor's history is not this skill's
business, and the overlay works from wherever the PR's head happens to sit. Everything in Steps 1–3
is otherwise identical, all 7 consumers included.
The fabric repo is public — no token needed. Use the /archive/ URL (what vcpkg fetches). Do NOT use
gh api …/tarball/ — its differently-named top-level directory yields a different hash.
curl -fsSL https://github.com/tetherto/qvac-fabric-llm.cpp/archive/<fabric-branch-or-commit>.tar.gz -o /tmp/fabric.tgz
vcpkg hash /tmp/fabric.tgzOr let vcpkg print the expected hash on first failed fetch (intentionally wrong hash triggers it).
Copy ALL files from the registry port (tetherto/qvac-registry-vcpkg/ports/qvac-fabric/) into vcpkg-overlays/ports/qvac-fabric/ (repo root — vcpkg-overlays/ already exists, holding triplets/ and toolchains/). Then update portfile.cmake to point at the fabric branch/commit (NOT a tag — it doesn't exist yet):
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO tetherto/qvac-fabric-llm.cpp
REF <fabric-branch-or-commit>
SHA512 <sha512>
)Keep the call to those four arguments. The registry port carries no HEAD_REF, and fabric's
default branch is master — so a copied-in HEAD_REF main is both an addition to the port you were
told to copy verbatim and a wrong value.
The registry port's REF is parameterized as REF v${VERSION}; the overlay replaces it with the
literal branch/commit precisely because no tag exists yet. Phase B restores the parameterized form
by leaving the registry portfile's REF untouched.
Update vcpkg-overlays/ports/qvac-fabric/vcpkg.json with "version": "<VERSION>". (Overlays bypass
version resolution entirely, so this version only needs to satisfy the consumers' existing
version>= pin — the new <VERSION> is fine.)
Copy any other files from the registry port too (e.g. android-vulkan-version.cmake if present).
In each packages/<consumer>/vcpkg-configuration.json, add:
"overlay-ports": ["../../vcpkg-overlays/ports"]The path is relative to the vcpkg-configuration.json that declares it — hence two levels up out
of packages/<consumer>/ and back down into vcpkg-overlays/ports. Same string for all 7.
If this path is wrong, nothing errors: vcpkg finds no overlay, silently resolves qvac-fabric
from the registry, and you validate the OLD version while believing you tested the new one. Confirm
the overlay is live by checking the install log for the overlay's <VERSION>.
Do NOT change default-registry.baseline.
Do NOT bump consumer vcpkg.json "version>=" in Phase A — that happens in Phase B. The overlay bypasses version resolution entirely; only the overlay port's own vcpkg.json version needs to match.
git diff --stat must show exactly 9 files — the 7 packages/<consumer>/vcpkg-configuration.json
plus vcpkg-overlays/ports/qvac-fabric/{portfile.cmake,vcpkg.json}. Anything else means something
got swept in; in --on-top-of-pr mode that something is the PR author's own work.
git push origin <branch>origin = tetherto/qvac (cloned directly, not a fork). Push straight to origin.
--on-top-of-pr — one commit, and only the overlay in itPhase B removes the overlay by reverting this commit, so its contents decide whether that revert is safe. Two halves, both required:
The commit holds those 9 files and nothing else. Consumer C++ fixes from Step 7 are real work that stays on the PR after the rollout — they go in separate commits. Fold a fix into the overlay commit and Phase B's revert silently removes the fix along with the overlay.
The message has to be findable and self-explanatory, because the next person to read it is whoever is triaging the PR:
<TICKET> chore[notask]: overlay-validate the 7 fabric consumers against <fabric-ref>
Rollout Phase A for the <feature> fabric change. Adds the shared qvac-fabric overlay
port and points all 7 consumers at it, so they build against the fabric branch head
before the tag exists and before anything is published to the registry.
Consumer version>= pins are untouched — the overlay bypasses version resolution, so
only the overlay port's own version matters here; bumping the pins is Phase B.
default-registry.baseline is untouched in all 7.
TEMPORARY. This commit is reverted by /rollout-phase-b --on-top-of-pr before the
fabric dependency bump. The PR itself is meant to merge; this commit is not.
Rollout-Overlay: qvac-fabric <VERSION> ref=<fabric-branch-or-commit> sha=<fabric-sha>The trailing Rollout-Overlay: line is functional metadata — it is what Phase B greps for. Keep it
last and keep the prefix exact.
Do not copy DO NOT MERGE from a validation-branch commit. On a dedicated branch that marked the
whole branch as throwaway. Here the PR is meant to merge; it is the overlay commit that must go
first, and the wording above says so precisely.
Push to the PR's head branch, then print the resulting commit SHA — it is Phase B's input.
workflow_dispatch)for w in embed-llamacpp fabric llm-llamacpp model-fit ocr-ggml translation-nmtcpp vla; do
gh workflow run on-pr-$w.yml --repo tetherto/qvac --ref <validation-branch>
donevla-ggml consumer is on-pr-vla.yml (NOT on-pr-vla-ggml.yml).
on-pr-fabric.yml and on-pr-model-fit.yml follow the standard naming — vla is the only
exception.fabric first. It is the shared runtime addon the other consumers link against, so a
break there usually explains failures in the rest; fixing it first avoids chasing the same root
cause across six other runs.prebuilds or any run-* label on it, every
push re-runs ALL consumers (pull_request_target fires on each synchronize). workflow_dispatch
is a trusted event in ci-router (no label needed, every stage enabled) and lets you re-run only
the consumer(s) you actually changed. verified is not one of the labels to avoid adding or
to add — ci-router reads only prebuilds, run-cpp-addon-tests, run-desktop-addon-tests
and run-mobile-addon-tests; verified selects nothing.ci-router sets IS_AUTHORIZED=false when
draft is true, so zero stages run however many labels are on it — labels on a draft buy no
coverage. Mark it ready, or drive it by dispatch.REF/SHA512 changes the fabric
every consumer builds against, so re-dispatching only fabric after one leaves the other six
showing a stale green from the previous fabric ref, with nothing to say so. Nothing re-runs on
this branch unless you dispatch it — there is no PR here, so no path filter is doing it for you.Expected failures / flakes while monitoring:
merge-guard / validate-pr always fail on a no-PR dispatch branch — expected, ignore. (Not so in
--on-top-of-pr mode: a real PR has a real title, so these pass and a failure is genuine.)--on-top-of-pr — do NOT dispatch; the push already triggered CIThe Step 5 push auto-triggers all 7 consumer workflows: the overlay commit edits every
packages/<consumer>/vcpkg-configuration.json, which each on-pr-<consumer>.yml path-matches via
packages/<consumer>/**. Monitor those runs. Dispatching as well would duplicate every run on the
same ref.
Ask before adding labels. Step 0's eligibility report says which stages the PR is actually
eligible for, and without prebuilds none of them compile anything. Adding labels changes the CI
cost of someone else's PR, so present the report, ask, and add only what was approved. prebuilds
alone gets the addon built against fabric; run-cpp-addon-tests / run-desktop-addon-tests /
run-mobile-addon-tests add the test tiers (each of the latter two implies prebuilds).
Re-pinning the overlay re-triggers all 7 — paths: matches the whole PR, not the push. When you
iterate by moving the overlay's REF/SHA512, a commit touching only
vcpkg-overlays/ports/qvac-fabric/portfile.cmake still fires every consumer workflow. On a
pull_request_target event GitHub evaluates paths: against the PR's cumulative changed-file set
(base...head), not the delta of the push that triggered it — and Step 5's overlay commit already put
all 7 packages/<consumer>/vcpkg-configuration.json into that set, so each on-pr-<consumer>.yml
keeps matching on packages/<consumer>/** for the rest of the PR's life. Do not touch the 7
configs to force a rebuild, and do not dispatch the six: both add noise to someone else's PR for an
effect you already have.
The same rule is why adding a label re-runs all 7 — a labeled event carries no file delta at all,
yet the cumulative path match still holds. Verified on qvac#3725: commit 40a157675 changed two lines
of the portfile and fired Fabric, Embed, LLM, Model Fit, NMTCPP, OCR-GGML and VLA.
This is the one place where the two modes genuinely diverge, so do not carry the default flow's instinct across: on a dispatch-driven validation branch there is no PR and no cumulative diff, so nothing re-runs unless you dispatch it — see the re-pin warning in Step 6 above.
Apply C++ fixes (API drift, new failure modes) using the Edit tool — specific lines only. Never git checkout <branch> -- file.cpp (takes the whole file, causes regressions).
Watch for:
--on-top-of-pr: these fixes are real work that stays on the PR — commit them separately from
the Step 5 overlay commit, never as an amend to it. That commit has to stay a pure overlay so Phase B
can revert it without taking a fix with it.
Once all consumers are green, add the validation CI runs to the fabric PR description — one bullet per consumer, all 7 listed, noting the head commit they validated:
- <consumer name>: <CI run link>In --on-top-of-pr mode these are the target PR's own runs; name the PR and the head commit they
validated, so a later reader can tell which fabric ref the green belongs to.
Hi Team, Please review the PR for <feature name>
Fabric PR: https://github.com/tetherto/qvac-fabric-llm.cpp/pull/<N>
Validation branch: <validation-branch> (consumer CI runs listed in the fabric PR description)If a qvac validation PR was opened, add its link (Add on PR: https://github.com/tetherto/qvac/pull/<N>).
In --on-top-of-pr mode, replace the validation-branch line with the target PR and say the overlay is
temporary, so nobody merges it by mistake:
Validated on: https://github.com/tetherto/qvac/pull/<N> (carries a TEMPORARY qvac-fabric
overlay commit — /rollout-phase-b reverts it before the dependency bump)If you have no Slack access, print the message (with the links) to the console so the user can post it.
Wait for lead to merge fabric PR before proceeding to /rollout-phase-b.
© 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/rollout-phase-a of tetherto/qvac.
Open the folder on GitHubat commit c3a6030
Rollout Phase A 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 |
|---|---|---|---|---|---|---|
| Rollout Phase A this skilltetherto/qvac | 681 | — | ~5.3k | Automated safety check: Pass | Apache-2.0 | |
| Agent BuildershareAI-lab/learn-claude-code | 78k | 6 repos | ~1.2k | Automated safety check: Pass | MIT | |
| Add Uint Supportpytorch/pytorch | 104k | 2 repos | ~2.3k | Automated safety check: Pass | Custom licence | |
| Peft Fine TuningOrchestra-Research/AI-Research-SKILLs | 13k | 9 repos | ~3.1k | Automated safety check: Pass | MIT | |
| Segment Anything Model GuideOrchestra-Research/AI-Research-SKILLs | 13k | 9 repos | ~3.3k | Automated safety check: Pass | MIT | |
| 1passwordtrpc-group/trpc-agent-go | 1.8k | 15 repos | ~656 | Automated safety check: Pass | Apache-2.0 |
shareAI-lab/learn-claude-code
Design and build AI agents for any domain. An agent skill from shareAI-lab/learn-claude-code.
pytorch/pytorch
Add unsigned integer (uint) type support to PyTorch operators by updating ATDISPATCH macros.
Orchestra-Research/AI-Research-SKILLs
Parameter-efficient fine-tuning for LLMs using LoRA, QLoRA, and 25+ methods.
Orchestra-Research/AI-Research-SKILLs
Guide to using Meta's Segment Anything Model for zero-shot image segmentation with point, box or mask prompts, or automatic mask generation.
trpc-group/trpc-agent-go
Set up and use 1Password CLI (op). An agent skill from trpc-group/trpc-agent-go.
Orchestra-Research/AI-Research-SKILLs
Shows how to store documents and embeddings in Chroma, query them by similarity with metadata filters, and persist them to disk for RAG and semantic search projects.
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.
Categories
Phase A of a qvac-fabric rollout — set up overlay port and validate all 7 consumers against the fabric branch before publishing to the registry. Rollout Phase A is an agent skill from tetherto/qvac. Phase A of a qvac-fabric rollout — set up overlay port and validate all 7 consumers against the fabric branch before publishing to the registry.
Rollout Phase A fits situations like: AI & LLM Engineering work in your project.
Run `npx skills add tetherto/qvac --skill rollout-phase-a -a claude-code`. Or copy the skill folder (packages/ocr-ggml/.agent/skills/rollout-phase-a in tetherto/qvac) into .claude/skills/rollout-phase-a in your project. Claude Code loads it when a task matches its description.
Run `npx skills add tetherto/qvac --skill rollout-phase-a -a codex`. Or copy the skill folder (packages/ocr-ggml/.agent/skills/rollout-phase-a in tetherto/qvac) into .agents/skills/rollout-phase-a 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 rollout-phase-a -a cursor` (or -a -a, -a or -a for the others). To copy it by hand, put the folder in .cursor/skills/rollout-phase-a, .gemini/skills/rollout-phase-a, .github/skills/rollout-phase-a and .opencode/skills/rollout-phase-a in your project.
Going by SKILL.md and its folder, Rollout Phase A needs the command-line tools its instructions call (git, gh and curl).
SKILL.md names 1 domain. In commands or code: github.com; the agent is likely to contact it when it follows the instructions. 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.
Rollout Phase A 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 5.3k tokens (SKILL.md is roughly 21k 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 Rollout Phase A: Agent Builder (shareAI-lab/learn-claude-code, 78k stars), Add Uint Support (pytorch/pytorch, 104k stars), Peft Fine Tuning (Orchestra-Research/AI-Research-SKILLs, 13k stars) and Segment Anything Model Guide (Orchestra-Research/AI-Research-SKILLs, 13k 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.