Agent skill

Qv Nx CI

by tetherto in tetherto/qvac

Understand and modify the pnpm+Nx consolidated CI — the generic -nx.yml leaves driven by each package's project.json options.ci.

Apache-2.0Auto-check passedTesting & QA

Install Qv Nx CI

skills CLI
$ npx skills add tetherto/qvac --skill qv-nx-ci -a claude-code

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

GitHub CLI
$ gh skill install tetherto/qvac qv-nx-ci --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/.cursor/skills/qv-nx-ci .claude/skills/qv-nx-ci && 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
qv-nx-ci
GitHub stars
685
Token cost
~1.8k tokens
SKILL.md length
858 words
Files
1
Skills in repo
50
Repo updated
First seen
Licence
Apache-2.0

At a glance

Understand and modify the pnpm+Nx consolidated CI — the generic -nx.yml leaves driven by each package's project.json options.ci.

  • Works in 7 steps: Config is read from the trusted default… → Fork safety is non-negotiable.… → Mobile stays as main's. Do not… → …
  • Adding/changing a packages CI
  • SKILL.md covers When to use, Mental model: config is data,…, Hard rules and Recipe A — change an existing…, plus 4 more sections
  • Calls git, node and actionlint

What it does

Qv Nx CI is an agent skill from tetherto/qvac. Understand and modify the pnpm+Nx consolidated CI — the generic -nx.yml leaves driven by each package's project.json options.ci. Use when adding/changing a package's CI, onboarding a new package, generalising a bespoke per-package workflow into a leaf, editing the nx-project-matrix action or the on-pr-nx/on-merge-nx/prebuilds-nx/cpp-tests-nx/integration-test-nx leaves, or debugging why a package's CI stage did or didn't run.

Its SKILL.md is about 1.8k 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 Testing & QA, covering Integration testing. It works with pnpm and C++. 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

  • Adding/changing a packages CI
  • Onboarding a new package
  • Generalising a bespoke per-package workflow into a leaf
  • Editing the nx-project-matrix action

Example prompts

  • “s project.json options.ci. Use when adding/changing a package”
  • “s CI stage did or didn”
  • “/qv-nx-ci”

Workflow steps

7 steps, taken from the first numbered list in SKILL.md.

  1. Config is read from the trusted default branch, never PR head. nx-project-matrix does git show :packages//project.json, and on…
  2. Fork safety is non-negotiable. on-pr-nx.yml is pull_request_target (base context, secrets). Base = control surface, head =…
  3. Mobile stays as main's. Do not consolidate integration-mobile-test-.yml or add mobile to PRs beyond the existing asr/tts…
  4. hasPrebuilds is derived, not declared — it is true iff build.options.ci exists. Don't add it by hand.
  5. Overrides are validated. The action's overrides input can only set a field a package already declares — a PR cannot inject new CI…
  6. Merge-gated jobs go through qvac-merge-guard / validate-pr only. Never create a second required check. Use the qv-merge-guard-wire skill /…
  7. Never delete/skip/weaken a test. Fix the code or the config.

What it can do on your machine

Read from SKILL.md and the folder at commit 673ea94. 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
    • node
    • actionlint
    • pnpm
    • gh

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

  • Network

    No URLs in SKILL.md. Its commands use git, pnpm 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

Qv Nx CI loads about 1.8k tokens when it runs. Until then it costs about 109 tokens; SKILL.md has 858 words of instructions outside code blocks.

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

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 673ea94, republished under its Apache-2.0 licence (© tetherto). 858 words, ~1,766 tokens.

