Complete guide for building beautiful apps with Expo Router. Covers fundamentals, styling, components, navigation, animations, patterns, and native tabs.
日本語の概要は準備中です。原文の説明を表示しています。
Generate NowStack Mobile onboarding backgrounds, splash, and brand artwork with AI image generation. Use for "generate onboarding images", "make brand art", "redo the splash". REQUIRES an image-gen tool (Codex/gpt-image); other agents follow the fallback. For the app icon (iOS/Android launcher icon) use ns-icon instead.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Generate onboarding backgrounds, the splash, and brand artwork with AI image generation.
Scope: onboarding + splash + brand art. The launcher app icon (iOS App Store icon, Android adaptive icon, favicon) has its own dedicated skill — .agents/skills/ns-icon/SKILL.md. Use ns-icon for "create my app icon" / "redo the icon"; use this skill for everything else.
<capability_gate>
This workflow requires an image-generation tool (Codex's imagegen skill backed by gpt-image, or any model/agent that can generate raster images).
imagegen skill with the prompts below. Generated files land in ~/.codex/generated_images/<session-id>/ig_*.png — copy them into the repo.| Asset | Target file | Spec |
|---|---|---|
| Splash | mobile-app/assets/splash.png | simple, centered mark on flat brand background |
| Onboarding backgrounds | mobile-app/assets/onboarding/*.png | 9:19.5 portrait (e.g. 1290x2796), one per onboarding slide, composed for the actual onboarding overlay safe zone |
(App icon, Android adaptive icon, and favicon → .agents/skills/ns-icon/SKILL.md.)
</objective>
<layout_audit_required> Before generating onboarding backgrounds, inspect the real app layout. Do not rely on generic wallpaper composition.
mobile-app/app/onboarding/index.tsxmobile-app/app/onboarding/content.tsresizeMode="cover" means the image can be cropped.ImageBackground and plain Image can crop differently depending on parent height.Never approve onboarding art only because the source file is the correct ratio. The only pass condition is: the meaningful subject remains visible in the rendered app, above the overlay, on an iPhone simulator screenshot. </layout_audit_required>
<prompt_anatomy>
Onboarding and marketing prompts follow this structure (battle-tested; deviating produces generic results). The app icon is NOT made here — it uses the dedicated recipe in .agents/skills/ns-icon/SKILL.md.
Use case: — illustration-story for onboarding/marketing art.Asset type: — exact target ("mobile onboarding background for <App>").Primary request: — quality bar + anti-style ("clean, modern, high-end raster illustration. No SVG/vector look, no flat icon art").Composition: — aspect ratio AND safe zones (see below — this is what makes or breaks onboarding images).Scene/Subject/Style: — separate lines; mascot/concept from the product brief.Color: — named palette derived from site-config.ts > brand ("warm peach", "sage green"), not hex codes.Avoid: — always end with: text, logos, UI, phone frame, screenshots, watermarks, tiny hidden subject, harsh outlines, clutter, flat SVG look.
</prompt_anatomy><onboarding_recipe> The critical insight from production: onboarding screens overlay a rounded bottom sheet that can cover 35-42% of the image on real devices. Without explicit safe-zone instructions, generated images often look good as files but hide their subject behind the card once rendered. Template:
Use case: illustration-story
Asset type: mobile onboarding background for an iPhone app named <AppName>
Primary request: Create a clean, modern, high-end generated raster illustration for the <slide purpose> screen. No SVG/vector look, no flat icon art.
Composition: vertical 9:19.5 mobile wallpaper. The artwork will be rendered with resizeMode cover behind a rounded bottom sheet, so the important subject must sit in the upper 45-55% of the canvas and remain readable if the lower 42% is covered. Keep the bottom 42% visually calm, dark/simple, and free of important subject matter. Keep generous side padding so cover-cropping on tall iPhones does not cut the subject.
Scene/backdrop: <scene matching the slide's message>, polished app-store quality, soft depth, subtle atmospheric light.
Subject: <mascot/characters doing something that tells this slide's story>, friendly but not childish.
Style: clean modern 3D illustration, soft rounded forms, premium mobile app onboarding art, gentle warm lighting, crisp subject.
Color: <brand palette as names>, high contrast enough to read on a phone.
Avoid: text, logos, UI, phone frame, screenshots, important objects below the vertical midpoint, huge empty sky, tiny hidden subject, harsh outlines, noisy clutter, stock photo look, flat SVG look, visible watermarks.
Generate one image per onboarding slide (see mobile-app/app/onboarding/content.ts for the slide list), each with a scene that matches that slide's message. Symbolism only — "glowing answer bubbles", "abstract chart shapes" — never readable text in the artwork.
</onboarding_recipe>
<generation_loop>
resizeMode="cover" plus the bottom sheet hides the subject, either regenerate with a higher subject placement or patch the app image style to lift/position the background consistently.
</generation_loop><post_processing>
# copy from the generator output into the repo
mkdir -p mobile-app/assets/onboarding
cp <generated>.png mobile-app/assets/onboarding/<slide-name>.png
cp <generated-splash>.png mobile-app/assets/splash.png
Wire onboarding images as bundled assets (NOT remote URIs): in mobile-app/app/onboarding/content.ts use require("@/assets/onboarding/<name>.png") and type images as ImageSourcePropType. Then:
cd mobile-app && npx tsc --noEmit && npm run lint
Remember: splash changes require a native rebuild (npm run ios) — they will not appear on hot reload. Onboarding images are JS assets and reload normally.
</post_processing>
<render_verification> After wiring onboarding images, verify the real rendered app. File inspection is not enough.
cd mobile-app && npx expo start --port 8082 --dev-client --clear
extra.expoClient.name matches site-config.tsextra.expoClient.slug matches the current appextra.expoClient._internal.projectRoot is the current repolaunchAsset.url points to the explicit port you startedUDID=$(xcrun simctl create "BrandVerify-$(date +%Y%m%d-%H%M%S)" com.apple.CoreSimulator.SimDeviceType.iPhone-17-Pro com.apple.CoreSimulator.SimRuntime.iOS-26-1)
xcrun simctl boot "$UDID"
xcrun simctl bootstatus "$UDID" -b
cd mobile-app && npx expo run:ios --device "$UDID" --port 8082
xcrun simctl io "$UDID" screenshot /tmp/onboarding-welcome.png
<failure_modes>
cover without lifting/positioning the background.projectRoot, app name, slug, and port.npx expo-optimize or pngquant if available; acceptable up to ~1.8MB per onboarding image.
</failure_modes>まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Complete guide for building beautiful apps with Expo Router. Covers fundamentals, styling, components, navigation, animations, patterns, and native tabs.
日本語の概要は準備中です。原文の説明を表示しています。
Routes general Convex requests to the right project skill. Use when the user asks which Convex skill to use or gives an underspecified Convex app task.
日本語の概要は準備中です。原文の説明を表示しています。
Use when optimizing Convex database read bandwidth, documents-read cost, query indexes, full-table scans, function-level usage dashboard findings, or code that uses .filter(), unbounded .collect(), N+1 reads, or expensive reactive Convex queries.
日本語の概要は準備中です。原文の説明を表示しています。
Build reusable Convex components with isolated tables and app-facing wrappers. Use for defineComponent, app.use, ComponentApi, or shared backend modules.
日本語の概要は準備中です。原文の説明を表示しています。
Plan safe Convex schema and data migrations. Use for widen-migrate-narrow rollouts, backfills, breaking field changes, table splits, or failed schema deploys.
日本語の概要は準備中です。原文の説明を表示しています。
Audit Convex performance for hot reads, write contention, subscriptions, function limits, OCC conflicts, latency, read amplification, and expensive reactive queries.
日本語の概要は準備中です。原文の説明を表示しています。