Agent skill

Mobile Automation with agent-device

by nuclearpasta in nuclearpasta/react-native-drax

Drives iOS and Android devices and simulators from the command line: open apps, snapshot the UI tree, tap, type, scroll, take screenshots and read UI info.

MITAuto-check passedMobile

Install Mobile Automation with agent-device

skills CLI
$ npx skills add nuclearpasta/react-native-drax --skill agent-device -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install nuclearpasta/react-native-drax agent-device --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/nuclearpasta/react-native-drax.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/agent-device .claude/skills/agent-device && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
agent-device
GitHub stars
714
Token cost
~1.4k tokens
SKILL.md length
282 words
Files
6 (incl. references)
Skills in repo
1
Repo updated
First seen
Licence
MIT

At a glance

Drives iOS and Android devices and simulators from the command line: open apps, snapshot the UI tree, tap, type, scroll, take screenshots and read UI info.

  • Works in 5 steps: Open app or just boot device: open [app] → Snapshot: snapshot to get full XCTest… → Interact using refs (click @ref, fill… → …
  • Driving an iOS or Android app from an agent
  • SKILL.md covers Quick start, Core workflow, Commands and Best practices, plus 1 more section
  • Calls npx

What it does

The agent-device CLI opens an app or boots a device or simulator, takes a snapshot of the accessibility tree, and then interacts with elements by reference, using commands such as click @ref and fill @ref with some text. The core loop is to open, snapshot, interact, snapshot again after navigation or UI changes, and close the session. If the tool is missing, npx -y agent-device runs it.

Snapshots default to XCTest, which is fast and complete and needs no permissions, with an AX fallback when something breaks, and interactive-only and compact snapshots are available. A semantic find command can click or fill by visible text or label, and get commands return text and attributes or save a screenshot. Simulator settings helpers toggle wifi and airplane mode, though on iOS they change status bar indicators rather than the real network state. Trace capture, app state and app listing commands exist, and reference files cover the coordinate system, permissions, session management, snapshot refs and video recording.

When your agent uses it

  • Driving an iOS or Android app from an agent
  • Extracting UI information from a simulator screen
  • Tapping, typing, scrolling or pinching in a mobile app
  • Capturing screenshots or videos of a mobile session

Example prompts

  • “Open Settings on the iOS simulator and take an interactive snapshot.”
  • “Tap the Sign In button and fill the email field in the running app.”
  • “Take a screenshot of the current screen and save it as out.png.”

Requirements

  • An iOS simulator or device, or an Android device or emulator
  • Node.js with npx, to run agent-device

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Open app or just boot device: open [app]
  2. Snapshot: snapshot to get full XCTest accessibility tree snapshot
  3. Interact using refs (click @ref, fill @ref "text")
  4. Re-snapshot after navigation or UI changes
  5. Close session when done

What it can do on your machine

Read from SKILL.md and the folder at commit 52ff42e. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npx

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npx, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Mobile Automation with agent-device loads about 1.4k tokens when it runs, and up to ~2.1k if it reads all its reference files. Until then it costs about 59 tokens; SKILL.md has 282 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~59
When it runs · the whole SKILL.md, loaded when a task matches
~1.4k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~2.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from nuclearpasta/react-native-drax at commit 52ff42e, republished under its MIT licence (© nuclearpasta). 282 words, ~1,419 tokens.

Download SKILL.mdSave it as .claude/skills/agent-device/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.
name
agent-device
description
Automates mobile and simulator interactions for iOS and Android devices. Use when navigating apps, taking snapshots/screenshots, tapping, typing, scrolling, pinching, or extracting UI info on mobile devices or simulators.

Mobile Automation with agent-device

Quick start

bash
agent-device open Settings --platform ios
agent-device snapshot -i
agent-device click @e3
agent-device wait text "Camera"
agent-device alert wait 10000
agent-device fill @e5 "test"
agent-device close

If not installed, run:

bash
npx -y agent-device

Core workflow

  1. Open app or just boot device: open [app]
  2. Snapshot: snapshot to get full XCTest accessibility tree snapshot
  3. Interact using refs (click @ref, fill @ref "text")
  4. Re-snapshot after navigation or UI changes
  5. Close session when done

Commands

Navigation
bash
agent-device open [app]           # Boot device/simulator; optionally launch app
agent-device open [app] --activity com.example/.MainActivity # Android: open specific activity
agent-device close [app]          # Close app or just end session
agent-device session list         # List active sessions
Snapshot (page analysis)
bash
agent-device snapshot                  # Full XCTest accessibility tree snapshot
agent-device snapshot -i               # Interactive elements only (recommended)
agent-device snapshot -c               # Compact output
agent-device snapshot -d 3             # Limit depth
agent-device snapshot -s "Camera"      # Scope to label/identifier
agent-device snapshot --raw            # Raw node output
agent-device snapshot --backend xctest # default: XCTest snapshot (fast, complete, no permissions)
agent-device snapshot --backend ax     # macOS Accessibility tree (fast, needs permissions, less fidelity, optional)

XCTest is the default: fast and complete and does not require permissions. Use it in most cases and only fall back to AX when something breaks.

Find (semantic)
bash
agent-device find "Sign In" click
agent-device find text "Sign In" click
agent-device find label "Email" fill "user@example.com"
agent-device find value "Search" type "query"
agent-device find role button click
agent-device find id "com.example:id/login" click
agent-device find "Settings" wait 10000
agent-device find "Settings" exists
Settings helpers (simulators)
bash
agent-device settings wifi on
agent-device settings wifi off
agent-device settings airplane on
agent-device settings airplane off
agent-device settings location on
agent-device settings location off

Note: iOS wifi/airplane toggles status bar indicators, not actual network state. Airplane off clears status bar overrides.

App state
bash
agent-device appstate
agent-device apps --metadata --platform ios
agent-device apps --metadata --platform android
Interactions (use @refs from snapshot)
bash
agent-device click @e1
agent-device focus @e2
agent-device fill @e2 "text"           # Clear then type (Android: verifies value and retries once on mismatch)
agent-device type "text"               # Type into focused field without clearing
agent-device press 300 500             # Tap by coordinates
agent-device long-press 300 500 800    # Long press (where supported)
agent-device scroll down 0.5
agent-device pinch 2.0              # Zoom in 2x (iOS simulator)
agent-device pinch 0.5 200 400     # Zoom out at coordinates (iOS simulator)
agent-device back
agent-device home
agent-device app-switcher
agent-device wait 1000
agent-device wait text "Settings"
agent-device alert get
Get information
bash
agent-device get text @e1
agent-device get attrs @e1
agent-device screenshot out.png
Trace logs (AX/XCTest)
bash
agent-device trace start               # Start trace capture
agent-device trace start ./trace.log   # Start trace capture to path
agent-device trace stop                # Stop trace capture
agent-device trace stop ./trace.log    # Stop and move trace log
Devices and apps
bash
agent-device devices
agent-device apps --platform ios
agent-device apps --platform android          # default: launchable only
agent-device apps --platform android --all
agent-device apps --platform android --user-installed

Best practices

  • Pinch (pinch <scale> [x y]) is supported on iOS simulators only; scale > 1 zooms in, < 1 zooms out.
  • Always snapshot right before interactions; refs invalidate on UI changes.
  • Prefer snapshot -i to reduce output size.
  • On iOS, xctest is the default and does not require Accessibility permission.
  • If XCTest returns 0 nodes (foreground app changed), agent-device falls back to AX when available.
  • open <app> can be used within an existing session to switch apps and update the session bundle id.
  • If AX returns the Simulator window or empty tree, restart Simulator or use --backend xctest.
  • Use --session <name> for parallel sessions; avoid device contention.
  • Use --activity <component> on Android to launch a specific activity (e.g. TV apps with LEANBACK).
  • Use fill when you want clear-then-type semantics.
  • Use type when you want to append/enter text without clearing.
  • On Android, prefer fill for important fields; it verifies entered text and retries once when IME reorders characters.

References

© nuclearpasta, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 5 other files (references) in .agents/skills/agent-device of nuclearpasta/react-native-drax.

  • SKILL.md
  • references/coordinate-system.md
  • references/permissions.md
  • references/session-management.md
  • references/snapshot-refs.md
  • references/video-recording.md

Open the folder on GitHubat commit 52ff42e

Compare with similar skills

Mobile Automation with agent-device next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Mobile Automation with agent-device compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Mobile Automation with agent-device this skillnuclearpasta/react-native-drax714—~1.4kAutomated safety check: PassMIT
UI Testingchampionswimmer/TwoFac129—~215Automated safety check: PassNone
Mobilerun Docs Referencedroidrun/mobilerun9.6k—~943Automated safety check: PassMIT
Appiumblokadaorg/blokada3.3k—~3.5kAutomated safety check: PassMPL-2.0
Phoneagentrounak/PhoneAgent798—~2.2kAutomated safety check: PassMIT
Simvynpranshuchittora/simvyn437—~938Automated safety check: PassMIT

Similar skills

  • UI Testing

    championswimmer/TwoFac

    How to run, write, and debug local UI tests for Android, iOS, and browser builds.

    129 GitHub stars~215 tokensUpdated 4 mo ago
    MobileAuto-check passed
  • Mobilerun Docs Reference

    droidrun/mobilerun

    Answers questions about Mobilerun, the LLM-agent framework for automating Android and iOS devices, by pointing the agent to the right page of its v5 documentation.

    9.6k GitHub stars~943 tokensUpdated 2 days ago
    MobileAuto-check passed
  • Appium

    blokadaorg/blokada

    A skill your agent uses for dynamic inspection and navigation of the Blokada app through the repo-local Appium machine session.

    3.3k GitHub stars~3.5k tokensUpdated today
    MobileAuto-check passed
  • Phoneagent

    rounak/PhoneAgent

    Control a connected iPhone, iOS simulator, Android emulator, or Android device from macOS through PhoneAgent's JSON-RPC bridge.

    798 GitHub stars~2.2k tokensUpdated 1 mo ago
    MobileAuto-check passed
  • Simvyn

    pranshuchittora/simvyn

    Operate iOS Simulators, Android Emulators, and connected mobile devices with Simvyn.

    437 GitHub stars~938 tokensUpdated 6 days ago
    MobileAuto-check passed
  • BrowserStack Live Testing

    handsontable/handsontable

    Opens a live BrowserStack session on a real Android, iOS or desktop browser for a local or public URL, tunneling localhost through Cloudflare when needed.

    22k GitHub stars~950 tokensUpdated today
    Testing & QAAuto-check passed

Works with

Questions about Mobile Automation with agent-device

What does Mobile Automation with agent-device do?

Drives iOS and Android devices and simulators from the command line: open apps, snapshot the UI tree, tap, type, scroll, take screenshots and read UI info. The agent-device CLI opens an app or boots a device or simulator, takes a snapshot of the accessibility tree, and then interacts with elements by reference, using commands such as click @ref and fill @ref with some text. The core loop is to open, snapshot, interact, snapshot again after navigation or UI changes, and close the session.

When should I use Mobile Automation with agent-device?

Mobile Automation with agent-device fits situations like: driving an iOS or Android app from an agent; extracting UI information from a simulator screen; tapping, typing, scrolling or pinching in a mobile app; capturing screenshots or videos of a mobile session.

How do I install Mobile Automation with agent-device in Claude Code?

Run `npx skills add nuclearpasta/react-native-drax --skill agent-device -a claude-code`. Or copy the skill folder (.agents/skills/agent-device in nuclearpasta/react-native-drax) into .claude/skills/agent-device in your project. Claude Code loads it when a task matches its description.

How do I install Mobile Automation with agent-device in Codex?

Run `npx skills add nuclearpasta/react-native-drax --skill agent-device -a codex`. Or copy the skill folder (.agents/skills/agent-device in nuclearpasta/react-native-drax) into .agents/skills/agent-device in your project. Codex loads it when a task matches its description.

Can I use Mobile Automation with agent-device in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add nuclearpasta/react-native-drax --skill agent-device -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/agent-device, .gemini/skills/agent-device, .github/skills/agent-device and .opencode/skills/agent-device in your project.

What does Mobile Automation with agent-device need to run?

Going by SKILL.md and its folder, Mobile Automation with agent-device needs the command-line tools its instructions call (npx). Our summary lists: An iOS simulator or device, or an Android device or emulator; Node.js with npx, to run agent-device.

Does Mobile Automation with agent-device access the network?

SKILL.md contains no URLs. Its commands use npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Mobile Automation with agent-device safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Mobile Automation with agent-device use?

Mobile Automation with agent-device is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Mobile Automation with agent-device use?

About 1.4k tokens (SKILL.md is roughly 5.7k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 731 tokens, read only when the agent opens those files.

What are the alternatives to Mobile Automation with agent-device?

Skills that share tags, products or a category with Mobile Automation with agent-device: UI Testing (championswimmer/TwoFac, 129 stars), Mobilerun Docs Reference (droidrun/mobilerun, 9.6k stars), Appium (blokadaorg/blokada, 3.3k stars) and Phoneagent (rounak/PhoneAgent, 798 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Mobile Automation with agent-device?

nuclearpasta (a GitHub organization) maintains it in nuclearpasta/react-native-drax, which has 714 GitHub stars. The repository was last updated on October 3, 2026.

Source: nuclearpasta/react-native-drax on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.