Agent skill

Qv SDK E2E Create

by tetherto in tetherto/qvac

Plans and scaffolds e2e tests in packages/sdk/e2e for a new or changed public SDK API.

Apache-2.0Auto-check passedTesting & QA

Install Qv SDK E2E Create

skills CLI
$ npx skills add tetherto/qvac --skill qv-sdk-e2e-create -a claude-code

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

GitHub CLI
$ gh skill install tetherto/qvac qv-sdk-e2e-create --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/.agents/skills/qv-sdk-e2e-create .claude/skills/qv-sdk-e2e-create && 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-sdk-e2e-create
GitHub stars
674
Token cost
~3k tokens
SKILL.md length
1,181 words
Files
1
Skills in repo
50
Repo updated
First seen
Licence
Apache-2.0

At a glance

Plans and scaffolds e2e tests in packages/sdk/e2e for a new or changed public SDK API.

  • Works in 8 steps: Read the feature. Identify the… → Find comparable tests. Look for an… → Determine model-output testability (see… → …
  • Modifying SDK functionality that is exposed to consumers
  • SKILL.md covers When to use this skill, Approach, Model-output strategy and Happy / sad / error minimum, plus 7 more sections
  • Calls npx and npm; needs EXPECTED_TOKEN

What it does

Qv SDK E2E Create is an agent skill from tetherto/qvac. Plans and scaffolds e2e tests in packages/sdk/e2e for a new or changed public SDK API. Use when adding or modifying SDK functionality that is exposed to consumers. Enforces happy / sad / error coverage, deterministic model-output assertions, desktop/mobile/Electron consumer coverage, smoke-suite selection, and local validation with run:local.

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 Testing & QA, covering End-to-end testing and Project scaffolding. 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

  • Modifying SDK functionality that is exposed to consumers
  • Tasks that involve End-to-end testing
  • Tasks that involve Project scaffolding

Example prompts

  • “Use the qv-sdk-e2e-create skill to plan and scaffolds e2e tests in packages/sdk/e2e for a new or changed public SDK API”
  • “/qv-sdk-e2e-create”

Requirements

  • Node.js
  • A credential in EXPECTED_TOKEN

Workflow steps

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

  1. Read the feature. Identify the new/changed exports, inputs, return type, model dependencies, and
  2. Find comparable tests. Look for an analogous existing feature in tests/test-definitions.ts and
  3. Determine model-output testability (see §"Model-output strategy"). Propose a specific validator
  4. Draft happy / sad / error cases as a concrete test-definition sketch.
  5. Decide executor placement, consumer registration, and mobile constraints (see §"Placement and
  6. Select at most one smoke candidate (see §"Smoke policy").
  7. Present the plan to the user. Include: feature summary, chosen validators with rationale, test
  8. After approval, scaffold the files and prompt the user to run locally with the exact commands

What it can do on your machine

Read from SKILL.md and the folder at commit d92f697. 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:

    • npx
    • npm

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

  • Network

    No URLs in SKILL.md. Its commands use npx 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:

    • EXPECTED_TOKEN

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

Context cost

Qv SDK E2E Create loads about 3k tokens when it runs. Until then it costs about 91 tokens; SKILL.md has 1,181 words of instructions outside code blocks.

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

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

Safety

Auto-check passed

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

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

SKILL.md

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

Download SKILL.mdSave it as .claude/skills/qv-sdk-e2e-create/SKILL.md (or your agent's skills folder).
name
qv-sdk-e2e-create
description
Plans and scaffolds e2e tests in packages/sdk/e2e for a new or changed public SDK API. Use when adding or modifying SDK functionality that is exposed to consumers. Enforces happy / sad / error coverage, deterministic model-output assertions, desktop/mobile/Electron consumer coverage, smoke-suite selection, and local validation with run:local.

SDK e2e Test Creation

Plan and scaffold e2e tests in packages/sdk/e2e for a new or changed SDK feature exposed through the public API.

When to use this skill

Applies to SDK changes in packages/sdk/ that touch the public API surface.

Use when:

  • Adding a new public SDK function, model type, or capability.
  • Changing an existing public SDK API in a way that affects runtime behaviour.
  • User invokes /qv-sdk-e2e-create.
  • User asks to "add e2e tests for <feature>" or similar.

Do NOT use for:

  • Internal refactors that don't change the public surface.
  • Unit tests inside packages/sdk/ (this skill covers only the e2e suite under packages/sdk/e2e).

Approach

Investigate first, then propose a concrete plan. Only ask the user for information that cannot be recovered from code or context.

  1. Read the feature. Identify the new/changed exports, inputs, return type, model dependencies, and any existing examples under packages/sdk/examples/ or tests under packages/sdk/e2e/tests/.
  2. Find comparable tests. Look for an analogous existing feature in tests/test-definitions.ts and its executor. Mirror its style unless there's reason to deviate.
  3. Determine model-output testability (see §"Model-output strategy"). Propose a specific validator and a specific prompt/input that makes the output deterministic enough to assert.
  4. Draft happy / sad / error cases as a concrete test-definition sketch.
  5. Decide executor placement, consumer registration, and mobile constraints (see §"Placement and consumer constraints").
  6. Select at most one smoke candidate (see §"Smoke policy").
  7. Present the plan to the user. Include: feature summary, chosen validators with rationale, test definitions sketch, placement decision, desktop/mobile/Electron registrations, platform concerns, smoke pick. Ask clarifying questions only where genuine ambiguity remains (e.g. expected model behaviour on an edge case, preferred tolerance for a numeric-range).
  8. After approval, scaffold the files and prompt the user to run locally with the exact commands for every consumer. Always run run:local:electron --filter <feature>- to verify either the handler or an intentional skip for Electron/Snap.

Model-output strategy

For any feature that invokes a model, do not default to shape-only checks. type validation proves nothing about model correctness and must be a last resort.

Pick the strongest achievable strategy:

  1. Exact-ish output — constrain the prompt + deterministic params (temperature: 0, fixed seed, top_k: 1) so a known token must appear. Assert with contains-all. Example: prompt "Reply with only the word APPLE." → assert result contains APPLE.
  2. Closed-set — enum-style prompt (known set of valid answers) → contains-any.
  3. Numeric range — a score, similarity, duration, or embedding magnitude with known bounds → numeric-range. Pick bounds tolerant to minor model drift.
  4. Regex structure — structured output (JSON keys, date format, language tag) → regex. Keep the pattern anchored and stable.
  5. Shape-only fallback — type with minLength. Flag as weak coverage in the plan.
  6. Error path — throws-error with a substring that is stable across SDK versions.
  7. Custom function — use for deterministic but non-trivial checks like cosine similarity against a reference vector.

If the model's output is inherently non-deterministic and cannot be constrained, say so in the plan and justify why shape-only or range-based coverage is the best achievable — do not silently ship a weak assertion.

Happy / sad / error minimum

Every public-API feature MUST have at minimum:

  • Happy path — valid input, canonical output, strongest assertion achievable.
  • Sad path — boundary or edge case that must still succeed (empty input, minimum ctx, longest accepted input, unusual but valid locale, streaming vs non-streaming).
  • Error path — invalid/malformed input, missing asset, or exceeded constraint. Must throw with a matchable message via throws-error.

More cases are encouraged for multi-branch features.

Placement and consumer constraints

Executor placement (from packages/sdk/e2e/AGENTS.md):

  • Pure SDK API, no Node stdlib, no RN APIs → tests/shared/executors/.
  • Needs node:fs, node:path, process.cwd(), or other Node-only APIs → tests/desktop/executors/.
  • Needs RN Platform, bundled assets, or anything specific to React Native → tests/mobile/executors/.

Never import node:* from tests/shared/ or tests/mobile/.

Placement under tests/shared/executors/ does not register an executor automatically. Explicitly check and update every compatible consumer:

  • tests/desktop/consumer.ts
  • tests/mobile/consumer.ts
  • tests/electron/consumer.ts — also used by the Snap consumer

If a consumer cannot support the tests, add a documented SkipExecutor; do not leave scheduled tests without a matching handler, which fails at runtime with No handler found.

Mobile concerns to address in the plan:

  • Memory — can the target device RAM hold the model? If not, propose a smaller model variant on mobile, or a SkipExecutor entry.
  • Filesystem — node:fs is unavailable. Assets must be bundled via qvac-test.config.js → consumers.mobile.assets.patterns.
  • Platform-specific limitations — known iOS/Android issues (OOM, missing native lib, backend unsupported). Add a SkipExecutor at the top of tests/mobile/consumer.ts with a clear reason.

If the feature cannot run on mobile at all, document the skip reason. Evaluate Electron/Snap compatibility independently rather than treating desktop-only coverage as automatic.

Show full SKILL.md (423 more words)Show less

Smoke policy

  • Only tag suites: ["smoke"] if the feature has no existing smoke coverage.
  • Cap at 1-2 smoke tests per feature.
  • Pick the happy path with the most meaningful assertion (not shape-only).
  • Must be deterministic, fast, and stable on both desktop and mobile. Verify before tagging.
  • If no test meets the bar, do not tag any and flag it explicitly in the plan.

Scaffolding templates

Test definition (tests/<feature>-tests.ts)
ts
import type { TestDefinition } from "@qvac/test-suite";

export const <feature>Tests: TestDefinition[] = [
  {
    testId: "<feature>-happy",
    params: { /* canonical input */ },
    expectation: { validation: "contains-all", contains: ["EXPECTED_TOKEN"] },
    suites: ["smoke"], // only if this test qualifies
    metadata: { category: "<feature>", estimatedDurationMs: 10_000 },
  },
  {
    testId: "<feature>-edge",
    params: { /* boundary case */ },
    expectation: { validation: "type", expectedType: "string" },
    metadata: { category: "<feature>", estimatedDurationMs: 10_000 },
  },
  {
    testId: "<feature>-error",
    params: { /* invalid input */ },
    expectation: { validation: "throws-error", errorContains: "specific message" },
    metadata: { category: "<feature>", estimatedDurationMs: 2_000 },
  },
];

Register in tests/test-definitions.ts:

ts
import { <feature>Tests } from "./<feature>-tests.js";
// ...
export const allTests: TestDefinition[] = [
  // ...
  ...<feature>Tests,
];
Executor

Extend AbstractModelExecutor (base: tests/shared/executors/abstract-model-executor.ts) or use createExecutor with TestHandler for ad-hoc cases. Bind handlers per testId, and use ResourceManager.ensureLoaded("<resource-name>") to obtain model IDs.

Register the new executor in every compatible handlers: [...] array: desktop, mobile, and Electron (which also covers Snap). Add a documented SkipExecutor for intentionally unsupported consumers.

Local validation (required before landing)

After scaffolding, provide the exact commands for every compatible local consumer. Do not mark the task complete until the user confirms those tests pass locally.

bash
cd packages/sdk/e2e

# If packages/sdk (outside e2e) or packages/inference changed
npm run install:build:full

# Otherwise (only test code in packages/sdk/e2e changed)
npm run install:build

npx qvac-test run:local:desktop --filter <feature>-
npx qvac-test run:local:electron --filter <feature>- # verifies the handler or intentional skip

Always use install:build:full once packages/sdk itself changed, even if packages/inference has no diff lines of its own — install:build:sdk trusts the published @qvac/inference range, which can already be behind the checked-out packages/inference source from unrelated merged work.

For mobile verification of a smoke candidate (required before tagging suites: ["smoke"]):

bash
npx qvac-test run:local:android --filter <feature>-     # or run:local:ios

Expectation reference

ValidationUse forNotes
contains-all / contains-anyKeyword or closed-set answersPreferred over type when achievable
regexStructured output (JSON keys, date, lang ID)Keep pattern anchored and stable
numeric-rangeScores, latencies, embedding magnitudePick bounds tolerant to minor model drift
type (+ minLength)Last-resort shape checkShallow; flag as weak coverage
throws-errorEvery error patherrorContains must be stable across bumps
functionComplex deterministic checks

Quality checklist

Before presenting the plan:

  • Feature surface understood from code; any genuine gaps raised as targeted clarifying questions.
  • Model-output strategy picked and justified — not defaulted to type.
  • Happy, sad, and error cases drafted.
  • Executor placement chosen; desktop, mobile, Electron/Snap registration checked; mobile memory / filesystem / platform concerns addressed.
  • Smoke candidate selected or explicitly skipped with reason.
  • Local validation command prepared with the correct --filter prefix.

Before marking scaffolding complete:

  • Test definitions aggregated in tests/test-definitions.ts.
  • Executors registered or explicitly skipped in every relevant consumer entry, including Electron when compatible (which also covers Snap).
  • User has confirmed the new tests pass through each compatible local consumer command.
  • User reminded to run /qv-docs-update when the tested surface is user-facing. Never auto-run it — the skill is manual-only.

References

  • Executor placement, smoke policy, rebuild flow → packages/sdk/e2e/AGENTS.md and packages/sdk/e2e/README.md.
  • Expectation schema → @qvac/test-suite dist/schemas/expectations.js.
  • Existing examples:
    • Strong output assertion: packages/sdk/e2e/tests/translation-salamandra-tests.ts (contains-any over expected Spanish tokens).
    • Error path: packages/sdk/e2e/tests/vision-tests.ts (throws-error with errorContains).
    • Shape fallback: packages/sdk/e2e/tests/completion-tests.ts (type: "string").

© 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 .agents/skills/qv-sdk-e2e-create of tetherto/qvac.

Open the folder on GitHubat commit d92f697

Compare with similar skills

Qv SDK E2E Create 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 SDK E2E Create compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Qv SDK E2E Create this skilltetherto/qvac674—~3kAutomated safety check: PassApache-2.0
Bmad Testarch Atddbmad-code-org/bmad-method-test-architecture-enterprise1043 repos~893Automated safety check: PassCustom licence
Add Full Slicefullstackhero/dotnet-starter-kit6.8k—~783Automated safety check: PassMIT
Rocky New CLI Commandrocky-data/rocky304—~1.4kAutomated safety check: PassApache-2.0
Senior QAalirezarezvani/claude-skills28k1 repos~2.1kAutomated safety check: PassMIT
Senior QAborghei/Claude-Skills874—~1.6kAutomated safety check: PassMIT

Similar skills

  • Bmad Testarch Atdd

    bmad-code-org/bmad-method-test-architecture-enterprise

    Generate red-phase acceptance test scaffolds using the TDD cycle.

    104 GitHub starsUsed in 3 repos~893 tokens
    Testing & QAAuto-check passed
  • Add Full Slice

    fullstackhero/dotnet-starter-kit

    Build a capability end-to-end — backend vertical slice (Contracts→handler→validator→endpoint) AND the React page wired to it.

    6.8k GitHub stars~783 tokensUpdated 7 days ago
    Testing & QAAuto-check passed
  • Rocky New CLI Command

    rocky-data/rocky

    End-to-end checklist for adding a new Rocky CLI subcommand across the engine, JSON schema export, Dagster Pydantic types, Dagster resource wiring, and VS Code extension command.

    304 GitHub stars~1.4k tokensUpdated yesterday
    Testing & QAAuto-check passed
  • Senior QA

    alirezarezvani/claude-skills

    Generates unit tests, integration tests, and E2E tests for React/Next.js applications.

    28k GitHub starsUsed in 1 repo~2.1k tokens
    Testing & QAAuto-check passed
  • Senior QA

    borghei/Claude-Skills

    Testing for React/Next.js with Jest, React Testing Library, and Playwright.

    874 GitHub stars~1.6k tokensUpdated yesterday
    Testing & QAAuto-check passed
  • Jinja Codegen

    xberg-io/alef

    Mechanics of alef's Minijinja template system: which templateenv module to call, how to register a template, inline-template rules, and engine settings.

    100 GitHub stars~735 tokensUpdated today
    DevelopmentAuto-check passed

More from tetherto/qvac

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

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

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

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

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

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

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

Categories

Questions about Qv SDK E2E Create

What does Qv SDK E2E Create do?

Plans and scaffolds e2e tests in packages/sdk/e2e for a new or changed public SDK API. Qv SDK E2E Create is an agent skill from tetherto/qvac. Plans and scaffolds e2e tests in packages/sdk/e2e for a new or changed public SDK API.

When should I use Qv SDK E2E Create?

Qv SDK E2E Create fits situations like: modifying SDK functionality that is exposed to consumers; tasks that involve End-to-end testing; tasks that involve Project scaffolding.

How do I install Qv SDK E2E Create in Claude Code?

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

How do I install Qv SDK E2E Create in Codex?

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

Can I use Qv SDK E2E Create 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-sdk-e2e-create -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-sdk-e2e-create, .gemini/skills/qv-sdk-e2e-create, .github/skills/qv-sdk-e2e-create and .opencode/skills/qv-sdk-e2e-create in your project.

What does Qv SDK E2E Create need to run?

Going by SKILL.md and its folder, Qv SDK E2E Create needs the command-line tools its instructions call (npx and npm) and credentials named EXPECTED_TOKEN. Our summary lists: Node.js; A credential in EXPECTED_TOKEN.

Does Qv SDK E2E Create access the network?

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

Is Qv SDK E2E Create 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 SDK E2E Create use?

Qv SDK E2E Create 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 SDK E2E Create use?

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

What are the alternatives to Qv SDK E2E Create?

Skills that share tags, products or a category with Qv SDK E2E Create: Bmad Testarch Atdd (bmad-code-org/bmad-method-test-architecture-enterprise, 104 stars), Add Full Slice (fullstackhero/dotnet-starter-kit, 6.8k stars), Rocky New CLI Command (rocky-data/rocky, 304 stars) and Senior QA (alirezarezvani/claude-skills, 28k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Qv SDK E2E Create?

tetherto (a GitHub organization) maintains it in tetherto/qvac, which has 674 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.