{"id":49868186,"url":"https://github.com/bentleypark/claude-code-mobile-spine","last_synced_at":"2026-05-15T04:01:57.870Z","repository":{"id":357725993,"uuid":"1233642449","full_name":"bentleypark/claude-code-mobile-spine","owner":"bentleypark","description":"Claude Code plugin marketplace bundling mobile-spine — scaffolds a meta-repo coordinating 4 subagents (api/pm/android/ios) for mobile teams whose Android, iOS, and Backend live in 3 separate repos.","archived":false,"fork":false,"pushed_at":"2026-05-14T02:45:37.000Z","size":95,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-14T03:34:19.667Z","etag":null,"topics":["android","claude-code","claude-code-plugin","ios","mobile-development","multi-repo","scaffold","subagent"],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/bentleypark.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-09T07:16:43.000Z","updated_at":"2026-05-14T01:44:56.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/bentleypark/claude-code-mobile-spine","commit_stats":null,"previous_names":["bentleypark/claude-code-mobile-spine"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/bentleypark/claude-code-mobile-spine","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bentleypark%2Fclaude-code-mobile-spine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bentleypark%2Fclaude-code-mobile-spine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bentleypark%2Fclaude-code-mobile-spine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bentleypark%2Fclaude-code-mobile-spine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bentleypark","download_url":"https://codeload.github.com/bentleypark/claude-code-mobile-spine/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bentleypark%2Fclaude-code-mobile-spine/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33053144,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-15T02:00:06.351Z","response_time":103,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","claude-code","claude-code-plugin","ios","mobile-development","multi-repo","scaffold","subagent"],"created_at":"2026-05-15T04:01:30.584Z","updated_at":"2026-05-15T04:01:57.857Z","avatar_url":"https://github.com/bentleypark.png","language":null,"funding_links":[],"categories":["Plugins"],"sub_categories":["All Plugins"],"readme":"# Claude Code — Mobile Spine\n\nA **Claude Code** scaffold for mobile teams whose Android, iOS, and Backend\nlive in **separate repos**. A lightweight meta-repo sits next to the three\nplatform repos and coordinates four specialized subagents, a 4-case\nclassification flow, three pre-checks, and a `/feat` slash-command interview\nthat drives the whole pipeline end to end.\n\nInstall the bundled Claude Code plugin and run `/mobile-spine:init`: a\n6-question interview writes a fully customized spine in one command.\n\n---\n\n## What you get\n\n- **Four subagents** with explicit responsibilities and allowed paths:\n  - `api-agent` — reads the backend, writes `_context/api/{domain}.md`\n  - `pm-agent` — reads Figma + API specs, writes `_tasks/{feature}.md`, opens GitHub issues per platform\n  - `android-agent` — implements in `../myapp-android/`\n  - `ios-agent` — implements in `../myapp-ios/`\n- **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).\n- **`/feat` slash command** — 4-item interview (feature + domain / case auto-detect + confirm / spec source / Figma state) → pm-agent prompt auto-built.\n- **4-case classification** for every new feature:\n  - A: existing endpoint / B: new endpoint in existing domain / C: new domain / D: backend not built\n- **Three pre-checks** before pm-agent writes anything:\n  - 1) staleness (`_context/api/{domain}.md` Updated vs backend HEAD)\n  - 2) scope vs context comparison (catches deprecated endpoints still in spec)\n  - 3) Figma availability (no inventing UI sections without MCP)\n- **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.\n- **Self-contained GitHub issue bodies** — the platform sessions never need to know mobile-spine exists.\n- **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.\n\n---\n\n## Why mobile-specific?\n\nMost existing Claude Code subagent collections are role-based catalogs\n(frontend / backend / SRE / data) and assume a single monorepo. Mobile teams\ntypically have 3 separate repos (Android, iOS, Backend), the same feature\nimplemented twice, Figma as the design source of truth, and back-and-forth\nwith backend specs. This scaffold encodes those constraints.\n\n---\n\n## Quick start\n\nInside any Claude Code session, install the plugin from this GitHub repo:\n\n```\n/plugin marketplace add bentleypark/claude-code-mobile-spine\n/plugin install mobile-spine@claude-code-mobile-spine\n```\n\nThen run the skill:\n\n```\n/mobile-spine:init\n```\n\nThe skill asks for: GitHub org · app prefix · base branch · Figma MCP\nnamespace · license holder · install location. It writes the scaffolded files\nand stops — `git init` and the GitHub remote stay your call.\n\nSee [plugins/mobile-spine/skills/init/README.md](./plugins/mobile-spine/skills/init/README.md)\nfor details.\n\nAfter scaffolding, run the week-0 verification (the scaffolded workspace's\n`SETUP.md` §9 → Week 0) before relying on the isolation model.\n\n\u003e **If you can't use the plugin** (e.g. older Claude Code, scripted setup):\n\u003e clone this repo, copy `plugins/mobile-spine/skills/init/templates/` next to\n\u003e your platform repos manually, and follow the substitution rules in\n\u003e [plugins/mobile-spine/skills/init/SKILL.md](./plugins/mobile-spine/skills/init/SKILL.md)\n\u003e §4-2 by hand. The skill exists precisely to automate these substitutions\n\u003e across `myorg`, `myapp`, the base branch, the Figma MCP namespace, and the\n\u003e LICENSE copyright — expect 10+ minutes of careful editing if you go this\n\u003e route.\n\n---\n\n## Repository layout\n\n### This repo (Claude Code plugin marketplace)\n\n```\nclaude-code-mobile-spine/\n├── README.md, LICENSE, .gitignore, CONTRIBUTING.md\n├── .github/{ISSUE_TEMPLATE/, PULL_REQUEST_TEMPLATE.md}\n├── .claude-plugin/\n│   └── marketplace.json                            ← marketplace catalog\n└── plugins/\n    └── mobile-spine/\n        ├── .claude-plugin/\n        │   └── plugin.json                         ← plugin manifest\n        └── skills/\n            └── init/\n                ├── SKILL.md                        ← the interactive skill\n                ├── README.md\n                └── templates/                      ← scaffold source the skill copies\n                    ├── CLAUDE.md, SETUP.md, README.md, LICENSE, .gitignore\n                    ├── .claude/{settings.json, agents/, commands/}\n                    ├── _context/{api/.gitkeep, design/.gitkeep, operations.md}\n                    └── _tasks/.gitkeep\n```\n\n### Scaffolded workspace (after running `/mobile-spine:init`)\n\n```\n~/dev/\n├── \u003cyour-app\u003e-spine/\n│   ├── CLAUDE.md, SETUP.md, LICENSE, .gitignore\n│   ├── README.md                                  ← workspace-flavored (operator guide, not this repo's README)\n│   ├── .claude/{settings.json, agents/, commands/}\n│   ├── _context/{api/.gitkeep, design/.gitkeep, operations.md}\n│   └── _tasks/.gitkeep\n├── \u003cyour-app\u003e-android/\n├── \u003cyour-app\u003e-ios/\n└── \u003cyour-app\u003e-backend/\n```\n\nThe scaffolded workspace's `README.md` is a short operator guide for the\nspine itself (next steps / what's in here / daily workflow / origin link),\ndistinct from this repo's outward-facing README you're reading now.\n\n---\n\n## Status\n\n- Targets Claude Code v2.1.32+ (requires plugin marketplace, `AskUserQuestion`, and subagent definitions).\n- Plugin name: `mobile-spine`. Skill name: `init`. Slash command: `/mobile-spine:init`.\n- Placeholder names used inside the bundled scaffold: `myorg`, `myapp`, `myapp-{android,ios,backend}` — substituted at scaffold time by the skill.\n- The skill defaults to `mcp__figma__*` for the Figma MCP namespace; pick a different option (or replace later) if your Figma MCP server uses a different namespace.\n\n---\n\n## License\n\n[MIT](./LICENSE)\n\n---\n\n## Acknowledgements\n\n- [Spine Pattern](https://tsoporan.com/blog/spine-pattern-multi-repo-ai-development/) — Titus Soporan, 2026-01-26\n- [Anthropic Claude Code](https://code.claude.com/) — subagent and slash-command primitives this scaffold builds on\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbentleypark%2Fclaude-code-mobile-spine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbentleypark%2Fclaude-code-mobile-spine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbentleypark%2Fclaude-code-mobile-spine/lists"}