droid
3
总安装量
1
周安装量
#61189
全站排名
安装命令
npx skills add https://github.com/thilinatlm/agent-skills --skill droid
Agent 安装分布
amp
1
cline
1
opencode
1
cursor
1
kimi-cli
1
codex
1
Skill 文档
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-inputwhen tapping form fields to avoid hitting labels - Use
--clickablewhen tapping buttons to ensure element is interactive - Use
hide-keyboardnotkey backto dismiss keyboard - Use
wait-forinstead of blindwaitfor reliable verification
Error Handling
All errors return JSON with "ok":false:
droid tap -t "NonexistentButton"
# {"ok":false,"error":"No element found matching 'NonexistentButton'"}