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 skills/bentleypark/claude-code-mobile-spine/initnpx skills add bentleypark/claude-code-mobile-spine --skill initgit 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/skills/bentleypark/claude-code-mobile-spine/init)<a href="https://agentmods.dev/skills/bentleypark/claude-code-mobile-spine/init"><img src="https://agentmods.dev/badge/skills/bentleypark/claude-code-mobile-spine/init.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.00099 | $0.06893 |
| Opus 5 | $0.00049 | $0.03446 |
| Sonnet 5 | $0.00020 | $0.01379 |
| Haiku 4.5 | $0.00010 | $0.00689 |
Grade B, and why
init scanned grade B 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 5d 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.
Reads agent configuration directoriesmediumAgent snooping
.claude/, .codex/, .gemini/ hold keys, settings and other credentials a mod has no legitimate need for.
cat > "<TARGET>/.claude/mobile-spine.config.yaml" <<'EOF' How it starts
The opening of the file, as written. The whole thing — 461 lines — stays where its author put it; the contents beside it link to each section on GitHub.
mobile-spine:init
Bootstrap a new mobile-spine workspace by interviewing the user, then writing the user-customizable files into the chosen install location and a .claude/mobile-spine.config.yaml capturing the interview answers.
The static templates this skill consumes live next to this SKILL.md under ./templates/. They are workspace-data only — CLAUDE.md, SETUP.md, README.md, LICENSE, .gitignore, .claude/settings.json, a thin .claude/commands/feat.md stub, _context/operations.md, plus .gitkeep files for empty directories.
Not scaffolded — the four subagents (api-agent / pm-agent / android-agent / ios-agent) and the full /feat command logic are plugin primitives (live in plugins/mobile-spine/agents/ and plugins/mobile-spine/commands/, served globally by the plugin). The workspace's .claude/commands/feat.md is a thin delegation stub. The agents read .claude/mobile-spine.config.yaml at invocation to pick up the workspace's org / app / baseBranch / figma / copyright values. This means /plugin marketplace update claude-code-mobile-spine propagates agent + /feat improvements to every workspace automatically — without modifying any workspace-owned file.
Step 1 — Locate the templates directory
Resolve in three tiers. The harness should set $CLAUDE_PLUGIN_ROOT for
plugin-installed runs, but in practice this is not guaranteed (e.g. for
directory-typed marketplaces or older Claude Code versions). The cache and
working-tree fallbacks make the skill robust to either case.
TEMPLATES_DIR=""
# Tier 1 — plugin-installed via $CLAUDE_PLUGIN_ROOT (canonical when set).
# Skip when unset to avoid expanding to "/skills/init/templates" (absolute,
# never matches).
if [ -n "${CLAUDE_PLUGIN_ROOT:-}" ]; then
cand="$CLAUDE_PLUGIN_ROOT/skills/init/templates"
if [ -f "$cand/CLAUDE.md" ] && [ -f "$cand/SETUP.md" ]; then
TEMPLATES_DIR="$cand"
fi
fi
# Tier 2 — known plugin cache (versioned glob). Picks the first matching
# version under $HOME/.claude/plugins/cache/.../mobile-spine/<ver>/.
if [ -z "$TEMPLATES_DIR" ]; then
for cand in "$HOME/.claude/plugins/cache/claude-code-mobile-spine/mobile-spine"/*/skills/init/templates; do
if [ -f "$cand/CLAUDE.md" ] && [ -f "$cand/SETUP.md" ]; then
TEMPLATES_DIR="$cand"
break
fi
done
fi
# Tier 3 — source-tree fallbacks (plugin development from a working checkout).
if [ -z "$TEMPLATES_DIR" ]; then
for cand in \
"$(pwd)/plugins/mobile-spine/skills/init/templates" \
"$(pwd)/skills/init/templates" \
"$(pwd)/templates"; do
if [ -f "$cand/CLAUDE.md" ] && [ -f "$cand/SETUP.md" ]; then
TEMPLATES_DIR="$cand"
break
fi
done
fi
echo "TEMPLATES_DIR=$TEMPLATES_DIR"
What ships with it
13 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- README.md 3.4 KB
- smoke-test.sh 6.5 KB runs code
- templates/_context/api/.gitkeep 0 B
- templates/_context/design/.gitkeep 0 B
- templates/_context/operations.md 5.7 KB
- templates/_tasks/.gitkeep 0 B
- templates/.claude/commands/feat.md 526 B
- templates/.claude/settings.json 427 B
- templates/.gitignore 360 B
- templates/CLAUDE.md 15 KB
- templates/LICENSE 1.0 KB
- templates/README.md 3.7 KB
- templates/SETUP.md 29 KB
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.
- 5d ago First seen · 461 lines · 99 tokens per session scan B b617d14004bb
init is a skill published in the GitHub repository bentleypark/claude-code-mobile-spine (1 stars, last pushed 1mo ago), licensed MIT. It adds 99 tokens to every session and 6,893 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it B with 1 finding (reads agent configuration directories). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
cloudx-integrate
Integrate the CloudX SDK into a publisher app on any supported platform (Android, iOS, React Native, Flutter, Unity). Use when asked to integrate, add, install, or set up CloudX, CloudX ads, or CloudX mediation in an app, including alongside or replacing an existing mediation stack such as AppLovin MAX, LevelPlay, or…
review-mobile-pr
Expert Android & iOS PR review. Defaults to saving findings as a PENDING (draft) GitHub review — invisible until manually submitted — but will post them live instead if the user asks or says so when prompted. Use whenever the user asks to review, audit, or give feedback on a pull request touching Android (Kotlin…
aco
Drive a live Appium session from the shell with the aco CLI. Use when the user wants to interact with a running mobile app on an iOS simulator, Android emulator, or connected real device — tap, swipe, type, screenshot, read the screen/page source, find UI elements, switch to a WebView context, or call iOS/Android…
maestro-testing
Generate and manage Maestro test flows for mobile (Android, iOS) and web apps. Use this skill whenever the user mentions mobile testing, UI testing, end-to-end testing, Maestro flows, app automation, test generation from PRDs/specs/user stories, or wants to create/edit/debug YAML test flows. Trigger for any app…
flutter-cherry-pick
How to land a formal cherry-pick of a merged PR for the flutter/flutter repo stable or beta channel. Only use for flutter/flutter landed pull requests. Only use when the cherry pick request is into "stable", "beta" or a branch that has the format with flutter- . -candidate.0.
updating-android-sdk
Upgrades Flutter's Android SDK dependency to a new Android API version (or preview/canary release) in packages.txt, verifies CIPD tag uniqueness, and packages/uploads the binaries using createcipdpackages.sh across macOS, Linux, and Windows. Use whenever a user wants to pick up a new version of Android or upload…