# Add to your Claude Code skills
git clone https://github.com/hubastard/speedrunSee how speedrun compares with popular alternatives.
speedrun is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by hubastard. Fastest cross-platform E2E Automation for Mobile. It has 68 GitHub stars.
speedrun's catalog security scan is still queued. You can run an instant dependency and prompt-injection check now with the "Scan for vulnerabilities" button above.
Clone the repository with "git clone https://github.com/hubastard/speedrun" and add it to your Claude Code skills directory (see the Installation section above).
speedrun is primarily written in Odin. It is open-source under hubastard on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh speedrun against similar tools.
No comments yet. Be the first to share your thoughts!
Available after the catalog security scan passes.
⚠️ Third-Party Software Notice
This skill is third-party open-source software developed and hosted independently on GitHub. SkillsLLM is an informational directory and does not control or maintain the underlying repository.
Any security checks, ratings, or warnings displayed by SkillsLLM are automated and limited in scope. They do not constitute a security certification or guarantee that the software is safe, error-free, or free from malicious code, vulnerabilities, compromised dependencies, or prompt-injection risks.
Review the source code, permissions, dependencies, and configuration before installing or running any third-party skill. Use is at your own risk. To the maximum extent permitted by applicable law, SkillsLLM is not liable for losses arising from third-party software.
The deep catalog scan for this skill is still queued. Run an instant dependency check now instead.
Speedrun tests your app the way a user uses it: it taps, types, scrolls and checks what is on screen, from outside the app, with nothing added to it. A test is a short YAML file:
appId: com.example.app
---
- launchApp
- tapOn: "Sign in"
- inputText: "user@example.com"
- tapOn: "Continue"
- assertVisible: "Welcome"
Install with Homebrew (macOS on Apple silicon, Linux x86_64):
brew install hubastard/tap/speedrun
Or with the install script:
curl -fsSL https://raw.githubusercontent.com/hubastard/speedrun/main/install.sh | bash
~/.speedrun and adds it to your PATH. For another folder or a
specific release, put SPEEDRUN_DIR=/usr/local/bin or SPEEDRUN_VERSION=v0.2.0 in
front of bash.brew upgrade speedrun, or
speedrun update if you used the script.Write a flow (how), or use the ones you have:
# login.yaml
appId: com.example.app
---
- launchApp:
clearState: true
- tapOn: "Email"
- inputText: "user@example.com"
- tapOn: "Password"
- inputText: ${PASSWORD}
- tapOn: "Sign in"
- assertVisible: "Welcome"
Run it on a running Android emulator or device, or a booted iOS simulator:
speedrun test login.yaml -e PASSWORD=secret # Android
speedrun test -p ios login.yaml -e PASSWORD=secret # iOS simulator
speedrun test flows/ --format junit --output report.xml # a whole suite, for CI
In a terminal you see each step live, with its time. When a step fails, Speedrun shows what was on screen, and where it saved the screenshot and logs.
Speedrun reads the Maestro flow format: your flow files, config.yaml,
tags, environment variables and scripts run as they are, and speedrun test takes the same
options as maestro test and writes the same reports. Switching is a one-word change:
maestro test flows/ # before
speedrun test flows/ # after
Everything runs as written except Maestro's AI commands (assertWithAI and the like). The
details, and the few differences you may notice:
Maestro compatibility.
A session keeps Speedrun connected to the device between commands, so an AI coding agent can drive the app a step at a time, read the screen in a few lines, and save the steps that worked as a flow for CI:
speedrun session start --app com.example.app
speedrun look # @5 Field #email, @7 Button "Sign in" ...
speedrun do 'tapOn: @5' 'inputText: "user@example.com"' 'tapOn: @7'
speedrun session save flows/sign-in.yaml
Each answer says how each command went and what changed on screen, in a few lines: an agent pays a few hundred tokens per step, not a whole accessibility tree. See Sessions, and the comparison with other agent tools.
speedrun mcp serves the same as Model Context Protocol
tools (session_start, look, run, save_flow...), for agents that take tools from MCP
servers. With Claude Code, after installing Speedrun:
claude mcp add speedrun -- ~/.speedrun/speedrun mcp # this project
claude mcp add --scope user speedrun -- ~/.speedrun/speedrun mcp # every project
Other MCP clients (Claude Desktop, Cursor, ...) take a server in their JSON configuration:
{
"mcpServers": {
"speedrun": { "command": "/Users/you/.speedrun/speedrun", "args": ["mcp"] }
}
}
Use the binary's full path: an MCP client may not start servers with your shell's PATH. Then start an emulator or simulator and ask the agent to test something like:
Start a speedrun session for com.example.app, sign in as user@example.com, and save the flow to flows/sign-in.yaml
Speedrun is developed against Speedrun Bench, a React Native app built to trip up UI test tools: screens that never stop moving (looping Lottie and Reanimated animations, tickers, marquees, shimmering skeletons, carousels that page on their own), a button that turns on late, a banner that shifts the layout, a loading overlay over a keypad, popups that arrive late or one after another, the keyboard over the checkout button, lists that load more as you scroll, native alerts and permission prompts. Its 19 flows cover every command and selector, and are Speedrun's regression suite on Android and iOS; a journey through the app also runs on GitHub Actions' emulator and simulator after every push.
Waiting for a still screen would never end on such an app. Speedrun waits until what it acts on has settled and leaves endless animations out of that check; it also waits for a disabled button to turn on, a loading overlay to go and a popup to finish sliding in before it taps.
Speedrun Bench's 19 flows, run by Speedrun and Maestro from the same files:
| Speedrun | Maestro 2.11 | Speedrun is | |
|---|---|---|---|
| Android emulator, whole suite | 5 min 55 s, 19/19 passed | 46 min 56 s, 16/19 passed | |
| on the 16 flows both pass | 5 min 4 s | 43 min 58 s | 8.7x faster |
| iOS simulator, whole suite | 9 min 33 s, 19/19 passed | 40 min 19 s, 8/19 passed | |
| on the 8 flows both pass | 2 min 34 s | 7 min 42 s | 3.0x faster |
Maestro's time for a flow it fails stops at the failure. Estimating the whole suite as if it
had finished those flows, Speedrun is about 8.0x faster on Android and 4.8x on iOS. On native
screens, the system Settings app (bench/settings), Speedrun is 10.7x
faster on Android and 2.9x on iOS.
Measured on an Apple M1 Pro (16 GB), with an Android 17 emulator and an iPhone 17 Pro
simulator (iOS 26.2): Speedrun's current code on 2026-10-29, the other tools on 2026-10-27
(they have not changed since). Speedrun's iOS numbers are with SPEEDRUN_REDUCE_MOTION=1 (the
simulator's Reduce Motion on during the run; without it this suite took 585 s instead of
573 s) and, as Speedrun always runs iOS apps, their animations 10x faster (UIKit's animation
speed setting). Per-flow results, why Maestro failed, and how to rerun it all:
bench/app.
One user journey on Speedrun Bench (sign in with a code, search the shop and fill a cart, set a PIN under a loading overlay, scroll a long list), written for each tool the way its tests are usually written: bench/journey. Each tool ran it three times after a warm-up; the time is the median of its passing runs, its start-up included.
| Tool | Android emulator | iOS simulator |
|---|---|---|
| Speedrun | 20.3 s, 3/3 passed | 25.5 s, 3/3 passed |
| Appium 3.9 | 59.4 s |