React stack
Apply only decisions material to the requested work. Preserve valid project
choices; do not turn a narrow change into a stack or layout migration.
Select the profile
| Profile |
Use when |
| Web |
Next.js App Router; server-rendered/static web; SEO; Vercel |
| Universal |
Expo Router; mobile-first iOS, Android, and web |
Document the choice in project context. If neither fits, follow the project's
AGENTS.md instead of forcing this stack. Read the matching profile reference
before scaffolding, routing, styling, deployment, or a framework upgrade:
- references/web.md
- references/universal.md
Shared decisions
- Bun is the only runtime/package manager; keep
bun.lock and forbid other
package-manager lockfiles.
- Use
typescript-stack/SKILL.md for compiler configuration, type and API design,
module boundaries, language-level code style, and TypeScript validation.
- Biome owns lint, format, and import ordering.
bun test unit tests are co-located with source. End-to-end tests live in
root e2e/.
- Source lives under
src/ by domain. src/app/ contains framework routes only.
- Components use Atomic Design folders (
atoms, molecules, organisms) with
downward-only dependencies and co-located companions.
- Convex owns application data; Clerk owns identity. Use
convex-conventions/SKILL.md for backend policy.
- Clerk Billing is the default; use Stripe only for a documented capability gap.
- Vercel AI Gateway is the default AI lane. Use a native provider only for a
verified unsupported capability and isolate the exception.
- Use Zod outside Convex and Convex validators inside it.
- Knip checks dead code; Fallow reports complexity and churn hotspots.
- Use Portless for stable worktree-aware local URLs.
- Use
.env.local for solo work and Doppler once a team shares secrets.
Read references/shared-tooling.md when
scaffolding layout, observability, generators, hooks, or package scripts.
project-structure/SKILL.md owns language-neutral repository policy.
Evidence and boundaries
- Verify dependency versions and release status live before adding or upgrading
them; read migration notes for framework, Convex, and Clerk version jumps.
- Confirm Bun and framework/native-package compatibility on the deployment
target.
- A single
bun run check runs the project's format, lint, tests, typecheck,
dead-code/health checks, and build as applicable.
- After dependency changes, run a frozen install plus the check and production
build on the target runtime.
- If this skill does not prescribe a category, recommend a current
Vercel-friendly option with its version, fit, and tradeoffs. Wait for the user
before adding that new product or service.
Do not claim completion without observing the relevant project gate.
1---2name: react-stack3description: Applies the user's Bun-based React stack across Next.js web and Expo universal profiles, deferring backend and repository details to their domain skills. Use when scaffolding a React app, upgrading dependencies, choosing MVP tooling, or selecting a project profile.4license: Unlicense OR MIT5---67# React stack89Apply only decisions material to the requested work. Preserve valid project10choices; do not turn a narrow change into a stack or layout migration.1112## Select the profile1314| Profile | Use when |15| --- | --- |16| Web | Next.js App Router; server-rendered/static web; SEO; Vercel |17| Universal | Expo Router; mobile-first iOS, Android, and web |1819Document the choice in project context. If neither fits, follow the project's20AGENTS.md instead of forcing this stack. Read the matching profile reference21before scaffolding, routing, styling, deployment, or a framework upgrade:2223- [references/web.md](references/web.md)24- [references/universal.md](references/universal.md)2526## Shared decisions2728- Bun is the only runtime/package manager; keep `bun.lock` and forbid other29 package-manager lockfiles.30- Use `typescript-stack/SKILL.md` for compiler configuration, type and API design,31 module boundaries, language-level code style, and TypeScript validation.32- Biome owns lint, format, and import ordering.33- `bun test` unit tests are co-located with source. End-to-end tests live in34 root `e2e/`.35- Source lives under `src/` by domain. `src/app/` contains framework routes only.36- Components use Atomic Design folders (`atoms`, `molecules`, `organisms`) with37 downward-only dependencies and co-located companions.38- Convex owns application data; Clerk owns identity. Use39 `convex-conventions/SKILL.md` for backend policy.40- Clerk Billing is the default; use Stripe only for a documented capability gap.41- Vercel AI Gateway is the default AI lane. Use a native provider only for a42 verified unsupported capability and isolate the exception.43- Use Zod outside Convex and Convex validators inside it.44- Knip checks dead code; Fallow reports complexity and churn hotspots.45- Use Portless for stable worktree-aware local URLs.46- Use `.env.local` for solo work and Doppler once a team shares secrets.4748Read [references/shared-tooling.md](references/shared-tooling.md) when49scaffolding layout, observability, generators, hooks, or package scripts.50`project-structure/SKILL.md` owns language-neutral repository policy.5152## Evidence and boundaries5354- Verify dependency versions and release status live before adding or upgrading55 them; read migration notes for framework, Convex, and Clerk version jumps.56- Confirm Bun and framework/native-package compatibility on the deployment57 target.58- A single `bun run check` runs the project's format, lint, tests, typecheck,59 dead-code/health checks, and build as applicable.60- After dependency changes, run a frozen install plus the check and production61 build on the target runtime.62- If this skill does not prescribe a category, recommend a current63 Vercel-friendly option with its version, fit, and tradeoffs. Wait for the user64 before adding that new product or service.6566Do not claim completion without observing the relevant project gate.