Agent skill

Android UI Automation

by OpenMinis in OpenMinis/MinisSkills

Automate Android apps that have no public API or web version by driving the UI layer through the Accessibility Service.

MITAuto-check passedMobile

Install Android UI Automation

skills CLI
$ npx skills add OpenMinis/MinisSkills --skill android-ui-automation -a claude-code

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

GitHub CLI
$ gh skill install OpenMinis/MinisSkills android-ui-automation --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/OpenMinis/MinisSkills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/android-ui-automation .claude/skills/android-ui-automation && 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
android-ui-automation
GitHub stars
444
Token cost
~1.6k tokens
SKILL.md length
639 words
Files
7 (incl. scripts, references)
Skills in repo
49
Repo updated
First seen
Licence
MIT

At a glance

Automate Android apps that have no public API or web version by driving the UI layer through the Accessibility Service.

  • Works in 3 steps: Minis app installed (Android). These… → Minis Accessibility Service enabled:… → The target app installed on the same…
  • Wants to control a phone-only app on Android — e.g
  • SKILL.md covers Environment & dependencies…, When to use, Core workflow and Why the verify step matters, plus 3 more sections
  • Runs Python scripts from its folder; calls python3

What it does

Android UI Automation is an agent skill from OpenMinis/MinisSkills. Automate Android apps that have no public API or web version by driving the UI layer through the Accessibility Service. Handles: deep-link launch (open an app into a specific screen), intelligent node location (find a button or text by fuzzy match, not exact text), tap-and-verify (confirm an action had its effect), and human-like swipes. Use this whenever the user wants to control a phone-only app on Android — e.g. "open Spotify and play X", "tap the like button", "swipe through my feed", "play 连名带姓", anything…

Its SKILL.md is about 1.6k tokens, which your agent loads only when the skill is triggered. The skill folder holds 10 other files, including scripts and reference files (for example `evals/evals.json`, `references/app-deep-links.md` and `scripts/find_node.py`). Compatibility notes: Android-only; requires the Minis app (Android) with its bundled android-a11y-cli / android-open CLIs and the Minis Accessibility Service enabled

It sits in Mobile, covering Android development and Accessibility. It works with Android, Spotify and WeChat. The repository describes itself as: Skills collection for Minis. The licence is MIT.

When your agent uses it

  • Wants to control a phone-only app on Android — e.g
  • The user asks why an automation didnt work (permissions
  • Hidden view trees)

Example prompts

  • “open Spotify and play X”
  • “tap the like button”
  • “swipe through my feed”
  • “/android-ui-automation”

Requirements

  • Python 3
  • Compatibility (from SKILL.md): Android-only; requires the Minis app (Android) with its bundled android-a11y-cli / android-open CLIs and the Minis Accessibility Service enabled

Workflow steps

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

  1. Minis app installed (Android). These CLIs do not exist on other hosts
  2. Minis Accessibility Service enabled: Settings → Accessibility → Minis.
  3. The target app installed on the same device.

What it can do on your machine

Read from SKILL.md and the folder at commit ae8c5db. 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

    Ships 3 files in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python3

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

  • Network

    No URLs in SKILL.md.

    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.

  • Compatibility

    Android-only; requires the Minis app (Android) with its bundled android-a11y-cli / android-open CLIs and the Minis Accessibility Service enabled

    From compatibility in the SKILL.md frontmatter.

Context cost

Android UI Automation loads about 1.6k tokens when it runs, and up to ~2.2k if it reads all its reference files. Until then it costs about 194 tokens; SKILL.md has 639 words of instructions outside code blocks.

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

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); the scripts in this folder are not scanned.

SKILL.md

The full file from OpenMinis/MinisSkills at commit ae8c5db, republished under its MIT licence (© OpenMinis). 639 words, ~1,635 tokens.

Download SKILL.mdSave it as .claude/skills/android-ui-automation/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.
name
android-ui-automation
description
Automate Android apps that have no public API or web version by driving the UI layer through the Accessibility Service. Handles: deep-link launch (open an app into a specific screen), intelligent node location (find a button or text by fuzzy match, not exact text), tap-and-verify (confirm an action had its effect), and human-like swipes. Use this whenever the user wants to control a phone-only app on Android — e.g. "open Spotify and play X", "tap the like button", "swipe through my feed", "play 连名带姓", anything involving `spotify://`, `weixin://`, or apps with no web/API surface. Also use when the user asks why an automation didn't work (permissions, missing app, hidden view trees). Android-only; requires the Minis Accessibility Service enabled.
compatibility
Android-only; requires the Minis app (Android) with its bundled android-a11y-cli / android-open CLIs and the Minis Accessibility Service enabled

