agentleFS
ThilinaTLMThilinaTLM/agent-skills/droid/SKILL.md

droid

Skill4 starsChanged 6 months agoMITView on GitHub

This skill should be used when the user asks to "test Android app", "automate Android emulator", "tap button on Android", "take Android screenshot", "interact with Android UI", "ADB automation", "fill Android form", "swipe on emulator", "validate Android UI flow", or needs to control an Android device/emulator via ADB. Provides a unified CLI with JSON output optimized for LLM consumption.

1 other project uses a version of this.

Adopted by

Most recently taken up by

  • Other versions1 project uses a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 1

    1. phuongduyphan/cc-tmux-agents★ 8same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

  • In this repository7 other files it gives its agents.

The file

We split this skill into the rules it gives an agent

5 rules. About 0 are common, 1 is distinctive, and 4 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈1

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Wait for element to appear (with timeout).

    line 76
  2. Very specific:

    Use --prefer-input: when tapping form fields to avoid hitting labels

    line 152
  3. Very specific:

    Use --clickable: when tapping buttons to ensure element is interactive

    line 153
  4. Very specific:

    Use wait-for: instead of blind wait for reliable verification

    line 155
  5. Very specific:

    All errors return JSON with "ok":false:

    line 159

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Droid

Unified Android testing tool with JSON output for LLM-friendly automation.

CLI Discovery

The CLI is located at ./droid-cli/ relative to this SKILL.md file.

PlatformScript
Unix/Linux/macOSdroid
Windowsdroid.cmd (droid.ps1 also available)

Prerequisites

  • Bun runtime (https://bun.sh)
  • ADB (Android Debug Bridge) in PATH
  • Connected Android device or running emulator
  • USB debugging enabled on device

Quick Start

# Check device connection
droid info

# Screenshot + UI elements (most useful command)
droid screenshot

# Tap by text (no coordinates needed!)
droid tap -t "Book Now"

# Fill a form field in one command
droid fill "Email" "user@example.com"

# Wait for element to appear
droid wait-for -t "Success" -s 5

Core Commands

screenshot

Capture screenshot AND UI elements. Returns element coordinates for tapping.

droid screenshot
droid screenshot --clickable      # Only clickable elements
droid screenshot --no-ui          # Fast, no element dump

Response: {"ok":true,"screenshot":"/tmp/screenshot.png","elements":[{"text":"Book","class":"Button","clickable":true,"x":540,"y":350,"bounds":[400,300,680,400]}]}

tap

Tap by text or coordinates.

droid tap -t "Book Now"           # By text
droid tap -t "State" --prefer-input  # Prefer input fields over labels
droid tap -t "Submit" --clickable    # Only clickable elements
droid tap 540 960                 # By coordinates

fill

Fill text field in one command (tap + clear + type + hide-keyboard).

droid fill "Enter your email" "user@example.com"

wait-for

Wait for element to appear (with timeout).

droid wait-for -t "Welcome" -s 10
# Returns: {"ok":true,"found":true,"element":{...}} or {"ok":true,"found":false,"timeout":true}

Form Workflow Commands

clear / type / hide-keyboard

droid clear                       # Clear focused field
droid type "hello@example.com"    # Type into focused field
droid hide-keyboard               # Dismiss keyboard (use instead of 'key back')

key

Send key events.

KeyPurpose
backNavigate back
enterSubmit/confirm
move_homeCursor to start of text
move_endCursor to end of text
deleteBackspace
app_homeAndroid home screen
droid key back
droid key move_home

Other Commands

CommandPurposeExample
swipeScrolldroid swipe up
longpressLong pressdroid longpress -t "Item"
launchLaunch appdroid launch com.example.app
currentCurrent activitydroid current
infoDevice infodroid info
waitWait msdroid wait 1000
select-allSelect textdroid select-all

See references/commands.md for full documentation.

Testing Workflow

Recommended Pattern

# 1. Screenshot to see current state
droid screenshot

# 2. Read the screenshot image with Claude's Read tool
# 3. Tap by text when possible
droid tap -t "Book Now" -w 1000

# 4. Verify the action worked
droid wait-for -t "Booking Confirmed" -s 5

Form Filling Pattern

# Use fill command for efficiency
droid fill "Email" "user@example.com"
droid fill "Password" "secret123"
droid tap -t "Sign In" --clickable
droid wait-for -t "Welcome" -s 10

Tips

  • Use --prefer-input when tapping form fields to avoid hitting labels
  • Use --clickable when tapping buttons to ensure element is interactive
  • Use hide-keyboard not key back to dismiss keyboard
  • Use wait-for instead of blind wait for reliable verification

Error Handling

All errors return JSON with "ok":false:

droid tap -t "NonexistentButton"
# {"ok":false,"error":"No element found matching 'NonexistentButton'"}

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.