By thalesmms
Claude Code Skill for mobile automation (Android/iOS) using Maestro. Writes YAML flows and executes them on connected devices/emulators.
Mobile automation skill for Claude Code using the Maestro CLI framework. Created by ThalesMMS. Supports Android and iOS automation with intelligent error handling, templates, and best practices.
The skill should already be installed in ~/.claude/skills/maestro-skill/.
cd ~/.claude/skills/maestro-skill
npm run setup
npm run check-env
This will show:
Simply ask Claude to use the maestro-skill:
"Use maestro-skill to test the calculator app"
"Automate login flow with maestro-skill"
"Check if the settings screen is accessible"
npm run check-env - Check Maestro installation and devicesnpm run check-app - Check if specific app is installedappId: com.example.app
---
- launchApp
- waitForAnimationToEnd
- takeScreenshot: /tmp/app-launched
appId: com.example.app
---
- launchApp
- waitForAnimationToEnd
- assertVisible: "Login"
- tapOn: "Username"
- inputText: "[email protected]"
- tapOn: "Password"
- inputText: "password123"
- tapOn: "Login"
- assertVisible: "Welcome"
- takeScreenshot: /tmp/login-success
appId: com.example.app
---
- launchApp
- waitForAnimationToEnd
- scrollUntilVisible:
element:
text: "Settings"
direction: DOWN
- tapOn: "Settings"
- takeScreenshot: /tmp/settings-found
Important: launchApp completes when the app process starts, not when UI is ready. Always add waits:
# Option 1: Generic wait
- launchApp
- waitForAnimationToEnd
- takeScreenshot: /tmp/result
# Option 2: Wait for specific element (recommended)
- launchApp
- assertVisible: "Main Screen"
- takeScreenshot: /tmp/result
The skill provides intelligent error recovery:
maestro-skill/
├── lib/
│ ├── helpers.js # Environment checking and app detection
│ └── templates.js # Common flow templates
├── examples/
│ └── basic-flows.md # Example flows and patterns
├── run.js # Main executor with error handling
├── SKILL.md # Skill documentation
├── API_REFERENCE.md # Maestro command reference
└── package.json # NPM configuration
const templates = require('./lib/templates');
// Create a login flow
const loginFlow = templates.loginFlow(
'com.example.app',
'[email protected]',
'password123',
'Dashboard'
);
const { checkAppInstalled } = require('./lib/helpers');
// Check if app is installed
const isInstalled = await checkAppInstalled('ios', 'com.example.app');
Maestro not found
npm run setup
No devices detected
# iOS
xcrun simctl boot "iPhone 15"
# Android
emulator @your_emulator_name
App not installed
# iOS
xcrun simctl install booted /path/to/app.ipa
# Android
adb install /path/to/app.apk
Element not found
maestro hierarchy to inspect UIwaitForAnimationToEnd before interactionsscrollUntilVisible for off-screen elementsFor detailed debugging, add more screenshots:
- launchApp
- takeScreenshot: /tmp/1-after-launch
- waitForAnimationToEnd
- takeScreenshot: /tmp/2-after-wait
- tapOn: "Button"
- takeScreenshot: /tmp/3-after-tap
Created by ThalesMMS. Feel free to submit issues and enhancement requests!
MIT License - see LICENSE file for details.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
npx claudepluginhub thalesmms/maestro-skill --plugin maestro-skillMobile app test automation with Appium, Detox, XCUITest - test iOS and Android apps
Mobile device automation for Android and iOS - control devices with natural language
Connect to Kobiton mobile testing platform - manage devices, run automation suites, and view test results
Mobile device automation CLI for Android, iOS, Aurora OS, and Desktop platforms
Control Android and iOS devices, emulators, and simulators through MobAI HTTP API
AI-driven mobile testing with Appium: single app, cross-platform parity, migration comparison