Maestro mobile automation skill for Claude Code
npx claudepluginhub thalesmms/maestro-skillClaude 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.
Claude Code marketplace entries for the plugin-safe Antigravity Awesome Skills library and its compatible editorial bundles.
Production-ready workflow orchestration with 84 marketplace plugins, 192 local specialized agents, and 156 local skills - optimized for granular installation and minimal token usage
Directory of popular Claude Code extensions including development tools, productivity plugins, and MCP integrations