Android UI Automation

Drive Android apps through their UI layer when they have no public API or web version. This is the fallback that makes "phone-only" apps automatable.

Environment & dependencies (read first)

This skill drives the user's Android phone. It relies on two CLI tools that ship with the Minis app for Android (installed at /usr/local/bin/ inside the Minis runtime):

CLIRole
android-a11y-cliAccessibility-Service bridge: ui dump, tap node, gesture swipe, wait, extract, ...
android-openLaunch any URL/scheme via the system handler (spotify://..., weixin://..., tel:, ...)

Prerequisites on the device:

  1. Minis app installed (Android). These CLIs do not exist on other hosts (macOS/Windows/other Linux) — verify with which android-a11y-cli first, and if missing, tell the user this skill only runs inside Minis on Android.
  2. Minis Accessibility Service enabled: Settings → Accessibility → Minis. Check with android-a11y-cli service ping; if it reports not running, ask the user to re-enable it before anything else.
  3. The target app installed on the same device.

These are device-side capabilities, not network APIs — no API keys, no OAuth, no server. If a step returns permission_denied from the a11y service, it means the service was revoked; recover via Settings → Accessibility.

When to use

  • The target app has no API / no web page (WeChat Moments, many CN apps).
  • Offload fine-grained clicking to reliable scripts instead of brittle commands.
  • The user asks to play/search/open/tap/swipe inside an installed Android app.

Do not use this for apps that already have a proper skill (e.g. bilibili-hub, spotify-hub) — prefer the API path when one exists.

Core workflow

Follow this order. Each step has a reason; don't skip verification.

  1. Resolve the target Confirm the app is installed. If unsure, ask the user or try the deep link and check the foreground package (see step 2).

  2. Launch via deep link — scripts/open_deep_link.py

    python3 scripts/open_deep_link.py "spotify://search/circles%20post%20malone" --pkg com.spotify.music
    • It constructs/opens the link and verifies the app reached the foreground.
    • Percent-encode query values (CJK and &/? break raw links).
    • If it returns ok:false, don't proceed — the app is missing, the scheme is unhandled, or something redirected. Surface the error.
    • ⚠️ Some apps (Spotify) land on a suggestion page, not results — tap a suggestion row first (see references/app-deep-links.md), then locate the result.
  3. Locate the node — scripts/find_node.py

    python3 scripts/find_node.py "Circles" --clickable-only --top 5
    • Uses fuzzy scoring (exact > substring > node-fragment), prefers clickable.
    • Read the nodeId and center from the top result.
  4. Tap and verify — scripts/tap_and_verify.py

    python3 scripts/tap_and_verify.py --query "Circles – Post Malone" --marker "暂停"
    • The marker is the proof it worked (e.g. after tapping play, a pause button must appear). Never report success without a marker.
    • Retries a few times with relocation in case the tree changed.
  5. Human-like swipes (when the tree is unavailable) — use gestures:

    android-a11y-cli gesture swipe X1 Y1 X2 Y2

    Vary distance/pause randomly to look natural. This is the ONLY fallback when an app (like WeChat Moments) hides its view tree.

Show full SKILL.md (192 more words)Show less

Why the verify step matters

A raw tap is fire-and-forget: the UI may be mid-animation or the node may have drifted. Verifying a success marker (pause button, title, toast) converts "I clicked something" into "I know it worked". If the marker never appears, say so honestly instead of claiming success.

Known limitations

  • Apps can hide their view tree from the Accessibility Service (WeChat Moments is a known case). When ui dump returns no app nodes, do NOT blind-tap guessed coordinates — either use swipes (scroll-only) or ask the user to tap precisely.
  • The Accessibility Service can be revoked (e.g. after a force-stop). Check android-a11y-cli service status; if not running, ask the user to re-enable it in Settings → Accessibility.
  • Deep-link support varies by app/build. Read references/app-deep-links.md for the tested set and always confirm foreground.

Examples

Play a song on Spotify (no API key, no Premium):

python3 scripts/open_deep_link.py "spotify://search/circles%20post%20malone"
python3 scripts/find_node.py "添加建议"          # suggestion page → tap to get results
python3 scripts/tap_and_verify.py --query "添加建议“circles post malone”" --marker "Circles"
python3 scripts/find_node.py "Circles – Post Malone" --clickable-only
python3 scripts/tap_and_verify.py --query "Circles – Post Malone" --marker "暂停"

Human-like feed scroll (WeChat Moments):

android-a11y-cli ui info            # confirm weixin:// foreground
android-a11y-cli gesture swipe 540 1600 540 800   # repeat with varied distance/pause

Decline gracefully when the app can't be reached: Report ok:false from open_deep_link.py rather than proceeding blind.

Output format

Always report the confirmed state, e.g.:

[Result]

  • Opened: spotify://search/... via deep link, foreground=com.spotify.music
  • Tapped: node <id> ("Circles – Post Malone")
  • Verified: playback bar shows pause button → playing

© OpenMinis, 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 6 other files (scripts, references) in android-ui-automation of OpenMinis/MinisSkills.

  • SKILL.md
  • evals/evals.json
  • references/app-deep-links.md
  • scripts/find_node.py
  • scripts/open_deep_link.py
  • scripts/tap_and_verify.py
  • tests/unit_tests.py

Open the folder on GitHubat commit ae8c5db

Compare with similar skills

Android UI Automation 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.

Android UI Automation compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Android UI Automation this skillOpenMinis/MinisSkills444—~1.6kAutomated safety check: PassMIT
Configuring Test Dependenciesskydoves/android-testing-skills333—~4.1kAutomated safety check: PassApache-2.0
Setting Up Host Vs Device Testsskydoves/android-testing-skills333—~4.8kAutomated safety check: PassApache-2.0
Android Mobile UI DesignModinMobileSTS/SlayTheAmethystModded403—~1kAutomated safety check: PassCustom licence
Accessible Mobile DeveloperFerroxLabs/wayland608—~3.6kAutomated safety check: PassApache-2.0
Compose Agenthamen/compose_skill373—~4kAutomated safety check: NotesMIT

Similar skills

  • Configuring Test Dependencies

    skydoves/android-testing-skills

    A skill your agent uses to wire the correct Gradle dependency matrix for Jetpack Compose UI tests.

    333 GitHub stars~4.1k tokensUpdated 4 mo ago
    MobileAuto-check passed
  • Setting Up Host Vs Device Tests

    skydoves/android-testing-skills

    A skill your agent uses to choose between host (Robolectric/JVM) and device (instrumentation) tests for Jetpack Compose, and to configure each correctly.

    333 GitHub stars~4.8k tokensUpdated 4 mo ago
    MobileAuto-check passed
  • Android Mobile UI Design

    ModinMobileSTS/SlayTheAmethystModded

    Designs and reviews Android screens with attention to touch ergonomics, adaptive layouts, accessibility, state handling and an implementation handoff.

    403 GitHub stars~1k tokensUpdated yesterday
    MobileAuto-check passed
  • Accessible Mobile Developer

    FerroxLabs/wayland

    Mobile accessibility development expertise covering iOS VoiceOver and Android TalkBack integration, accessibility APIs for SwiftUI and Jetpack Compose, touch target sizing, gesture alternatives…

    608 GitHub stars~3.6k tokensUpdated 3 days ago
    MobileAuto-check passed
  • Compose Agent

    hamen/compose_skill

    Helps AI coding assistants write modern Jetpack Compose: correct state, side effects, performance-aware modifiers, Navigation 3, Paging 3 in Compose, coroutines on lifecycle, animations, UI tests…

    373 GitHub stars~4k tokensUpdated 2 mo ago
    MobileAuto-check: notes
  • Android App Factory

    JasonColapietro/suede-creator-skills

    Takes a native Android app from product idea to Google Play release, covering Compose architecture, policy checks, privacy, billing, testing, signing and rollout.

    127 GitHub stars~2.6k tokensUpdated today
    MobileAuto-check passed

More from OpenMinis/MinisSkills

All 49 skills in this repo
  • Codex On Ish

    OpenMinis/MinisSkills

    Install and run OpenAI Codex CLI inside the Minis/iSH Alpine sandbox on iOS, where rustls TLS and async sockets are broken.

    444 GitHub stars~1k tokensUpdated yesterday
    Auto-check passed
  • Evidence Chain Builder

    OpenMinis/MinisSkills

    Score a claim against the evidence behind it. An agent skill from OpenMinis/MinisSkills.

    444 GitHub stars~2.4k tokensUpdated yesterday
    Auto-check passed
  • Hyperframes CLI

    OpenMinis/MinisSkills

    HyperFrames CLI and Minis rendering. An agent skill from OpenMinis/MinisSkills.

    444 GitHub stars~3.5k tokensUpdated yesterday
    Auto-check passed
  • Whenpeak

    OpenMinis/MinisSkills

    Predict when a person's brain works best from their sleep, using the WhenPeak performance-intelligence API, and turn it into concrete scheduling advice.

    444 GitHub stars~2.3k tokensUpdated yesterday
    Auto-check passed
  • Openstreetmap Marker

    OpenMinis/MinisSkills

    Generate a mobile-first, immersive, Amap(Gaode)-style custom landmark marker HTML map for travel itinerary planning, place showcasing, location sharing, etc.

    444 GitHub stars~1.9k tokensUpdated yesterday
    Auto-check passed
  • PDF Converter

    OpenMinis/MinisSkills

    Convert documents to PDF via a typst-based pipeline. An agent skill from OpenMinis/MinisSkills.

    444 GitHub stars~2.1k tokensUpdated yesterday
    Auto-check passed

Questions about Android UI Automation

What does Android UI Automation do?

Automate Android apps that have no public API or web version by driving the UI layer through the Accessibility Service. Android UI Automation is an agent skill from OpenMinis/MinisSkills. Automate Android apps that have no public API or web version by driving the UI layer through the Accessibility Service.

When should I use Android UI Automation?

Android UI Automation fits situations like: wants to control a phone-only app on Android — e.g; the user asks why an automation didnt work (permissions; hidden view trees).

How do I install Android UI Automation in Claude Code?

Run `npx skills add OpenMinis/MinisSkills --skill android-ui-automation -a claude-code`. Or copy the skill folder (android-ui-automation in OpenMinis/MinisSkills) into .claude/skills/android-ui-automation in your project. Claude Code loads it when a task matches its description.

How do I install Android UI Automation in Codex?

Run `npx skills add OpenMinis/MinisSkills --skill android-ui-automation -a codex`. Or copy the skill folder (android-ui-automation in OpenMinis/MinisSkills) into .agents/skills/android-ui-automation in your project. Codex loads it when a task matches its description.

Can I use Android UI Automation 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 OpenMinis/MinisSkills --skill android-ui-automation -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/android-ui-automation, .gemini/skills/android-ui-automation, .github/skills/android-ui-automation and .opencode/skills/android-ui-automation in your project.

What does Android UI Automation need to run?

Going by SKILL.md and its folder, Android UI Automation needs Python for the scripts in its folder and the command-line tools its instructions call (python3). Our summary lists: Python 3. Compatibility (from SKILL.md): Android-only; requires the Minis app (Android) with its bundled android-a11y-cli / android-open CLIs and the Minis Accessibility Service enabled.

Does Android UI Automation access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Android UI Automation 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Android UI Automation use?

Android UI Automation 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 Android UI Automation use?

About 1.6k tokens (SKILL.md is roughly 6.5k 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 589 tokens, read only when the agent opens those files.

What are the alternatives to Android UI Automation?

Skills that share tags, products or a category with Android UI Automation: Configuring Test Dependencies (skydoves/android-testing-skills, 333 stars), Setting Up Host Vs Device Tests (skydoves/android-testing-skills, 333 stars), Android Mobile UI Design (ModinMobileSTS/SlayTheAmethystModded, 403 stars) and Accessible Mobile Developer (FerroxLabs/wayland, 608 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Android UI Automation?

OpenMinis (a GitHub organization) maintains it in OpenMinis/MinisSkills, which has 444 GitHub stars. The repository holds 49 skills in this directory. The repository was last updated on October 7, 2026.

Source: OpenMinis/MinisSkills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.