maestro-e2e — Claude Code skill: E2E UI tests with Maestro
A skill that helps your agent write and debug Maestro E2E tests: login, signup, navigation, permission dialogs. Covers iOS, Android, Flutter, React Native and web.
npx skills add raphaelbarbosaqwerty/maestro-dev-skills --skill maestro-e2e -a claude-codeWhat maestro-e2e does
The skill hands your agent a Maestro reference: YAML test structure, appId, env variables, over 40 commands, selectors by id and text, assertions, gestures. Separate rule files cover platforms — Android with ADB and emulators, iOS with auto-dismissed dialogs and simulators, Flutter through Semantics, React Native through testID and accessibilityLabel, web through Chromium.
Advanced rules cover parameters and ${} syntax, conditional execution, reusable subflows via runFlow, GraalJS scripts, waiting and retry patterns for flaky tests. There is also debugging with Maestro Studio, screenshots and video, and CI integration for GitHub Actions, GitLab CI and Maestro Cloud.
Rules load on demand: native permission dialogs pull in rules/permissions.md, Flutter work pulls in rules/platforms/flutter.md. Only what you need lands in context. One thing to check first — Maestro itself has to be installed on your machine. The skill explains how to do that on macOS, Linux and Windows, but it does not install the tool for you.
What it helps with
- write an E2E test for app login
- handle camera and location permission dialogs
- target an element by id or text in the UI tree
- fix a test that fails on an animation
- extract repeated steps into a reusable subflow
Example prompts for the agent
- Write a Maestro E2E test for login and the transition to the home screen
- Why does assertVisible fail after the tap — help me debug it
- Create a subflow for phone number entry and reuse it in two tests
How to install maestro-e2e
1Skills CLI (Vercel)
npx skills add raphaelbarbosaqwerty/maestro-dev-skills --skill maestro-e2e -a claude-code2Manually: put the files in place
~/.claude/skills/maestro-e2e/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/maestro-e2e/
1Skills CLI (Vercel)
npx skills add raphaelbarbosaqwerty/maestro-dev-skills --skill maestro-e2e -a codex2Manually: put the files in place
.agents/skills/maestro-e2e/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add raphaelbarbosaqwerty/maestro-dev-skills --skill maestro-e2e -a cursor2Manually: put the files in place
.cursor/skills/maestro-e2e/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install raphaelbarbosaqwerty/maestro-dev-skills maestro-e2e2Manually: put the files in place
.github/skills/maestro-e2e/SKILL.md1Skills CLI (Vercel)
npx skills add raphaelbarbosaqwerty/maestro-dev-skills --skill maestro-e2e -a gemini-cli2Platform CLI
gemini skills install https://github.com/raphaelbarbosaqwerty/maestro-dev-skillsManually: put the files in place
.devin/skills/maestro-e2e/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add raphaelbarbosaqwerty/maestro-dev-skills --skill maestro-e2e -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about maestro-e2e
How do I install maestro-e2e in Claude?
Run npx skills add raphaelbarbosaqwerty/maestro-dev-skills --skill maestro-e2e -a claude-code. The skill file lands at ~/.claude/skills/maestro-e2e/SKILL.md.
What does maestro-e2e do?
It gives the agent Maestro rules and examples for E2E testing: YAML structure, selectors, assertions, gestures, permission handling, and platform specifics for iOS, Android, Flutter, React Native and web.
Do I need to install Maestro separately?
Yes. The skill includes installation instructions for Maestro on macOS, Linux and Windows, but it does not install the tool itself.
Source text
SKILL.md · MIT
---
name: maestro-e2e
description: E2E UI testing with Maestro for iOS, Android, Flutter, React Native, and Web
metadata:
tags: maestro, e2e, testing, ui, automation, flutter, react-native, ios, android, web
---
## When to use
Use this skill whenever you are:
- Creating E2E, UI, or integration tests
- Testing login, registration, or navigation flows
- Handling permission dialogs (camera, location, notifications)
- Debugging test failures or exploring UI hierarchy
- Working with Maestro test files (.yaml)
## Captions
When dealing with native permission dialogs, load the [./rules/permissions.md](./rules/permissions.md) file for platform-specific information.
When working with Flutter apps, load the [./rules/platforms/flutter.md](./rules/platforms/flutter.md) file for Semantics patterns.
## How to use
Read individual rule files for detailed explanations and code examples:
### Core
- [rules/installation.md](rules/installation.md) - Installing Maestro on macOS, Linux, and Windows
- [rules/test-structure.md](rules/test-structure.md) - YAML test structure, appId, env variables, and flow definition
- [rules/commands.md](rules/commands.md) - Complete reference of 40+ Maestro commands
- [rules/selectors.md](rules/selectors.md) - Element targeting with id, text, index, and matchers
- [rules/assertions.md](rules/assertions.md) - assertVisible, assertNotVisible, assertTrue, and AI assertions
- [rules/interactions.md](rules/interactions.md) - tapOn, inputText, scroll, swipe, and gesture commands
- [rules/permissions.md](rules/permissions.md) - iOS vs Android permission configuration and dialog handling
### Platforms
- [rules/platforms/android.md](rules/platforms/android.md) - Android-specific: ADB, permission dialogs, emulators
- [rules/platforms/ios.md](rules/platforms/ios.md) - iOS-specific: auto-dismiss dialogs, simulators, limitations
- [rules/platforms/flutter.md](rules/platforms/flutter.md) - Flutter integration using Semantics and identifier
- [rules/platforms/react-native.md](rules/platforms/react-native.md) - React Native with testID and accessibilityLabel
- [rules/platforms/web.md](rules/platforms/web.md) - Desktop browser testing with Chromium
### Advanced
- [rules/advanced/parameters.md](rules/advanced/parameters.md) - Environment variables, external params, ${} syntax
- [rules/advanced/conditions.md](rules/advanced/conditions.md) - Conditional execution with when: visible, platform
- [rules/advanced/nested-flows.md](rules/advanced/nested-flows.md) - Reusable subflows with runFlow command
- [rules/advanced/javascript.md](rules/advanced/javascript.md) - evalScript, runScript, and GraalJS support
- [rules/advanced/waiting.md](rules/advanced/waiting.md) - extendedWaitUntil, waitForAnimationToEnd
- [rules/advanced/repeat-retry.md](rules/advanced/repeat-retry.md) - Repeat and retry patterns for flaky tests
### Additional
- [rules/debugging.md](rules/debugging.md) - Maestro Studio, hierarchy inspection, troubleshooting
- [rules/screenshots.md](rules/screenshots.md) - Screenshots, video recording, and visual evidence
- [rules/ci-integration.md](rules/ci-integration.md) - GitHub Actions, GitLab CI, Maestro Cloud
- [rules/best-practices.md](rules/best-practices.md) - Semantic identifiers, atomic tests, project structure
© raphaelbarbosaqwerty · MIT · raphaelbarbosaqwerty/maestro-dev-skills