Orca iOS Simulator Control
stablyai/orca
iOS Simulator control from inside Orca, with the live device view in Orca's emulator pane. Use when driving a booted Apple Simulator on macOS: taps, gestures…
Start an AWS Device Farm mobile integration test for an addon and pick the right prebuild source, so the run tests the binary the developer means rather than the published release.
$ npx skills add tetherto/qvac --skill qv-mobile-test-dispatch -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install tetherto/qvac qv-mobile-test-dispatch --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-mobile-test-dispatch .claude/skills/qv-mobile-test-dispatch && 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-mobile-test-dispatch" agent skill from https://github.com/tetherto/qvac/tree/main/.agents/skills/qv-mobile-test-dispatch into .claude/skills/qv-mobile-test-dispatch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qv-mobile-test-dispatch", 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-mobile-test-dispatchType 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-mobile-test-dispatch -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install tetherto/qvac qv-mobile-test-dispatch --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-mobile-test-dispatch .agents/skills/qv-mobile-test-dispatch && 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-mobile-test-dispatch" agent skill from https://github.com/tetherto/qvac/tree/main/.agents/skills/qv-mobile-test-dispatch into .agents/skills/qv-mobile-test-dispatch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qv-mobile-test-dispatch", 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-mobile-test-dispatch -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install tetherto/qvac qv-mobile-test-dispatch --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-mobile-test-dispatch .cursor/skills/qv-mobile-test-dispatch && 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-mobile-test-dispatch" agent skill from https://github.com/tetherto/qvac/tree/main/.agents/skills/qv-mobile-test-dispatch into .cursor/skills/qv-mobile-test-dispatch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qv-mobile-test-dispatch", 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-mobile-test-dispatch--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-mobile-test-dispatch -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install tetherto/qvac qv-mobile-test-dispatch --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-mobile-test-dispatch .gemini/skills/qv-mobile-test-dispatch && 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-mobile-test-dispatch" agent skill from https://github.com/tetherto/qvac/tree/main/.agents/skills/qv-mobile-test-dispatch into .gemini/skills/qv-mobile-test-dispatch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qv-mobile-test-dispatch", 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-mobile-test-dispatchInstalls 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-mobile-test-dispatch -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-mobile-test-dispatch .github/skills/qv-mobile-test-dispatch && 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-mobile-test-dispatch" agent skill from https://github.com/tetherto/qvac/tree/main/.agents/skills/qv-mobile-test-dispatch into .github/skills/qv-mobile-test-dispatch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qv-mobile-test-dispatch", 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-mobile-test-dispatch -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-mobile-test-dispatch --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-mobile-test-dispatch .opencode/skills/qv-mobile-test-dispatch && 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-mobile-test-dispatch" agent skill from https://github.com/tetherto/qvac/tree/main/.agents/skills/qv-mobile-test-dispatch into .opencode/skills/qv-mobile-test-dispatch/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qv-mobile-test-dispatch", 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-mobile-test-dispatchStart an AWS Device Farm mobile integration test for an addon and pick the right prebuild source, so the run tests the binary the developer means rather than the published release.
Qv Mobile Test Dispatch is an agent skill from tetherto/qvac. Start an AWS Device Farm mobile integration test for an addon and pick the right prebuild source, so the run tests the binary the developer means rather than the published release. Covers run ids, GPR dev builds, published pins, test filters, device names, and reading the result. Use when someone asks to run mobile tests, test an addon on a device/phone, test a native change on mobile, or invokes /qv-mobile-test-dispatch.
Its SKILL.md is about 3.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `agents/openai.yaml`).
It sits in Mobile, covering Mobile testing and debugging. It works with Amazon Web Services. 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.
6 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:
ghjqFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use gh, 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 Mobile Test Dispatch loads about 3.5k tokens when it runs. Until then it costs about 112 tokens; SKILL.md has 1,635 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). 1,635 words, ~3,525 tokens.
.claude/skills/qv-mobile-test-dispatch/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Mobile integration tests run on AWS Device Farm, which is billed per device minute. They do not run automatically on PRs — someone dispatches them by hand, choosing one platform, the device(s), and usually a test filter.
The part that goes wrong is which binary ends up on the phone. A dispatch does not compile the addon; it installs a prebuilt one. Get that wrong and the run is green against code nobody changed.
Canonical reference: docs/ci/MOBILE-ON-DEMAND.md.
Read it once per session before answering detailed questions; this skill is the
operating procedure, that doc is the source of truth.
<addon>"tests filter and the smallest device set that
answers the question.llm-llamacpp is sharded (7 Android groups, 13 iOS groups) and an empty
tests filter fans each group out as its own Device Farm run — multiplied by
the device list. A full first run on a sharded addon is legitimate but
expensive, so say what it will cost before dispatching it; outside a first run,
always filter for LLM.| goal | input |
|---|---|
| my own PR's native change | prebuild_run_id=<run id> |
| a build from another branch, or a published release | package=@tetherto/<addon>-mono@<dev> or package=@qvac/<addon>@<ver> |
| just the published release | leave both empty |
prebuild_run_id and package are mutually exclusive — setting both fails
with a message telling you to clear one.
The input is named package on most addons but package_spec on
asr-ggml, audiogen-ggml, tts-ggml. prebuild_run_id is the same everywhere.
prebuild_run_id route)First: the PR must have built prebuilds at all. The prebuild stage is
label-gated by ci-router — it runs only when the PR carries prebuilds,
run-desktop-addon-tests, or run-mobile-addon-tests. With none of those there
is no bundle and no run id. Add the prebuilds label and let CI re-run.
Then: open the PR's Checks tab, click the run that built the prebuilds, and take the number at the end of its URL.
Do not filter by the addon's own workflow name. Which workflow built the
bundle varies — on-pr-nx.yml for most addons, on-pr-<addon>.yml for some,
on-merge-nx.yml for a branch build. Scope by the PR's head commit:
PKG=llm-llamacpp # the package directory name, i.e. packages/<PKG>
PR=1234
SHA=$(gh pr view "$PR" --repo tetherto/qvac --json headRefOid --jq .headRefOid)
for rid in $(gh api "repos/tetherto/qvac/actions/runs?head_sha=$SHA&per_page=100" \
--jq '.workflow_runs[].id'); do
gh api "repos/tetherto/qvac/actions/runs/$rid/artifacts?per_page=100" \
--jq ".artifacts[]|select(.name==\"prebuilds-$PKG\" and .expired==false)|.name" \
2>/dev/null | grep -q . && { echo "$rid"; break; }
done
# An empty result must not be dispatched: prebuild_run_id="" is the unchanged
# path and quietly resolves @latest, which is the failure this route closes.Nothing printed means either the label is missing, or — on the nx path — that run only built the addons it considered affected and yours was not one. The dispatch failure message lists which addons a run did build.
tests is a mocha --grep over runner names, not file names. A name that
matches nothing is rejected up front by validate-devices, for free, with the
list of valid names — so a wrong guess costs nothing but a round trip.
Read the names from the same source validate-devices uses:
# sharded addons (llm-llamacpp, diffusion-cpp, tts-ggml, audiogen-ggml, vla, ...)
jq -r '(.android//{})|[..|strings]|unique|.[]' packages/<PKG>/test/mobile/test-groups.json
# single-spec addons
grep -oE '\brun[A-Z][A-Za-z0-9_]*' packages/<PKG>/test/mobile/integration.auto.cjs | sort -uIf a name is rejected on device with
[prestage] FATAL: tests grep /<name>/ matched no known runner, it is in neither
the addon's test-groups.json nor its integration.auto.cjs — i.e. a typo. Take
a name from the commands above. (That FATAL used to fire for valid runners too,
because the prestage generator kept its own list; readKnownRunners() now reads
test-groups.json directly.)
A first run on an addon covers every supported device and every test. That is what says whether the change is good. Narrow only afterwards, when re-running a known failure or iterating on one test.
| Platform | Supported devices |
|---|---|
| Android | Google Pixel 9 Pro, Samsung Galaxy S25 Ultra, Samsung Galaxy S26 Ultra |
| iOS | Apple iPhone 16 Pro, Apple iPhone 17 Pro |
Not supported — these will schedule and bill, but a failure on one is not acted on: Pixel 8 and older (below the targeted floor) and Pixel 10 (not adopted). Any other fleet device can be added deliberately, e.g. to reproduce a report on specific hardware; say why when you do.
Google Pixel 9 and Google Pixel 9 Pro are different fleet models under the
default EQUALS operator. The supported one is the Pro.
First run — full matrix, one dispatch per platform, tests left empty. Run them
in sequence, not back to back: the concurrency group is keyed on workflow and
ref and does NOT include the platform, so dispatching iOS while Android is still
running cancels Android. Wait for the first to finish, then fire the second.
gh workflow run integration-mobile-test-<addon>.yml --repo tetherto/qvac --ref <branch> \
-f platform=Android \
-f devices_custom="Google Pixel 9 Pro, Samsung Galaxy S25 Ultra, Samsung Galaxy S26 Ultra" \
-f device_model_operator=EQUALS \
-f prebuild_run_id=<run id>
# iOS — only after the Android run finishes, or it cancels it
gh workflow run integration-mobile-test-<addon>.yml --repo tetherto/qvac --ref <branch> \
-f platform=iOS \
-f devices_custom="Apple iPhone 16 Pro, Apple iPhone 17 Pro" \
-f device_model_operator=EQUALS \
-f prebuild_run_id=<run id>Report a first run as complete only when both platforms actually completed. A
cancelled Android leg is not a pass, and on llm-llamacpp it also discards a
seed-models step budgeted at up to 120 minutes.
Follow-up — one device, one test, after something fails:
gh workflow run integration-mobile-test-<addon>.yml --repo tetherto/qvac --ref <branch> \
-f platform=Android \
-f devices_custom="Samsung Galaxy S26 Ultra" \
-f device_model_operator=EQUALS \
-f tests=<runnerName> \
-f prebuild_run_id=<run id>devices_custom takes a comma-separated list and overrides the device
dropdown. Names are full fleet names (Google Pixel 9 Pro, Apple iPhone 16 Pro).device_model_operator=EQUALS bills exactly that model; CONTAINS may pick a
different variant.ref selects the JS harness, tests and app — not the native binary. It and
the prebuild source are deliberately independent.The build job's setup phase prints the provenance:
Verified: prebuilds come from run <id> — artifact 'prebuilds-<pkg>',
workflow '<name>', head <sha>, branch <branch> (<repo>), <conclusion>Check the head SHA is the commit you meant — a run id resolves whether or not it built the code under review.
Warnings worth acting on:
run <id> concluded 'failure' — the source run was red. Its prebuild job may
still be the green part, but confirm.run <id> built code from the FORK '<repo>' — normal for a fork PR (the repo
is fork-first), but confirm you meant that contributor's code.The run-id path fails closed — a wrong, private, unfinished or expired run id
fails the run with the reason rather than falling back to @latest.
Read the verdict from the run's test-results.json, not the workflow conclusion:
a green workflow is not the same as a passed test, and Device Farm's Totals:
line counts its own suite rather than your runners.
A run is only evidence if a reviewer can open it. After a re-run, the link belongs on the PR as a comment. Prefer a comment always: it appends, so nothing can be lost, and it never has to read what is already there.
Never post without explicit approval. This writes to a public repository. Draft the line, show it, show the exact command, and run it only when the human says to.
Name the test and the device, so the line reads without opening anything:
Re-ran runChatterboxSpeedTest on Samsung Galaxy S26 Ultra after 4e1f2a9:
https://github.com/tetherto/qvac/actions/runs/<id> — total=1 passed=1Write the text to a file and pass the file:
# compose the note in /tmp/pr-<num>-note.md with the Write tool, then:
gh pr comment <num> --repo tetherto/qvac --body-file /tmp/pr-<num>-note.mdBackticks and $(...) inside a double-quoted argument run before gh does, and
PR bodies and run artifacts on a fork PR are written by third parties. An
approval gate does not help: the human approves the rendered line, not the shell
quoting.
For the description: read it to a file, append there with the Write tool, show
the merged result, then gh pr edit <num> --body-file <file>, which replaces the
whole body.
Quote the counts from test-results.json. Never report a pass you have not read
out of that file — say what actually ran, including when the answer is that a
failure is still reproducing, and when a leg was cancelled rather than run.
| addon | note |
|---|---|
llm-llamacpp | sharded — always pass tests |
asr-ggml, audiogen-ggml, tts-ggml | split addons: an empty input or @qvac pin installs the matching -android-arm64 / -ios package from npm at the same version. @tetherto -mono builds carry prebuilds inline. |
audiogen-ggml | pins its composite actions to the default branch, so prebuild_run_id only works once that support is on main; it fails loudly with instructions until then |
vla | package dir is packages/vla-ggml, workflow slug is vla |
decoder-audio | no native prebuild of its own (rides bare-ffmpeg from npm). package has no effect; use ref. |
inference-addon-cpp | compiles its own prebuilds in-run from the dispatched ref, so no prebuild input is needed or offered |
The console-logs-* artifact on the run is where everything lands. The
test-results.json in it only records the harness assertion
(expect(received).toBe(expected) at app.test.js), which is identical for
every failure and never says why. The real reason is in the app's own output,
and the file differs per platform.
| what | Android | iOS |
|---|---|---|
| JS / bare runtime, TAP lines, the failure | logcat_full.txt, bare tag | bare_console.log |
| native C++ / engine output | logcat_full.txt, bare tag, [C++ TEST] prefix | bare_console.log, [C++ TEST] prefix |
| app shell | logcat_full.txt, ReactNativeJS tag | bare_console.log |
| device/OS noise | logcat_full.txt (most of it) | iOS_appium.log |
gh run download <run-id> --repo tetherto/qvac --dir ./logs
# Android — the bare runtime carries BOTH the JS and the C++ output
grep -aE "E bare|I bare" logs/**/*logcat_full.txt | head -40 # test + errors
grep -a "\[C++ TEST\]" logs/**/*logcat_full.txt | head -40 # native/engine
# iOS — same two, one file
grep -aE "error|not ok" logs/**/*bare_console.log | head -40
grep -a "\[C++ TEST\]" logs/**/*bare_console.log | head -40Traps that cost real time:
logcat_full.txt, not Logcat.logcat. They are different files;
the latter is a smaller capture and does not carry the bare output.bare tag, not TAP markers or the package name. The runtime
prints through logcat, so TAP version/ok 1 never appear as raw lines.[C++ TEST] [INFO]: [Llama.cpp] ... on both
platforms — the engine logs through the same channel, not a separate tag.bare_console.log on Android, by construction: the app writes
it into its private data dir, which adb cannot read and run-as refuses on a
release-signed APK. That is expected — logcat is the Android channel.A real example, the whole reason a run went red, invisible in test-results.json:
E bare: Test 'runFitStubTest' failed: AddonError: ADDON_NOT_FOUND:
Cannot find addon '.' from @qvac/model-fit/binding.js
Candidates: - linked:libqvac__model-fit.0.12.0.so
[cause]: Error: dlopen fail© 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 in .agents/skills/qv-mobile-test-dispatch of tetherto/qvac.
Open the folder on GitHubat commit c3a6030
Qv Mobile Test Dispatch 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 Mobile Test Dispatch this skilltetherto/qvac | 681 | — | ~3.5k | Automated safety check: Pass | Apache-2.0 | |
| Orca iOS Simulator Controlstablyai/orca | 87k | 1 repos | ~584 | Automated safety check: Pass | Apache-2.0 | |
| UI Kitten Showcase QAakveo/react-native-ui-kitten | 11k | — | ~2.3k | Automated safety check: Pass | MIT | |
| Mobile Automation with agent-devicenuclearpasta/react-native-drax | 715 | — | ~1.4k | Automated safety check: Pass | MIT | |
| Live-Device iOS QAgarrytan/gstack | 136k | — | ~10k | Automated safety check: Notes | MIT | |
| Orca Android Emulator Controlstablyai/orca | 87k | — | ~558 | Automated safety check: Pass | Apache-2.0 |
stablyai/orca
iOS Simulator control from inside Orca, with the live device view in Orca's emulator pane. Use when driving a booted Apple Simulator on macOS: taps, gestures…
akveo/react-native-ui-kitten
Drives the Expo showcase app in an iOS simulator with agent-device to sweep every UI Kitten component in all theme and mapping combinations, reporting regressions with evidence.
nuclearpasta/react-native-drax
Drives iOS and Android devices and simulators from the command line: open apps, snapshot the UI tree, tap, type, scroll, take screenshots and read UI info.
garrytan/gstack
Tests a SwiftUI app on a real iPhone connected by USB, reading the Swift source and then looping through screenshot, analysis and action to find bugs.
stablyai/orca
Android device and emulator control from inside Orca over adb, with the live device view in Orca's emulator pane. Use when driving an adb-connected emulator…
Kwensiu/DPIS
Run automated DPIS HyperOS device smoke tests for package-specific dp/font emulation or replacement.
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.
Works with
Categories
Start an AWS Device Farm mobile integration test for an addon and pick the right prebuild source, so the run tests the binary the developer means rather than the published release. Qv Mobile Test Dispatch is an agent skill from tetherto/qvac. Start an AWS Device Farm mobile integration test for an addon and pick the right prebuild source, so the run tests the binary the developer means rather than the published release.
Qv Mobile Test Dispatch fits situations like: someone asks to run mobile tests; test an addon on a device/phone; test a native change on mobile; invokes /qv-mobile-test-dispatch.
Run `npx skills add tetherto/qvac --skill qv-mobile-test-dispatch -a claude-code`. Or copy the skill folder (.agents/skills/qv-mobile-test-dispatch in tetherto/qvac) into .claude/skills/qv-mobile-test-dispatch in your project. Claude Code loads it when a task matches its description.
Run `npx skills add tetherto/qvac --skill qv-mobile-test-dispatch -a codex`. Or copy the skill folder (.agents/skills/qv-mobile-test-dispatch in tetherto/qvac) into .agents/skills/qv-mobile-test-dispatch 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-mobile-test-dispatch -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-mobile-test-dispatch, .gemini/skills/qv-mobile-test-dispatch, .github/skills/qv-mobile-test-dispatch and .opencode/skills/qv-mobile-test-dispatch in your project.
Going by SKILL.md and its folder, Qv Mobile Test Dispatch needs the command-line tools its instructions call (gh and jq).
SKILL.md contains no URLs. Its commands use gh, 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. Review the folder before installing.
Qv Mobile Test Dispatch 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 3.5k tokens (SKILL.md is roughly 14k 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 Mobile Test Dispatch: Orca iOS Simulator Control (stablyai/orca, 87k stars), UI Kitten Showcase QA (akveo/react-native-ui-kitten, 11k stars), Mobile Automation with agent-device (nuclearpasta/react-native-drax, 715 stars) and Live-Device iOS QA (garrytan/gstack, 136k 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.