Ship Mobile App
Build the user path, not just the code.
Ship Mobile App is an open, framework-neutral Agent Skill for Claude Code and Codex. It makes a coding agent verify mobile work at the layers where apps actually fail — domain meaning, local and server state, offline behavior, lifecycle, native configuration, signed artifacts, and user-facing claims.
It supports Flutter, React Native, native iOS, and native Android without prescribing one architecture.
Why it exists
On mobile, code that compiles, passes tests, and behaves in a debug build can still fail the user:
- an offline write shows the same
Savedas a real commit, then dies with the process; - a queued write flushes under whichever account happens to be signed in;
- a permission lives in the debug source set but not in the signed release;
- a "done" report claims more than anything was actually observed.
Most agent workflows stop at "tests pass." This skill keeps the agent honest about everything after that.
The five truth boundaries
Every request is checked against the boundaries it actually touches:
| Boundary | Question |
|---|---|
| Domain | Does the data mean what the label and behavior claim? |
| State | Are optimistic, queued, committed, stale, and failed states distinguishable? |
| Lifecycle | Does it survive cold start, resume, background, permissions, and account transitions? |
| Platform | Does the exact signed artifact contain the required configuration? |
| Claim | Do UI, AI, privacy, and release claims match what was actually observed? |
The skill traces the real path:
user action -> UI -> domain logic -> persistence/sync
-> native or external service -> signed artifact -> user result
It selects only the boundaries touched by the request instead of turning every change into a release project.
Install for Claude Code and Codex
Install in the current project:
npx skills add aiopshwang/ship-mobile-app --skill ship-mobile-app -a claude-code -a codex
Add --global to make it available across projects:
npx skills add aiopshwang/ship-mobile-app --skill ship-mobile-app --global -a claude-code -a codex
| Host | Explicit invocation | Project location |
|---|---|---|
| Claude Code | /ship-mobile-app |
.claude/skills/ship-mobile-app |
| Codex | $ship-mobile-app |
.agents/skills/ship-mobile-app |
Example request:
Use Ship Mobile App to implement this offline save flow and verify account
switching, cold start, and the signed release build.
Both hosts may also select the skill automatically when the task matches its description. The package follows the open Agent Skills format supported by Claude Code and Codex.
Use it for
- non-trivial mobile features that cross UI, storage, backend, or native layers;
- offline writes, synchronization, stale state, and account switching;
- auth, deep links, notifications, background work, widgets, permissions, or AI;
- bugs that appear only under real geometry, lifecycle, release, or device state;
- release-candidate preparation and evidence-backed store delivery.
Skip it for isolated snippets, simple visual styling, web- or server-only work, open-ended app ideation, or store marketing copy by itself.
What is inside
skills/ship-mobile-app/
├── SKILL.md
├── agents/openai.yaml
└── references/
├── boundary-checks.md
├── failure-patterns.md
└── verification-ladders.md
SKILL.mdcontains the compact operating method.boundary-checks.mdcovers time, state, identity, lifecycle, native, AI, and operational contracts.verification-ladders.mdseparates source, tests, artifacts, devices, and remote state into distinct evidence levels.failure-patterns.mdcontains anonymized synthetic diagnostics derived from recurring real-world failure shapes.
Evidence and limitations
Ship Mobile App is an early public preview. Before release it passed:
- structural validation and single-skill discovery by the open
skillsCLI; - cross-host installation checks for Claude Code and Codex, plus one bounded Claude Code invocation;
- trigger-routing checks against eight positive and negative prompts;
- three independent synthetic evaluations: two small Dart fixtures (an offline write and account-switching defect; a local-day calculation defect) and one read-only Android debug/release configuration diagnosis.
EVALS.md records exactly what each check observed and which boundaries remain untested. These are development evidence for the skill itself, not benchmarks: they do not establish universal productivity, correctness, or app success across every agent, framework, device, backend, or store.
Relationship to Goal to Proof
The two skills are complementary and independent:
- Ship Mobile App provides mobile-specific development and diagnostic method.
- Goal to Proof provides a domain-neutral completion gate.
Neither requires the other.
Origin, privacy, and security
The method was distilled from recurring failure shapes encountered while shipping and operating a real cross-platform consumer app. The repository contains no raw conversations, private source code, user data, credentials, internal paths, or project-specific operational identifiers. Examples are synthetic and generalized.
See PRIVACY.md and SECURITY.md. To report a reproducible false trigger or missing mobile boundary, open a GitHub issue. Use private vulnerability reporting for security-sensitive findings.
aiopshwang skill family
Independent, evidence-first Agent Skills that work well together:
- goal-to-proof — the general completion gate: finish authorized work and prove the requested outcome.
- verify-regression-tests — prove that a regression test actually detects its intended defect.
- data-analysis-ml-agent-skills — decision-grade data analysis and ML: audits, leakage-safe experiments, validation, reproducible handoff.
- fresh-eyes-check — a context-free second model checks whether an earlier instruction still fits before you act on it.
License
MIT © aiopshwang.
No comments yet
Be the first to share your take.