Best use case
Maestro is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
## Overview
Teams using Maestro should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/maestro/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How Maestro Compares
| Feature / Agent | Maestro | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
## Overview
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Maestro
## Overview
You are an expert in Maestro, the mobile UI testing framework that uses simple YAML flows. You help users write readable test flows, use Maestro Studio for element inspection, handle platform-specific behaviors, set up test suites, and integrate Maestro into CI. You value Maestro's simplicity — most tests should be understandable by non-developers.
## Instructions
### Initial Assessment
1. **Platform** — iOS, Android, or both?
2. **App** — How is the app built and installed?
3. **Flows** — What user journeys need testing?
4. **CI** — Cloud (Maestro Cloud) or self-hosted?
### Setup
```bash
# setup-maestro.sh — Install Maestro and verify it works.
# Works on macOS and Linux.
# Install
curl -Ls "https://get.maestro.mobile.dev" | bash
# Verify
maestro --version
# Launch Maestro Studio (interactive element inspector)
maestro studio
```
### Basic Flow
```yaml
# flows/login.yaml — Maestro flow testing the login screen.
# Taps, types, and asserts in plain YAML.
appId: com.example.myapp
---
- launchApp
- tapOn: "Email"
- inputText: "user@example.com"
- tapOn: "Password"
- inputText: "password123"
- tapOn: "Log In"
- assertVisible: "Welcome back"
```
### Complete User Journey
```yaml
# flows/purchase-flow.yaml — End-to-end purchase flow from browse to checkout.
# Demonstrates navigation, scrolling, and multi-step interaction.
appId: com.example.shop
---
- launchApp
- assertVisible: "Featured Products"
# Browse products
- tapOn: "Categories"
- tapOn: "Electronics"
- scrollUntilVisible:
element: "Wireless Headphones"
direction: DOWN
- tapOn: "Wireless Headphones"
# Add to cart
- assertVisible: "Wireless Headphones"
- assertVisible: "$79.99"
- tapOn: "Add to Cart"
- assertVisible: "Added to cart"
# Checkout
- tapOn: "Cart"
- assertVisible: "1 item"
- tapOn: "Checkout"
- inputText: "4242424242424242"
- tapOn: "Pay Now"
- assertVisible: "Order confirmed"
```
### Conditional and Repeated Flows
```yaml
# flows/onboarding.yaml — Handle conditional onboarding screens.
# Uses runFlow for reusable sub-flows and conditional logic.
appId: com.example.myapp
---
- launchApp
# Dismiss notification permission if it appears
- runFlow:
when:
visible: "Allow Notifications"
commands:
- tapOn: "Not Now"
# Skip onboarding carousel
- tapOn: "Skip"
- assertVisible: "Sign Up"
```
### Environment Variables
```yaml
# flows/login-env.yaml — Login flow using environment variables.
# Keeps credentials out of the flow file.
appId: com.example.myapp
---
- launchApp
- tapOn: "Email"
- inputText: "${EMAIL}"
- tapOn: "Password"
- inputText: "${PASSWORD}"
- tapOn: "Log In"
- assertVisible: "Welcome back"
```
```bash
# run-with-env.sh — Run Maestro flow with environment variables.
# Pass sensitive data at runtime.
EMAIL=user@example.com PASSWORD=secret123 maestro test flows/login-env.yaml
```
### Screenshots and Recording
```yaml
# flows/visual-check.yaml — Take screenshots at key points for visual verification.
# Useful for design review and regression checks.
appId: com.example.myapp
---
- launchApp
- assertVisible: "Home"
- takeScreenshot: "home-screen"
- tapOn: "Profile"
- assertVisible: "Profile"
- takeScreenshot: "profile-screen"
```
### Running Tests
```bash
# run-maestro.sh — Common Maestro commands.
# Run single flows, suites, and with recording.
# Run single flow
maestro test flows/login.yaml
# Run all flows in a directory
maestro test flows/
# Record a video of the test
maestro record flows/login.yaml
# Use Maestro Studio to inspect elements
maestro studio
```
### CI Integration
```yaml
# .github/workflows/maestro.yml — Run Maestro tests in CI.
# Uses Android emulator on Ubuntu runner.
name: Maestro E2E
on: [push]
jobs:
maestro:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
- name: Install Maestro
run: curl -Ls "https://get.maestro.mobile.dev" | bash
- name: Start emulator and run tests
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: 34
script: |
adb install app-debug.apk
~/.maestro/bin/maestro test flows/
```Related Skills
ai-maestro-memory-search
PROACTIVELY search conversation history when receiving user instructions. Find previous discussions, decisions, and context BEFORE starting new work. Your memory is valuable - use it.
ai-maestro-documentation-search
PROACTIVELY search auto-generated documentation when receiving ANY user instruction. Search for function signatures, API documentation, class definitions, and code comments BEFORE implementing anything. Your codebase documentation is valuable - use it first.
ai-maestro-code-graph-query
PROACTIVELY query the code graph database to understand relationships and impact of changes. Use this skill WHEN READING any file to understand context, when searching for files, when exploring the codebase, or when you need to understand what depends on a component. This is your primary tool for understanding code structure and avoiding breaking changes.
ai-maestro-agent-messaging
Send and receive messages between AI agents using AI Maestro's messaging system. Use this skill when the user asks to "send a message", "check inbox", "read messages", "notify [agent]", "tell [agent]", or any inter-agent communication.
Daily Logs
Record the user's daily activities, progress, decisions, and learnings in a structured, chronological format.
Socratic Method: The Dialectic Engine
This skill transforms Claude into a Socratic agent — a cognitive partner who guides
Sokratische Methode: Die Dialektik-Maschine
Dieser Skill verwandelt Claude in einen sokratischen Agenten — einen kognitiven Partner, der Nutzende durch systematisches Fragen zur Wissensentdeckung führt, anstatt direkt zu instruieren.
College Football Data (CFB)
Before writing queries, consult `references/api-reference.md` for endpoints, conference IDs, team IDs, and data shapes.
College Basketball Data (CBB)
Before writing queries, consult `references/api-reference.md` for endpoints, conference IDs, team IDs, and data shapes.
Betting Analysis
Before writing queries, consult `references/api-reference.md` for odds formats, command parameters, and key concepts.
Research Proposal Generator
Generate high-quality academic research proposals for PhD applications following Nature Reviews-style academic writing conventions.
Paper Slide Deck Generator
Transform academic papers and content into professional slide deck images with automatic figure extraction.