Borrowing it
Nothing to install: this file belongs to tomdwipo/claude-soul. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/tomdwipo/claude-soul/main/.claude/commands/ui-test.mdgit clone --depth 1 https://github.com/tomdwipo/claude-soulWrote 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/commands/tomdwipo/claude-soul/ui-test)<a href="https://agentmods.dev/commands/tomdwipo/claude-soul/ui-test"><img src="https://agentmods.dev/badge/commands/tomdwipo/claude-soul/ui-test.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.00000 | $0.01929 |
| Opus 5 | $0.00000 | $0.00964 |
| Sonnet 5 | $0.00000 | $0.00386 |
| Haiku 4.5 | $0.00000 | $0.00193 |
Grade A, and why
ui-test 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 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.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
| **fetch_otp** | `- fetch_otp: {url: "https://...", phone: "<phone>"}` | Fetch OTP via curl, store in variable | How it starts
The opening of the file, as written. The whole thing — 156 lines — stays where its author put it; the contents beside it link to each section on GitHub.
UI Test — Screenshot Benchmark Comparison
Run visual UI tests by comparing device screenshots against benchmark images. Supports ADB actions (tap, type, swipe, back, wait, launch) to navigate through app flows.
Arguments
$ARGUMENTS is the flow name (e.g., login-flow), matching a YAML file in ui-tests/flows/.
Instructions
You are running an automated visual UI test. Follow these steps EXACTLY:
Phase 1: Load Test Spec
- Read the YAML file at
ui-tests/flows/$ARGUMENTS.yaml - Parse the flow name, description, default_diff_threshold, and list of screens
- If the file doesn't exist, tell the user and list available flows from
ui-tests/flows/
Phase 2: Run Each Screen Test
For EACH screen in the screens list, do the following IN ORDER:
Step A: Execute Actions (if specified)
If the screen has an actions list, execute each action IN ORDER using ADB:
| Action | YAML | ADB Command |
|---|---|---|
| tap | - tap: {x: 360, y: 800} |
adb shell input tap 360 800 |
| long_press | - long_press: {x: 360, y: 800} |
adb shell input swipe 360 800 360 800 1000 |
| type | - type: "hello" |
adb shell input text "hello" |
| swipe | - swipe: {x1: 360, y1: 1200, x2: 360, y2: 400} |
adb shell input swipe 360 1200 360 400 300 |
| back | - back |
adb shell input keyevent 4 |
| home | - home |
adb shell input keyevent 3 |
| enter | - enter |
adb shell input keyevent 66 |
| wait | - wait: 2000 |
sleep 2 (value is in milliseconds) |
| launch | - launch: "com.example.app.dev/com.example.app.ui.MainActivity" |
adb shell am start -n <value> |
| clear_app | - clear_app: "com.example.app.dev" |
adb shell pm clear <value> |
| hide_keyboard | - hide_keyboard |
adb shell input keyevent 111 |
| swipe_repeat | - swipe_repeat: {x1: 360, y1: 1200, x2: 360, y2: 300, count: 50} |
Repeat swipe N times (200ms between each) |
| fetch_otp | - fetch_otp: {url: "https://...", phone: "<phone>"} |
Fetch OTP via curl, store in variable |
| type_fetched_otp | - type_fetched_otp |
Type the previously fetched OTP digits one by one |
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 · 156 lines · 0 tokens per session scan A 9b1fb81b6810
ui-test is a command published in the GitHub repository tomdwipo/claude-soul (24 stars, last pushed yesterday), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 1,929 tokens. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other commands, from other repositories
run-tests
Run XCUITests and parse results using the test-runner agent.
axiom-ui
Drive simulator UI with an external xcui or AXe installation when available.
flutter-test
Run Flutter/Dart tests, report failures, and incrementally fix test issues. Covers unit, widget, golden, and integration tests.
test-feature
Test a React Native feature on the running simulator/emulator. Verifies UI, user flows, and internal state. Generates a persistent Maestro test file.
run-workflow
Validate and establish the proven rn-dev-agent operating sequence before a real React Native journey — declared package manager and dependencies, read-only inventory, typed session recovery, one exclusive device, managed integration and Metro, only the requested proof, reverse-order cleanup.
feature-build
Build a complete mobile feature from description to running code with E2E tests. Orchestrates 6 phases - planning, implementation, testing, build-fix, quality gate, and verification. Auto-detects platform.