mobium
CLAUDE.md2 starsChanged 34 days agoApache-2.0View on GitHub
Mobile app automation for AI agents and people: native, hybrid and cross-platform apps, and pages in a mobile browser or installed as a PWA, on Android emulators and phones, iOS simulators and iPhones — one Go binary, driven from a CLI, an MCP server, or five language clients. docs/APP-TYPES.md says which app types were driven and how; a claim about one goes there too. Mutatis mutandis: the existing thing with the necessary changes, never a parallel implementation. And the device…
In this repositoryOne other file it gives its agents.
- mobile-checkSkill
The file
We split this CLAUDE.md into the rules it gives an agent
5 rules. About 0 are common, 2 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈2
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 43
Run make ci before committing.
- Very specific: line 44
Every error has a code: mobiumerr.New(mobiumerr.<Code>, ...), never a bare fmt.Errorf
- Very specific: line 46
After rebuilding, mobium daemon stop — a running daemon serves the old binary.
- Distinctive: line 50
A real phone is somebody's: Never print its private data — location, notifications, network names, the device's name — assert whether, not …
- Distinctive: line 56
Use RFC 2119 keywords (MUST, SHOULD, MAY) for obligations.
≈ “Common” is an estimate: at least 1 in 5 of the 26,980 CLAUDE.md files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
CLAUDE.md
Mobile app automation for AI agents and people: native, hybrid and cross-platform apps, and pages in a mobile browser or installed as a PWA, on Android emulators and phones, iOS simulators and iPhones — one Go binary, driven from a CLI, an MCP server, or five language clients. docs/APP-TYPES.md says which app types were driven and how; a claim about one goes there too.
Key Docs
- CONTRIBUTING.md — the rules, and why each exists. Read it before changing code
- docs/DEVELOPMENT.md — from a fresh clone to a passing
make ci, and driving a device - docs/ARCHITECTURE.md — every layer, and one call traced end to end
- docs/API.md and docs/FLAGS.md — every tool and argument, generated
- docs/CHALLENGES.md — every defect and what it taught. Read before asserting platform behavior
- docs/guides/ — how to use each surface; examples/drivers/PROTOCOL.md — the driver protocol
- docs/ROADMAP.md — what is next
Tech Stack
- Go: the
mobiumbinary, no runtime dependencies - The UiAutomator2 server (Android) and WebDriverAgent (iOS), driven directly over HTTP — no Node
- CDP (Android WebViews) and WebKit's Remote Web Inspector (iOS WebViews)
- MCP server on stdio (
mobium mcp) - Clients: Go, Python, JavaScript, Java, .NET — each spawns
mobium pipe
Design Philosophy
Mutatis mutandis: the existing thing with the necessary changes, never a parallel implementation. And the device is the authority, not the reasoning about it:
- Measure, don't reason. Most of the defects in docs/CHALLENGES.md were found only by running on a device. A test built from an assumption passes with the assumption
- A zero is not a result until it has been seen to come back non-zero. Give every check a positive control
- Refuse rather than approximate, and report only what was checked
- A remedy in an error must be one that works — it will be followed
Rules
- Run
make cibefore committing. After adding a tool, a flag or a schema property, runmake api flagsand add it everywhere — CLI, MCP schema, all five clients (CONTRIBUTING.md, "Adding a tool, a flag or an error") - Every error has a code:
mobiumerr.New(mobiumerr.<Code>, ...), never a barefmt.Errorf - The CLI implements no behavior; it calls a tool. Behavior lives in
internal/agent - After rebuilding,
mobium daemon stop— a running daemon serves the old binary. Stop the daemon before shutting a device down, never after (docs/SHUTDOWN.md) - Clients spawn
mobium pipe, nevermobium mcp - A defect gets an entry in docs/CHALLENGES.md — how it was found, what it broke, how it is handled — and the counts at its top and in docs/RELEASE-CHECKLIST.md move with it
- Claims about a device are checked on a device: a
docs/checks/script, or a measurement you can show. A guide's commands and output are ones that actually ran - A real phone is somebody's. Never print its private data — location, notifications, network names, the device's name — assert whether, not what. Read a check for device-wide changes before running it on a phone, and put back what it changes
- American spelling everywhere;
make cienforces it
Writing Style
- Write short sentences.
- Use RFC 2119 keywords (MUST, SHOULD, MAY) for obligations.
- Commits MUST have an imperative subject. The body MUST carry only facts the diff cannot show: what was measured, on which device, and what was ruled out.
- Comments MUST only clarify code that needs it. Comments MUST NOT narrate. Existing long comment blocks are not license to add more.
- A defect's story belongs in its docs/CHALLENGES.md entry. Code and commits SHOULD cite the entry by number rather than retell it.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

