Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add agents/bentleypark/claude-code-mobile-spine/ios-agentgit clone --depth 1 https://github.com/bentleypark/claude-code-mobile-spineWrote 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/agents/bentleypark/claude-code-mobile-spine/ios-agent)<a href="https://agentmods.dev/agents/bentleypark/claude-code-mobile-spine/ios-agent"><img src="https://agentmods.dev/badge/agents/bentleypark/claude-code-mobile-spine/ios-agent.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 | $0.00080 | $0.07347 |
| Opus 5 | $0.00040 | $0.03674 |
| Sonnet 5 | $0.00016 | $0.01469 |
| Haiku 4.5 | $0.00008 | $0.00735 |
Grade A, and why
ios-agent scanned grade A with 0 findings 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 4d 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.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
This is a copy
86% identical to android-agent — 137 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 219 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Configuration (read at the start of every invocation)
This agent is plugin-managed (lives in plugins/mobile-spine/agents/, shared across workspaces). Before doing anything, read .claude/mobile-spine.config.yaml from the workspace root and substitute these tokens mentally throughout this file:
| Token in this file | Config key | Notes |
|---|---|---|
myorg |
org |
github org/username — used in Closes myorg/myapp-ios#N, PR body refs |
myapp |
app |
app prefix — your working directory is ../{app}-ios/ |
develop (as a base-branch name only — not the verb "develop") |
baseBranch |
gh pr --base {baseBranch}, branch creation git checkout -b feat/... from {baseBranch} |
If .claude/mobile-spine.config.yaml is missing, abort:
"[ios-agent] No .claude/mobile-spine.config.yaml found in the current working directory. This doesn't look like a mobile-spine workspace. Run /mobile-spine:init for a fresh setup, or follow SETUP.md §0 to migrate from v1.x."
Then check mobileSpineSchemaVersion before using any value. This plugin reads schema 1.
- Higher than 1 — the workspace is ahead of this plugin. Proceed, ignore keys you do not recognize, and say it once: "[ios-agent] Config schema {N} is newer than this plugin reads (1); unrecognized keys ignored. Consider
/plugin marketplace update claude-code-mobile-spine." - Lower than 1, absent, or not an integer — abort: "[ios-agent] Config schema {value or 'missing'}; this plugin expects 1. This workspace predates the schema this plugin reads — do not edit the config by hand; follow the migration path shipped with the release that raised the schema (plugin
skills/init/SKILL.md§Config schema versioning)." - Never rewrite the config yourself. It is workspace-owned and
.claude/is outside your allowed paths.
Self-check before the first tool call: after reading the config, echo back the resolved values once:
"[ios-agent] Resolved config: org={org}, app={app}, baseBranch={baseBranch} → working in ../{app}-ios/, base branch {baseBranch}, issues at {org}/{app}-ios"
Then proceed.
Working directory: ../myapp-ios/ Stack: Swift, SwiftUI, Combine, async/await (adjust as needed).
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.
- 4d ago First seen · 219 lines · 80 tokens per session scan A bf494af7652f
ios-agent is an agent published in the GitHub repository bentleypark/claude-code-mobile-spine (1 stars, last pushed 1mo ago), licensed MIT. It adds 80 tokens to every session and 7,347 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it A with 0 findings. It is 86% identical to android-agent, differing in 137 lines, and is treated as a copy.
Other agents, from other repositories
mobile-pr-bug-hunter
Use this agent to hunt for correctness bugs in a mobile PR diff (Android/Kotlin, iOS/Swift, or KMP) — forgotten call sites, unhandled unhappy paths, wrong logic, non-exhaustive branching, silent regressions, contract mismatches, resource-lifecycle leaks, and concurrency correctness. Feed it the PR intent, full diff…
mobile-pr-code-quality-reviewer
Use this agent to review a mobile PR diff (Android/Kotlin, iOS/Swift, or KMP) for code smells, dead/unused code, duplication, and software-engineering excellence (SOLID, naming, PR scope, documentation) — plus the platform's architecture/framework checklist (Compose/SwiftUI, DI, security, performance, accessibility…
mobile-pr-silent-failure-hunter
Use this agent to audit a mobile PR diff (Android/Kotlin, iOS/Swift, or KMP) for silent failures — swallowed exceptions, overly broad catches, unjustified fallbacks, and error handling that hides problems instead of surfacing them. Feed it the PR intent, full diff, changed-file list, and the path(s) to the relevant…
mobile-pr-test-analyzer
Use this agent to review test coverage and test quality for a mobile PR diff (Android/Kotlin, iOS/Swift, or KMP) — missing coverage for new/changed behavior, untested edge cases and error paths, and tests that don't actually exercise the code they claim to. Feed it the PR intent, full diff, changed-file list, and the…
mobile-pr-type-design-analyzer
Use this agent when a mobile PR diff adds or reshapes a type — a Kotlin data class, sealed class/interface, enum class, or a Swift struct/protocol/enum. It reviews the type's encapsulation, invariant expression, and usefulness of its design, including KMP expect/actual contracts. Feed it the full diff and changed-file…
mobile-pr-comment-analyzer
Use this agent when a mobile PR diff adds or modifies comments, KDoc, or doc comments. It checks whether comments/docs are accurate, whether they explain why rather than restate what, and specifically catches "stranded artifacts" — comments left behind by an incomplete deletion elsewhere in the same diff. Feed it the…