Agent skill

Generate Appclaw Flow

by appclawhq in appclawhq/AppClaw

Generate YAML flow files for AppClaw mobile automation. An agent skill from appclawhq/AppClaw.

Apache-2.0Auto-check: notesMobile

Install Generate Appclaw Flow

skills CLI
$ npx skills add appclawhq/AppClaw --skill generate-appclaw-flow -a claude-code

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

GitHub CLI
$ gh skill install appclawhq/AppClaw generate-appclaw-flow --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/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-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
generate-appclaw-flow
GitHub stars
116
Token cost
~3.4k tokens
SKILL.md length
1,281 words
Files
1
Skills in repo
4
Repo updated
First seen
Licence
Apache-2.0

At a glance

Generate YAML flow files for AppClaw mobile automation. An agent skill from appclawhq/AppClaw.

  • Works in 5 steps: Understand the Goal → Check Existing Flows and Environment → Propose a Plan → …
  • The user wants to create
  • SKILL.md covers Core Principles, Workflow, YAML Flow Formats and Metadata Header Fields, plus 4 more sections
  • Calls go and npx; needs TEST_USER_PASSWORD

What it does

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.

When your agent uses it

  • The user wants to create
  • Fix a YAML flow file for AppClaw

Example prompts

  • “/generate-appclaw-flow”

Requirements

  • Node.js

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Understand the Goal
  2. Check Existing Flows and Environment
  3. Propose a Plan
  4. Generate the Flow
  5. Validate

What it can do on your machine

Read from SKILL.md and the folder at commit 9bbc6f1. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • go
    • npx

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

  • Network

    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.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • TEST_USER_PASSWORD

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

Context cost

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.

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

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

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:279
    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.

SKILL.md

The full file from appclawhq/AppClaw at commit 9bbc6f1, republished under its Apache-2.0 licence (© appclawhq). 1,281 words, ~3,413 tokens.

