Generate a new expo-router screen with proper patterns
Generates a new screen file using expo-router conventions. Creates the screen component with proper data loading, navigation, styling, i18n, and platform-specific UI patterns.
/new-screen Settings # Tab screen at app/(tabs)/settings.tsx
/new-screen TransactionDetail # Detail screen at app/(tabs)/transactions/[id].tsx
/new-screen AddTransaction --modal # Modal screen at app/(modals)/add-transaction.tsx
/new-screen Login --auth # Auth screen at app/(auth)/login.tsx
/new-screen BudgetList --type=list # List screen with FlashList
/new-screen BudgetForm --type=form # Form screen with KeyboardAvoidingView
/new-screen BudgetDetail --type=detail # Detail screen with ScrollView
| Argument | Required | Description |
|----------|----------|-------------|
| name | Yes | Screen name in PascalCase (e.g., Settings, TransactionDetail) |
| --modal | No | Place in app/(modals)/ instead of app/(tabs)/ |
| --auth | No | Place in app/(auth)/ instead of app/(tabs)/ |
| --type | No | Screen type: list, form, or detail. Default: list |
Based on the arguments:
app/(tabs)/<kebab-name>.tsx--modal: app/(modals)/<kebab-name>.tsx--auth: app/(auth)/<kebab-name>.tsxConvert PascalCase to kebab-case for the filename:
TransactionDetail -> transaction-detail.tsxAddTransaction -> add-transaction.tsxIf the screen needs a dynamic route parameter (detail screens), use [id].tsx:
TransactionDetail -> app/(tabs)/transactions/[id].tsxUse the appropriate template based on --type:
See references/screen-examples.md for complete templates.
Based on the screen's needs, also create:
queries/use<Entity>.ts (if it doesn't exist)db/queries/<entity>.ts (if it doesn't exist)locales/en.json (append to existing file)Run TypeScript check after generating:
npx tsc --noEmit
Key features:
estimatedItemSizeonRefreshKey features:
behaviorkeyboardShouldPersistTaps="handled"Key features:
| Input | File | Component |
|-------|------|-----------|
| Settings | settings.tsx | SettingsScreen |
| TransactionList | transaction-list.tsx | TransactionListScreen |
| AddBudget | add-budget.tsx | AddBudgetScreen |
| BudgetDetail | budgets/[id].tsx | BudgetDetailScreen |
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer