mobile-app — iOS / Android applications
This sub-skill stands up a mobile application that ships to the App Store and/or Google
Play. It nails the platform, the build-and-submit pipeline, signing, and the store listings up
front — the parts that block a release no matter how good the app is — and scaffolds the screen
structure so building starts on solid ground.
What this sub-skill is for
An app that runs on phones/tablets and is distributed through the mobile stores (or via TestFlight
/ internal track first). Use it for native and cross-platform mobile; not for desktop installs
(desktop-app), web apps (website), or backends (api-backend) — though it commonly composes
with api-backend when the app has a server.
Mandatory grill-questions (fold into the DoR)
- Platform/framework — iOS-only (Swift/SwiftUI), Android-only (Kotlin/Compose), or
cross-platform: Flutter, React Native (bare), or Expo (managed). Recommended: Expo for a
solo dev shipping both stores fast, unless a native-only requirement forces otherwise. Lock first.
- Target stores & accounts — App Store, Play, or both? Confirm an Apple Developer account
($99/yr) and a Google Play Console account ($25 once) exist — without them you cannot submit.
- Signing — Apple: bundle ID, certs, provisioning profiles (or EAS-managed credentials).
Android: a keystore (decide who holds it; back it up — losing it blocks all future updates).
- Min OS versions & devices — minimum iOS/Android, phone-only vs. tablet/iPad, orientations.
- Screens & navigation — list the core screens and the nav model (tabs/stack/drawer) so the
scaffold matches the real app, not a generic template.
- Backend & data — standalone, or an API (compose
api-backend)? Auth, offline behaviour,
and where user data lives. Any push notifications (APNs/FCM)?
- Permissions & privacy — camera/mic/location/contacts/health; the iOS privacy nutrition
label and Android Data-safety form must be answered truthfully before submission.
- Build pipeline — EAS Build/Submit (Expo/RN), Xcode Cloud / Fastlane, or Gradle/Fastlane.
macOS is required for iOS builds — confirm a Mac or a cloud build (EAS) is available.
Project sub-agents to generate (<project>/.claude/agents/)
screen-builder (delegate-by-default) — implements a screen + its navigation to the
done-bar, wired to the project's component and state conventions.
store-listing-writer (delegate-by-default) — drafts App Store / Play listings: title,
subtitle, description, keywords, what's-new, and a screenshot/asset shot-list per device size.
build-submitter — runs EAS/native build + submit, manages credentials and TestFlight /
internal-track uploads; never fabricates version/build numbers.
store-compliance-reviewer (delegate-by-default) — checks against App Store Review
Guidelines + Play policies and the privacy/data-safety disclosures before each submission.
- Plus the kit defaults:
reviewer (diff/PR) and verifier (runs the app on a simulator/device).
Tools / CLIs / MCP / skills needed
- Toolchain: Node +
expo / eas-cli (Expo/RN) or Xcode + swift/xcodebuild (iOS) /
Android Studio + Gradle SDK (Android); Flutter SDK if Flutter. Check in environment-readiness.
- Release:
fastlane (metadata, screenshots, submission), gh for the source repo. iOS
builds need macOS — flag if absent and route to EAS cloud builds.
- Assets: an icon/splash generator and a device-frame screenshot tool for store images.
- CHAIN global skills:
verify (run on simulator/device), code-review,
doc-coauthoring (store copy + README + privacy policy), update-config (allow build/submit
commands). For UI inspiration the framer-inspiration / design-harvest skills inform layout
and tokens even though it's not a website.
- Design chain (2026-07-29 addition):
design-bausteine's four-part brief (Aesthetik/Referenz/
Intent/Guardrails) and its fan-out step apply to native screens too, even though the build tool is
SwiftUI/Compose/Flutter, not HTML/CSS — slop-detect does not (it reads CSS/Tailwind, not native
UI code). Before a store submission, run design-critique on the core screens (a stranger judges
every screenshot in the listing) alongside store-compliance-reviewer.
File / asset nudges (on top of the base set)
app/ or src/screens/ — the scaffolded screen tree matching the grilled nav model.
store/ios/ + store/android/ — listing copy, keywords, what's-new, and the screenshot shot-list.
store/assets/ — icon, splash, and per-device-size screenshot frames.
credentials/ — .gitignored slot for keystore, provisioning profiles, and API keys (never committed).
eas.json / fastlane/ — the build-and-submit config.
PRIVACY.md — the privacy policy + the truthful answers for the iOS label and Play data-safety form.
Stack defaults & done-bar
Default stack: Expo (managed RN) + EAS Build/Submit, TypeScript, file-based navigation,
Fastlane for store metadata/screenshots, both stores targeted. (Switch to native or Flutter if grilled.)
Done-bar (all true): the app builds a release artifact for each target platform; it installs
and runs on a real device (or TestFlight / internal track) and survives a cold start; signing and
credentials are valid and backed up; the store listing (copy + screenshots + privacy disclosures)
is complete and passes the compliance reviewer; an internal/TestFlight build has been submitted
successfully end-to-end.
Guardrails
- No emojis in the app UI or notifications — typographic symbols or drawn elements only (standing user rule).
- Truthful store disclosures: privacy labels, data-safety, and permission usage strings must match what the app actually does — misrepresentation gets apps pulled.
- Never commit keystores, provisioning profiles, certs, or API keys —
.gitignore them; warn that a lost Android keystore permanently blocks updates.
- Don't claim store-readiness until the compliance reviewer passes and a build has actually submitted; report blockers honestly.
- Commit under the user's own name only (Skryx-L-A) — never add Claude as a co-author.
- No dark patterns / forced reviews / hidden subscriptions — they violate both stores' policies.
1---2name: mobile-app3description: Build and set up a mobile application project (iOS, Android, Flutter, React Native, or Expo) with screen scaffolding, signing, store-listing assets, and an EAS/native build-and-submit pipeline to the App Store and Google Play. This is a project-kit sub-skill loaded by new-project routing. Use WHENEVER the user wants to build, create, or ship a mobile app, a phone/tablet app, an iOS or Android app, or anything published to the App Store or Play Store.4---56# mobile-app — iOS / Android applications78This sub-skill stands up a **mobile application** that ships to the App Store and/or Google9Play. It nails the platform, the build-and-submit pipeline, signing, and the store listings up10front — the parts that block a release no matter how good the app is — and scaffolds the screen11structure so building starts on solid ground.1213---1415## What this sub-skill is for16An app that runs on phones/tablets and is distributed through the mobile stores (or via TestFlight17/ internal track first). Use it for native and cross-platform mobile; not for desktop installs18(`desktop-app`), web apps (`website`), or backends (`api-backend`) — though it commonly composes19with `api-backend` when the app has a server.2021## Mandatory grill-questions (fold into the DoR)221. **Platform/framework** — iOS-only (Swift/SwiftUI), Android-only (Kotlin/Compose), or23 cross-platform: Flutter, React Native (bare), or **Expo (managed)**. **Recommended: Expo** for a24 solo dev shipping both stores fast, unless a native-only requirement forces otherwise. Lock first.252. **Target stores & accounts** — App Store, Play, or both? Confirm an Apple Developer account26 ($99/yr) and a Google Play Console account ($25 once) exist — without them you cannot submit.273. **Signing** — Apple: bundle ID, certs, provisioning profiles (or EAS-managed credentials).28 Android: a keystore (decide who holds it; back it up — losing it blocks all future updates).294. **Min OS versions & devices** — minimum iOS/Android, phone-only vs. tablet/iPad, orientations.305. **Screens & navigation** — list the core screens and the nav model (tabs/stack/drawer) so the31 scaffold matches the real app, not a generic template.326. **Backend & data** — standalone, or an API (compose `api-backend`)? Auth, offline behaviour,33 and where user data lives. Any push notifications (APNs/FCM)?347. **Permissions & privacy** — camera/mic/location/contacts/health; the iOS privacy nutrition35 label and Android Data-safety form must be answered truthfully before submission.368. **Build pipeline** — EAS Build/Submit (Expo/RN), Xcode Cloud / Fastlane, or Gradle/Fastlane.37 macOS is required for iOS builds — confirm a Mac or a cloud build (EAS) is available.3839## Project sub-agents to generate (`<project>/.claude/agents/`)40- **`screen-builder`** *(delegate-by-default)* — implements a screen + its navigation to the41 done-bar, wired to the project's component and state conventions.42- **`store-listing-writer`** *(delegate-by-default)* — drafts App Store / Play listings: title,43 subtitle, description, keywords, what's-new, and a screenshot/asset shot-list per device size.44- **`build-submitter`** — runs EAS/native build + submit, manages credentials and TestFlight /45 internal-track uploads; never fabricates version/build numbers.46- **`store-compliance-reviewer`** *(delegate-by-default)* — checks against App Store Review47 Guidelines + Play policies and the privacy/data-safety disclosures before each submission.48- Plus the kit defaults: `reviewer` (diff/PR) and `verifier` (runs the app on a simulator/device).4950## Tools / CLIs / MCP / skills needed51- **Toolchain:** Node + `expo` / `eas-cli` (Expo/RN) **or** Xcode + `swift`/`xcodebuild` (iOS) /52 Android Studio + Gradle SDK (Android); Flutter SDK if Flutter. Check in environment-readiness.53- **Release:** `fastlane` (metadata, screenshots, submission), `gh` for the source repo. iOS54 builds need macOS — flag if absent and route to EAS cloud builds.55- **Assets:** an icon/splash generator and a device-frame screenshot tool for store images.56- **CHAIN global skills:** `verify` (run on simulator/device), `code-review`,57 `doc-coauthoring` (store copy + README + privacy policy), `update-config` (allow build/submit58 commands). For UI inspiration the `framer-inspiration` / `design-harvest` skills inform layout59 and tokens even though it's not a website.60- **Design chain (2026-07-29 addition):** `design-bausteine`'s four-part brief (Aesthetik/Referenz/61 Intent/Guardrails) and its fan-out step apply to native screens too, even though the build tool is62 SwiftUI/Compose/Flutter, not HTML/CSS — `slop-detect` does not (it reads CSS/Tailwind, not native63 UI code). Before a store submission, run `design-critique` on the core screens (a stranger judges64 every screenshot in the listing) alongside `store-compliance-reviewer`.6566## File / asset nudges (on top of the base set)67- `app/` or `src/screens/` — the scaffolded screen tree matching the grilled nav model.68- `store/ios/` + `store/android/` — listing copy, keywords, what's-new, and the screenshot shot-list.69- `store/assets/` — icon, splash, and per-device-size screenshot frames.70- `credentials/` — `.gitignore`d slot for keystore, provisioning profiles, and API keys (never committed).71- `eas.json` / `fastlane/` — the build-and-submit config.72- `PRIVACY.md` — the privacy policy + the truthful answers for the iOS label and Play data-safety form.7374## Stack defaults & done-bar75**Default stack:** Expo (managed RN) + EAS Build/Submit, TypeScript, file-based navigation,76Fastlane for store metadata/screenshots, both stores targeted. (Switch to native or Flutter if grilled.)77**Done-bar (all true):** the app builds a release artifact for each target platform; it installs78and runs on a real device (or TestFlight / internal track) and survives a cold start; signing and79credentials are valid and backed up; the store listing (copy + screenshots + privacy disclosures)80is complete and passes the compliance reviewer; an internal/TestFlight build has been submitted81successfully end-to-end.8283## Guardrails84- **No emojis in the app UI or notifications** — typographic symbols or drawn elements only (standing user rule).85- **Truthful store disclosures:** privacy labels, data-safety, and permission usage strings must match what the app actually does — misrepresentation gets apps pulled.86- **Never commit keystores, provisioning profiles, certs, or API keys** — `.gitignore` them; warn that a lost Android keystore permanently blocks updates.87- **Don't claim store-readiness until the compliance reviewer passes** and a build has actually submitted; report blockers honestly.88- **Commit under the user's own name only (Skryx-L-A)** — never add Claude as a co-author.89- **No dark patterns / forced reviews / hidden subscriptions** — they violate both stores' policies.