Feature Development Workflow
QwenLM/qwen-code
Phased workflow for non-trivial qwen-code features: investigate, design doc, E2E test plan, baseline dry-run, implement, verify, self-audit, review and iterate.
Run quokka's real-device E2E layer (QA strategy layer 5): drive the real qk binary against connected iPhone/Android devices through tmux, apply deterministic verifiers, and write a report.
$ npx skills add dutradotdev/quokka --skill qa -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install dutradotdev/quokka qa --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/dutradotdev/quokka.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/qa .claude/skills/qa && 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 "qa" agent skill from https://github.com/dutradotdev/quokka/tree/main/.claude/skills/qa into .claude/skills/qa/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa", 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/dutradotdev/quokka/tree/main/.claude/skills/qaType 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 dutradotdev/quokka --skill qa -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install dutradotdev/quokka qa --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dutradotdev/quokka.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.claude/skills/qa .agents/skills/qa && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "qa" agent skill from https://github.com/dutradotdev/quokka/tree/main/.claude/skills/qa into .agents/skills/qa/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa", 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 dutradotdev/quokka --skill qa -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install dutradotdev/quokka qa --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dutradotdev/quokka.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.claude/skills/qa .cursor/skills/qa && 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 "qa" agent skill from https://github.com/dutradotdev/quokka/tree/main/.claude/skills/qa into .cursor/skills/qa/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa", 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/dutradotdev/quokka.git --path .claude/skills/qa--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 dutradotdev/quokka --skill qa -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install dutradotdev/quokka qa --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dutradotdev/quokka.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.claude/skills/qa .gemini/skills/qa && 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 "qa" agent skill from https://github.com/dutradotdev/quokka/tree/main/.claude/skills/qa into .gemini/skills/qa/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa", 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 dutradotdev/quokka qaInstalls 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 dutradotdev/quokka --skill qa -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/dutradotdev/quokka.git skills-src && mkdir -p .github/skills && cp -r skills-src/.claude/skills/qa .github/skills/qa && 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 "qa" agent skill from https://github.com/dutradotdev/quokka/tree/main/.claude/skills/qa into .github/skills/qa/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa", 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 dutradotdev/quokka --skill qa -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install dutradotdev/quokka qa --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dutradotdev/quokka.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.claude/skills/qa .opencode/skills/qa && 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 "qa" agent skill from https://github.com/dutradotdev/quokka/tree/main/.claude/skills/qa into .opencode/skills/qa/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "qa", 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.
qaRun quokka's real-device E2E layer (QA strategy layer 5): drive the real qk binary against connected iPhone/Android devices through tmux, apply deterministic verifiers, and write a report.
QA is an agent skill from dutradotdev/quokka. Run quokka's real-device E2E layer (QA strategy layer 5): drive the real qk binary against connected iPhone/Android devices through tmux, apply deterministic verifiers, and write a report. Use when the user asks to "run /qa", "run the device QA suite", "test against the real device", or before a release. Optionally finishes with an advisory exploratory UX pass (layer 6).
Its SKILL.md is about 1k 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 Test strategy, End-to-end testing and Report writing. It works with tmux and Android. The repository describes itself as: Inspect and clean a USB-connected device from your terminal: storage, apps, media, and a live log viewer. No jailbreak, no root. The licence is MIT.
3 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 685254d. 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:
brewcargojqFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
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.
QA loads about 1k tokens when it runs. Until then it costs about 94 tokens; SKILL.md has 515 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 dutradotdev/quokka at commit 685254d, republished under its MIT licence (© dutradotdev). 515 words, ~1,042 tokens.
.claude/skills/qa/SKILL.md (or your agent's skills folder).You are the driver for layer 5 of the QA strategy
(docs/superpowers/specs/2026-06-01-qa-strategy-design.md). You run the real
binary against attached hardware and decide pass/fail deterministically.
Pass/fail is decided ONLY by the deterministic predicates below (exit code, regex over captured text, golden-frame compare, JSON validity). You do not use your own judgment to pass or fail a case. Subjective UX judgment belongs to the optional exploratory pass at the end, which is advisory and never a gate.
tmux and jq installed. If tmux is missing, stop and tell the user
brew install tmux.cargo build (debug qk at target/debug/qk).tests/llm/lib/drive.sh platforms → prints ios and/or android.
If empty, stop and tell the user to connect a device.All mechanics go through tests/llm/lib/drive.sh (see its header for the
subcommands). Never reimplement the tmux dance inline.
Read every tests/llm/*.yaml (not lib/, not golden/, not reports/). For
each case, in file order:
Check requires against the detected platforms.
any → at least one device present.ios / android → that platform present.Run it.
interact block (non-interactive):
drive.sh run <command>. The output ends with __QA_EXIT__=<code>.
The captured text above that line is the output.interact (interactive TUI):drive.sh start <session> <command> (use a unique session like
qa_<id>).wait_for: X → drive.sh wait <session> "X" <timeout>;
keys: [..] → drive.sh keys <session> <k1> <k2> ....drive.sh capture <session>.quit_keys (default q) and drive.sh stop <session>.wait times out, that is a FAIL (the TUI never reached the
expected state).Apply every verify predicate against the captured output/frame:
| Predicate | Check |
|---|---|
exit_code: N | the __QA_EXIT__ value equals N |
output_matches: R | regex R matches the captured output |
frame_matches: R | regex R matches the captured frame |
frame_excludes: R | regex R does not match the frame |
json_valid: true | the captured output parses as JSON (jq . <<<output) |
golden_frame: name | the frame equals tests/llm/golden/<name>.txt exactly |
| A case PASSES only if every predicate holds. A case with no predicates and a | |
| clean run is a PASS but flag it as "smoke-only". |
Always tear the session down even on failure (drive.sh stop).
Write tests/llm/reports/<YYYY-MM-DD-HHMM>.md containing:
N passed, M failed, K skipped and the detected platforms;Then print the summary to the user. If anything failed, lead with the failures.
Only if the user asks for it, or it is pre-release. After the deterministic suite, drive a connected device freely beyond the scripted cases — open each TUI, trigger an error path (e.g. unplug mid-command if the user is present), resize, navigate. Report UX smells ("this error doesn't say what to do", "the dashboard wraps awkwardly at 80 cols") as observations, NOT pass/fail. The user decides what becomes a ticket. Never gate a release on this pass.
© dutradotdev, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .claude/skills/qa of dutradotdev/quokka.
Open the folder on GitHubat commit 685254d
QA 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 |
|---|---|---|---|---|---|---|
| QA this skilldutradotdev/quokka | 108 | — | ~1k | Automated safety check: Pass | MIT | |
| Feature Development WorkflowQwenLM/qwen-code | 28k | — | ~1.2k | Automated safety check: Pass | Apache-2.0 | |
| CodexBar Live QAsteipete/CodexBar | 22k | — | ~1.2k | Automated safety check: Pass | MIT | |
| E2Egronxb/hot-updater | 1.8k | — | ~1.6k | Automated safety check: Pass | Custom licence | |
| Senior QAnicepkg/auto-company | 192 | 3 repos | ~1.1k | Automated safety check: Notes | None | |
| Drive MiMo CodeXiaomiMiMo/MiMo-Code | 14k | — | ~3.9k | Automated safety check: Pass | MIT |
QwenLM/qwen-code
Phased workflow for non-trivial qwen-code features: investigate, design doc, E2E test plan, baseline dry-run, implement, verify, self-audit, review and iterate.
steipete/CodexBar
Runs live QA for the CodexBar app: provider usage matrix checks through its packaged CLI, config validation and menu checks, with 1Password-backed credentials handled safely.
gronxb/hot-updater
Run end-to-end OTA verification for examples/v0.85.0 with agent-device.
nicepkg/auto-company
Comprehensive QA and testing skill for quality assurance, test automation, and testing strategies for ReactJS, NextJS, NodeJS applications.
XiaomiMiMo/MiMo-Code
Lets one MiMoCode process drive another, headless with JSON events or interactively through tmux, to test behavior and visual regressions with parseable evidence.
gronxb/hot-updater
Generate and execute PR-aware OTA E2E scenarios for examples/v0.85.0 by diffing the checked-out branch against its PR base branch or default branch, inferring the affected runtime, rollout, and…
Categories
Run quokka's real-device E2E layer (QA strategy layer 5): drive the real qk binary against connected iPhone/Android devices through tmux, apply deterministic verifiers, and write a report. QA is an agent skill from dutradotdev/quokka. Run quokka's real-device E2E layer (QA strategy layer 5): drive the real qk binary against connected iPhone/Android devices through tmux, apply deterministic verifiers, and write a report.
QA fits situations like: the user asks to run /qa; run the device QA suite; test against the real device; before a release.
Run `npx skills add dutradotdev/quokka --skill qa -a claude-code`. Or copy the skill folder (.claude/skills/qa in dutradotdev/quokka) into .claude/skills/qa in your project. Claude Code loads it when a task matches its description.
Run `npx skills add dutradotdev/quokka --skill qa -a codex`. Or copy the skill folder (.claude/skills/qa in dutradotdev/quokka) into .agents/skills/qa 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 dutradotdev/quokka --skill qa -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/qa, .gemini/skills/qa, .github/skills/qa and .opencode/skills/qa in your project.
Going by SKILL.md and its folder, QA needs the command-line tools its instructions call (brew, cargo and jq).
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. 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.
QA is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1k tokens (SKILL.md is roughly 4.2k 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 QA: Feature Development Workflow (QwenLM/qwen-code, 28k stars), CodexBar Live QA (steipete/CodexBar, 22k stars), E2E (gronxb/hot-updater, 1.8k stars) and Senior QA (nicepkg/auto-company, 192 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
dutradotdev (a GitHub user) maintains it in dutradotdev/quokka, which has 108 GitHub stars. The repository was last updated on July 27, 2026.
Source: dutradotdev/quokka on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.