Download SKILL.mdSave it as .claude/skills/qv-nx-ci/SKILL.md (or your agent's skills folder).
name
qv-nx-ci
description
Understand and modify the pnpm+Nx consolidated CI — the generic -nx.yml leaves driven by each package's project.json options.ci. Use when adding/changing a package's CI, onboarding a new package, generalising a bespoke per-package workflow into a leaf, editing the nx-project-matrix action or the on-pr-nx/on-merge-nx/prebuilds-nx/cpp-tests-nx/integration-test-nx leaves, or debugging why a package's CI stage did or didn't run.

Nx CI — consolidated per-package workflows

Per-package CI is consolidated into generic -nx.yml leaves. Each package declares its CI shape as data in packages/<pkg>/project.json under targets.<target>.options.ci; Nx computes the affected set and .github/actions/nx-project-matrix turns each affected package's options.ci into a GitHub Actions matrix that the leaf fans out over.

Full reference (wiring diagram, options.ci cheat-sheet, fork-safety model): docs/ci/nx-ci-consolidation.md. Workspace/tooling primer (pnpm config, Nx affected graph, local commands): docs/pnpm-nx-workspace.md. Read both first.

When to use

  • Adding or changing a package's CI (prebuilds, cpp tests, integration, on-pr checks, benchmarks, on-merge publish).
  • Onboarding a new package to the consolidated pipeline.
  • Generalising a bespoke per-package workflow into a leaf.
  • Editing nx-project-matrix or any *-nx.yml leaf.
  • Debugging why a stage ran / didn't run for a package.

Mental model: config is data, the leaf is generic

The matrix action flattens every field under options.ci into each matrix row generically ({package, workdir, ...ci} + platform). So a leaf reads a field as ${{ matrix.<field> }} and a new field needs no action change — only the project.json (produce it) and the leaf step (consume it). Keep behaviour in data; touch a .yml only when a genuinely new step/shape is needed.

Hard rules

  1. Config is read from the trusted default branch, never PR head. nx-project-matrix does git show <config-ref>:packages/<pkg>/project.json, and on pull_request_target config-ref = default_branch. A new package's project.json must land on the default branch before its CI runs. Never "fix" a pre-merge red by reading config from head.
  2. Fork safety is non-negotiable. on-pr-nx.yml is pull_request_target (base context, secrets). Base = control surface, head = code-under-test. Every privileged job has fork-approval first in needs: and gates on authorize.outputs.allowed. Never add a privileged job without both. Leaves build/test github.event.pull_request.head.sha — only after the gates pass.
  3. Mobile stays as main's. Do not consolidate integration-mobile-test-<pkg>.yml or add mobile to PRs beyond the existing asr/tts coload-smoke-mobile main-parity job. Never add run-mobile-addon-tests on PRs.
  4. hasPrebuilds is derived, not declared — it is true iff build.options.ci exists. Don't add it by hand.
  5. Overrides are validated. The action's overrides input can only set a field a package already declares — a PR cannot inject new CI behaviour. Keep it that way.
  6. Merge-gated jobs go through qvac-merge-guard / validate-pr only. Never create a second required check. Use the qv-merge-guard-wire skill / docs/ci/MERGE-GUARD.md.
  7. Never delete/skip/weaken a test. Fix the code or the config.

Recipe A — change an existing package's CI (data-only)

  1. Edit packages/<pkg>/project.json → targets.<target>.options.ci. Adjust the existing field (e.g. add a platform row to test:cpp, flip includeVulkanSdk, change a perf-report pattern).
  2. Nothing else if the field is already consumed by the leaf. Validate (below).

Recipe B — add a NEW options.ci field (data + one leaf step)

  1. Add the field under the target's options.ci in the package(s) that need it. Others simply won't have it (matrix row omits it → ${{ matrix.<field> }} is empty).
  2. Consume it in the leaf: reference ${{ matrix.<field> }} in the relevant step, or gate a step with if: ${{ matrix.<field> }}. For a whole flag-gated job, add a filtered sublist in the matrix job's filter step (jq select(.<field> == true)) and drive the job off fromJSON(needs.matrix.outputs.<field>list).
  3. Do not touch nx-project-matrix — pass-through is generic.
Show full SKILL.md (347 more words)Show less

Recipe C — onboard a new package

  1. Add packages/<pkg>/project.json with the targets it needs (build, on-pr, test:cpp, test:integration, benchmark, on-merge) and their options.ci. Copy the closest existing package as a template.
  2. Native addon: set implicitDependencies: ["inference-addon-cpp", "lint-cpp"] (and any real deps) so the graph and affected-detection are correct.
  3. Land project.json on the default branch first (rule 1) — until then, dispatch the leaf with config_ref_override / base-ref pointed at your branch to test.

Recipe D — generalise a bespoke per-package workflow into a leaf

The consolidation move: fold an on-pr-<pkg>.yml (or prebuilds/cpp/integration/on-merge twin) into the generic leaf.

  1. Diff the bespoke workflow against a package already folded. What differs is either (a) a value → an options.ci field, or (b) a genuinely different step → a conditional step in the leaf.
  2. Decide fold vs carve-out:
    • Fold when the flow is the leaf's shape with different values/toggles. Express every difference as options.ci fields (Recipe B) and delete the bespoke file.
    • Carve-out when steps genuinely diverge (bespoke integration/cpp flow, e.g. llm/asr/translation). Set carveOut: true on that target's options.ci, keep the bespoke reusable, and route to it from the orchestrator via the carveouts output (if: contains(fromJSON(needs.matrix.outputs.carveouts), '<pkg>')). The package still self-affects.
  3. Map, don't reinvent: each bespoke with:/env/matrix value becomes an options.ci field consumed by the existing leaf step. Prefer widening an existing field over adding a near-duplicate.
  4. Delete the legacy file in the same change (or the stacked cleanup PR) so PRs don't run two pipelines. Confirm nothing references it: git grep <workflow-basename> .github/workflows.
  5. If the folded flow posts the qvac/prebuild-<pkg> status or gates the merge guard, confirm the producer/trust path (scripts/prebuild-status/) still holds.

Validate before done

  • node .github/scripts/test/ci-trust-policy.test.mjs — fork-safety + trusted-ref policy (must stay green).
  • node .github/scripts/test/prebuild-status.test.mjs — if you touched prebuild-status trust.
  • actionlint <edited leaves> — only pre-existing shellcheck style is acceptable.
  • pnpm exec nx show projects --affected -t <target> --base=<base> --head=<head> — confirm the package set is what you expect.
  • Standalone gh workflow run <leaf>-nx.yml --ref <branch> -f base-ref=<x> -f head-ref=<y> — prove the matrix resolves and the leaf runs.
  • git grep <deleted-workflow-basename> .github/workflows returns nothing after a Recipe D deletion.

© 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 .cursor/skills/qv-nx-ci of tetherto/qvac.

Open the folder on GitHubat commit 673ea94

Compare with similar skills

Qv Nx CI 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.

Qv Nx CI compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Qv Nx CI this skilltetherto/qvac685—~1.8kAutomated safety check: PassApache-2.0
OpenROAD Module Test AdderThe-OpenROAD-Project/OpenROAD3.2k—~1.8kAutomated safety check: PassBSD-3-Clause
Agent Integration ReplayComfy-Org/ComfyUI_frontend2.1k—~805Automated safety check: NotesGPL-3.0
Run Integration Testsvalkey-io/valkey-search145—~511Automated safety check: PassBSD-3-Clause
Kouchou AI Testingdigitaldemocracy2030/kouchou-ai171—~355Automated safety check: PassAGPL-3.0
New Systemharunkurtdev/ros2-claude-code-template215—~1.4kAutomated safety check: PassNone

Similar skills

  • OpenROAD Module Test Adder

    The-OpenROAD-Project/OpenROAD

    Adds integration or unit tests to an OpenROAD module: writes the Tcl test, generates golden files and registers it in both CMake and Bazel.

    3.2k GitHub stars~1.8k tokensUpdated yesterday
    Testing & QAAuto-check passed
  • Agent Integration Replay

    Comfy-Org/ComfyUI_frontend

    Replay recorded agent conversations as Playwright tests against the real chat panel and canvas.

    2.1k GitHub stars~805 tokensUpdated today
    Testing & QAAuto-check: notes
  • Run Integration Tests

    valkey-io/valkey-search

    Run or troubleshoot Valkey Search C++ and Python integration tests, including focused development runs, full-suite verification, and packaging/build or runtime failure classification.

    145 GitHub stars~511 tokensUpdated yesterday
    Testing & QAAuto-check passed
  • Kouchou AI Testing

    digitaldemocracy2030/kouchou-ai

    Testing commands and strategy for the kouchou-ai repo, including unit/integration tests and Playwright E2E rules.

    171 GitHub stars~355 tokensUpdated yesterday
    Testing & QAAuto-check passed
  • New System

    harunkurtdev/ros2-claude-code-template

    Scaffold a new gz-sim system plugin under src/systems/<name/ — header, source, CMake glue, plugin registration, and an integration test stub.

    215 GitHub stars~1.4k tokensUpdated 4 mo ago
    Testing & QAAuto-check passed
  • JS Package Testing

    Opentrons/opentrons

    Vite demo and Playwright + Applitools tests for packed @opentrons JS packages in js-package-testing/.

    523 GitHub stars~1.2k tokensUpdated yesterday
    Testing & QAAuto-check: notes

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.

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

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

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

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

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

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

Works with

Questions about Qv Nx CI

What does Qv Nx CI do?

Understand and modify the pnpm+Nx consolidated CI — the generic -nx.yml leaves driven by each package's project.json options.ci. Qv Nx CI is an agent skill from tetherto/qvac.ci.

When should I use Qv Nx CI?

Qv Nx CI fits situations like: adding/changing a packages CI; onboarding a new package; generalising a bespoke per-package workflow into a leaf; editing the nx-project-matrix action.

How do I install Qv Nx CI in Claude Code?

Run `npx skills add tetherto/qvac --skill qv-nx-ci -a claude-code`. Or copy the skill folder (.cursor/skills/qv-nx-ci in tetherto/qvac) into .claude/skills/qv-nx-ci in your project. Claude Code loads it when a task matches its description.

How do I install Qv Nx CI in Codex?

Run `npx skills add tetherto/qvac --skill qv-nx-ci -a codex`. Or copy the skill folder (.cursor/skills/qv-nx-ci in tetherto/qvac) into .agents/skills/qv-nx-ci in your project. Codex loads it when a task matches its description.

Can I use Qv Nx CI 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 qv-nx-ci -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/qv-nx-ci, .gemini/skills/qv-nx-ci, .github/skills/qv-nx-ci and .opencode/skills/qv-nx-ci in your project.

What does Qv Nx CI need to run?

Going by SKILL.md and its folder, Qv Nx CI needs the command-line tools its instructions call (git, node, actionlint, pnpm and gh).

Does Qv Nx CI access the network?

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

Is Qv Nx CI 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 Qv Nx CI use?

Qv Nx CI 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 Qv Nx CI use?

About 1.8k tokens (SKILL.md is roughly 7.1k 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 Qv Nx CI?

Skills that share tags, products or a category with Qv Nx CI: OpenROAD Module Test Adder (The-OpenROAD-Project/OpenROAD, 3.2k stars), Agent Integration Replay (Comfy-Org/ComfyUI_frontend, 2.1k stars), Run Integration Tests (valkey-io/valkey-search, 145 stars) and Kouchou AI Testing (digitaldemocracy2030/kouchou-ai, 171 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Qv Nx CI?

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