Quality Engineering Appium MCP
HoangNguyen0403/agent-skills-standard
Drives iOS/Android mobile devices via Appium MCP. An agent skill from HoangNguyen0403/agent-skills-standard.
Generate YAML flow files for AppClaw mobile automation. An agent skill from appclawhq/AppClaw.
$ npx skills add appclawhq/AppClaw --skill generate-appclaw-flow -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install appclawhq/AppClaw generate-appclaw-flow --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/appclawhq/AppClaw.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/generate-appclaw-flow .claude/skills/generate-appclaw-flow && 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 "generate-appclaw-flow" agent skill from https://github.com/appclawhq/AppClaw/tree/main/.agents/skills/generate-appclaw-flow into .claude/skills/generate-appclaw-flow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-appclaw-flow", 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/appclawhq/AppClaw/tree/main/.agents/skills/generate-appclaw-flowType 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 appclawhq/AppClaw --skill generate-appclaw-flow -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install appclawhq/AppClaw generate-appclaw-flow --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/appclawhq/AppClaw.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/generate-appclaw-flow .agents/skills/generate-appclaw-flow && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "generate-appclaw-flow" agent skill from https://github.com/appclawhq/AppClaw/tree/main/.agents/skills/generate-appclaw-flow into .agents/skills/generate-appclaw-flow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-appclaw-flow", 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 appclawhq/AppClaw --skill generate-appclaw-flow -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install appclawhq/AppClaw generate-appclaw-flow --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/appclawhq/AppClaw.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/generate-appclaw-flow .cursor/skills/generate-appclaw-flow && 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 "generate-appclaw-flow" agent skill from https://github.com/appclawhq/AppClaw/tree/main/.agents/skills/generate-appclaw-flow into .cursor/skills/generate-appclaw-flow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-appclaw-flow", 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/appclawhq/AppClaw.git --path .agents/skills/generate-appclaw-flow--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 appclawhq/AppClaw --skill generate-appclaw-flow -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install appclawhq/AppClaw generate-appclaw-flow --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/appclawhq/AppClaw.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/generate-appclaw-flow .gemini/skills/generate-appclaw-flow && 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 "generate-appclaw-flow" agent skill from https://github.com/appclawhq/AppClaw/tree/main/.agents/skills/generate-appclaw-flow into .gemini/skills/generate-appclaw-flow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-appclaw-flow", 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 appclawhq/AppClaw generate-appclaw-flowInstalls 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 appclawhq/AppClaw --skill generate-appclaw-flow -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/appclawhq/AppClaw.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/generate-appclaw-flow .github/skills/generate-appclaw-flow && 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 "generate-appclaw-flow" agent skill from https://github.com/appclawhq/AppClaw/tree/main/.agents/skills/generate-appclaw-flow into .github/skills/generate-appclaw-flow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-appclaw-flow", 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 appclawhq/AppClaw --skill generate-appclaw-flow -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install appclawhq/AppClaw generate-appclaw-flow --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/appclawhq/AppClaw.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/generate-appclaw-flow .opencode/skills/generate-appclaw-flow && 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 "generate-appclaw-flow" agent skill from https://github.com/appclawhq/AppClaw/tree/main/.agents/skills/generate-appclaw-flow into .opencode/skills/generate-appclaw-flow/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "generate-appclaw-flow", 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.
generate-appclaw-flowGenerate YAML flow files for AppClaw mobile automation. An agent skill from appclawhq/AppClaw.
Generate Appclaw Flow is an agent skill from appclawhq/AppClaw. Generate YAML flow files for AppClaw mobile automation. Handles structured steps, natural language steps, phased flows (setup/steps/assertions), variable and secret interpolation via .appclaw/env/, and validation. Trigger when the user wants to create, edit, or fix a YAML flow file for AppClaw.
Its SKILL.md is about 3.4k 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 Mobile, covering Mobile testing and debugging. It works with Android, iOS and Model Context Protocol. The repository describes itself as: AI-powered mobile automation agent — describe what you want in plain English, AppClaw reads the screen, reasons, and acts. LLM-agnostic, open-source, zero telemetry. 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 9bbc6f1. 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:
gonpxFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npx, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
TEST_USER_PASSWORDFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Generate Appclaw Flow loads about 3.4k tokens when it runs. Until then it costs about 79 tokens; SKILL.md has 1,281 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 noted patterns worth knowing about, such as sudo or a known installer.
TEST_USER_EMAIL=...` in their shell or `.env` before running.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 appclawhq/AppClaw at commit 9bbc6f1, republished under its Apache-2.0 licence (© appclawhq). 1,281 words, ~3,413 tokens.
.claude/skills/generate-appclaw-flow/SKILL.md (or your agent's skills folder).You are an expert mobile QA automation engineer with deep Appium experience across Android and iOS. Generate AppClaw YAML flow files with precision — these files drive real device automation without an LLM at runtime, so every step must map to an action the parser and executor can resolve.
setup phases to reset to a known state.${secrets.KEY} for credentials and sensitive data. Use ${variables.KEY} for non-sensitive config. Both resolve from .appclaw/env/<name>.yaml.Read the user's request. If they reference an app, understand:
appId in header)Before writing anything:
examples/flows/ and any user flow directories for existing flows that overlap..appclaw/env/ for existing variable/secret bindings you can reuse.${secrets.*} and ${variables.*} are already declared.Present the user with:
.appclaw/env/*.yaml changes requiredDo NOT write files until the user approves.
Write the YAML file following the exact syntax rules below. If new env bindings are needed, create or update .appclaw/env/<name>.yaml in the same change set.
Run npx tsx src/index.ts --flow <path> in dry-run or read the parser output to confirm the flow parses without errors. If the user has a device connected, offer to run it.
A YAML two-document file: metadata header, then a list of steps.
name: VodQA — login and vertical swiping demo
---
- open vodqa app
- wait 2 s
- Click on login button
- Click on Vertical Swiping
- swipe down
- done opened vertical swiping and swipedOrganize steps into setup, steps, and assertions. At least one section required.
name: Login Test
description: Validates the login flow end to end
platform: ios
env: dev
---
setup:
- open MyApp
- wait until login screen is visible
steps:
- type '${secrets.email}' in email field
- type '${secrets.password}' in password field
- tap Login button
- wait 5s
assertions:
- verify Dashboard is visible
- verify Welcome is visibleAdd parallel: N to the metadata. The same flow runs on N devices simultaneously — useful for load/compatibility testing.
name: youtube_parallel
platform: android
parallel: 2
---
- open YouTube app
- search for "Appium 3.0"
- assert "TestMu AI" is visible
- doneA suite YAML has a flows: list and optional parallel: N. Workers pick flows from a queue until all are done. If parallel is omitted, flows run sequentially on a single device.
name: youtube_suite
platform: android
parallel: 2
flows:
- flows/login.yaml
- flows/search.yaml
- flows/playback.yamlSuite files use the same --flow flag as regular flows — the CLI detects the flows: key and routes to the suite runner.
Steps are plain English — the parser converts them to structured actions.
name: YouTube search
---
- open YouTube app
- click on search icon
- type "Appium 3.0" in the search bar
- perform search
- scroll down 2 times until "TestMu AI" is visible
- verify video from TestMu AI is visible
- doneYou can freely mix natural language and structured steps in the same flow.
| Field | Type | Purpose |
|---|---|---|
appId | string | App package (Android) or bundle ID (iOS). Required for launchApp step |
name | string | Flow name, shown in reports and logs |
description | string | Human-readable description |
platform | android or ios | Target platform (optional — can be set at runtime) |
env | string | Environment name — resolves .appclaw/env/<name>.yaml for variable/secret bindings |
parallel | number | Run on N devices concurrently (single flow) or with N workers (suite). Omit for single-device |
flows | list of paths | Suite mode — list of flow files to distribute across workers |
Use these when you need precise control over parameters.
| Step | Syntax | Notes |
|---|---|---|
launchApp | - launchApp | Launches app by appId from header |
tap | - tap: "Login Button" | Tap element matching label (DOM text, accessibility ID, hint) |
type | - type: "hello" | Type into the currently focused field |
wait | - wait: 3 | Sleep N seconds |
waitUntil | - waitUntil: "Login Button" | Wait for text to appear (default 10s timeout) |
waitUntil | - { waitUntil: "text", timeout: 15 } | Wait with custom timeout |
waitUntilGone | - waitUntilGone: "Loading" | Wait for text to disappear |
swipe | - swipe: "up" | Swipe direction: up, down, left, right |
swipe | - { swipe: "down", repeat: 3 } | Swipe with repeat count |
assert | - assert: "Login Successful" | Verify text is visible on screen |
scrollAssert | - { scrollAssert: "Item 5", direction: down, maxScrolls: 5 } | Scroll until text found |
enter | - enter | Press Enter/Return key |
back | - back or - goBack | Press Back button |
home | - home or - goHome | Press Home button |
getInfo | - getInfo: "What is the balance?" | Ask a question about the screen (vision, returns answer) |
done | - done or - done: "Success message" | End flow. With message: verifies text before succeeding |
The parser recognizes these patterns (case-insensitive). Use them for readability.
open YouTube app, launch Safari, start Settingstap Login button, click on Settings, press Submittoggle WiFi, enable Bluetooth, turn off Airplane Modeclose dialog, dismiss popup, cancel alertnavigate to Settings screentype "hello" in search field, type 'password123' in password fieldenter "hello world", enter text "hello"search for "pizza", search "restaurants"swipe up, swipe down 3 timesscroll down, scroll up 2 timesscroll down until "Submit" is visiblescroll down 3 times until "Item" is visiblewait 5 seconds, wait 2s, pause 500mswait a moment, sleep 3 secwait until screen is loaded (DOM stability check)wait until "Login Button" is visiblewait 10s until "Dashboard" is visiblewait until "Loading" is gonego back, press back, navigate backgo home, press homepress enter, hit enter, submit, perform searchverify Dashboard is visibleassert "Welcome!" is visiblecheck that Login button is on the screenwhat's on the screen? — returns a descriptionhow many items are there? — answered via vision- type '${variables.username}' in username field
- type '${secrets.password}' in password field
- verify ${variables.welcome_text} is visible.appclaw/env/<name>.yaml)variables:
app_name: youtube
expected_channel: TestMu AI
locale: en-US
timeout: 30
secrets:
email: '${TEST_USER_EMAIL}'
password: '${TEST_USER_PASSWORD}'Rules:
variables — non-sensitive, literal values (string, number, boolean). Shown in logs.secrets — sensitive values. Use "${SHELL_ENV_VAR}" placeholders. Resolved from shell environment at runtime. Redacted in logs as ***.export TEST_USER_EMAIL=... in their shell or .env before running.Set env: dev in the flow header to load .appclaw/env/dev.yaml:
name: Login Test
env: dev
---
steps:
- type '${secrets.email}' in email fieldThe parser walks up from the flow file directory looking for .appclaw/env/<name>.yaml.
# Bad — ambiguous
- tap button
# Good — names the visible label
- tap "Sign In" button
- tap "Connections"
- click on search iconIf the test changes app state, the setup phase must handle prior state:
| Test validates... | Setup must... |
|---|---|
| Adding an item | Delete the item first if it exists |
| Enabling a toggle | Disable it first if already on |
| Login flow | Log out first if already logged in |
| Form submission | Clear any pre-filled data |
# Samsung: Connections → Wi-Fi
# Pixel/AOSP: Network & internet → Internet → Wi-Fi
- tap: 'Connections'When the DOM can't match an element (custom views, canvas-rendered UI), the executor falls back to vision if configured (AGENT_MODE=vision or VISION_MODE=fallback). For flows targeting such apps:
tap "red heart icon" instead of tap "icon"done step is auto-appended if you omit it, but including it with a verification message is better practice.:, #, {, }, [, ])type '${secrets.email}'# are preserved and useful for documenting OEM differencesuse-appclaw-cli skill.© appclawhq, 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
Just SKILL.md in .agents/skills/generate-appclaw-flow of appclawhq/AppClaw.
Open the folder on GitHubat commit 9bbc6f1
Generate Appclaw Flow 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 |
|---|---|---|---|---|---|---|
| Generate Appclaw Flow this skillappclawhq/AppClaw | 116 | — | ~3.4k | Automated safety check: Notes | Apache-2.0 | |
| Quality Engineering Appium MCPHoangNguyen0403/agent-skills-standard | 571 | — | ~1.1k | Automated safety check: Pass | MIT | |
| BrowserStack Live Testinghandsontable/handsontable | 22k | — | ~950 | Automated safety check: Pass | Custom licence | |
| Mobilerun Docs Referencedroidrun/mobilerun | 9.6k | — | ~943 | Automated safety check: Pass | MIT | |
| Appiumblokadaorg/blokada | 3.3k | — | ~3.5k | Automated safety check: Pass | MPL-2.0 | |
| Phoneagentrounak/PhoneAgent | 799 | — | ~2.2k | Automated safety check: Pass | MIT |
HoangNguyen0403/agent-skills-standard
Drives iOS/Android mobile devices via Appium MCP. An agent skill from HoangNguyen0403/agent-skills-standard.
handsontable/handsontable
Opens a live BrowserStack session on a real Android, iOS or desktop browser for a local or public URL, tunneling localhost through Cloudflare when needed.
droidrun/mobilerun
Answers questions about Mobilerun, the LLM-agent framework for automating Android and iOS devices, by pointing the agent to the right page of its v5 documentation.
blokadaorg/blokada
A skill your agent uses for dynamic inspection and navigation of the Blokada app through the repo-local Appium machine session.
rounak/PhoneAgent
Control a connected iPhone, iOS simulator, Android emulator, or Android device from macOS through PhoneAgent's JSON-RPC bridge.
pranshuchittora/simvyn
Operate iOS Simulators, Android Emulators, and connected mobile devices with Simvyn.
appclawhq/AppClaw
Review code changes in the AppClaw repo for correctness, CLI/VSCode extension consistency, and YAML flow parsing regressions.
appclawhq/AppClaw
Use the AppClaw CLI to run YAML flows, start the interactive TUI shell, explore apps, record/replay sessions, configure devices, and troubleshoot.
appclawhq/AppClaw
Use the appclaw-agent CLI to directly open, inspect, and interact with a mobile app via terminal commands — without writing a YAML flow.
Works with
Categories
Generate YAML flow files for AppClaw mobile automation. An agent skill from appclawhq/AppClaw. Generate Appclaw Flow is an agent skill from appclawhq/AppClaw. Generate YAML flow files for AppClaw mobile automation.
Generate Appclaw Flow fits situations like: the user wants to create; fix a YAML flow file for AppClaw.
Run `npx skills add appclawhq/AppClaw --skill generate-appclaw-flow -a claude-code`. Or copy the skill folder (.agents/skills/generate-appclaw-flow in appclawhq/AppClaw) into .claude/skills/generate-appclaw-flow in your project. Claude Code loads it when a task matches its description.
Run `npx skills add appclawhq/AppClaw --skill generate-appclaw-flow -a codex`. Or copy the skill folder (.agents/skills/generate-appclaw-flow in appclawhq/AppClaw) into .agents/skills/generate-appclaw-flow 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 appclawhq/AppClaw --skill generate-appclaw-flow -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/generate-appclaw-flow, .gemini/skills/generate-appclaw-flow, .github/skills/generate-appclaw-flow and .opencode/skills/generate-appclaw-flow in your project.
Going by SKILL.md and its folder, Generate Appclaw Flow needs the command-line tools its instructions call (go and npx) and credentials named TEST_USER_PASSWORD. Our summary lists: Node.js.
SKILL.md contains no URLs. Its commands use npx, 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 notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Generate Appclaw Flow 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.4k 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 Generate Appclaw Flow: Quality Engineering Appium MCP (HoangNguyen0403/agent-skills-standard, 571 stars), BrowserStack Live Testing (handsontable/handsontable, 22k stars), Mobilerun Docs Reference (droidrun/mobilerun, 9.6k stars) and Appium (blokadaorg/blokada, 3.3k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
appclawhq (a GitHub organization) maintains it in appclawhq/AppClaw, which has 116 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on September 3, 2026.
Source: appclawhq/AppClaw on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.