From Maestro Testgen
Generate UI regression tests from git diffs or natural language QA requests, producing manual test cases and Maestro YAML flows for Android, iOS, or Web.
How this skill is triggered — by the user, by Claude, or both
Slash command
/maestro-testgen:maestro-testgenThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Derive the UI behaviors that need regression coverage from a **git diff** or a
Derive the UI behaviors that need regression coverage from a git diff or a natural-language description, write a durable manual test case document, and—only when automation is actually feasible—generate a runnable Maestro YAML flow for Android / iOS / Web.
ready.maestro-yaml-rules.md): id → locale-independent text → a11y → relative →
point as a documented last resort for truly id-less elements (not a blocker).maestro test
without a connected device/emulator/browser—detect first, otherwise degrade.references/workflow.md.references/workflow.md). When a device is online, use the Maestro MCP
tools (or maestro hierarchy) to inspect the live hierarchy only for what static
reads can't answer (no-id / position-dependent elements), and calibrate once —
don't re-traverse the whole flow. See references/run-and-mcp.md.references/decision-rules.md to classify UI behavior vs pure logic.references/manual-case-template.md.
Save to qa/manual-cases/<case_id>.md (or the project's existing case dir).ready / blocked / needs_selector /
needs_test_data).ready, generate the Maestro YAML per references/maestro-yaml-rules.md.
Save to qa/manual-cases/maestro-flows/<case_id>.yaml (or the project's existing
Maestro dir, e.g. maestro/flows/).maestro list-devices.
If one is online, run the flow with a report format (Maestro defaults to NOOP,
i.e. no report file, so always pass --format):
maestro test <path> --format HTML-DETAILED --output qa/manual-cases/reports/<case_id>.html --test-output-dir qa/manual-cases/evidence/<case_id>
(use --format JUNIT for CI; --test-output-dir puts screenshots/artifacts in the qa
dir, not ~/.maestro/tests/). Report pass/fail with logs, the saved report path and
the evidence dir;
on failure, triage per references/run-and-mcp.md. If no device is online, degrade:
print the run command and tell the user to start a device (maestro start-device)
first—do not run. If not ready, explain the blocker and what to supply.test_routing_decision:
input_mode: git_diff | natural_language
platforms:
- android | ios | web | unknown
change_type: ui_behavior | pure_logic | mixed | unknown
recommended_test_level: maestro | unit_test | integration_test | manual_review
automation_runner: maestro | none
reason: "<why>"
evidence:
- "<file path or description clue>"
qa/manual-cases/reports/) and evidence/screenshot dir
(qa/manual-cases/evidence/<case_id>/) when a device is onlineblocked reason and what info is still neededRunning is automatic once the YAML is ready and a device is online. The detect →
run → degrade flow, the one-time Maestro MCP registration, MCP-driven selector
calibration, and failure triage all live in references/run-and-mcp.md.
maestro list-devices # detect first
# run if a device is online — always pass --format (default is NOOP = no report):
maestro test qa/manual-cases/maestro-flows/<case_id>.yaml \
--format HTML-DETAILED --output qa/manual-cases/reports/<case_id>.html \
--test-output-dir qa/manual-cases/evidence/<case_id> # screenshots/artifacts → qa dir
maestro start-device # suggest this when none online
On failure: read logs/screenshots, classify the cause (App/Web bug vs selector vs timing vs test data vs environment), and only edit the YAML when the evidence is clear. Never strip core assertions to force a pass.
references/workflow.md — input modes A (git diff) / B (natural language), what to read.references/decision-rules.md — what suits Maestro vs what doesn't.references/manual-case-template.md — the manual test case format.references/maestro-yaml-rules.md — Maestro YAML authoring rules.references/run-and-mcp.md — MCP setup, device detection, auto-run, failure triage.npx claudepluginhub ujffdi/maestro-testgen --plugin maestro-testgenAutomates mobile app testing on iOS and Android using Maestro MCP: launches apps, interacts with UI elements, captures screenshots, runs flows, collects evidence. Use to verify implementations before completion.
Analyzes git diffs to scope UI changes, generates targeted test plans for affected pages, and executes AI browser tests via agent-browser with pass/fail reporting. Use for PR verification, UI regression, and validating code changes.
Reads a git diff and generates a prioritized browser-QA plan of user-facing workflows affected by the change, optionally recording them as a session with a report.