Download SKILL.mdSave it as .claude/skills/generate-appclaw-flow/SKILL.md (or your agent's skills folder).
name
generate-appclaw-flow
description
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.

AppClaw Flow Generator

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.

Core Principles

  • Test user-facing functionality only. Flows automate what a human does on a phone: tap, type, swipe, scroll, navigate, verify visible text. No API calls, no backend logic.
  • Flows must be idempotent. Assume the app may be in any state from a prior failed run. Use setup phases to reset to a known state.
  • Never hardcode secrets. Use ${secrets.KEY} for credentials and sensitive data. Use ${variables.KEY} for non-sensitive config. Both resolve from .appclaw/env/<name>.yaml.
  • Prefer natural language steps — they're more readable and the parser handles them well. Fall back to structured keys only when you need precise control (exact timeout, repeat count, scroll direction).

Workflow

Step 1 — Understand the Goal

Read the user's request. If they reference an app, understand:

  • Target platform (Android, iOS, or both)
  • App package/bundle ID (needed for appId in header)
  • The user journey to automate
  • What success looks like (what to assert)
Step 2 — Check Existing Flows and Environment

Before writing anything:

  1. Check examples/flows/ and any user flow directories for existing flows that overlap.
  2. Inspect .appclaw/env/ for existing variable/secret bindings you can reuse.
  3. If the flow needs credentials, check which ${secrets.*} and ${variables.*} are already declared.
Step 3 — Propose a Plan

Present the user with:

  • Flow file path and name
  • Which format (flat vs phased) and why
  • Steps you intend to include (summarized)
  • Any new variables/secrets needed
  • Any .appclaw/env/*.yaml changes required

Do NOT write files until the user approves.

Step 4 — Generate the Flow

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.

Step 5 — Validate

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.


YAML Flow Formats

Flat Format (simple flows)

A YAML two-document file: metadata header, then a list of steps.

yaml
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 swiped
Phased Format (test scenarios)

Organize steps into setup, steps, and assertions. At least one section required.

yaml
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 visible
Parallel Format (same flow, N devices)

Add parallel: N to the metadata. The same flow runs on N devices simultaneously — useful for load/compatibility testing.

yaml
name: youtube_parallel
platform: android
parallel: 2
---
- open YouTube app
- search for "Appium 3.0"
- assert "TestMu AI" is visible
- done
Suite Format (different flows across N workers)

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

yaml
name: youtube_suite
platform: android
parallel: 2
flows:
  - flows/login.yaml
  - flows/search.yaml
  - flows/playback.yaml

Suite files use the same --flow flag as regular flows — the CLI detects the flows: key and routes to the suite runner.

Natural Language Format (most readable)

Steps are plain English — the parser converts them to structured actions.

yaml
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
- done

You can freely mix natural language and structured steps in the same flow.


Metadata Header Fields

FieldTypePurpose
appIdstringApp package (Android) or bundle ID (iOS). Required for launchApp step
namestringFlow name, shown in reports and logs
descriptionstringHuman-readable description
platformandroid or iosTarget platform (optional — can be set at runtime)
envstringEnvironment name — resolves .appclaw/env/<name>.yaml for variable/secret bindings
parallelnumberRun on N devices concurrently (single flow) or with N workers (suite). Omit for single-device
flowslist of pathsSuite mode — list of flow files to distribute across workers

Structured Step Reference

Use these when you need precise control over parameters.

StepSyntaxNotes
launchApp- launchAppLaunches 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: 3Sleep 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- enterPress Enter/Return key
back- back or - goBackPress Back button
home- home or - goHomePress 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

Natural Language Patterns

The parser recognizes these patterns (case-insensitive). Use them for readability.

App Launch
  • open YouTube app, launch Safari, start Settings
Show full SKILL.md (508 more words)Show less
Tap / Click
  • tap Login button, click on Settings, press Submit
  • toggle WiFi, enable Bluetooth, turn off Airplane Mode
  • close dialog, dismiss popup, cancel alert
  • navigate to Settings screen
Text Input
  • type "hello" in search field, type 'password123' in password field
  • enter "hello world", enter text "hello"
  • search for "pizza", search "restaurants"
Scrolling & Swiping
  • swipe up, swipe down 3 times
  • scroll down, scroll up 2 times
  • scroll down until "Submit" is visible
  • scroll down 3 times until "Item" is visible
Waiting
  • wait 5 seconds, wait 2s, pause 500ms
  • wait a moment, sleep 3 sec
  • wait until screen is loaded (DOM stability check)
  • wait until "Login Button" is visible
  • wait 10s until "Dashboard" is visible
  • wait until "Loading" is gone
Navigation
  • go back, press back, navigate back
  • go home, press home
  • press enter, hit enter, submit, perform search
Assertions
  • verify Dashboard is visible
  • assert "Welcome!" is visible
  • check that Login button is on the screen
Questions (Vision mode only)
  • what's on the screen? — returns a description
  • how many items are there? — answered via vision

Variable & Secret Interpolation

Syntax in Flow Steps
yaml
- type '${variables.username}' in username field
- type '${secrets.password}' in password field
- verify ${variables.welcome_text} is visible
Environment File (.appclaw/env/<name>.yaml)
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 ***.
  • Never hardcode actual secret values in YAML files.
  • The user must export TEST_USER_EMAIL=... in their shell or .env before running.
Referencing Environment

Set env: dev in the flow header to load .appclaw/env/dev.yaml:

yaml
name: Login Test
env: dev
---
steps:
  - type '${secrets.email}' in email field

The parser walks up from the flow file directory looking for .appclaw/env/<name>.yaml.


Writing Good Flows

Be Specific About UI Elements
yaml
# Bad — ambiguous
- tap button

# Good — names the visible label
- tap "Sign In" button
- tap "Connections"
- click on search icon
Use Setup for Idempotency

If the test changes app state, the setup phase must handle prior state:

Test validates...Setup must...
Adding an itemDelete the item first if it exists
Enabling a toggleDisable it first if already on
Login flowLog out first if already logged in
Form submissionClear any pre-filled data
Platform-Specific Flows
  • Different Android OEMs have different UI labels (Samsung "Connections" vs Pixel "Network & internet").
  • iOS simulators vs real devices may have different navigation patterns.
  • Add comments in YAML documenting OEM-specific notes:
yaml
# Samsung: Connections → Wi-Fi
# Pixel/AOSP: Network & internet → Internet → Wi-Fi
- tap: 'Connections'
Vision Fallback

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:

  • Use descriptive labels: tap "red heart icon" instead of tap "icon"
  • Vision works best with unique, visually distinct descriptions
Flow Length
  • Keep flows focused on one user journey (5-20 steps).
  • Use phased format for anything with setup/teardown needs.
  • A done step is auto-appended if you omit it, but including it with a verification message is better practice.

Strict YAML Rules

  • 2-space indentation (not tabs)
  • Quote strings containing special YAML characters (:, #, {, }, [, ])
  • Single quotes around interpolated values: type '${secrets.email}'
  • No markdown fences in the actual file — write raw YAML
  • Comments with # are preserved and useful for documenting OEM differences

Coordination

  • For running flows or CLI usage help, route to the use-appclaw-cli skill.
  • For debugging flow execution failures, check the step error output — it includes which element matching failed and what was on screen.

© 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

Files

Just SKILL.md in .agents/skills/generate-appclaw-flow of appclawhq/AppClaw.

Open the folder on GitHubat commit 9bbc6f1

Compare with similar skills

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.

Generate Appclaw Flow compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Generate Appclaw Flow this skillappclawhq/AppClaw116—~3.4kAutomated safety check: NotesApache-2.0
Quality Engineering Appium MCPHoangNguyen0403/agent-skills-standard571—~1.1kAutomated safety check: PassMIT
BrowserStack Live Testinghandsontable/handsontable22k—~950Automated safety check: PassCustom licence
Mobilerun Docs Referencedroidrun/mobilerun9.6k—~943Automated safety check: PassMIT
Appiumblokadaorg/blokada3.3k—~3.5kAutomated safety check: PassMPL-2.0
Phoneagentrounak/PhoneAgent799—~2.2kAutomated safety check: PassMIT

Similar skills

  • Quality Engineering Appium MCP

    HoangNguyen0403/agent-skills-standard

    Drives iOS/Android mobile devices via Appium MCP. An agent skill from HoangNguyen0403/agent-skills-standard.

    571 GitHub stars~1.1k tokensUpdated today
    MobileAuto-check passed
  • BrowserStack Live Testing

    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.

    22k GitHub stars~950 tokensUpdated today
    Testing & QAAuto-check passed
  • Mobilerun Docs Reference

    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.

    9.6k GitHub stars~943 tokensUpdated 4 days ago
    MobileAuto-check passed
  • Appium

    blokadaorg/blokada

    A skill your agent uses for dynamic inspection and navigation of the Blokada app through the repo-local Appium machine session.

    3.3k GitHub stars~3.5k tokensUpdated today
    MobileAuto-check passed
  • Phoneagent

    rounak/PhoneAgent

    Control a connected iPhone, iOS simulator, Android emulator, or Android device from macOS through PhoneAgent's JSON-RPC bridge.

    799 GitHub stars~2.2k tokensUpdated 1 mo ago
    MobileAuto-check passed
  • Simvyn

    pranshuchittora/simvyn

    Operate iOS Simulators, Android Emulators, and connected mobile devices with Simvyn.

    438 GitHub stars~938 tokensUpdated yesterday
    MobileAuto-check passed

More from appclawhq/AppClaw

  • Review Changes

    appclawhq/AppClaw

    Review code changes in the AppClaw repo for correctness, CLI/VSCode extension consistency, and YAML flow parsing regressions.

    116 GitHub stars~1.4k tokensUpdated 1 mo ago
    Auto-check passed
  • Use Appclaw CLI

    appclawhq/AppClaw

    Use the AppClaw CLI to run YAML flows, start the interactive TUI shell, explore apps, record/replay sessions, configure devices, and troubleshoot.

    116 GitHub stars~4.6k tokensUpdated 1 mo ago
    Auto-check: notes
  • Use Appclaw Agent CLI

    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.

    116 GitHub stars~775 tokensUpdated 1 mo ago
    Auto-check passed

Categories

Questions about Generate Appclaw Flow

What does Generate Appclaw Flow do?

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.

When should I use Generate Appclaw Flow?

Generate Appclaw Flow fits situations like: the user wants to create; fix a YAML flow file for AppClaw.

How do I install Generate Appclaw Flow in Claude Code?

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.

How do I install Generate Appclaw Flow in Codex?

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.

Can I use Generate Appclaw Flow in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add 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.

What does Generate Appclaw Flow need to run?

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.

Does Generate Appclaw Flow access the network?

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.

Is Generate Appclaw Flow safe to install?

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.

What licence does Generate Appclaw Flow use?

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.

How many tokens does Generate Appclaw Flow use?

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.

What are the alternatives to Generate Appclaw Flow?

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.

Who maintains Generate Appclaw Flow?

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.