Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add Lord1Egypt/awesome-skill-forge --skill 12306-android-adbgit clone --depth 1 https://github.com/Lord1Egypt/awesome-skill-forgeWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/lord1egypt/awesome-skill-forge/12306-android-adb)<a href="https://agentmods.dev/skills/lord1egypt/awesome-skill-forge/12306-android-adb"><img src="https://agentmods.dev/badge/skills/lord1egypt/awesome-skill-forge/12306-android-adb/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/lord1egypt/awesome-skill-forge/12306-android-adb"><img src="https://agentmods.dev/badge/skills/lord1egypt/awesome-skill-forge/12306-android-adb.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00055 | $0.02317 |
| Opus 5 | $0.00028 | $0.01158 |
| Sonnet 5 | $0.00011 | $0.00463 |
| Haiku 4.5 | $0.00006 | $0.00232 |
Grade A, and why
12306-android-adb scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 12d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Runs shell commandslowCapability
Expected in a hook, worth knowing in a rule or an instructions file.
subprocess.run(['adb', 'shell', 'screencap', '-p', '/sdcard/screen.png'], timeout=10) How it starts
The opening of the file, as written. The whole thing — 213 lines — stays where its author put it; the contents beside it link to each section on GitHub.
12306 Train Booking (Android)
12306-specific knowledge, workflows, and pitfalls. The app uses Alipay Nebula UC WebView for the train list and booking pages, which has unique automation challenges.
🚨 Before Any 12306 Action
Ensure the app is running and on the correct page:
# Start Appium bridge (if using bridge_daemon.py approach):
bash ~/.openclaw/workspace/skills/appium-android-adb/start_bridge.sh
# Or use uiautomator2 directly (more reliable for WebView):
python3 -c "import uiautomator2 as u2; d = u2.connect(); d.app_start('com.MobileTicket')"
⚠️ Critical: UC WebView Virtual List Behavior
The train list uses a virtual list inside the UC WebView. This has extreme implications:
What DOES work
| Method | Target | Reliability |
|---|---|---|
uiautomator2 text('预订').click() |
"预订" book buttons | ✅ Always works (proper persistent bounds) |
uiautomator2 text('查询车票').click() |
Native query button | ✅ Always works |
uiautomator2 text('选择乘车人').click() |
Native passenger selector | ✅ Always works |
uiautomator2.click(x, y) on native views |
Date tabs, bottom buttons | ✅ Always works |
| Screenshot + OCR + ADB tap | Any visible element | ✅ Works with good OCR |
Appium element.click() on "预订" buttons |
"预订" with proper bounds | ✅ Works |
What DOES NOT work
| Method | Target | Why |
|---|---|---|
| Clicking collapsed train name text | Train entry at y=407 or y=2255 (h=6) | Virtual list collapses ALL non-current items |
ADB input tap |
Any UC WebView content | UC WebView filters synthetic touch events |
| W3C Actions swipe | UC WebView scroll | Touch events filtered |
mobile: scrollGesture |
UC WebView element | Returns False consistently |
d.textContains('G 7 0 0 4').click() |
Train name in collapsed zone | Multiple trains share collapsed bounds |
tap_bounds on collapsed element |
Train name at y=2255 with h=6 | Event goes to WebView's virtual position, not visual |
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 12d ago First seen · 213 lines · 55 tokens per session scan A 4f9236521c05
12306-android-adb is a skill published in the GitHub repository Lord1Egypt/awesome-skill-forge (2 stars, last pushed 3mo ago), licensed MIT. It adds 55 tokens to every session and 2,317 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 1 finding (runs shell commands). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
android-unit-test
Guide for writing and converting Chromium Android unit tests across host Robolectric (chromejunittests) and on-device (chromepublicunittestapk) suites.
android-test-batching
Guide for auditing and applying batching annotations (@Batch) and AutoReset rules (AutoResetCtaTransitTestRule) to Android javatests in Chromium. Use this skill when optimizing Java instrumentation test runtimes, resolving test state leaks, or migrating tests to batched execution.
java-memory-leaks
How to identify and fix Java memory leaks in Android Chrome using LeakCanary traces.
loadline
Running and analyzing LoadLine 1 and 2 benchmarks on Android using Crossbench. Use when you need to measure page loading performance, evaluate performance-related changes in Chrome, or collect Perfetto traces with realistic Chrome workload.
accessibility-cleanup
Finds common violations of the Android accessibility API in the Clank App Java code and attempts to address them (e.g. hardcoded state change announcements, missing events, focus moving, assertive live regions, etc).
remove-unused-object-overrides
Identify and safely remove unreferenced Java Object overrides (equals, hashCode, toString) in Clank to eliminate dead virtual methods from release DEX bytecode while strictly preserving equals/hashCode symmetry.