Skip to content
Back to skills

003 Name Skill 8f67610b

ASecurity

Autonomous mobile app debugging using Maestro MCP for E2E tests. Mobile equivalent of /appfix.

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added May 31, 2026
testinggobashreacttestingdebugginggit

Works with

  • mcp

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned May 31, 2026

npx -y skills add tools-only/X-Skills --skill 003-name-skill_8f67610b --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 003 Name Skill 8f67610b?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for 003 Name Skill 8f67610b
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tools-only-003-name-skill-8f67610b/badge)](https://www.skillsdirectory.com/skills/tools-only-003-name-skill-8f67610b)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: mobileappfix
description: Autonomous mobile app debugging using Maestro MCP for E2E tests. Mobile equivalent of /appfix.
---

# Autonomous Mobile App Debugging (/mobileappfix)

> **Recommended**: Use `/repair` instead - it auto-detects web vs mobile and routes appropriately.
> `/mobileappfix` is the internal mobile debugging skill. Use it directly only when you specifically
> want mobile debugging without platform detection.

Autonomous debugging for React Native/Expo apps. Iterates until Maestro E2E tests pass.

> **Note**: Both `/mobileappfix` and `/appfix` share the same `autonomous-state.json` with `"mode": "repair"`.
> The `/repair` skill handles the routing automatically.

## Triggers

- `/mobileappfix`
- "fix the mobile app"
- "Maestro tests failing"
- "app crashes on startup"

## CRITICAL: Maestro MCP Required

**YOU MUST USE MAESTRO MCP FOR ALL TESTING AND VALIDATION.**

This skill requires a Maestro MCP server for test execution. The MCP provides:
- Full user journey orchestration
- Screenshot capture and analysis
- Element inspection and interaction
- Test result aggregation

**DO NOT use bash `maestro test` commands.** Always use Maestro MCP tools.

### Pre-Flight: Verify Maestro MCP Available

Before any testing, verify Maestro MCP tools are available using `ToolSearch(query: "maestro")`.

**Actual MCP tool names** (note the `oli4` suffix from the forked Maestro):
```
mcp__maestro-oli4-mcp__list_devices          - List simulators/emulators
mcp__maestro-oli4-mcp__run_flow              - Execute inline Maestro commands
mcp__maestro-oli4-mcp__run_flow_files        - Execute Maestro flow YAML files
mcp__maestro-oli4-mcp__inspect_view_hierarchy - Get element tree
mcp__maestro-oli4-mcp__take_screenshot       - Capture screenshots
mcp__maestro-oli4-mcp__tap_on                - Tap elements
mcp__maestro-oli4-mcp__input_text            - Enter text
```

**If Maestro MCP is not available, STOP and inform the user:**
> "Maestro MCP server is required. See setup guide: ~/.claude/skills/mobileappfix/references/maestro-mcp-setup.md"

**If Android and getting UNAVAILABLE errors:**
The Maestro driver APKs need to be installed manually. See [maestro-mcp-setup.md](references/maestro-mcp-setup.md) for the required commands.

<reference path="references/maestro-mcp-setup.md" />

## CRITICAL: Autonomous Execution

**THIS WORKFLOW IS 100% AUTONOMOUS. YOU MUST:**

1. **NEVER ask for confirmation** - No "Should I rebuild?", "Should I commit?"
2. **Auto-commit and push** - When fixes are applied, commit immediately
3. **Auto-rebuild** - Trigger builds without asking
4. **Complete verification** - Run Maestro tests via MCP on simulator
5. **Fill out checkpoint honestly** - The stop hook checks your booleans

**Only stop when the checkpoint can pass.**

## Workflow

```
┌─────────────────────────────────────────────────────────────────────┐
│  PHASE 0: PRE-FLIGHT                                                │
│     └─► ToolSearch(query: "maestro") to find MCP tools              │
│     └─► mcp__maestro-oli4-mcp__list_devices() to verify connection  │
│     └─► If Android + UNAVAILABLE: Run setup script (see setup.md)   │
│     └─► Read mobile-topology.md for project config                  │
├─────────────────────────────────────────────────────────────────────┤
│  PHASE 1: PLAN (First Iteration Only)                               │
│     └─► EnterPlanMode                                               │
│     └─► Explore: app structure, .maestro/ tests, recent commits     │
│     └─► ExitPlanMode                                                │
├─────────────────────────────────────────────────────────────────────┤
│  PHASE 2: FIX-VERIFY LOOP (via Maestro MCP)                         │
│     └─► Run FULL user journeys via MCP (not single tests)           │
│     └─► Minimum: J2 + J3 journeys (login + navigation)              │
│     └─► If pass: Update checkpoint, stop                            │
│     └─► If fail: Diagnose via MCP hierarchy, fix code, re-run       │
├─────────────────────────────────────────────────────────────────────┤
│  PHASE 3: COMPLETE                                                  │
│     └─► Commit: git commit -m "mobileappfix: [description]"         │
│     └─► Create checkpoint with honest booleans                      │
│     └─► Stop (hook validates checkpoint)                            │
└─────────────────────────────────────────────────────────────────────┘
```

## Required: Full User Journey Validation

**Single test files are NOT sufficient.** You MUST validate complete user journeys.

### Minimum Journey Set (MANDATORY)

| Journey | Flow File | Validates |
|---------|-----------|-----------|
| J2 | `J2-returning-user-login.yaml` | Login → Main app access |
| J3 | `J3-main-app-navigation.yaml` | All tabs and core screens |

### Full Journey Set (Recommended)

| Journey | Flow File | Validates |
|---------|-----------|-----------|
| J1 | `J1-new-user-onboarding.yaml` | Registration → Onboarding |
| J2 | `J2-returning-user-login.yaml` | Login flow |
| J3 | `J3-main-app-navigation.yaml` | Core navigation |
| J4 | `J4-exercise-completion.yaml` | Primary feature flow |
| J5 | `J5-profile-settings.yaml` | Profile and settings |

### Running Journeys via MCP

```
# Use Maestro MCP tools, NOT bash commands:
mcp__maestro-oli4-mcp__run_flow_files(
  device_id: "emulator-5554",  # or iOS simulator ID
  flow_files: "/absolute/path/to/.maestro/journeys/J2-returning-user-login.yaml"
)

mcp__maestro-oli4-mcp__run_flow_files(
  device_id: "emulator-5554",
  flow_files: "/absolute/path/to/.maestro/journeys/J3-main-app-navigation.yaml"
)

# IMPORTANT: Use absolute paths for flow_files

# DO NOT USE:
# maestro test .maestro/journeys/J2-*.yaml  ❌ (bash command)
```

## MCP vs Bash Commands

**ALWAYS prefer MCP tools over bash commands:**

| Action | Maestro MCP (Required) | Bash (Fallback Only) |
|--------|------------------------|----------------------|
| List devices | `mcp__maestro-oli4-mcp__list_devices` | `maestro --device` ❌ |
| Run test | `mcp__maestro-oli4-mcp__run_flow_files` | `maestro test` ❌ |
| Run commands | `mcp__maestro-oli4-mcp__run_flow` | `maestro` ❌ |
| Inspect UI | `mcp__maestro-oli4-mcp__inspect_view_hierarchy` | `maestro hierarchy` ❌ |
| Take screenshot | `mcp__maestro-oli4-mcp__take_screenshot` | N/A |
| Tap element | `mcp__maestro-oli4-mcp__tap_on` | N/A |
| Enter text | `mcp__maestro-oli4-mcp__input_text` | N/A |

### Simulator Commands (Bash OK)

```bash
# These bash commands are acceptable (not Maestro):
xcrun simctl boot "iPhone 15 Pro"
open -a Simulator
npm start --reset-cache
npm run ios
npm run prebuild:clean && cd ios && pod install && cd ..
```

## Completion Checkpoint

Before stopping, create `.claude/completion-checkpoint.json`:

```json
{
  "self_report": {
    "is_job_complete": true,
    "code_changes_made": true,
    "linters_pass": true,
    "category": "bugfix"
  },
  "reflection": {
    "what_was_done": "Fixed auth guard timing, login flow works",
    "what_remains": "none",
    "key_insight": "Reusable lesson for future sessions (>50 chars)",
    "search_terms": ["auth", "maestro", "mobile"]
  },
  "evidence": {
    "mcp_tools_used": [
      "mcp__maestro-oli4-mcp__run_flow_files",
      "mcp__maestro-oli4-mcp__take_screenshot",
      "mcp__maestro-oli4-mcp__inspect_view_hierarchy"
    ],
    "maestro_flows_tested": [
      "J2-returning-user-login.yaml",
      "J3-main-app-navigation.yaml"
    ],
    "platform": "ios",
    "device": "iPhone 15 Pro Simulator"
  }
}
```

Extra fields (evidence, mcp_tools_used, etc.) are allowed — the stop-validator ignores unknown keys. If validation fails, the blocking message shows exact requirements.

## Maestro MCP Artifacts

The Maestro MCP automatically saves test evidence to `.claude/maestro-smoke/`.

**MCP tools handle artifact creation** - no manual bash commands needed:

```
# Use the run_flow tool discovered via ToolSearch(query: "maestro")
run_flow(flow: "...", output_dir: ".claude/maestro-smoke/")
```

<reference path="references/maestro-mcp-contract.md" />
<reference path="references/maestro-smoke-contract.md" />

## Environment Variables

| Variable | Required | Purpose |
|----------|----------|---------|
| `TEST_USER_EMAIL` | Yes | E2E test user |
| `MAESTRO_TEST_PASSWORD` | Yes | E2E test password |
| `ANDROID_HOME` | For Android | SDK path |

## Exit Conditions

| Condition | Result |
|-----------|--------|
| All booleans true, `what_remains: "none"` | SUCCESS - stop allowed |
| Any required boolean false | BLOCKED - continue working |
| Missing credentials | ASK USER (once) |

## Skill Fluidity

You may use techniques from any skill for sub-problems without switching modes. Your autonomous state and checkpoint remain governed by /mobileappfix.

## Reference Files

| Reference | Purpose |
|-----------|---------|
| [maestro-mcp-setup.md](references/maestro-mcp-setup.md) | **SETUP GUIDE - Start here for Maestro MCP setup** |
| [maestro-mcp-contract.md](references/maestro-mcp-contract.md) | Maestro MCP requirements, tool names, and usage |
| [mobile-topology.md](references/mobile-topology.md) | Project config, devices, test commands |
| [checkpoint-schema.md](references/checkpoint-schema.md) | Full checkpoint field reference |
| [maestro-smoke-contract.md](references/maestro-smoke-contract.md) | Artifact schema |
| [debugging-rubric.md](references/debugging-rubric.md) | Mobile-specific troubleshooting |
| [validation-tests-contract.md](references/validation-tests-contract.md) | Fix-specific test requirements |

Files in this skill

  • README.md1010 B
  • skill.md10.2 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.