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 ChunkyTofuStudios/flutter-skills --skill android-emulatorgit clone --depth 1 https://github.com/ChunkyTofuStudios/flutter-skillsWrote 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/chunkytofustudios/flutter-skills/android-emulator)<a href="https://agentmods.dev/skills/chunkytofustudios/flutter-skills/android-emulator"><img src="https://agentmods.dev/badge/skills/chunkytofustudios/flutter-skills/android-emulator.svg" alt="Measured on agentmods" 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.00201 | $0.04038 |
| Opus 5 | $0.00101 | $0.02019 |
| Sonnet 5 | $0.00040 | $0.00808 |
| Haiku 4.5 | $0.00020 | $0.00404 |
Grade A, and why
android-emulator scanned grade A with 0 findings 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 8d 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.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 235 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Android emulator (Flutter)
A bash helper that wraps adb and the qemu emulator console so an AI agent can see (screenshots, accessibility tree) and act on (tap, long-press, swipe, pinch) a Flutter app running on an Android emulator. Computer-use APIs cannot reach the emulator window (qemu has no macOS app bundle), and adb shell input is single-touch only — this script bridges both gaps.
When to use this
The user wants to launch, debug, smoke-test, QA, or screenshot a Flutter app on Android. Reach for this skill before resorting to coordinate-guessing, manual screenshotting via DevTools, or asking the user to run flutter run themselves.
Setup
The script assumes a working Android SDK install (with adb and emulator on $PATH or in ~/Library/Android/sdk/ / ~/Android/Sdk/), at least one AVD created, and Flutter (or fvm) installed. macOS-only utility: sips (used to resample screenshots — ships with macOS). On Linux, swap in convert from ImageMagick if porting.
The script is at scripts/emu.sh relative to this skill. Once the skill is wired into your project (see README.md), agents call it with that relative path.
Quick start (cold boot to interactive)
scripts/emu.sh boot # start an AVD (cold boot), idempotent
scripts/emu.sh run # flutter build & install in background (~30–60s first time)
scripts/emu.sh wait-run # blocks until attached or errors (180s timeout)
scripts/emu.sh health # sanity check
scripts/emu.sh ui-list # see what's on screen — start here, not screenshot
run auto-detects the project root (walks up to find pubspec.yaml) and uses fvm flutter if the project pins it. Always pair run with wait-run instead of sleep — the daemon's stdin is gone, so timing is the only signal that the build finished.
Commands
Emulator lifecycle
| Command | What it does |
|---|---|
boot |
Start the AVD in cold boot (-no-snapshot-load) and block until sys.boot_completed. Idempotent — if the device is already online, returns immediately. AVD defaults to the first one listed by emulator -list-avds; pin with ANDROID_EMU_AVD. |
exit |
Shut down the running emulator via the qemu console (kill). |
health |
One-shot status: connection, AVD name, resolution, foreground app, detected project root, detected package, flutter log size. Run this first to orient. Exits non-zero if the device isn't connected. |
devices / size / foreground |
Raw adb devices / wm size / focused activity. |
app-running |
Exit 0 if the target package is the focused app, 1 otherwise. Use in scripts. |
What ships with it
17 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- scripts/emu.sh 27 KB runs code
- tests/dispatch.bats 11 KB
- tests/fixtures/ui-dump.xml 2.4 KB
- tests/help.bats 1.3 KB
- tests/helpers.bash 3.4 KB runs code
- tests/parsers.bats 3.8 KB
- tests/stubs/adb 2.2 KB
- tests/stubs/convert 360 B
- tests/stubs/emulator 342 B
- tests/stubs/flutter 440 B
- tests/stubs/fvm 163 B
- tests/stubs/nc 364 B
- tests/stubs/pkill 186 B
- tests/stubs/sips 309 B
- tests/stubs/sleep 233 B
- tests/stubs/tail 696 B
- tests/ui.bats 5.7 KB
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.
- 8d ago First seen · 235 lines · 201 tokens per session scan A 9f67a87ae5e3
android-emulator is a skill published in the GitHub repository ChunkyTofuStudios/flutter-skills (5 stars, last pushed 3mo ago), licensed MIT. It adds 201 tokens to every session and 4,038 once invoked, about $0.0010 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
ios-fix
Autonomous iOS bug fixer. (gstack).
google-mobile-ads-validate
Validates a project's Google Mobile Ads (GMA) SDK integration for iOS, Android, or Unity projects. Use when conducting a full pre-launch audit of an app that integrates GMA SDK or when validating any individual GMA SDK integration checks, such as when validating ad unit IDs and ad formats, SKAdNetwork IDs, mediation…
competition-ios-runtime
Internal downstream skill for ctf-sandbox-orchestrator. CTF-sandbox workflow for IPA runtime analysis, Frida hooks, Objective-C or Swift method tracing, Keychain inspection, SSL pinning bypass, URL scheme handling, and iOS request-signing recovery. Use when the user asks to hook an IPA, trace Objective-C or Swift…
swiftui-performance-audit
SwiftUI performance: render, scroll, CPU/memory, updates, layout, Instruments.
android-tombstone-symbolication
Symbolicate the .NET runtime frames in an Android tombstone file. Extracts BuildIds and PC offsets from the native backtrace, downloads debug symbols from the Microsoft symbol server, and runs llvm-symbolizer to produce function names with source file and line numbers. USE FOR triaging a .NET MAUI or Mono Android app…
node-connect
Diagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps. Use when QR/setup code/manual connect fails, local Wi-Fi works but VPS/tailnet does not, or errors mention pairing required, unauthorized, bootstrap token invalid or expired, gateway.bind, gateway.remote.url, Tailscale…