Complete guide for building beautiful apps with Expo Router. Covers fundamentals, styling, components, navigation, animations, patterns, and native tabs.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
Refresh the NowStack Mobile public landing page style. Use for `/ns web landing-page`, landing redesigns, CapWords/Screen Studio inspired references, and web-app/app/components/landing edits.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.
설치 방법 보기설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.
<required_context> Before editing, read these files:
sed -n '1,220p' AGENTS.md
sed -n '1,220p' .agents/rules/web-app.md
sed -n '1,220p' .agents/rules/verification.md
sed -n '1,220p' .agents/rules/typescript-and-code-style.md
sed -n '1,220p' site-config.ts
sed -n '1,220p' web-app/app/routes/index.tsx
rg --files web-app/app/components/landing web-app/app/components/ui
Then read at least three relevant landing files, usually:
sed -n '1,260p' web-app/app/components/landing/landing-hero.tsx
sed -n '1,260p' web-app/app/components/landing/landing-primary-features.tsx
sed -n '1,220p' web-app/app/components/landing/landing-header.tsx
</required_context>
<reference_research>
Use /Users/melvynx/.agents/skills/dev-browser/SKILL.md for visual reference capture. If the user gives URLs, prioritize those. If they only says "like CapWords" or "like Screen Studio", start with:
https://capwords.app/https://screen.studio/For more options, open references/design-swipe-file.md. It contains the two seed references, 20 polished app/product landing pages, and 20 original consumer/mobile app landing pages.
When the user asks to find new references, use /Users/melvynx/.agents/skills/exa-search/SKILL.md for broad source discovery, then verify selected URLs with dev-browser.
</reference_research>
<screenshot_workflow> Capture each chosen reference before proposing edits:
dev-browser --timeout 45 <<'EOF'
const targets = [
{ name: "capwords", url: "https://capwords.app/" },
{ name: "screen-studio", url: "https://screen.studio/" },
];
for (const target of targets) {
const page = await browser.getPage(`landing-ref-${target.name}`);
await page.setViewportSize({ width: 1440, height: 1000 });
await page.goto(target.url, { waitUntil: "domcontentloaded" });
await page.waitForTimeout(2500);
const desktop = await saveScreenshot(
await page.screenshot({ fullPage: false }),
`${target.name}-desktop.png`,
);
await page.setViewportSize({ width: 390, height: 844 });
await page.reload({ waitUntil: "domcontentloaded" });
await page.waitForTimeout(1500);
const mobile = await saveScreenshot(
await page.screenshot({ fullPage: false }),
`${target.name}-mobile.png`,
);
const title = await page.title();
const text = (await page.locator("body").innerText().catch(() => "")).slice(0, 1400);
console.log(JSON.stringify({ name: target.name, url: page.url(), title, desktop, mobile, text }, null, 2));
}
EOF
If a cookie banner or modal blocks the hero, close it or choose the least-invasive cookie option, then recapture. If it cannot be dismissed, keep the screenshot and mention the obstruction. </screenshot_workflow>
<user_alignment_gate> Before editing the landing page, show the captured reference screenshots or paths and ask the user what to keep and what to change. Keep the question short:
Do not copy a reference site wholesale. Do not reuse their screenshots, logos, app imagery, trademarks, copy, or unique branded illustrations. Translate the approved direction into this product's own UI, copy, and assets. </user_alignment_gate>
<implementation_rules>
web-app/app/components/landing/ and web-app/app/routes/index.tsx; do not create a second web app or a parallel landing app.site-config.ts; do not invent legal company details, product ids, prices, or external links./app and /admin visually separate from the marketing treatment. Do not apply hero styling or decorative marketing UI to admin surfaces.web-app/app/components/ui/ primitives and lucide-react icons when useful.trash, never rm -rf, for deleting temporary files.
</implementation_rules><recommended_directions> Use these as starting patterns after the user chooses a direction:
cd web-app && npm run typecheck
cd web-app && npm run build
Then verify with dev-browser. Start the web app first if needed:
cd web-app && npm run dev
Capture desktop and mobile screenshots:
dev-browser --timeout 30 <<'EOF'
const page = await browser.getPage("nowstack-landing");
await page.setViewportSize({ width: 1440, height: 1000 });
await page.goto("http://localhost:3000/", { waitUntil: "domcontentloaded" });
await page.waitForTimeout(1500);
const desktop = await saveScreenshot(await page.screenshot({ fullPage: false }), "nowstack-landing-desktop.png");
await page.setViewportSize({ width: 390, height: 844 });
await page.reload({ waitUntil: "domcontentloaded" });
await page.waitForTimeout(1000);
const mobile = await saveScreenshot(await page.screenshot({ fullPage: true }), "nowstack-landing-mobile.png");
console.log(JSON.stringify({ url: page.url(), title: await page.title(), desktop, mobile }, null, 2));
EOF
Inspect the screenshots before reporting done. Fix obvious overlap, blank media, unreadable contrast, broken sticky nav, clipped buttons, mobile overflow, or missing primary CTA. </verification>
<success_metrics>
/ keeps the existing route contract and uses this product's own content.cd web-app && npm run typecheck passes.cd web-app && npm run build passes unless a clearly unrelated baseline failure is documented.
</success_metrics>아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.
로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.
아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.
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.
한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.