Skip to content

docs: spec — trim onboarding from 12 steps to 5 - #256

Open
oxedom wants to merge 2 commits into
mainfrom
docs/spec-onboarding-trim
Open

docs: spec — trim onboarding from 12 steps to 5#256
oxedom wants to merge 2 commits into
mainfrom
docs/spec-onboarding-trim

Conversation

@oxedom

@oxedom oxedom commented Jul 16, 2026

Copy link
Copy Markdown
Contributor

Design spec only. No code changes. Also adds CONTEXT.md (the vocabulary glossary) and ADR-0001.

The goal

The first-run wizard is 12 steps (onboarding-wizard.tsx, 3,607 lines, STEP_COUNT = 12 at :155). Only five collect anything that survives launch. The rest are intro, explainer, or community/marketing screens sitting between "I opened the app" and "I can use it".

The new flow: five screens

Screen Source Notes
1. Intro step 0 unchanged
2. Name step 1 kicks off provider detection in the background
3. What is a Cabinet? step 2 unchanged
4. Create your Cabinet steps 4 + 5 merged one form; provider status resolves inline beneath the fields
5. Launch steps 8+9+10+11 merged GitHub + Discord on one slide, plus cloud email and the disclaimer

Disabled behind a flag, not deleted: knowledge graph (3), hire first agent (6), first task (7). Step 6 doesn't leave the product, it moves after onboarding into the tour tail. The wizard's job is to get the user into a Cabinet, not to populate it.

Provider detection auto-selects the first ready CLI and stays optional — "0 ready" is treated as the default case, since a fresh machine with no agent CLI installed is the common first run.

What verification changed

The spec was written first, then checked line-by-line. Seven claims were wrong, each changing the work:

  • Step 7's task text is never persisted. firstTask (:1807) is read only by its own field and a preview caption. It is not in the launch() payload and appears nowhere in the setup route. The step asks the user for a first task and silently throws it away — it's decorative, so there's no data-loss question to answer.
  • The tour's onLaunchTask is already the real task flow (handleLaunchTourTask → real StartWorkDialog with the live roster). The missing half is agent creation, not task creation.
  • Step 4 is not a modal (:2469-2578 is a plain centred form). The draft's "modal with a fetch resolving behind it" described nothing that exists.
  • No feature-flag mechanism exists anywhere in the repo — only NEXT_PUBLIC_CABINET_EDITION. The spec proposes one rather than reusing one.
  • No component-test stack exists (no testing-library/jsdom; the runner collects .test.ts only), so the draft's component tests were unbuildable.
  • home-blueprint-background.tsx is the welcome step's background — flagging it off with the knowledge step would have broken screen 2.

Main risk: index-shifting

STEP_COUNT is hardcoded and 14 other sites key off the same integers. The spec tables all of them. The nastiest is the index-keyed STEP_NAMES telemetry map (:1646-1659) — a wrong entry emits valid, mislabelled funnel data that nothing catches.

Server tolerance was verified by reading the route: /api/onboarding/setup has no schema validation and guards firstAgent, so dropping steps 6/7 will not break it.

Pre-existing bugs surfaced (not fixed here)

  • launch() never checks res.ok (:2077). A 500 from /api/onboarding/setup resolves, onComplete() runs, and wizard-done="1" is written for a Cabinet that was never created. The trim must not inherit this.
  • Step 4's shipping copy already violates ADR-0001: :2476-2477 reads "Your room is your workspace. Inside your room you have one big cabinet…" — both banned nouns, in the exact screen this spec merges.

Note on scope

CONTEXT.md lands in this PR since ADR-0001 (vocabulary) is core to it, but the glossary is repo-wide and also defines the Template/Library terms used by the templates spec.

See ADR-0001.

🤖 Generated with Claude Code

Cuts the first-run wizard to five screens: intro, name, what-is-a-Cabinet,
create-Cabinet (with provider detection resolving inline), and launch. The
knowledge-graph, hire-agent, and first-task steps are disabled behind a
flag rather than deleted, and agent creation moves to the tour tail.

Adds CONTEXT.md as the vocabulary glossary and ADR-0001 recording that
"Cabinet" is the only user-facing noun, which is why homeName, roomType,
and workspaceName appear in code with no matching words in the UI.

Verification overturned several drafting assumptions: step 7's firstTask
is never persisted, the tour already runs the real task flow, step 4 is
not a modal, and the repo has neither a feature-flag pattern nor a
component-test stack.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The text said eight index-dependent sites; the table lists fourteen.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant