Droid
Unified Android testing tool with JSON output for LLM-friendly automation.
CLI Discovery
The CLI is located at ./scripts/droid-cli/ relative to this SKILL.md file.
Platform Script
Unix/Linux/macOS droid
Windows droid.ps1
Claude Code: Use ${CLAUDE_PLUGIN_ROOT}/skills/droid/scripts/droid-cli/droid (or droid.ps1 on Windows).
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.
Key Purpose
back
Navigate back
enter
Submit/confirm
move_home
Cursor to start of text
move_end
Cursor to end of text
delete
Backspace
app_home
Android home screen
droid key back droid key move_home
Other Commands
Command Purpose Example
swipe
Scroll droid swipe up
longpress
Long press droid longpress -t "Item"
launch
Launch app droid launch com.example.app
current
Current activity droid current
info
Device info droid info
wait
Wait ms droid wait 1000
select-all
Select text droid 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"