Expo Migrate Module
expo/skills
Migrate an existing Apple/Swift Expo native module from the Expo Modules API 1.0 definition DSL to the 2.0 macro API (sometimes called v2) while preserving its JavaScript and TypeScript contract.
Point @qvac/sdk at a published @qvac/inference version (shared major.minor) and regenerate the generated SDKs (tetherto-qvac-sdk and sdk-kotlin), so an SDK release ships against an engine that is…
$ npx skills add tetherto/qvac --skill qv-sdk-inference-version -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install tetherto/qvac qv-sdk-inference-version --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/tetherto/qvac.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/qv-sdk-inference-version .claude/skills/qv-sdk-inference-version && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "qv-sdk-inference-version" agent skill from https://github.com/tetherto/qvac/tree/main/.agents/skills/qv-sdk-inference-version into .claude/skills/qv-sdk-inference-version/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qv-sdk-inference-version", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/tetherto/qvac/tree/main/.agents/skills/qv-sdk-inference-versionType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add tetherto/qvac --skill qv-sdk-inference-version -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install tetherto/qvac qv-sdk-inference-version --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tetherto/qvac.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/qv-sdk-inference-version .agents/skills/qv-sdk-inference-version && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "qv-sdk-inference-version" agent skill from https://github.com/tetherto/qvac/tree/main/.agents/skills/qv-sdk-inference-version into .agents/skills/qv-sdk-inference-version/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qv-sdk-inference-version", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add tetherto/qvac --skill qv-sdk-inference-version -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install tetherto/qvac qv-sdk-inference-version --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tetherto/qvac.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/qv-sdk-inference-version .cursor/skills/qv-sdk-inference-version && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "qv-sdk-inference-version" agent skill from https://github.com/tetherto/qvac/tree/main/.agents/skills/qv-sdk-inference-version into .cursor/skills/qv-sdk-inference-version/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qv-sdk-inference-version", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/tetherto/qvac.git --path .agents/skills/qv-sdk-inference-version--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add tetherto/qvac --skill qv-sdk-inference-version -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install tetherto/qvac qv-sdk-inference-version --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tetherto/qvac.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/qv-sdk-inference-version .gemini/skills/qv-sdk-inference-version && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "qv-sdk-inference-version" agent skill from https://github.com/tetherto/qvac/tree/main/.agents/skills/qv-sdk-inference-version into .gemini/skills/qv-sdk-inference-version/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qv-sdk-inference-version", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install tetherto/qvac qv-sdk-inference-versionInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add tetherto/qvac --skill qv-sdk-inference-version -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/tetherto/qvac.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/qv-sdk-inference-version .github/skills/qv-sdk-inference-version && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "qv-sdk-inference-version" agent skill from https://github.com/tetherto/qvac/tree/main/.agents/skills/qv-sdk-inference-version into .github/skills/qv-sdk-inference-version/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qv-sdk-inference-version", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add tetherto/qvac --skill qv-sdk-inference-version -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install tetherto/qvac qv-sdk-inference-version --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/tetherto/qvac.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/qv-sdk-inference-version .opencode/skills/qv-sdk-inference-version && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "qv-sdk-inference-version" agent skill from https://github.com/tetherto/qvac/tree/main/.agents/skills/qv-sdk-inference-version into .opencode/skills/qv-sdk-inference-version/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qv-sdk-inference-version", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
qv-sdk-inference-versionPoint @qvac/sdk at a published @qvac/inference version (shared major.minor) and regenerate the generated SDKs (tetherto-qvac-sdk and sdk-kotlin), so an SDK release ships against an engine that is…
Qv SDK Inference Version is an agent skill from tetherto/qvac. Point @qvac/sdk at a published @qvac/inference version (shared major.minor) and regenerate the generated SDKs (tetherto-qvac-sdk and sdk-kotlin), so an SDK release ships against an engine that is already on npm.
Its SKILL.md is about 1.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts.
It sits in Mobile, covering Android development. It works with Kotlin and 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.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit f874b3a. 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.
Ships 1 file in scripts/ (JavaScript), which the agent can run.
Shell commands in SKILL.md call:
python3pipbunnpmnodegitFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use pip, npm and git, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Qv SDK Inference Version loads about 1.7k tokens when it runs. Until then it costs about 59 tokens; SKILL.md has 684 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); the scripts in this folder are not scanned.
The full file from tetherto/qvac at commit f874b3a, republished under its Apache-2.0 licence (© tetherto). 684 words, ~1,660 tokens.
.claude/skills/qv-sdk-inference-version/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.@qvac/sdk and @qvac/inference expose the same API, so the SDK's own version
and its @qvac/inference dependency range share a major and minor. Patch
numbers are free on both sides — @qvac/sdk 0.19.4 may depend on
@qvac/inference ^0.19.2.
packages/sdk-python (tetherto-qvac-sdk) and packages/sdk-kotlin
(qvac-sdk-kotlin-runtime) are both generated from @qvac/sdk and track the
SDK's version.
The SDK's committed range is installed from npm by publish-sdk.yml and by the
published leg of pr-checks-sdk-pod, so a range naming an unpublished version
fails both.
Moving to a new major.minor is two releases:
release-inference-<x.y.z> → publish-inference.yml publishes
@qvac/inference and tags inference-v<x.y.z>.release-sdk-<x.y.z> → this skill points the SDK at that version, then
publish-sdk.yml publishes @qvac/sdk and tetherto-qvac-sdk.A patch on either side is one release on its own. An SDK patch leaves its range alone; an engine patch is picked up by the existing range with no SDK release at all.
Applies to the SDK pod (not the agent-stack cascade: cli / ai-sdk-provider / plugins).
Use when:
/qv-sdk-inference-version directly./qv-sdk-changelog when --package=sdk./qv-sdk-pr-create when the PR diff touches the version of
packages/sdk or its @qvac/inference range.@qvac/inference release has shipped and the SDK should
depend on it.publish-inference.yml,
publish-sdk.yml + gitflow).@qvac/inference; it only points the SDK at a version that
is already published./qv-agent-stack-sync).lint (enforce-inference-versions) and installs the range for real on
the published leg of pr-checks-sdk-pod; this skill is the fix.npm view @qvac/inference@<x.y.z> versionAn empty result means the engine release has not landed. STOP and release
@qvac/inference first (release-inference-<x.y.z>); everything below writes a
range that cannot resolve until it does.
From the monorepo root:
node .agents/skills/qv-sdk-inference-version/scripts/set-inference-version.mjs --engine-version=<x.y.z>Sets packages/sdk version to <x.y.0> and its @qvac/inference range to
^<x.y.z> (~ from 1.0.0 onwards, where a caret would reach into the next
minor). For an SDK patch release whose major.minor already matches, add
--sdk-version=<x.y.z>.
Other flags: --dry-run, --check (exit 1 on a mismatch). With no
--engine-version, the script only checks the current manifest.
packages/sdk-python generated clientRequires a venv with gen extras (create once if missing):
cd packages/sdk-python
python3 -m venv .venv
.venv/bin/pip install -U pip
.venv/bin/pip install -e ".[gen]"
.venv/bin/python3 scripts/generate.py
.venv/bin/python3 scripts/generate.py --checkSDK_VERSION is stamped from packages/sdk/package.json, which Step 2 already
set. Commit any updates under
packages/sdk-python/src/tetherto/qvac_sdk/_generated/.
packages/sdk-kotlin generated contractcheckVersionAlignment requires the Kotlin runtime version, its @qvac/sdk
range, and the generated SDK_VERSION to match. Set both version and the
@qvac/sdk dependency in packages/sdk-kotlin/package.json to the new version,
then regenerate:
python3 packages/sdk-kotlin/scripts/generate-contract.py
python3 packages/sdk-kotlin/scripts/generate-contract.py --checkSDK_VERSION is stamped from packages/sdk/package.json (Step 2 set it). Commit
the package.json repin and any updates under
packages/sdk-kotlin/src/commonMain/kotlin/io/tether/qvac/sdk/generated/.
cd packages/sdk
bun run enforce-inference-versionsThis is the same check CI runs inside lint.
git status should show (as applicable):
packages/sdk/package.jsonpackages/sdk-python/src/tetherto/qvac_sdk/_generated/**packages/sdk-kotlin/package.json + packages/sdk-kotlin/src/commonMain/kotlin/io/tether/qvac/sdk/generated/**Commit alongside the release changelog. When invoked from /qv-sdk-changelog,
this is part of the release commit; when invoked from /qv-sdk-pr-create, part
of the PR's last commit.
/qv-sdk-changelog/qv-sdk-changelog --package=sdk calls this skill after NOTICE generation for
sdk. Skip for any other --package value — an --package=inference release
does not touch the SDK.
/qv-sdk-pr-createIf the PR diff touches the version of packages/sdk or its @qvac/inference
range, the parent skill prompts to run this skill first. Opt out with
--no-sync on the parent skill.
@qvac/inference@<x.y.z> resolves on npm before the range is writtenset-inference-version.mjs reports OK or an apply summarypackages/sdk version and @qvac/inference range share a major.minor^ below 1.0.0, ~ from 1.0.0 onwardspackages/sdk-python generate.py --check passespackages/sdk-kotlin generate-contract.py --check passes and ./gradlew checkVersionAlignment is greenbun run enforce-inference-versions passes in packages/sdkpackages/sdk/scripts/enforce-inference-versions.tspackages/sdk-python/scripts/generate.pypackages/sdk-kotlin/scripts/generate-contract.py.agents/skills/qv-notice-generate/SKILL.md.github/workflows/publish-inference.yml,
.github/workflows/publish-sdk.ymlqv-sdk-changelog, qv-sdk-pr-create© 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
SKILL.md and 1 other file (scripts) in .agents/skills/qv-sdk-inference-version of tetherto/qvac.
Open the folder on GitHubat commit f874b3a
Qv SDK Inference Version next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Qv SDK Inference Version this skilltetherto/qvac | 683 | — | ~1.7k | Automated safety check: Pass | Apache-2.0 | |
| Expo Migrate Moduleexpo/skills | 2.7k | — | ~2.6k | Automated safety check: Pass | MIT | |
| Android Hidden API and R8 Checkgkd-kit/gkd | 43k | — | ~1.5k | Automated safety check: Pass | GPL-3.0 | |
| Android API Diffgkd-kit/gkd | 43k | — | ~796 | Automated safety check: Pass | GPL-3.0 | |
| Build Teaql Appteaql/teaql-agent-kit | 2.8k | — | ~4.6k | Automated safety check: Pass | MIT | |
| Compose Multiplatform Patternsmonta-app/ocpp-emulator | 180 | 5 repos | ~2k | Automated safety check: Pass | Apache-2.0 |
expo/skills
Migrate an existing Apple/Swift Expo native module from the Expo Modules API 1.0 definition DSL to the 2.0 macro API (sometimes called v2) while preserving its JavaScript and TypeScript contract.
gkd-kit/gkd
Checks whether Android hidden-API implementations and system callbacks survive R8 minification, and diagnoses Release-only failures such as AbstractMethodError.
gkd-kit/gkd
Looks up Android framework Java and AIDL APIs across versions with the android-api-diff CLI: signatures, availability, source files and hidden-API access code.
teaql/teaql-agent-kit
Build or change a TeaQL application in Java, Rust, Go, Swift, Python, C/.NET, or TypeScript, including Kotlin/JVM applications that consume Java-generated libraries.
monta-app/ocpp-emulator
Compose Multiplatform and Jetpack Compose patterns for KMP projects — state management, navigation, theming, performance, and platform-specific UI.
dpconde/claude-android-skill
Create production-quality Android applications following Google's official architecture guidance and NowInAndroid best practices.
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
Point @qvac/sdk at a published @qvac/inference version (shared major.minor) and regenerate the generated SDKs (tetherto-qvac-sdk and sdk-kotlin), so an SDK release ships against an engine that is…. Qv SDK Inference Version is an agent skill from tetherto/qvac.minor) and regenerate the generated SDKs (tetherto-qvac-sdk and sdk-kotlin), so an SDK release ships against an engine that is already on npm.
Qv SDK Inference Version fits situations like: tasks that involve Android development.
Run `npx skills add tetherto/qvac --skill qv-sdk-inference-version -a claude-code`. Or copy the skill folder (.agents/skills/qv-sdk-inference-version in tetherto/qvac) into .claude/skills/qv-sdk-inference-version in your project. Claude Code loads it when a task matches its description.
Run `npx skills add tetherto/qvac --skill qv-sdk-inference-version -a codex`. Or copy the skill folder (.agents/skills/qv-sdk-inference-version in tetherto/qvac) into .agents/skills/qv-sdk-inference-version in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add tetherto/qvac --skill qv-sdk-inference-version -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/qv-sdk-inference-version, .gemini/skills/qv-sdk-inference-version, .github/skills/qv-sdk-inference-version and .opencode/skills/qv-sdk-inference-version in your project.
Going by SKILL.md and its folder, Qv SDK Inference Version needs JavaScript for the scripts in its folder and the command-line tools its instructions call (python3, pip, bun, npm, node and git). Our summary lists: Python 3; Node.js.
SKILL.md contains no URLs. Its commands use pip, npm and git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Qv SDK Inference Version is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.7k tokens (SKILL.md is roughly 6.6k 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 Qv SDK Inference Version: Expo Migrate Module (expo/skills, 2.7k stars), Android Hidden API and R8 Check (gkd-kit/gkd, 43k stars), Android API Diff (gkd-kit/gkd, 43k stars) and Build Teaql App (teaql/teaql-agent-kit, 2.8k 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 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.