React Native App Design
This skill builds and extends production-grade React Native (Expo) apps that
follow ONE fixed architecture and ONE strict coding standard. It does not invent
new patterns and it does not ask the user to choose a stack — the stack is locked
(see "Locked Stack" below). Every file produced must be indistinguishable from
hand-written reference code that already follows these rules.
The skill is self-contained: every rule needed to build, extend, review, and
deploy an app lives inside this skill's files. Nothing depends on any external
template repository.
When this skill applies
Use this skill when the user wants to:
- Scaffold a new React Native / Expo app from scratch.
- Extend an existing app of this architecture — add a screen, API service,
Redux slice, validation schema, form, hook, or component.
- Review mobile code against the standard.
- Build / deploy the app with EAS (builds, OTA updates, store submission).
If the user's project is NOT a React Native / Expo app, this skill does not apply.
Locked Stack — never deviate
These choices are FINAL. Never substitute a library, never ask the user to pick.
| Concern |
Locked choice |
| Framework |
Expo (managed workflow) + React Native |
| Language |
TypeScript, strict: true |
| State + data |
Redux Toolkit + RTK Query (NOT Zustand, NOT plain Context for data) |
| Navigation |
React Navigation (native-stack + bottom-tabs + material-top-tabs). NOT Expo Router |
| Forms |
react-hook-form + @hookform/resolvers |
| Validation |
Yup — schema factory functions that accept the i18n t() function |
| Styling |
React Native StyleSheet + a context-based theme. NOT NativeWind, NOT styled-components |
| i18n |
i18next + react-i18next |
| Secure storage |
expo-secure-store (tokens) + AsyncStorage (non-sensitive prefs) |
| Notifications |
expo-notifications |
| OTA updates |
expo-updates |
| Build / deploy |
EAS Build + EAS Update + EAS Submit |
| E2E testing |
Maestro (YAML flows) |
| Indentation |
4 spaces, everywhere |
For exact version policy (latest-first with a known-good fallback), read
reference/versions.md.
The reference files — read before acting
This skill's detail is split across files so only what is needed gets loaded.
Read the relevant file(s) before doing the matching work:
| File |
Read it when you need… |
reference/architecture.md |
The 12-folder src/ layout and what belongs in each folder |
reference/coding-standards.md |
THE strict ruleset (R01–R89) — the reviewer's exact rubric. Read for ANY code work |
reference/conventions.md |
Fine-grained conventions — barrels, exports, constants, theme, typography, i18n, errors, EAS, git. Read for ANY code work |
reference/patterns.md |
Signature patterns — baseQuery, navigationRef, GlobalToast, two-hook forms, navigators, error helpers, performance |
reference/data-patterns.md |
FlatList config, pagination, paginated slices, RTK Query cache tags / transformResponse / merge / idempotency. Read for any list or data work |
reference/lifecycle-hooks.md |
Non-form custom hooks — notifications, OTA updates, polling, focus-refetch, device data |
reference/utils-and-types.md |
The src/utils/ catalog and the src/types/ conventions |
reference/testing.md |
Running the app on a simulator/emulator and Maestro E2E flows. Read for any run/test work |
reference/versions.md |
Version policy and the known-good baseline |
reference/scaffold-checklist.md |
The exact ordered steps + file manifest for a new app |
templates/*.md |
The skeleton for the file type being created (component, screen, list-screen, api-service, slice, validation-schema, form-hooks, constants, types, lifecycle-hook, maestro-flow) |
reference/coding-standards.md and reference/conventions.md are mandatory
reading for every code-producing task. coding-standards.md is the single source
of truth the reviewer enforces; conventions.md carries the fine detail.
For list/data work also read data-patterns.md; for non-form hooks read
lifecycle-hooks.md; for utils/types work read utils-and-types.md.
The agents
This skill delegates real work to five specialized subagents. The skill itself is
the orchestrator (the planner): it interprets the request, picks the agent,
and enforces the review loop. Delegate via the Agent tool.
| Agent |
Role |
Use it to… |
rn-scaffolder |
Executor |
Bootstrap a brand-new app: create the Expo project, build the 12-folder src/, wire App.tsx, the store, baseQuery, the theme, navigation, the auth shell, configure app.config.ts / eas.json / i18n |
rn-feature-builder |
Executor |
Build or change a feature — a vertical slice spanning screen + API service + slice + validation + form-hooks + components, plus a Maestro flow for it |
rn-pattern-reviewer |
Reviewer (read-only) |
Validate a PLAN or written CODE against reference/coding-standards.md. Emits PASS or FAIL with specific findings |
rn-runner |
Verifier |
Build and launch the app on a simulator/emulator, capture logs, detect crashes, run Maestro E2E flows, capture screenshots, report pass/fail |
rn-build-deployer |
Lifecycle |
Run EAS — builds, OTA updates, credentials, store submission |
Orchestration
Decide what the user wants, then follow the matching flow.
Flow A — Scaffold a new app
- Ask the user for the required inputs — these CANNOT be guessed:
- App display name
- Slug (kebab-case)
- iOS bundle identifier and Android package name — ask for BOTH,
separately. They are usually the same reverse-DNS string; suggest one
value as the default for both but let the user set each independently.
- Target directory
- Expo account — ask whether to link an Expo account now (for EAS) or
defer it. The skill cannot create an account (signup is interactive); if
the user wants one, point them to run
eas login / sign up at expo.dev.
See reference/scaffold-checklist.md → "Inputs required from the user".
- Read
reference/scaffold-checklist.md and reference/versions.md.
- Delegate to
rn-scaffolder with the app name, slug, iOS bundle
identifier, Android package name, target directory, and the Expo-account
choice.
- When it returns, delegate to
rn-pattern-reviewer to audit the generated
shell against reference/coding-standards.md.
- If the reviewer returns FAIL, send the findings back to
rn-scaffolder to fix,
then re-review. Repeat until PASS (see "The review loop").
- Report the result: project location, how to run it, what was wired.
Flow B — Build or change a feature (the double gate)
This is the core flow. The reviewer gates the work on both ends.
- Read
reference/coding-standards.md, reference/architecture.md,
reference/patterns.md, and the relevant templates/*.md.
- Delegate to
rn-feature-builder. Instruct it to FIRST produce a plan:
the list of files it will create or change, and the key code snippets — NOT
the final code yet.
- PRE-CHECK. Pass that plan to
rn-pattern-reviewer with the question:
"Does this plan follow the standards?" The reviewer checks structure, file
placement, pattern usage, and the comment plan.
- FAIL → return findings to
rn-feature-builder, get a revised plan, re-check.
- PASS → continue.
rn-feature-builder writes the actual code, with full comments per the
mandatory commenting standard, AND a Maestro E2E flow for the feature under
.maestro/.
- POST-CHECK. Pass the written code to
rn-pattern-reviewer with the
question: "Does this code follow the standards?"
- FAIL → return findings to
rn-feature-builder to fix, then re-check.
- PASS → continue.
- RUN & TEST. Delegate to
rn-runner: build and launch the app, confirm
it runs with no crash/console errors, run the feature's Maestro flow, capture
screenshots.
- If the build fails, the app crashes, or the flow fails → return the report
to
rn-feature-builder to fix the feature, then re-run from the POST-CHECK.
- If no simulator/emulator is available,
rn-runner says so; the feature is
reported as code-verified-only and the user decides.
- Report what was built, confirm both review gates passed, and give the
rn-runner result (build/launch/flow + screenshot paths). State plainly that
visual review is the user's.
rn-feature-builder must NOT write final code until the reviewer has PASSED its
plan. The feature is not "done" until the reviewer has PASSED its code AND
rn-runner reports the app runs and the flow passes (or the user accepts a
no-simulator limitation).
Flow C — Review existing code
Delegate straight to rn-pattern-reviewer with the files to audit. Report its
findings. If the user wants the findings fixed, run them through
rn-feature-builder and then the post-check.
Flow D — Build / deploy
Delegate to rn-build-deployer. It handles EAS builds, OTA updates,
credentials, and submission guidance.
Flow E — Run or test the app
Delegate to rn-runner to build and launch the app on a simulator/emulator,
detect crashes, and run Maestro E2E flows. Use for "run the app", "test the
login feature", "does it build". rn-runner verifies behaviour, not appearance
— it reports screenshot paths for the user's visual review. See
reference/testing.md.
The review loop — block and loop until pass
The reviewer is a hard gate. The standard is block-and-loop-until-pass:
- A FAIL always sends the work back to the executor agent with the specific
findings attached.
- The executor fixes ONLY what the findings call out — no unrelated changes.
- The work is re-reviewed.
- This repeats until the reviewer returns PASS.
- Nothing is reported to the user as "done" until a PASS is achieved on the
final code.
There is no try limit — loop until PASS. If the same finding recurs three times
unchanged, stop and surface it to the user with both the reviewer's finding and
the executor's attempts, so the user can decide. (This is the only escape hatch,
and it is an escalation, not an acceptance.)
Hard rules for every code task
These are summarized here; the full, authoritative rules are in
reference/coding-standards.md. Pass them to every agent.
- Strict standards. Follow
reference/coding-standards.md exactly. The
reviewer enforces it with zero tolerance.
- Mandatory comments. Every file, every function, and every non-obvious or
complex logic block must be commented — explaining what it does and why.
The reviewer FAILS code that lacks required comments. See the commenting
section of
reference/coding-standards.md.
- No new patterns. Reuse the signature patterns in
reference/patterns.md.
Do not invent alternatives.
- Surgical changes. Touch only what the task requires. Do not refactor or
"clean up" adjacent code.
- No hardcoded styling. Colors, spacing, and typography come from the theme
and constants — never literal values in components.
- TypeScript strict. No implicit
any. Type every prop, request, response,
and slice state.
- Locked stack only. Never introduce a library outside the Locked Stack
table without explicit user approval.
Source: taimour1446/claude-react-native-builder — distributed by TomeVault.
1---2name: taimour1446-claude-react-native-builder-claude-react-native-3description: React Native App Design4---56# React Native App Design78This skill builds and extends **production-grade React Native (Expo) apps** that9follow ONE fixed architecture and ONE strict coding standard. It does not invent10new patterns and it does not ask the user to choose a stack — the stack is locked11(see "Locked Stack" below). Every file produced must be indistinguishable from12hand-written reference code that already follows these rules.1314The skill is **self-contained**: every rule needed to build, extend, review, and15deploy an app lives inside this skill's files. Nothing depends on any external16template repository.1718---1920## When this skill applies2122Use this skill when the user wants to:2324- **Scaffold** a new React Native / Expo app from scratch.25- **Extend** an existing app of this architecture — add a screen, API service,26 Redux slice, validation schema, form, hook, or component.27- **Review** mobile code against the standard.28- **Build / deploy** the app with EAS (builds, OTA updates, store submission).2930If the user's project is NOT a React Native / Expo app, this skill does not apply.3132---3334## Locked Stack — never deviate3536These choices are FINAL. Never substitute a library, never ask the user to pick.3738| Concern | Locked choice |39| --- | --- |40| Framework | Expo (managed workflow) + React Native |41| Language | TypeScript, `strict: true` |42| State + data | Redux Toolkit + RTK Query (NOT Zustand, NOT plain Context for data) |43| Navigation | React Navigation (native-stack + bottom-tabs + material-top-tabs). NOT Expo Router |44| Forms | react-hook-form + `@hookform/resolvers` |45| Validation | Yup — schema factory functions that accept the i18n `t()` function |46| Styling | React Native `StyleSheet` + a context-based theme. NOT NativeWind, NOT styled-components |47| i18n | i18next + react-i18next |48| Secure storage | expo-secure-store (tokens) + AsyncStorage (non-sensitive prefs) |49| Notifications | expo-notifications |50| OTA updates | expo-updates |51| Build / deploy | EAS Build + EAS Update + EAS Submit |52| E2E testing | Maestro (YAML flows) |53| Indentation | 4 spaces, everywhere |5455For exact version policy (latest-first with a known-good fallback), read56`reference/versions.md`.5758---5960## The reference files — read before acting6162This skill's detail is split across files so only what is needed gets loaded.63Read the relevant file(s) before doing the matching work:6465| File | Read it when you need… |66| --- | --- |67| `reference/architecture.md` | The 12-folder `src/` layout and what belongs in each folder |68| `reference/coding-standards.md` | THE strict ruleset (R01–R89) — the reviewer's exact rubric. Read for ANY code work |69| `reference/conventions.md` | Fine-grained conventions — barrels, exports, constants, theme, typography, i18n, errors, EAS, git. Read for ANY code work |70| `reference/patterns.md` | Signature patterns — baseQuery, navigationRef, GlobalToast, two-hook forms, navigators, error helpers, performance |71| `reference/data-patterns.md` | FlatList config, pagination, paginated slices, RTK Query cache tags / transformResponse / merge / idempotency. Read for any list or data work |72| `reference/lifecycle-hooks.md` | Non-form custom hooks — notifications, OTA updates, polling, focus-refetch, device data |73| `reference/utils-and-types.md` | The `src/utils/` catalog and the `src/types/` conventions |74| `reference/testing.md` | Running the app on a simulator/emulator and Maestro E2E flows. Read for any run/test work |75| `reference/versions.md` | Version policy and the known-good baseline |76| `reference/scaffold-checklist.md` | The exact ordered steps + file manifest for a new app |77| `templates/*.md` | The skeleton for the file type being created (component, screen, list-screen, api-service, slice, validation-schema, form-hooks, constants, types, lifecycle-hook, maestro-flow) |7879`reference/coding-standards.md` and `reference/conventions.md` are mandatory80reading for every code-producing task. `coding-standards.md` is the single source81of truth the reviewer enforces; `conventions.md` carries the fine detail.82For list/data work also read `data-patterns.md`; for non-form hooks read83`lifecycle-hooks.md`; for utils/types work read `utils-and-types.md`.8485---8687## The agents8889This skill delegates real work to five specialized subagents. The skill itself is90the **orchestrator** (the planner): it interprets the request, picks the agent,91and enforces the review loop. Delegate via the Agent tool.9293| Agent | Role | Use it to… |94| --- | --- | --- |95| `rn-scaffolder` | Executor | Bootstrap a brand-new app: create the Expo project, build the 12-folder `src/`, wire `App.tsx`, the store, `baseQuery`, the theme, navigation, the auth shell, configure `app.config.ts` / `eas.json` / i18n |96| `rn-feature-builder` | Executor | Build or change a feature — a vertical slice spanning screen + API service + slice + validation + form-hooks + components, plus a Maestro flow for it |97| `rn-pattern-reviewer` | Reviewer (read-only) | Validate a PLAN or written CODE against `reference/coding-standards.md`. Emits PASS or FAIL with specific findings |98| `rn-runner` | Verifier | Build and launch the app on a simulator/emulator, capture logs, detect crashes, run Maestro E2E flows, capture screenshots, report pass/fail |99| `rn-build-deployer` | Lifecycle | Run EAS — builds, OTA updates, credentials, store submission |100101---102103## Orchestration104105Decide what the user wants, then follow the matching flow.106107### Flow A — Scaffold a new app1081091. Ask the user for the required inputs — these CANNOT be guessed:110 - App display name111 - Slug (kebab-case)112 - **iOS bundle identifier** and **Android package name** — ask for BOTH,113 separately. They are usually the same reverse-DNS string; suggest one114 value as the default for both but let the user set each independently.115 - Target directory116 - **Expo account** — ask whether to link an Expo account now (for EAS) or117 defer it. The skill cannot create an account (signup is interactive); if118 the user wants one, point them to run `eas login` / sign up at expo.dev.119 See `reference/scaffold-checklist.md` → "Inputs required from the user".1202. Read `reference/scaffold-checklist.md` and `reference/versions.md`.1213. Delegate to **`rn-scaffolder`** with the app name, slug, iOS bundle122 identifier, Android package name, target directory, and the Expo-account123 choice.1244. When it returns, delegate to **`rn-pattern-reviewer`** to audit the generated125 shell against `reference/coding-standards.md`.1265. If the reviewer returns FAIL, send the findings back to `rn-scaffolder` to fix,127 then re-review. Repeat until PASS (see "The review loop").1286. Report the result: project location, how to run it, what was wired.129130### Flow B — Build or change a feature (the double gate)131132This is the core flow. The reviewer gates the work on **both** ends.1331341. Read `reference/coding-standards.md`, `reference/architecture.md`,135 `reference/patterns.md`, and the relevant `templates/*.md`.1362. Delegate to **`rn-feature-builder`**. Instruct it to FIRST produce a **plan**:137 the list of files it will create or change, and the key code snippets — NOT138 the final code yet.1393. **PRE-CHECK.** Pass that plan to **`rn-pattern-reviewer`** with the question:140 "Does this plan follow the standards?" The reviewer checks structure, file141 placement, pattern usage, and the comment plan.142 - FAIL → return findings to `rn-feature-builder`, get a revised plan, re-check.143 - PASS → continue.1444. `rn-feature-builder` writes the actual code, with full comments per the145 mandatory commenting standard, AND a Maestro E2E flow for the feature under146 `.maestro/`.1475. **POST-CHECK.** Pass the written code to **`rn-pattern-reviewer`** with the148 question: "Does this code follow the standards?"149 - FAIL → return findings to `rn-feature-builder` to fix, then re-check.150 - PASS → continue.1516. **RUN & TEST.** Delegate to **`rn-runner`**: build and launch the app, confirm152 it runs with no crash/console errors, run the feature's Maestro flow, capture153 screenshots.154 - If the build fails, the app crashes, or the flow fails → return the report155 to `rn-feature-builder` to fix the feature, then re-run from the POST-CHECK.156 - If no simulator/emulator is available, `rn-runner` says so; the feature is157 reported as code-verified-only and the user decides.1587. Report what was built, confirm both review gates passed, and give the159 `rn-runner` result (build/launch/flow + screenshot paths). State plainly that160 visual review is the user's.161162`rn-feature-builder` must NOT write final code until the reviewer has PASSED its163plan. The feature is not "done" until the reviewer has PASSED its code AND164`rn-runner` reports the app runs and the flow passes (or the user accepts a165no-simulator limitation).166167### Flow C — Review existing code168169Delegate straight to **`rn-pattern-reviewer`** with the files to audit. Report its170findings. If the user wants the findings fixed, run them through171`rn-feature-builder` and then the post-check.172173### Flow D — Build / deploy174175Delegate to **`rn-build-deployer`**. It handles EAS builds, OTA updates,176credentials, and submission guidance.177178### Flow E — Run or test the app179180Delegate to **`rn-runner`** to build and launch the app on a simulator/emulator,181detect crashes, and run Maestro E2E flows. Use for "run the app", "test the182login feature", "does it build". `rn-runner` verifies behaviour, not appearance183— it reports screenshot paths for the user's visual review. See184`reference/testing.md`.185186---187188## The review loop — block and loop until pass189190The reviewer is a hard gate. The standard is **block-and-loop-until-pass**:191192- A FAIL always sends the work back to the executor agent with the specific193 findings attached.194- The executor fixes ONLY what the findings call out — no unrelated changes.195- The work is re-reviewed.196- This repeats until the reviewer returns PASS.197- Nothing is reported to the user as "done" until a PASS is achieved on the198 final code.199200There is no try limit — loop until PASS. If the same finding recurs three times201unchanged, stop and surface it to the user with both the reviewer's finding and202the executor's attempts, so the user can decide. (This is the only escape hatch,203and it is an escalation, not an acceptance.)204205---206207## Hard rules for every code task208209These are summarized here; the full, authoritative rules are in210`reference/coding-standards.md`. Pass them to every agent.2112121. **Strict standards.** Follow `reference/coding-standards.md` exactly. The213 reviewer enforces it with zero tolerance.2142. **Mandatory comments.** Every file, every function, and every non-obvious or215 complex logic block must be commented — explaining *what* it does and *why*.216 The reviewer FAILS code that lacks required comments. See the commenting217 section of `reference/coding-standards.md`.2183. **No new patterns.** Reuse the signature patterns in `reference/patterns.md`.219 Do not invent alternatives.2204. **Surgical changes.** Touch only what the task requires. Do not refactor or221 "clean up" adjacent code.2225. **No hardcoded styling.** Colors, spacing, and typography come from the theme223 and constants — never literal values in components.2246. **TypeScript strict.** No implicit `any`. Type every prop, request, response,225 and slice state.2267. **Locked stack only.** Never introduce a library outside the Locked Stack227 table without explicit user approval.228229---230> Source: [taimour1446/claude-react-native-builder](https://github.com/taimour1446/claude-react-native-builder) — distributed by [TomeVault](https://tomevault.io).231<!-- tomevault:4.0:skill_md:2026-06-16 -->