Onboarding Flow
onboardingFeatures13 lines
A first-run walkthrough that shows once, with a persisted "seen it" flag and a real skip path.
Current — as published in v1.3.2. Written by hand for Onboarding Flow, not generated.
The rule
completedfromuseOnboarding()isboolean | undefined—undefinedmeans "still loading from storage," not "not onboarded." Routing oncompleted === falsebefore the load finishes sends every fresh install through onboarding twice; check forundefinedfirst and render nothing (or a splash) until it resolves.complete()runs on both finishing the last step and skipping. Skip is not "ask again next launch" — it is "user chose not to see this," and it should be persisted exactly the same way finishing is.- Step *content* (
OnboardingStep[]) is a prop, not hardcoded inOnboardingFlow— add or reorder steps where the flow is rendered, not inside the component.
As each tool receives it
The same guidance, in the shape each editor reads. Cursor and Claude Code are written separately by hand; the rest are derived from the Cursor rule.
.cursor/rules/onboarding.mdc
---
description: Onboarding flow conventions
globs: ["src/features/onboarding/**/*.ts", "src/features/onboarding/**/*.tsx"]
alwaysApply: false
---
# Onboarding Flow
- `completed` from `useOnboarding()` is `boolean | undefined` — `undefined`
means "still loading from storage," not "not onboarded." Routing on
`completed === false` before the load finishes sends every fresh install
through onboarding twice; check for `undefined` first and render nothing
(or a splash) until it resolves.
- `complete()` runs on **both** finishing the last step and skipping. Skip is
not "ask again next launch" — it is "user chose not to see this," and it
should be persisted exactly the same way finishing is.
- Step *content* (`OnboardingStep[]`) is a prop, not hardcoded in
`OnboardingFlow` — add or reorder steps where the flow is rendered, not
inside the component.
What else this module writes
Selecting Onboarding Flow contributes more than a rule file — all of it merged with every other module you pick, with conflicts resolved rather than duplicated.
Dependencies
Depends on the rest of the stack — this module installs different packages depending on what else you select, so there is no single list to show.
Folders
src/features/onboarding/
Put this in your repo
Adds Onboarding Flow to a project this tool generated, without starting over. Files you have hand-edited are left alone.