Claude Code — Mobile Spine
A Claude Code scaffold for mobile teams whose Android, iOS, and Backend
live in separate repos. A lightweight meta-repo sits next to the three
platform repos and coordinates four specialized subagents, a 4-case
classification flow, three pre-checks, and a /feat slash-command interview
that drives the whole pipeline end to end.
Install the bundled Claude Code plugin and run /mobile-spine:init: a
6-question interview writes a fully customized spine in one command.
What you get
- Four subagents with explicit responsibilities and allowed paths:
api-agent — reads the backend, writes _context/api/{domain}.md
pm-agent — reads Figma + API specs, writes _tasks/{feature}.md, opens GitHub issues per platform
android-agent — implements in ../myapp-android/
ios-agent — implements in ../myapp-ios/
- Isolation model —
settings.json deny should block writes to the backend repo (verify in week 0 — see SETUP.md §9 Item 3); each agent's description + per-agent allowed-paths in the prompt body keep android↔ios mutually isolated (prompt-level — relies on the model's cooperation, not a hard technical block).
/feat slash command — 4-item interview (feature + domain / case auto-detect + confirm / spec source / Figma state) → pm-agent prompt auto-built.
- 4-case classification for every new feature:
- A: existing endpoint / B: new endpoint in existing domain / C: new domain / D: backend not built
- Three pre-checks before pm-agent writes anything:
-
- staleness (
_context/api/{domain}.md Updated vs backend HEAD)
-
- scope vs context comparison (catches deprecated endpoints still in spec)
-
- Figma availability (no inventing UI sections without MCP)
- Two-phase agent invocation — phase 1 implements + reports diff; phase 2 (only after explicit user approval) commits and opens a Draft PR. No surprise pushes.
- Self-contained GitHub issue bodies — the platform sessions never need to know mobile-spine exists.
- Phased adoption guide — week-0 verification (subagent reaches
../ paths, develop branch present, /remove-dir unsupported, settings deny works, Figma MCP namespace identified), week-1 api-agent only, week-2 + pm-agent, week-3 + android/ios.
Why mobile-specific?
Most existing Claude Code subagent collections are role-based catalogs
(frontend / backend / SRE / data) and assume a single monorepo. Mobile teams
typically have 3 separate repos (Android, iOS, Backend), the same feature
implemented twice, Figma as the design source of truth, and back-and-forth
with backend specs. This scaffold encodes those constraints.
Quick start
Inside any Claude Code session, install the plugin from this GitHub repo:
/plugin marketplace add bentleypark/claude-code-mobile-spine
/plugin install mobile-spine@claude-code-mobile-spine
Then run the skill:
/mobile-spine:init
The skill asks for: GitHub org · app prefix · base branch · Figma MCP
namespace · license holder · install location. It writes the scaffolded files
and stops — git init and the GitHub remote stay your call.
See plugins/mobile-spine/skills/init/README.md
for details.
After scaffolding, run the week-0 verification (the scaffolded workspace's
SETUP.md §9 → Week 0) before relying on the isolation model.
If you can't use the plugin (e.g. older Claude Code, scripted setup):
clone this repo, copy plugins/mobile-spine/skills/init/templates/ next to
your platform repos manually, and follow the substitution rules in
plugins/mobile-spine/skills/init/SKILL.md
§4-2 by hand. The skill exists precisely to automate these substitutions
across myorg, myapp, the base branch, the Figma MCP namespace, and the
LICENSE copyright — expect 10+ minutes of careful editing if you go this
route.
Repository layout
This repo (Claude Code plugin marketplace)
claude-code-mobile-spine/
├── README.md, LICENSE, .gitignore, CONTRIBUTING.md
├── .github/{ISSUE_TEMPLATE/, PULL_REQUEST_TEMPLATE.md}
├── .claude-plugin/
│ └── marketplace.json ← marketplace catalog
└── plugins/
└── mobile-spine/
├── .claude-plugin/
│ └── plugin.json ← plugin manifest
└── skills/
└── init/
├── SKILL.md ← the interactive skill
├── README.md
└── templates/ ← scaffold source the skill copies
├── CLAUDE.md, SETUP.md, README.md, LICENSE, .gitignore
├── .claude/{settings.json, agents/, commands/}
├── _context/{api/.gitkeep, design/.gitkeep, operations.md}
└── _tasks/.gitkeep
Scaffolded workspace (after running /mobile-spine:init)