Agent skill

Smoke Tests

by woocommerce in woocommerce/woocommerce-android

Prepare the local environment for the Maestro smoke-test suite — verify tooling, select a device, collect the APK if needed, validate the .env file by variable name only, then hand the user the…

GPL-2.0Auto-check: notesTesting & QA

Install Smoke Tests

skills CLI
$ npx skills add woocommerce/woocommerce-android --skill smoke-tests -a claude-code

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

GitHub CLI
$ gh skill install woocommerce/woocommerce-android smoke-tests --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/woocommerce/woocommerce-android.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/smoke-tests .claude/skills/smoke-tests && 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
smoke-tests
GitHub stars
319
Token cost
~1.7k tokens
SKILL.md length
884 words
Files
1
Skills in repo
11
Repo updated
First seen
Licence
GPL-2.0

At a glance

Prepare the local environment for the Maestro smoke-test suite — verify tooling, select a device, collect the APK if needed, validate the .env file by variable name only, then hand the user the…

  • Works in 5 steps: Check tooling → Ensure an emulator is running → Choose the app build → …
  • Tasks that involve QA and bug reports
  • SKILL.md covers Scope (what this skill is…, Steps and Notes
  • Calls adb

What it does

Smoke Tests is an agent skill from woocommerce/woocommerce-android. Prepare the local environment for the Maestro smoke-test suite — verify tooling, select a device, collect the APK if needed, validate the .env file by variable name only, then hand the user the exact lab-store CLI command to run or run it on request.

Its SKILL.md is about 1.7k 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 QA and bug reports and Mobile testing and debugging. It works with WooCommerce and Android. The repository describes itself as: WooCommerce Android app. The licence is GPL-2.0.

When your agent uses it

  • Tasks that involve QA and bug reports
  • Tasks that involve Mobile testing and debugging

Example prompts

  • “/smoke-tests”

Requirements

  • Pre-approved tools (allowed-tools): Bash, Read, Edit, Write, Grep, Glob, AskUserQuestion

Workflow steps

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

  1. Check tooling
  2. Ensure an emulator is running
  3. Choose the app build
  4. Validate .maestro/.env.local
  5. Hand off the CLI command

What it can do on your machine

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

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash
    • Read
    • Edit
    • Write
    • Grep
    • Glob
    • AskUserQuestion

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • adb

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

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

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

Context cost

Smoke Tests loads about 1.7k tokens when it runs. Until then it costs about 66 tokens; SKILL.md has 884 words of instructions outside code blocks.

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

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:3
    collect the APK if needed, validate the .env file by variable name only, then hand the user the exact lab-store CLI com
  • NoteMentions a .env fileSKILL.md:19
    4. **`.env.local`** — check it with `lint-env.py` and the doctor, which name missing variables without printing values.
  • NoteMentions a .env fileSKILL.md:48
    ### 4. Validate `.maestro/.env.local`
  • NoteMentions a .env fileSKILL.md:55
    2. Ask the user to edit `.maestro/.env.local` directly.
  • NoteMentions a .env fileSKILL.md:58
    Never commit `.env.local`. Never ask the user to paste secret values into chat. Never echo secret values back to the use
  • NoteMentions a .env fileSKILL.md:85
    - `.env.local` is git-ignored. Never stage or commit it, even if the user asks you to save their credentials.
  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Bash, Read, Edit, Write, Grep, Glob, AskUserQuestion

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 woocommerce/woocommerce-android at commit 309d0f5, republished under its GPL-2.0 licence (© woocommerce). 884 words, ~1,658 tokens.

Download SKILL.mdSave it as .claude/skills/smoke-tests/SKILL.md (or your agent's skills folder).
name
smoke-tests
description
Prepare the local environment for the Maestro smoke-test suite — verify tooling, select a device, collect the APK if needed, validate the .env file by variable name only, then hand the user the exact lab-store CLI command to run or run it on request.
allowed-tools
Bash, Read, Edit, Write, Grep, Glob, AskUserQuestion
user-invocable
true

Prepare & launch the Maestro smoke-test suite

This skill is a setup + handoff flow. Its job is to get everything ready so .maestro/scripts/run-smoke-tests.sh will work on the first try, then give the user the CLI command.

It does NOT own the test-runner mechanics. Ordering, per-flow recording, report generation, and the "recordings are kept only for failures, outside the repo" contract all live in the script itself.

Scope (what this skill is responsible for)

  1. Tooling — set up the pinned Maestro and Java with .maestro/scripts/configure-toolchain.sh, and confirm adb is on PATH.
  2. Device — confirm at least one Android device/emulator is attached (adb devices). If several are attached, choose the runner --device value with the user.
  3. APK — the runner installs the latest release by itself; ask only whether the user wants a local release build instead.
  4. .env.local — check it with lint-env.py and the doctor, which name missing variables without printing values.
  5. Handoff — print the exact CLI command. If the user explicitly asks ("run it", "go ahead", etc.), invoke the script for them and stream its output.

Everything below the handoff — P2 ordering, store selection, seed/cleanup, animation restore, retry accounting, artifact policy, HTML + JUnit reports — is handled by .maestro/scripts/run-smoke-tests.sh.

Steps

1. Check tooling

Run source .maestro/scripts/configure-toolchain.sh. It installs the pinned Maestro 2.9.0 into the workspace, selects Java 21 and fails with a clear message when either is missing. Then run command -v adb; if adb is missing, tell the user to install the Android SDK platform-tools and stop.

Each Bash call starts a new shell, so put source .maestro/scripts/configure-toolchain.sh && in front of every later command that runs Maestro, the doctor or the runner.

2. Ensure an emulator is running

Run adb devices. Count the lines whose second column is device.

  • 0 devices: list AVDs with emulator -list-avds.
    • If none → tell the user to create one in Android Studio (AVD Manager) and stop.
    • If exactly one → ask the user if they want to boot it, then emulator -avd <name> -no-snapshot-save & (backgrounded). Find its emulator-* serial in adb devices and poll adb -s <serial> shell getprop sys.boot_completed until 1 (up to ~90s); a phone on wireless adb can be attached too.
    • If multiple → ask which one to boot.
  • 1+ devices: proceed.
3. Choose the app build

The runner needs the non-debuggable production package, com.woocommerce.android. When it is missing from the device, the runner downloads and installs the latest stable GitHub release, so there is nothing to do by default.

Ask whether the user wants to test the current checkout instead. If so, run ./gradlew :WooCommerce:assembleVanillaRelease in the foreground and pass --apk WooCommerce/build/outputs/apk/vanilla/release/WooCommerce-vanilla-release.apk to the runner. Debug and wasabi builds are rejected.

4. Validate .maestro/.env.local

Run .maestro/scripts/lint-env.py, then source .maestro/scripts/configure-toolchain.sh && .maestro/scripts/doctor.sh --profile <profile> --seed --device <serial>. Both name missing or malformed variables without printing their values, and the doctor checks the store block each flow needs: flows tagged store_shared use the MAESTRO_WOO_SHARED_* block, every other flow the MAESTRO_WOO_LAB_* block. .maestro/env.example lists every variable and what it is for.

If anything is missing:

  1. List the variable names the doctor reported.
  2. Ask the user to edit .maestro/.env.local directly.
  3. Run the doctor again; do not read the file yourself.

Never commit .env.local. Never ask the user to paste secret values into chat. Never echo secret values back to the user.

Show full SKILL.md (338 more words)Show less
5. Hand off the CLI command

Once steps 1–4 all pass, print the command the user should run:

source .maestro/scripts/configure-toolchain.sh && .maestro/scripts/run-smoke-tests.sh --profile phone-full --seed --device <serial>

Tell the user:

  • Without --profile, the runner runs smoke_core only and excludes flaky_quarantine.
  • Each flow runs against the store it needs: store_shared flows on the shared store, the rest on the lab store. --store lab|shared forces one store for every flow, and the runner refuses destructive flows on the shared store.
  • Destructive flows need --seed. It seeds their fixtures, and cleanup deletes what the run created when it exits.
  • It captures and restores device animation settings.
  • Screen recordings are kept only for failed lab-store flows; shared-store credential paths use screenshots only.
  • Artifacts (recordings, logs, HTML + JUnit report) are written OUTSIDE the repo, under $HOME/woocommerce-maestro-output/<timestamp>/ by default. Override with --output-dir <path> or the WOO_MAESTRO_OUTPUT_DIR env var.
  • The HTML report auto-opens at the end on macOS, or can be opened manually from the path the script prints.

If the user asks to run it ("go ahead", "run it", "yes please", etc.), invoke the script yourself via Bash and stream its output. Pass --apk only if the user chose a local build in step 3.

When the script exits, read the last line of its output (it prints Report: and Result: summary lines) and relay a one-line summary to the user plus the clickable file:// path to the HTML report. If any flows failed, call out the first failing flow by name — it's usually the most actionable one.

Notes

  • The skill's job ends at handoff. Don't reinvent the test-runner behaviour here — if something about per-flow recording, ordering, or artifact location needs to change, change it in .maestro/scripts/run-smoke-tests.sh.
  • .env.local is git-ignored. Never stage or commit it, even if the user asks you to save their credentials.
  • Artifacts default to $HOME/woocommerce-maestro-output/ (outside the repo) — the repo's .gitignore still excludes the legacy .maestro/output/ path for safety.
  • Do NOT parallelize. adb shell screenrecord only supports one invocation per device, and Maestro runs one flow at a time against a single emulator. The script runs sequentially by design.

© woocommerce, GPL-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/smoke-tests of woocommerce/woocommerce-android.

Open the folder on GitHubat commit 309d0f5

Compare with similar skills

Smoke Tests 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.

Smoke Tests compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Smoke Tests this skillwoocommerce/woocommerce-android319—~1.7kAutomated safety check: NotesGPL-2.0
AppsFlyer Event ValidationAppsFlyerSDK/appsflyer-unity-plugin178—~332Automated safety check: PassMIT
Dpis Hyperos SmokeKwensiu/DPIS111—~715Automated safety check: PassGPL-3.0
Mobile QAtloncorp/tlon-apps107—~2.4kAutomated safety check: PassMIT
Warpdroid UI TestWarp-net/warpnet157—~3.5kAutomated safety check: PassCustom licence
SoloPi AI Controlalipay/SoloPi6.3k—~3.6kAutomated safety check: PassApache-2.0

Similar skills

  • AppsFlyer Event Validation

    AppsFlyerSDK/appsflyer-unity-plugin

    Checks whether the AppsFlyer events and callbacks expected in a Unity app scenario actually fired, using logs, callback payloads and test evidence.

    178 GitHub stars~332 tokensUpdated 5 days ago
    Testing & QAAuto-check passed
  • Dpis Hyperos Smoke

    Kwensiu/DPIS

    Run automated DPIS HyperOS device smoke tests for package-specific dp/font emulation or replacement.

    111 GitHub stars~715 tokensUpdated today
    MobileAuto-check passed
  • Mobile QA

    tloncorp/tlon-apps

    Run a mobile QA checklist on a physical Android device over adb for tlon-apps, then triage what fails into fixes.

    107 GitHub stars~2.4k tokensUpdated today
    MobileAuto-check passed
  • Warpdroid UI Test

    Warp-net/warpnet

    A skill your agent uses whenever a warpdroid (Android client) change or bug needs to be verified by actually driving the app's visual UI — any task phrased as "test the warpdroid UI", "click through…

    157 GitHub stars~3.5k tokensUpdated yesterday
    MobileAuto-check passed
  • SoloPi AI Control

    alipay/SoloPi

    Drives Android devices through SoloPi's typed command line to record, replay and verify app behavior, with device pools and signed on-device decision models.

    6.3k GitHub stars~3.6k tokensUpdated 1 mo ago
    Testing & QAAuto-check passed
  • Mesh Lab

    permissionlesstech/bitchat-android

    Run, diagnose, and extend bitchat Android Mesh Lab physical-device tests.

    7.8k GitHub stars~2.9k tokensUpdated 3 days ago
    Testing & QAAuto-check passed

More from woocommerce/woocommerce-android

All 11 skills in this repo
  • PR

    woocommerce/woocommerce-android

    Create a pull request following project conventions. An agent skill from woocommerce/woocommerce-android.

    319 GitHub stars~1.3k tokensUpdated today
    Auto-check: notes
  • PR Feedback

    woocommerce/woocommerce-android

    Address PR reviewer feedback by evaluating comments, proposing fixes, and executing after user approval.

    319 GitHub stars~1.3k tokensUpdated today
    Auto-check: notes
  • Setup Test Stores

    woocommerce/woocommerce-android

    Provision a disposable Jurassic Ninja store for the Maestro smoke suite, connect Jetpack to the developer's own WordPress.com test account, create WooCommerce API keys, and write .maestro/.env.local.

    319 GitHub stars~1.4k tokensUpdated today
    Auto-check: notes
  • UI Review

    woocommerce/woocommerce-android

    Generate screenshot coverage for screen-level Compose previews from the current diff or a specific target, check required visual and data variations, and produce a compact visual report

    319 GitHub stars~3.1k tokensUpdated today
    Auto-check passed
  • Review

    woocommerce/woocommerce-android

    Review code changes against project architecture, style, and conventions

    319 GitHub stars~600 tokensUpdated today
    Auto-check: notes
  • Verify On Device

    woocommerce/woocommerce-android

    Build, install, and visually verify the app on an Android emulator or device.

    319 GitHub stars~10k tokensUpdated today
    Auto-check: notes

Questions about Smoke Tests

What does Smoke Tests do?

Prepare the local environment for the Maestro smoke-test suite — verify tooling, select a device, collect the APK if needed, validate the .env file by variable name only, then hand the user the…. Smoke Tests is an agent skill from woocommerce/woocommerce-android.env file by variable name only, then hand the user the exact lab-store CLI command to run or run it on request.

When should I use Smoke Tests?

Smoke Tests fits situations like: tasks that involve QA and bug reports; tasks that involve Mobile testing and debugging.

How do I install Smoke Tests in Claude Code?

Run `npx skills add woocommerce/woocommerce-android --skill smoke-tests -a claude-code`. Or copy the skill folder (.agents/skills/smoke-tests in woocommerce/woocommerce-android) into .claude/skills/smoke-tests in your project. Claude Code loads it when a task matches its description.

How do I install Smoke Tests in Codex?

Run `npx skills add woocommerce/woocommerce-android --skill smoke-tests -a codex`. Or copy the skill folder (.agents/skills/smoke-tests in woocommerce/woocommerce-android) into .agents/skills/smoke-tests in your project. Codex loads it when a task matches its description.

Can I use Smoke Tests 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 woocommerce/woocommerce-android --skill smoke-tests -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/smoke-tests, .gemini/skills/smoke-tests, .github/skills/smoke-tests and .opencode/skills/smoke-tests in your project.

What does Smoke Tests need to run?

Going by SKILL.md and its folder, Smoke Tests needs the command-line tools its instructions call (adb). Its frontmatter pre-approves these tools: Bash, Read, Edit, Write, Grep, Glob, AskUserQuestion.

Does Smoke Tests access the network?

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.

Is Smoke Tests safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file; pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Smoke Tests use?

Smoke Tests is published under the GPL-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Smoke Tests use?

About 1.7k tokens (SKILL.md is roughly 6.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Smoke Tests?

Skills that share tags, products or a category with Smoke Tests: AppsFlyer Event Validation (AppsFlyerSDK/appsflyer-unity-plugin, 178 stars), Dpis Hyperos Smoke (Kwensiu/DPIS, 111 stars), Mobile QA (tloncorp/tlon-apps, 107 stars) and Warpdroid UI Test (Warp-net/warpnet, 157 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Smoke Tests?

woocommerce (a GitHub organization) maintains it in woocommerce/woocommerce-android, which has 319 GitHub stars. The repository holds 11 skills in this directory. The repository was last updated on October 9, 2026.

Source: woocommerce/woocommerce-android on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.