MobileBuildMCP
CLAUDE.md6.5k starsChanged 39 days agoMITView on GitHub
We split this CLAUDE.md into the rules it gives an agent
27 rules. About 0 are common, 18 are distinctive, and 9 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈18
Distinctive · estimate
This author's own choices. Worth a look.
9
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 5
Check node_modules for external API type definitions instead of guessing
- Distinctive: line 7
NEVER remove or downgrade code to fix type errors from outdated dependencies.
- Distinctive: line 8
Always ask before removing functionality or code that appears to be intentional
- Distinctive: line 11
Verify standard quality commands include every changed path and exercise exact entry points and argument variants.
- Distinctive: line 18
NEVER commit unless user asks
- Distinctive: line 22
Always read all comments on the issue -
- Very specific: line 28
When working on skill sources in skills/, use the skill-creator skill workflow.
- Very specific: line 29
After modifying any skill source, run npx skill-check <skill-directory> and address all errors/warnings before handoff.
- Very specific: line 30
Before handoff, run the matching manual Warden review for high-risk changes: runtime/CLI/daemon boundaries → …
- Distinctive: line 35
Use workspace-key scoped directories for workspace-owned state.
- Very specific: line 36
Do not store runtime state under ~/.mobilebuildmcp.
- Distinctive: line 37
Use shared lock and atomic-write helpers for mutable shared files.
- Distinctive: line 38
Prefer one-record-per-file registries over shared aggregate files.
- Distinctive: line 43
Keep answers short and concise
- Distinctive: line 44
No emojis in commits, issues, PR comments, or code
- Distinctive: line 45
No fluff or cheerful filler text
- Distinctive: line 49
Do not commit transient investigation notes, prompt exports, or scratch analysis docs after the work is complete.
- Distinctive: line 50
If an investigation leaves unresolved follow-up work, move it to a GitHub issue instead of preserving the transient doc in the branch.
- Very specific: line 57
Use these sections under ## [Unreleased]:
- Very specific: line 64
Before adding entries, read the full [Unreleased] section to see which subsections already exist
- Very specific: line 67
NEVER modify already-released version sections (e.g., ## [0.12.2])
- Distinctive: line 69
NEVER update snapshot fixtures unless asked to do so, these are integration tests, on failure assume code is wrong before questioning the …
- Very specific: line 88
When running long test suites (snapshot tests, smoke tests), ALWAYS write full output to a log file and read it afterwards.
- Distinctive: line 90
If you need a summary, read the log file and grep/filter it — the full output is always preserved.
- Very specific: line 93
Do NOT just kill the run — first inspect the process tree (ps -ef | grep -E "vitest|xcodebuild|simctl|devicectl") to identify what's stuck.
- Distinctive: line 96
When asked to review changes or test failures, focus on regressions: behavior changes caused by the branch.
- Distinctive: line 99
NEVER use sed/cat to read a file or a range of a file.
≈ “Common” is an estimate: at least 1 in 5 of the 25,680 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
Development Rules
Code Quality
- No
anytypes unless absolutely necessary - Check node_modules for external API type definitions instead of guessing
- NEVER use inline imports - no
await import("./foo.js"), noimport("pkg").Typein type positions, no dynamic imports for types. Always use standard top-level imports. - NEVER remove or downgrade code to fix type errors from outdated dependencies; upgrade the dependency instead
- Always ask before removing functionality or code that appears to be intentional
- Do not add fallback behavior by default. If required context, configuration, runtime state, or dependencies are missing, fail loudly and fix the caller/setup instead of silently switching to an alternate path. Add a fallback only when explicitly requested or when it is a documented product requirement.
- Review the complete merge-base diff and trace changed or reused helper contracts, including error and sentinel returns, through callers, consumers, tests, and operational configuration.
- Verify standard quality commands include every changed path and exercise exact entry points and argument variants; validate explicitly when they do not.
- For asynchronous, workflow, or process-boundary changes, enumerate lifecycle states, retries, supersession, and race transitions; test terminal outcomes and missing or optional metadata.
Test Conventions
- Snapshot tests (
*.snapshot.test.ts) must only assert generated tool output against fixtures. Move helper, parser, schema, setup, or behavior assertions to non-snapshot unit/integration tests.
Commands
- NEVER commit unless user asks
GitHub
When reading issues:
- Always read all comments on the issue
Tools
- GitHub CLI for issues/PRs
- MCP
readOnlyHintdescribes whether a tool mutates host/project state such as files, build artifacts, configuration, or external services. Simulator HID/UI actions that only tap, type, press, or gesture inside the simulator may remainreadOnlyHint: true; do not flip them tofalsemerely because app UI state changes. - CLI design note: do not rely on CLI session-default writes. CLI is intentionally deterministic for CI/scripting and should use explicit command arguments as the primary input surface.
- When working on skill sources in
skills/, use theskill-creatorskill workflow. - After modifying any skill source, run
npx skill-check <skill-directory>and address all errors/warnings before handoff. - Before handoff, run the matching manual Warden review for high-risk changes: runtime/CLI/daemon boundaries →
mobilebuildmcp-runtime-boundary-review; test infrastructure or harnesses →mobilebuildmcp-test-boundary-review; tool manifests, schemas, or contracts →mobilebuildmcp-tool-contract-review. Invoke only applicable skills withwarden --skill <name>.
Multi-process filesystem state
- MobileBuildMCP explicitly supports multiple concurrent MCP server, daemon, CLI, test, and helper processes for the same or different workspaces.
- Shared filesystem state under
~/Library/Developer/MobileBuildMCPmust be multi-process safe. - Use workspace-key scoped directories for workspace-owned state.
- Do not store runtime state under
~/.mobilebuildmcp;.mobilebuildmcp/config.yamlis only project configuration. - Use shared lock and atomic-write helpers for mutable shared files.
- Prefer one-record-per-file registries over shared aggregate files.
- Cleanup must verify ownership before deleting shared artifacts.
- User-facing artifact/log paths in final text or structured output must use
displayPath()fromsrc/utils/build-preflight.ts, so paths are cwd-relative when possible or~/...instead of absolute home paths. Keep stored files at their real absolute paths; only normalize response/display values.
Style
- Keep answers short and concise
- No emojis in commits, issues, PR comments, or code
- No fluff or cheerful filler text
- Technical prose only, be kind but direct (e.g., "Thanks @user" not "Thanks so much @user!")
Docs
- Do not commit transient investigation notes, prompt exports, or scratch analysis docs after the work is complete.
- If an investigation leaves unresolved follow-up work, move it to a GitHub issue instead of preserving the transient doc in the branch.
- Structured output JSON schemas are auto-published to the website/public schema mirror when merged; do not manually update public schema copies unless explicitly asked.
Changelog
Location: CHANGELOG.md
Format
Use these sections under ## [Unreleased]:
### Added- New features### Changed- Changes to existing functionality### Fixed- Bug fixes### Removed- Removed features
Rules
- Before adding entries, read the full
[Unreleased]section to see which subsections already exist - New entries ALWAYS go under
## [Unreleased]section - Append to existing subsections (e.g.,
### Fixed), do not create duplicates - NEVER modify already-released version sections (e.g.,
## [0.12.2]) - Each version section is immutable once released
- NEVER update snapshot fixtures unless asked to do so, these are integration tests, on failure assume code is wrong before questioning the fixture
Attribution
- Internal changes (from issues):
Fixed foo bar ([#123](https://github.com/getsentry/MobileBuildMCP/issues/123)) - External contributions:
Added feature X ([#456](https://github.com/getsentry/MobileBuildMCP/pull/456) by [@username](https://github.com/username))
Rendering and Streaming Contract
- Streaming fragments are transient live-progress output only. They may be displayed while a tool is running, but MUST NOT provide final settled MCP/JSON/CLI text.
- Final settled output MUST render from the final structured/domain result and next-step metadata. If final output needs data, add it to the final result type instead of reading it from fragments.
- Streaming-capable renderers may observe fragment callbacks only for live progress. Fragment handling must not affect final structured output or final settled text.
Error Handling
- Structured errors (domain results with
didError) are for domain errors only: failures in the user's build/test/device/simulator workflow (compile errors, test failures, missing destinations, etc.). - System errors with the MCP server or CLI itself (invalid internal state, unresolvable configuration, infrastructure failures) must NOT be wrapped in structured domain results — let them surface as runtime tool errors so they are clearly distinguishable from workflow outcomes.
Test Execution Rules
- NEVER run the snapshot or smoke test suites without explicit user permission. They are expensive (~7 min baseline, spawn real
xcodebuild/simctl/devicectlprocesses and can wedge). This coversnpm run test:snapshot,npm run test:smoke, and any directvitest run --config vitest.snapshot.config.ts/vitest.smoke.config.tsinvocation. Ask first, then run only if the user agrees. - The default unit suite (
npm test/vitest run),npm run typecheck,npm run lint, andnpm run buildare cheap and may be run freely without asking. - When running long test suites (snapshot tests, smoke tests), ALWAYS write full output to a log file and read it afterwards. NEVER pipe through
tailorgrepdirectly — that loses output you may need to debug failures. - Pattern:
DEVICE_ID=... npm run test:snapshot 2>&1 | tee /tmp/snapshot-results.txtthen read/tmp/snapshot-results.txtwith the native read tool. - If you need a summary, read the log file and grep/filter it — the full output is always preserved.
- Snapshot test command:
DEVICE_ID=<YOUR_DEVICE_ID> npm run test:snapshot - Snapshot suite expected duration: ~7 min baseline (measured at 423s). Anything longer than ~10 min should be treated as a likely hang, not a slow run.
- Do NOT just kill the run — first inspect the process tree (
ps -ef | grep -E "vitest|xcodebuild|simctl|devicectl") to identify what's stuck. - Common hang causes: locked physical device, stale simulator state,
devicectl diagnosewaiting for password, orphaned daemon process. - Capture what you find before killing, so the root cause can be fixed rather than papered over.
- Do NOT just kill the run — first inspect the process tree (
- When asked to review changes or test failures, focus on regressions: behavior changes caused by the branch. Do not treat known/acceptable test flakes, environment setup issues, or nondeterministic tool output churn as regressions unless explicitly asked to investigate them.
CRITICAL Tool Usage Rules CRITICAL
- NEVER use sed/cat to read a file or a range of a file. Always use the native read tool.
- You MUST read every file you modify in full before editing.
Trending
More talk lately.thin dataabout the whole repository
Who's talking about getsentry/MobileBuildMCP
- Dawn-Technology/aicelerate“AIMate iOS - Plugins”GitHub · Oct 29, 2026
- sudosubin/agents.nix“agent-skills.github.getsentry.mobilebuildmcp: init at 2.7.1”GitHub · Oct 3, 2026
- ProSkillsMD/proskills“[Candidate] getsentry/mobilebuildmcp/.agents/skills/mobilebuildmcp-packaging-resource-review - …”GitHub · Oct 3, 2026
- ProSkillsMD/proskills“[Candidate] getsentry/mobilebuildmcp/.agents/skills/mobilebuildmcp-docs-release-review - …”GitHub · Oct 3, 2026
- ProSkillsMD/proskills“[Candidate] getsentry/mobilebuildmcp/.agents/skills/mobilebuildmcp-docs-command-review - …”GitHub · Oct 3, 2026
The biggest 5 of 7 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 7
Talked about on GitHub (7 times).
On GitHub · 7
- Oct 29, 2026AIMate iOS - Plugins — Dawn-Technology/aicelerate0 reactions
- Oct 3, 2026agent-skills.github.getsentry.mobilebuildmcp: init at 2.7.1 — sudosubin/agents.nix0 reactions
- Oct 3, 2026[Candidate] getsentry/mobilebuildmcp/.agents/skills/mobilebuildmcp-packaging-resource-review - mobilebuildmcp-packaging-resource-review — ProSkillsMD/proskills0 reactions · 1 comment
- Oct 3, 2026[Candidate] getsentry/mobilebuildmcp/.agents/skills/mobilebuildmcp-docs-release-review - mobilebuildmcp-docs-release-review — ProSkillsMD/proskills0 reactions · 1 comment
- Oct 3, 2026[Candidate] getsentry/mobilebuildmcp/.agents/skills/mobilebuildmcp-docs-command-review - mobilebuildmcp-docs-command-review — ProSkillsMD/proskills0 reactions · 1 comment
2 more on GitHub
- Sep 25, 2026Fix 56 drifted catalog URLs from the staleness sweep — assafbar2/agentswitchboard.dev0 reactions · 1 comment
- Sep 25, 2026feat(mobilebuild-mcp): MobileBuildMCP (formerly XcodeBuildMCP), pinned at 2.7.1, Sentry off — forgeprint/forgeprint0 reactions
Other versions2 projects use a version of this.
Word for word · 2
- getsentry/XcodeBuildMCP★ 6.5k100% same
- cameroncooke/XcodeBuildMCP★ 6.5k100% same
Edited · 0
None found.
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository17 other files it gives its agents.
- AGENTS.mdAGENTS.md
- example_projects/iOS_Calculator/AGENTS.mdAGENTS.md
- example_projects/Weather/AGENTS.mdAGENTS.md
- example_projects/iOS/.cursor/rules/errors.mdcCursor rule
- mobilebuildmcp-docs-command-reviewSkill
- mobilebuildmcp-docs-release-reviewSkill
- mobilebuildmcp-packaging-resource-reviewSkill
- mobilebuildmcp-rendering-streaming-reviewSkill
- mobilebuildmcp-runtime-boundary-reviewSkill
- mobilebuildmcp-snapshot-fixture-reviewSkill
- mobilebuildmcp-structured-output-reviewSkill
- mobilebuildmcp-test-boundary-reviewSkill
- mobilebuildmcp-tool-contract-reviewSkill
- wardenSkill
- warden-sweepSkill
- mobilebuildmcp-cliSkill
- mobilebuildmcpSkill
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.

