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.
中文简介正在准备中。当前显示原文说明。
查看安装方法安装前可以查看交给 AI 代理的指令内容。
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.
中文简介正在准备中。当前显示原文说明。