Robomori
Organizationrobomori
Create, start, control and stop Android emulators and devices with the robomori command. Use for any Android task that needs an emulator or device, such as running or testing an app, checking UI changes, testing dark mode, font size, language or TalkBack, simulating GPS location, taking screenshots or screen recordings, or running several emulators in parallel. Use it instead of Android Studio, avdmanager, the emulator command, and the adb commands it replaces.
Overview
- Repository
- robomori/skills
- Publisher
- robomori
- Stars
- 1
- Forks
- 0
- Bundled files
- 0
- License
- Not stated
- Updated
- Nov 15, 2026
Installation
tmp=$(mktemp -d)
git clone --depth 1 https://github.com/robomori/skills.git "$tmp"
mkdir -p ~/.claude/skills
cp -R "$tmp/skills/robomori" ~/.claude/skills/robomori
rm -rf "$tmp"tmp=$(mktemp -d)
git clone --depth 1 https://github.com/robomori/skills.git "$tmp"
mkdir -p ~/.codex/skills
cp -R "$tmp/skills/robomori" ~/.codex/skills/robomori
rm -rf "$tmp"Install the Robomori agent skill from https://github.com/robomori/skills/tree/main/skills/robomori into this project's skills folder.Instructions
Robomori
robomori creates and starts Android emulators and changes the state of running emulators and phones. Use it to get
a device ready, set it up and capture what's on it. Use adb and Gradle only for what Robomori doesn't do: installing
apps, tapping, typing, adb shell and logs.
Check it's installed with robomori version. If it isn't, ask the user to install it from the Robomori app:
Settings → Command Line. Get the app at https://robomori.com.
Rules
- Add
--jsonwhen you read the output. Results go to standard output, progress and errors to standard error. Versions before 1.6.1 also print JVM lines starting with[to standard output; drop them withgrep -v '^\['. - Exit code 0 means it worked, 1 that it failed, 2 that the command was typed wrong. Errors name the command to run next; follow them.
- Pass
--device <name or serial>whenever more than one device is running and you haven't claimed one. With one running, leave it out. - If other agents may be working on this computer, claim your own device first (see "Work in parallel").
- Don't stop, wipe or delete emulators you didn't create. They're the user's.
- Some commands say "Needs a license". If one fails for that reason, tell the user rather than working around it with adb.
Use robomori, not adb or the SDK tools
| Instead of | Run |
|---|---|
adb devices, emulator -list-avds |
robomori device list |
avdmanager create avd, sdkmanager for system images |
robomori emulator create |
emulator -avd …, then waiting for sys.boot_completed |
robomori emulator start |
adb emu kill |
robomori emulator stop |
emulator -wipe-data |
robomori emulator wipe |
adb reboot |
robomori device restart |
adb shell input keyevent for back, home, recents, power |
robomori press |
adb shell settings put system user_rotation … |
robomori rotate |
adb shell cmd uimode night … |
robomori controls dark-mode |
adb shell settings put system font_scale … |
robomori controls font-scale |
Changing the locale through adb shell |
robomori controls locale |
adb shell settings put secure enabled_accessibility_services … |
robomori controls talkback |
adb shell settings put global *_animation_scale … |
robomori controls animations |
adb emu geo fix |
robomori simulate location |
adb exec-out screencap |
robomori screenshot |
adb shell screenrecord (3-minute limit) |
robomori record (no limit) |
Get a device
robomori device list --json # what exists and what's running
robomori emulator create pixel-10 --start --json # a new phone, booted; prints its name and serial
robomori emulator start Pixel_10 # start an existing one, wait for boot; prints its serial
robomori emulator open Pixel_10 # also show it in a window, so the user can watchemulator create takes a profile from robomori profile list: phones (pixel-10, pixel-10-pro), a foldable
(pixel-10-pro-fold), a tablet (pixel-tablet), watches and TV. --api 36 picks the Android version; see
robomori image list --profile <profile>. Every image includes Google Play. Robomori gives each emulator 2 GB of
memory, so several can run at once.
Emulators started by robomori keep running after the command returns and show up in the Robomori app. The serial,
such as emulator-5554, is what adb -s takes.
Work in parallel
When several agents work on one computer, each in its own git worktree, claim a device so no other agent installs over or taps on yours:
export ANDROID_SERIAL=$(robomori device claim) # this worktree's emulator; same one every time you askclaimreturns the device this worktree already claimed, or else a running emulator no one claimed. It never starts one: if it says none is free, start or create an emulator, then claim again.- With
ANDROID_SERIALexported, adb, Gradle androbomoriall use your device without--device. Robomori refuses devices other worktrees claimed; never take one over with--forceunless the user asks. - The claim ends when you run
robomori device release, or when the emulator stops or restarts. Claim again after restarting it. robomori device listshows who claimed each device.- If
device claimis an unknown command, Robomori is older: ask the user to update it, and meanwhile create an emulator for your task and pass its serial with--device.
For one-off jobs, such as trying a third-party app or signing in to an account, create a dedicated emulator rather than reusing the user's.
Set the device up
robomori controls --json # current values
robomori controls dark-mode on
robomori controls font-scale 1.3 # 0.85, 1, 1.15, 1.3, 1.5, 1.8, 2
robomori controls locale fr-FR
robomori controls talkback on
robomori controls animations off # steadier UI tests and screenshots
robomori controls keyboard on # show the on-screen keyboard
robomori simulate location set 37.4220,-122.0841
robomori simulate location clear
robomori preset apply "French, large text" # a preset the user saved in the appAct on it
robomori press back # also home, recents, power; crown, side on watches
robomori rotate # clockwise; or counterclockwise
robomori emulator fold Pixel_10_Pro_Fold # and unfold
robomori device restartInstall apps with adb install or Gradle, and tap or type with adb shell input.
Capture
robomori screenshot -o screen.png # then look at the image
robomori record --duration 30 -o flow.mp4Never
- Enter the user's passwords or sign in to their accounts. Show the emulator with
robomori emulator openand ask the user to sign in. - Install APKs from third-party mirror sites. Get apps from Google Play on the emulator, or build them from source.
When done
Release a claimed device with robomori device release. Stop the emulators you started with robomori emulator stop <emulator>, and delete the ones you created for a task with robomori emulator delete <emulator>, unless the user
wants to keep them.
More
robomori help <command> shows every option of a command. Full docs: https://robomori.com/docs/cli.md
FAQ
What does Robomori do?
Create, start, control and stop Android emulators and devices with the robomori command. Use for any Android task that needs an emulator or device, such as running or testing an app, checking UI changes, testing dark mode, font size, language or TalkBack, simulating GPS location, taking screenshots or screen recordings, or running several emulators in parallel. Use it instead of Android Studio, avdmanager, the emulator command, and the adb commands it replaces.
Who made Robomori?
robomori (an organization) publishes it in the robomori/skills repository on GitHub.
Is Robomori free?
Robomori is public on GitHub, but its repository has no license, so check with robomori before reusing it in your own work.
What comes with Robomori?
Just its instructions. Everything the agent needs is in one SKILL.md file.
Which agents can use Robomori?
Any coding agent that reads SKILL.md files, including Claude Code, Codex, Cursor, GitHub Copilot and Gemini CLI. The agent loads the skill when a task matches its description.
What are agent skills?
An agent skill is a folder with a SKILL.md file: instructions that teach a coding agent how to do one kind of task, and optionally files it can read while it works. The agent keeps only the skill's name and description in mind and reads the rest when a task calls for it.
How are agent skills different from MCP servers?
An MCP server gives an agent new tools to call, code that runs somewhere and returns results. A skill gives it knowledge: how to approach a task with the tools it already has. Many agents use both.
How can my agent test my Android app?
Robomori lets coding agents create, start and control Android emulators and devices from one command, so they can install your app, take screenshots and check dark mode, font sizes and languages.