feat(plugin): Claude Code plugin skeleton — generate-app orchestration skill#100
Merged
Merged
Conversation
…n skill First cut of the Claude Code plugin (ROADMAP Post-v0.1 backlog → in progress on epic/claude-code-plugin). Minimal end-to-end: generate → validate → explain. - plugin/.claude-plugin/plugin.json — manifest (name nativeapptemplate-agent). - plugin/skills/generate-app/SKILL.md — orchestration skill: resolve spec, run the CLI (local dist or npx) with --report-format=both --exit-zero, parse out/<slug>/report.json, and summarize per-platform layer1/2(/3) + reviewer parity + domain mapping; on failure surface the specific findings and the next move (--rename, NATIVEAPPTEMPLATE_REPAIR, NATIVEAPPTEMPLATE_VISUAL). The mobile-mcp home-screen walk-through is explicitly deferred to phase 2. - plugin/.mcp.json — bundles the generator MCP server. - plugin/README.md — local install (claude --plugin-dir ./plugin) + usage. Fix a propagated invocation bug: there is no npm package `nativeapptemplate-agent-mcp` (it's a *bin* of `nativeapptemplate-agent`), so `npx -y nativeapptemplate-agent-mcp` 404s. Correct form, verified against the published 0.2.1 with a real MCP initialize handshake from a clean dir: `npx -y -p nativeapptemplate-agent nativeapptemplate-agent-mcp`. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
4 tasks
dadachi
added a commit
that referenced
this pull request
May 24, 2026
…ion surface (#105) * feat(plugin): Claude Code plugin skeleton — generate-app orchestration skill (#100) First cut of the Claude Code plugin (ROADMAP Post-v0.1 backlog → in progress on epic/claude-code-plugin). Minimal end-to-end: generate → validate → explain. - plugin/.claude-plugin/plugin.json — manifest (name nativeapptemplate-agent). - plugin/skills/generate-app/SKILL.md — orchestration skill: resolve spec, run the CLI (local dist or npx) with --report-format=both --exit-zero, parse out/<slug>/report.json, and summarize per-platform layer1/2(/3) + reviewer parity + domain mapping; on failure surface the specific findings and the next move (--rename, NATIVEAPPTEMPLATE_REPAIR, NATIVEAPPTEMPLATE_VISUAL). The mobile-mcp home-screen walk-through is explicitly deferred to phase 2. - plugin/.mcp.json — bundles the generator MCP server. - plugin/README.md — local install (claude --plugin-dir ./plugin) + usage. Fix a propagated invocation bug: there is no npm package `nativeapptemplate-agent-mcp` (it's a *bin* of `nativeapptemplate-agent`), so `npx -y nativeapptemplate-agent-mcp` 404s. Correct form, verified against the published 0.2.1 with a real MCP initialize handshake from a clean dir: `npx -y -p nativeapptemplate-agent nativeapptemplate-agent-mcp`. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * feat(plugin): phase 2 — walk-app skill (mobile-mcp UI walkthrough) (#102) Second skill on the plugin epic: launch a generated app on a booted iOS sim / Android emulator and walk its UI conversationally via mobile-mcp — capture the home screen, list elements, tap through a flow, screenshots inline. - plugin/skills/walk-app/SKILL.md — resolve out/<slug> + platform; get the app onto a device (recommended: a NATIVEAPPTEMPLATE_VISUAL=1 generate run does the build+install+launch; manual xcodebuild/gradlew path documented); connect mobile-mcp; capture + walk; stay interactive; diagnose the known device-layer failure modes. Honest about the booted-device + installed-build prerequisites (the flakiest link). - plugin/.mcp.json — bundle @mobilenext/mobile-mcp alongside the generator server. - generate-app SKILL.md — hand-off now points at walk-app instead of "not wired". - plugin/README.md — document both skills + both MCP servers. - plugin.json — 0.1.0 → 0.2.0. Android emulator guidance follows the house rule: boot via Android Studio Device Manager, not CLI `emulator -avd` (Studio owns adb here). Device-dependent paths are untested from here by design — needs a booted sim/emulator on the dev machine. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * fix(plugin): pin generator MCP server to @latest (cwd-shadow resolution bug) (#103) The bundled generator MCP server failed to start with `sh: nativeapptemplate-agent-mcp: command not found` (confirmed in Claude's mcp-logs). MCP servers spawn with cwd = the project root; when that root is the `nativeapptemplate-agent` package's own repo, `npx -p nativeapptemplate-agent` resolves the *local* package and the bin isn't on the path it expects. Pinning `nativeapptemplate-agent@latest` forces registry resolution regardless of cwd — verified with a live MCP initialize handshake from inside the repo. README updated to document why both `-p` and `@latest` are required. Note: the `mobile-mcp` "✘ failed" seen alongside is unrelated — it's the user's identical global mobile-mcp config (a standalone third-party package, no cwd shadowing), whose connection closed during first-run npx download; it stays alive when run standalone. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * fix(plugin): pin bundled mobile-mcp to 0.0.54 (0.0.55+ closes stdio) (#104) The bundled mobile-mcp server (and the user's identical global one) showed ✘ failed in /mcp: mobile-mcp 0.0.55+ closes the stdio connection on startup (observed: "Connection closed" ~6s in, zero output), so `@latest` (now 0.0.56) never completes the MCP handshake. 0.0.54 starts cleanly ("mobile-mcp server running on stdio" + valid initialize response) — verified with a live handshake. This is the same conclusion the agent core already reached: src/mobile.ts pins DEFAULT_ARGS to @mobilenext/mobile-mcp@0.0.54 "(was @latest). mobile-mcp 0.0.55+ closes the stdio …". The plugin now matches that pin. Side benefit: pinning makes the bundled command differ from a typical global `@latest` mobile-mcp config, so Claude won't dedup the broken global over our working bundled one. Note (out of scope, separate): CLAUDE.md's Stack section still lists `npx -y @mobilenext/mobile-mcp@latest`, which is stale/misleading given this pin. Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * docs: flip Claude Code plugin to shipped (3 surfaces) + fix mobile-mcp pin The plugin epic is built and verified end-to-end (generate-app + walk-app), so update the docs from "deferred/planned" to shipped: - README: plugin section now documents both skills + `claude --plugin-dir ./plugin`. - CLAUDE.md: Packaging → three surfaces (CLI + MCP + plugin), with the load-bearing .mcp.json pins noted. Stack: mobile-mcp `@latest` → `@0.0.54` (the stale advice that 0.0.55+ closes stdio — the bug that cost real debugging). - ROADMAP: Track 1 third surface = plugin; Post-v0.1 "Claude Code plugin" section flipped to Status: shipped, recording that the skill carried the value without dispatch() streaming (as predicted). - SPEC addendum: §8 row + structural bullet → CLI + MCP + plugin (three). - walk-app SKILL.md: add the iOS WebDriverAgent (:8100) prerequisite; Android needs none (adb-direct), confirmed on the Pixel emulator walk. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
First cut of the Claude Code plugin, targeting the epic branch. Minimal end-to-end per the agreed scope: generate → validate → explain. The
mobile-mcphome-screen walkthrough is deferred to phase 2.What's here (
plugin/).claude-plugin/plugin.json/nativeapptemplate-agent:generate-app.skills/generate-app/SKILL.md--report-format=both --exit-zero), parsesout/<slug>/report.json, summarizes per-platform Layer 1/2(/3) + reviewer parity + domain mapping, and on failure surfaces the specific findings (layer1.findings,layer2.stderrTail,reviewer.diffs) plus the next move (--rename,NATIVEAPPTEMPLATE_REPAIR,NATIVEAPPTEMPLATE_VISUAL)..mcp.jsonREADME.mdclaude --plugin-dir ./plugin) + usage.Plugin format verified against current Claude Code docs (
.claude-plugin/plugin.json,skills/<name>/SKILL.md,.mcp.json,--plugin-dirlocal testing).Bug fixed in passing
There is no npm package
nativeapptemplate-agent-mcp— it's a bin of thenativeapptemplate-agentpackage — so the long-documentednpx -y nativeapptemplate-agent-mcp404s. Corrected tonpx -y -p nativeapptemplate-agent nativeapptemplate-agent-mcp, verified against published0.2.1with a real MCPinitializehandshake from a clean dir (returnsserverInfo: nativeapptemplate-agent 0.2.1).Test plan
plugin.json/.mcp.jsonparse; SKILL.md frontmatter hasname+description; structure matches verified format.claude --plugin-dir ./plugin→/helpshows the skill,/mcpshows the server connect, run/nativeapptemplate-agent:generate-app a walk-in queue for a barbershopend-to-end. (manual — over to you)Not in this PR (phase 2 on the epic)
mobile-mcpchaining: boot the app, walk the home screen, inline screenshots.@mobilenext/mobile-mcpin.mcp.json.🤖 Generated with Claude Code