Drive the nativeapptemplate-agent
generator from inside Claude Code. Describe an app in one sentence; the plugin
generates a validated three-platform implementation (Rails 8.1 API + SwiftUI iOS
- Jetpack Compose Android), then reads the validation report back to you in plain language.
Two skills: generate → validate → explain, and an interactive walk the
running app layer over mobile-mcp.
plugin/
├── .claude-plugin/plugin.json # manifest
├── .mcp.json # bundles the generator MCP server + mobile-mcp
├── skills/
│ ├── generate-app/SKILL.md # generate → validate → explain
│ └── walk-app/SKILL.md # launch on a device, walk the UI with mobile-mcp
└── README.md
-
/nativeapptemplate-agent:generate-app <spec>— runs the generator on your spec, parsesout/<slug>/report.json, and summarizes per-platform / per-layer results, the domain mapping, and any failures with the specific evidence and the next move. -
/nativeapptemplate-agent:walk-app <slug> ios|android— launches a generated app on a booted simulator/emulator and drivesmobile-mcpto capture the home screen and walk the UI conversationally, surfacing screenshots inline. Needs a booted device + an installed build (easiest via aNATIVEAPPTEMPLATE_VISUAL=1generate run — see the skill for details). -
Bundled MCP servers (
/mcpto check): the generator server (nativeapptemplate-agent, wired asnpx -y -p nativeapptemplate-agent@latest nativeapptemplate-agent-mcp) andmobile-mcp(@mobilenext/mobile-mcp@0.0.54) for device automation.Two non-obvious bits in that generator command: the MCP entry point is a bin of the
nativeapptemplate-agentpackage, not its own package, so-pis required; and the@latestis load-bearing — without a version spec,npxresolves the local package when the server is spawned from inside the agent's own repo (cwd shadowing) and fails withcommand not found.@latestforces registry resolution regardless of cwd.mobile-mcpis pinned to 0.0.54 on purpose: 0.0.55+ closes the stdio connection on startup (Connection closed~6s in), so@latestfails. This matches the agent's own pin insrc/mobile.ts. If you have a globalmobile-mcpconfig on@latest, it'll show ✘ failed in/mcp— this bundled, pinned one is the working copy (different command, so it won't dedup against your global).
- Node.js 22+ and an
ANTHROPIC_API_KEYwith access toclaude-opus-4-7. - For the generated apps to validate, the substrate env vars
(
NATIVEAPPTEMPLATE_API/_IOS/_ANDROID) must point at the substrate repos, as documented in the main README. The plugin reads them from your environment and does not change them.
# from the agent repo root
claude --plugin-dir ./pluginThen in the session:
/nativeapptemplate-agent:generate-app a walk-in queue for a barbershop
After editing plugin files, run /reload-plugins to pick up changes. Confirm the
skill is loaded via /help and the MCP server via /mcp.
The repo ships a marketplace manifest (.claude-plugin/marketplace.json) that points at
this plugin/ directory. Add the marketplace, then install:
/plugin marketplace add nativeapptemplate/nativeapptemplate-agent
/plugin install nativeapptemplate-agent@nativeapptemplate
nativeapptemplate is the marketplace name; nativeapptemplate-agent is the plugin. Once
installed, the skills are available as /nativeapptemplate-agent:generate-app and
/nativeapptemplate-agent:walk-app (and /mcp shows both bundled servers). The CLI forms
are claude plugin marketplace add nativeapptemplate/nativeapptemplate-agent and
claude plugin install nativeapptemplate-agent@nativeapptemplate.