home / skills / shipshitdev / library / expo-architect
This skill scaffolds a production-ready Expo React Native app with complete navigation, auth optional, and immediate bun start.
npx playbooks add skill shipshitdev/library --skill expo-architectReview the files below or copy the command above to add this skill to your agents.
---
name: expo-architect
description: Scaffold a production-ready Expo React Native app with working screens, navigation, and optional Clerk auth. Generates complete mobile app structure that runs immediately with `bun start`.
version: 1.0.0
tags:
- expo
- react-native
- mobile
- scaffold
- clerk
---
# Expo Architect
Create **production-ready** Expo React Native apps with:
- **Framework:** Expo SDK 54 + React Native 0.83 + TypeScript
- **Navigation:** Expo Router (file-based routing)
- **Auth:** Clerk authentication (optional)
- **UI:** NativeWind (Tailwind for RN) or StyleSheet
- **Quality:** Biome linting + TypeScript strict mode
- **Package Manager:** bun
## What Makes This Different
Generates **working mobile apps**, not empty scaffolds:
- Complete navigation structure with working screens
- Optional Clerk authentication flow
- Real UI components with proper styling
- API client integration ready
- Runs immediately with `bun start`
## Workflow Summary
1. **PRD Brief Intake** - Extract app type, screens, features, auth needs
2. **Auth Setup** (if requested) - Clerk provider, sign-in/sign-up screens
3. **Screen Generation** - Tab or stack-based navigation
4. **Component Generation** - UI components, entity components, layouts
5. **Quality Setup** - Biome, TypeScript strict, path aliases
6. **Verification** - Run quality gate, report results
## Usage
```bash
# Create app with PRD-style prompt
python3 ~/.claude/skills/expo-architect/scripts/init-expo.py \
--root ~/www/myapp \
--name "My App" \
--brief "A fitness tracker where users can log workouts"
# With specific options
python3 ~/.claude/skills/expo-architect/scripts/init-expo.py \
--root ~/www/myapp \
--name "My App" \
--tabs "Home,Workouts,Profile" \
--auth
```
## Generated Structure
```
myapp/
├── app/
│ ├── _layout.tsx # Root layout
│ ├── (tabs)/ # Tab navigator
│ │ ├── _layout.tsx
│ │ ├── index.tsx
│ │ └── ...
│ └── (auth)/ # Auth screens (if enabled)
├── components/
│ ├── ui/ # Base UI components
│ ├── [entity]/ # Feature components
│ └── layout/ # Layout components
├── lib/
│ ├── api.ts # API client
│ └── auth.ts # Auth utilities
├── providers/ # Context providers
├── types/ # TypeScript types
├── app.json # Expo config
├── package.json
├── tsconfig.json
└── biome.json
```
## Development Commands
```bash
bun start # Start Expo dev server
bun run ios # iOS simulator
bun run android # Android emulator
bun run lint # Check code style
bun run typecheck # Type checking
```
## Environment Variables
```
EXPO_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_...
EXPO_PUBLIC_API_URL=http://localhost:3001
```
---
**For detailed patterns, code templates, and complete examples:** `references/full-guide.md`
This skill scaffolds a production-ready Expo React Native app with TypeScript, Expo Router navigation, optional Clerk authentication, and Bun as the package manager. It generates a runnable project with working screens, UI components, API client integration, and quality tooling so the app runs immediately with bun start. The output favors practical app structure over empty templates to accelerate development.
You provide a PRD-style brief or CLI options (app name, tabs, auth) and the tool generates a complete app directory: layouts, tab/stack routing, screens, components, providers, and TypeScript types. It wires optional Clerk auth flows, creates an API client and auth utilities, applies Biome linting and strict TypeScript settings, and includes commands to run and verify the app locally. The scaffold is ready to run with bun start and includes environment variable hints for API and Clerk keys.
Will the generated project run immediately?
Yes. The scaffold is configured to run with bun start and includes essential scripts for iOS/android emulators and lint/type checks.
Is Clerk required?
No. Clerk is optional. Enabling auth adds provider wiring and sign-in/sign-up screens; leave it off to keep the app auth-free.
Which styling approach does the scaffold use?
You can choose NativeWind (Tailwind-like) for rapid styling or classic StyleSheet; both patterns are supported in the generated code.