moai-domain-adb
moai-domain-adb: ADB Automation Domain Specialist
Tier 3 Modularized Skill for intelligent Android automation, game bot development, and real-time device orchestration.
🎯 Quick Reference
Core Competencies
| Domain | Capability | Module |
|---|---|---|
| Device Control | ADB connection, shell execution, property inspection | adb-fundamentals |
| Device Management | Multi-device orchestration, state tracking, lifecycle | device-management |
| Game Automation | Bot scripting, action sequences, timing control | game-automation |
| Vision & Detection | Template matching, OCR, region-based detection | computer-vision |
| Tauri Integration | UI-Python bridge, real-time communication, deployment | tauri-integration |
Key Functions (Quick Access)
Device Operations
# Check device status
adb devices --list-long
# Execute shell command
adb shell input tap 540 960
# Get device property
adb shell getprop ro.build.version.sdk
# Install APK
adb install -r game.apk
Bot Control
# Start bot
adb shell am start -n com.game/.MainActivity
# Send input sequence
adb shell input tap x y && sleep 1 && adb shell input tap x2 y2
# Capture screenshot
adb shell screencap -p /sdcard/screen.png
Module Selection Guide
Use when you need to...
-
Understand ADB fundamentals: Load
adb-fundamentalsmodule- Connection protocols, authentication, basic shell operations
- Device discovery, property reading, system interaction
-
Manage multiple devices: Load
device-managementmodule- Device state tracking, connection pooling, failover strategies
- Batch operations, monitoring, lifecycle management
-
Develop game bots: Load
game-automationmodule- Click sequences, timing, OCR parsing, state detection
- Custom routines, action templates, bot patterns
-
Use vision for detection: Load
computer-visionmodule- Template matching (OpenCV), OCR (Tesseract)
- Region-based detection, image analysis, pattern recognition
-
Integrate with Tauri UI: Load
tauri-integrationmodule- Real-time bot status updates, command queueing
- UI ↔ Python communication, resource management
📚 Implementation Guide
Architecture Overview
moai-domain-adb follows a 5-module progressive disclosure pattern:
moai-domain-adb/
├── SKILL.md # This file (documentation hub)
├── modules/
│ ├── adb-fundamentals.md # Level 1: Core ADB operations
│ ├── device-management.md # Level 2: Multi-device orchestration
│ ├── game-automation.md # Level 3: Bot development patterns
│ ├── computer-vision.md # Level 4: Vision-based detection
│ └── tauri-integration.md # Level 5: UI orchestration
└── scripts/ # IndieDevDan UV scripts
├── adb_device_analyzer.py # Analyze device capabilities
├── adb_bot_generator.py # Generate bot skeletons
├── adb_template_creator.py # Create action templates
├── adb_performance_profiler.py # Profile bot performance
├── adb_config_validator.py # Validate configurations
├── adb_game_tester.py # Test bot on devices
└── adb_deployment_helper.py # Deploy to production
Tier 3 Characteristics
✅ Modularized: 5 independent modules (no cross-module imports) ✅ Production-Ready: 500+ line SKILL.md with comprehensive docs ✅ Scripted: 7 UV scripts following IndieDevDan 13 rules ✅ Delegatable: Works with expert-* and manager-* agents ✅ Reusable: Applicable to any Android automation project
Usage Pattern
# Pattern 1: Load skill for general ADB knowledge
Skill("moai-domain-adb")
# Pattern 2: Load specific module for targeted expertise
# In agent prompt: "Use moai-domain-adb:adb-fundamentals for device operations"
# Pattern 3: Reference UV script for automated tasks
# Command: uv run .claude/skills/moai-domain-adb/scripts/adb_device_analyzer.py --device emulator-5554
Integration Points
With Agents:
adb-bot-runner: Executes bots using game-automation patternsadb-device-manager: Manages devices using device-management expertiseadb-game-tester: Tests bots using computer-vision and game-automationadb-config-manager: Validates configs using config-validator scriptadb-workflow-orchestrator: Coordinates all agents using tauri-integration patterns
With Commands:
/adb:init→ Uses adb-fundamentals + adb_device_analyzer/adb:bot→ Uses game-automation + adb_bot_generator/adb:test→ Uses computer-vision + adb_game_tester/adb:deploy→ Uses tauri-integration + adb_deployment_helper
With UV Scripts: All 7 scripts are self-contained (zero dependencies on each other), follow PEP 723, and implement dual output (human-readable + JSON).
Progressive Disclosure Strategy
Level 1: Getting Started
- Read: adb-fundamentals module
- Run:
adb_device_analyzer.pyto list devices - Understand: Basic device connection and property reading
Level 2: Multi-Device Workflows
- Read: device-management module
- Understand: Connection pooling, state tracking, failover
- Build: Scripts that manage 5+ devices simultaneously
Level 3: Game Bot Development
- Read: game-automation module
- Understand: Click sequences, timing control, OCR integration
- Build: Custom routines for game-specific tasks
Level 4: Vision-Based Automation
- Read: computer-vision module
- Understand: Template matching, OCR parsing, region detection
- Build: Bots that adapt to UI changes dynamically
Level 5: Production Orchestration
- Read: tauri-integration module
- Understand: Real-time UI updates, command queuing, resource management
- Build: Enterprise workflows with Tauri UI control
🚀 Advanced Topics
Skill Composition Strategy
moai-domain-adb is designed for modular composition:
# Example 1: Simple device check
# Required: adb-fundamentals
agent = Task(
subagent_type="expert-backend",
prompt="Use moai-domain-adb:adb-fundamentals to list ADB devices"
)
# Example 2: Multi-device bot deployment
# Required: device-management + game-automation + tauri-integration
agent = Task(
subagent_type="adb-workflow-orchestrator",
prompt="Deploy game bot to 3 devices"
)
# Example 3: Vision-based testing
# Required: computer-vision + game-automation
agent = Task(
subagent_type="adb-game-tester",
prompt="Test bot with computer vision verification"
)
Performance Optimization
Device Batching:
- Group commands by device to reduce round-trip latency
- Use
adb_performance_profiler.pyto identify bottlenecks - Target: Execute 100 actions in <5 seconds
Caching Strategies:
- Cache device properties (refreshed every 60s)
- Cache template images (refreshed on detection failure)
- Cache bot configurations (invalidated on user edit)
Concurrency:
- Run multi-device operations with ThreadPoolExecutor
- Limit to 5 concurrent ADB operations per host
- Use queuing for >5 devices
Security Considerations
Authentication:
- ADB uses RSA key exchange; validate device certificates
- Never store unencrypted device pairing keys
- Rotate pairing keys quarterly for production devices
Permissions:
- Request minimal shell commands (avoid
suunless necessary) - Use app-specific commands instead of root access
- Audit bot actions for unintended side effects
Data Protection:
- Never capture sensitive data in screenshots
- Encrypt stored configurations containing API keys
- Use secure storage for game credentials
Debugging & Troubleshooting
Common Issues:
| Issue | Diagnosis | Solution |
|---|---|---|
| Device not found | adb_device_analyzer.py --check-connection |
Verify USB connection, check ADB daemon |
| Slow bot execution | adb_performance_profiler.py --device <id> |
Reduce click delays, batch operations |
| Template matching fails | Check image DPI/resolution | Run adb_template_creator.py --device <id> |
| OCR accuracy poor | Preprocess image (contrast, threshold) | See computer-vision module for tips |
| Tauri communication lag | Check Python process CPU | Reduce log verbosity, optimize render loop |
Debug Mode:
# Enable verbose logging
export ADB_DEBUG=1
uv run .claude/skills/moai-domain-adb/scripts/adb_device_analyzer.py --verbose
# Trace ADB commands
adb logcat | grep "adb_bot_runner"
Testing Strategy (TRUST 5 Framework)
Test Coverage Target: ≥85%
- Unit Tests: Individual module functions (py.test)
- Integration Tests: Module interactions (device mock)
- E2E Tests: Full workflow with real devices (optional)
- Performance Tests: Execution time benchmarks
- Security Tests: Input validation, permission checks
Test Execution:
# Run all tests
pytest tests/ -v --cov=.claude/skills/moai-domain-adb
# Run specific module tests
pytest tests/test_device_management.py -v
# Profile performance
pytest tests/ --benchmark-only
📖 Module Navigation
Each module builds upon previous knowledge but is independently usable:
-
adb-fundamentals (250 lines)
- ADB architecture, connection protocols, device discovery
- Shell execution, property reading, device interaction
-
device-management (280 lines)
- Multi-device orchestration, state tracking, connection pooling
- Lifecycle management, monitoring, failover strategies
-
game-automation (300 lines)
- Bot scripting patterns, click sequences, timing control
- OCR integration, state detection, action templates
-
computer-vision (270 lines)
- Template matching (OpenCV), OCR (Tesseract)
- Region detection, image preprocessing, pattern recognition
-
tauri-integration (240 lines)
- Tauri-Python IPC, real-time updates, command queueing
- Resource management, deployment strategies, monitoring
🛠️ Scripts & Tools
All scripts follow IndieDevDan 13 Rules (PEP 723, 9-section structure, dual output):
# Analyze device capabilities
uv run scripts/adb_device_analyzer.py --device emulator-5554 --json
# Generate bot skeleton
uv run scripts/adb_bot_generator.py --game "My Game" --output my_bot.py
# Create action template
uv run scripts/adb_template_creator.py --screenshot screen.png --region "0,0,1080,1920"
# Profile bot performance
uv run scripts/adb_performance_profiler.py --bot bot.py --iterations 100
# Validate configuration
uv run scripts/adb_config_validator.py --config config.yaml --strict
# Test bot on device
uv run scripts/adb_game_tester.py --bot bot.py --device emulator-5554
# Prepare deployment
uv run scripts/adb_deployment_helper.py --bot bot.py --target production
Complete Scripts Reference (36 scripts)
All scripts are located in scripts/ directory and organized by category. Each script supports:
--device/-d- Specify device ID (defaults to first connected)--toon- Output in TOON/YAML format for automation--verbose/-v- Enable verbose logging--help- Show detailed help and usage examples
See scripts/README.md for comprehensive documentation with 150+ usage examples.
🔌 Connection (4 scripts)
Location: scripts/connection/
| Script | Purpose | Key Options | Example |
|---|---|---|---|
adb_connect.py |
Connect to device via IP:port | --device (default: 127.0.0.1:5555) |
uv run scripts/connection/adb_connect.py |
adb_disconnect.py |
Disconnect device gracefully | --device |
uv run scripts/connection/adb_disconnect.py |
adb_restart_server.py |
Restart ADB server | --verbose |
uv run scripts/connection/adb_restart_server.py |
adb_device_status.py |
List all devices and status | --toon |
uv run scripts/connection/adb_device_status.py |
📱 Screen (6 scripts)
Location: scripts/screen/
| Script | Purpose | Key Options | Example |
|---|---|---|---|
adb_screenshot.py |
Capture screenshot | --output FILE |
uv run scripts/screen/adb_screenshot.py --output capture.png |
adb_tap.py |
Tap at coordinates | --x X --y Y --count N |
uv run scripts/screen/adb_tap.py --x 500 --y 1000 |
adb_swipe.py |
Swipe gesture | --preset {up,down,left,right} or --start X,Y --end X,Y |
uv run scripts/screen/adb_swipe.py --preset up |
adb_keyevent.py |
Send key event | --key {back,home,menu,power,volume_up} |
uv run scripts/screen/adb_keyevent.py --key back |
adb_text_input.py |
Type text | --text TEXT |
uv run scripts/screen/adb_text_input.py --text "Hello" |
adb_screenrecord.py |
Record screen video | --output FILE --duration SECONDS |
uv run scripts/screen/adb_screenrecord.py --duration 60 |
📦 App (5 scripts)
Location: scripts/app/
| Script | Purpose | Key Options | Example |
|---|---|---|---|
adb_app_list.py |
List installed apps | --filter TEXT, --system, --all |
uv run scripts/app/adb_app_list.py --filter afk |
adb_app_start.py |
Start app by package | -p PACKAGE, --wait |
uv run scripts/app/adb_app_start.py -p com.afk.journey |
adb_app_stop.py |
Force stop app | -p PACKAGE |
uv run scripts/app/adb_app_stop.py -p com.afk.journey |
adb_app_install.py |
Install APK | --apk FILE |
uv run scripts/app/adb_app_install.py --apk game.apk |
adb_app_uninstall.py |
Uninstall app | -p PACKAGE, --keep-data |
uv run scripts/app/adb_app_uninstall.py -p com.example |
ℹ️ Info (4 scripts)
Location: scripts/info/
| Script | Purpose | Key Options | Example |
|---|---|---|---|
adb_device_info.py |
Device specifications | --toon |
uv run scripts/info/adb_device_info.py |
adb_display_info.py |
Display resolution/DPI | --toon |
uv run scripts/info/adb_display_info.py |
adb_running_app.py |
Current foreground app | --toon |
uv run scripts/info/adb_running_app.py |
adb_battery_info.py |
Battery status | --toon |
uv run scripts/info/adb_battery_info.py |
⚡ Performance (3 scripts)
Location: scripts/performance/
| Script | Purpose | Key Options | Example |
|---|---|---|---|
adb_cpu_monitor.py |
Real-time CPU monitoring | --duration SECONDS, --package PKG |
uv run scripts/performance/adb_cpu_monitor.py --duration 60 |
adb_memory_monitor.py |
Memory usage monitoring | --duration SECONDS, --package PKG |
uv run scripts/performance/adb_memory_monitor.py --duration 60 |
adb_logcat_filter.py |
Filter logcat logs | --tag TAG, --priority {V,D,I,W,E,F}, --follow |
uv run scripts/performance/adb_logcat_filter.py --tag MyApp --priority E |
🤖 Automation (4 scripts)
Location: scripts/automation/
| Script | Purpose | Key Options | Example |
|---|---|---|---|
adb_game_loop.py |
Execute repeating sequence | -s FILE, -l LOOPS, --infinite |
uv run scripts/automation/adb_game_loop.py -s daily.json -l 10 |
adb_wait_for_app.py |
Wait for app to start | --package PKG, --timeout SECONDS |
uv run scripts/automation/adb_wait_for_app.py -p com.afk.journey |
adb_click_sequence.py |
Execute sequence once | -s FILE |
uv run scripts/automation/adb_click_sequence.py -s tutorial.json |
adb_screenshot_compare.py |
Compare screenshots | -b BEFORE -a AFTER, --threshold FLOAT |
uv run scripts/automation/adb_screenshot_compare.py -b ref.png -a test.png |
🛠️ Utils (3 scripts)
Location: scripts/utils/
| Script | Purpose | Key Options | Example |
|---|---|---|---|
adb_shell.py |
Execute shell commands | -c COMMAND, --timeout SECONDS |
uv run scripts/utils/adb_shell.py -c "ls /sdcard" |
adb_push.py |
Push file to device | -l LOCAL -r REMOTE |
uv run scripts/utils/adb_push.py -l file.txt -r /sdcard/ |
adb_pull.py |
Pull file from device | -r REMOTE -l LOCAL |
uv run scripts/utils/adb_pull.py -r /sdcard/screenshot.png -l . |
🔧 Monitoring (7 scripts)
Location: scripts/ (root level)
| Script | Purpose | Key Options | Example |
|---|---|---|---|
adb_bot_generator.py |
Generate bot scripts | --template NAME, --output FILE |
uv run scripts/adb_bot_generator.py --template daily_quests |
adb_config_validator.py |
Validate configs | --config FILE, --strict |
uv run scripts/adb_config_validator.py --config config.json |
adb_deployment_helper.py |
Deploy to devices | --apk FILE, --all, --devices IDS |
uv run scripts/adb_deployment_helper.py --apk game.apk --all |
adb_device_analyzer.py |
Analyze capabilities | --aspects LIST, --output FILE |
uv run scripts/adb_device_analyzer.py --aspects performance,battery |
adb_game_tester.py |
Test game automation | --test-suite FILE, --screenshots |
uv run scripts/adb_game_tester.py --test-suite tests.json |
adb_performance_profiler.py |
Profile performance | --package PKG, --duration SECONDS |
uv run scripts/adb_performance_profiler.py -p com.afk.journey |
adb_template_creator.py |
Create templates | --name NAME, --category CAT |
uv run scripts/adb_template_creator.py --name my_automation |
JSON Sequence Format (Automation Scripts)
For adb_game_loop.py and adb_click_sequence.py, use JSON format:
{
"name": "Daily Quest Automation",
"steps": [
{"action": "tap", "x": 500, "y": 1000, "delay": 2},
{"action": "swipe", "start": [500, 1500], "end": [500, 500], "duration": 300},
{"action": "wait", "duration": 3},
{"action": "screenshot", "output": "/tmp/check.png"},
{"action": "keyevent", "key": "back"},
{"action": "text_input", "text": "Hello World"}
]
}
Supported Actions: tap, swipe, wait, screenshot, keyevent, text_input
Common Utilities
All scripts use shared utilities from scripts/common/:
adb_utils.py- ADB device operations and connection managementcli_utils.py- Click decorators, Rich formatters, output helperserror_handlers.py- Standardized error handling and exit codes (0, 2, 3, 4)path_utils.py- Project root detection and path resolution
Exit Codes
All scripts use standardized exit codes:
- 0 - Success
- 2 - Device offline or not found
- 3 - ADB command failed or execution error
- 4 - Invalid argument or configuration
Output Formats
Text Output (default): Rich-formatted console output with colors and tables
TOON Output (--toon): YAML/structured format for automation and parsing
📞 Support & References
Quick Links:
- Modules: See individual module files in
modules/ - Scripts: See individual scripts in
scripts/with--help - Examples: See integration patterns in adb-* agents
- Tests: See test suite in
tests/
Context7 References:
- Android ADB Protocol (Android Developers)
- Python ADB Library (Google GitHub)
- OpenCV Documentation (OpenCV Docs)
- Tesseract OCR (GitHub)
Version: 1.0.0 Status: ✅ Production Ready (Phase 1 Foundation) Last Updated: 2025-12-01 Next Phase: Create 5 core modules + 7 UV scripts