Add Onboard to your SaaS with Claude Code

Claude Code is very good at turning "Add a setup checklist" into a working first pass.

That first pass is almost never the expensive part.

The expensive part is the product surface that appears once real users complete workspace steps, skip optional ones, get blocked on dependencies, and ask why dismiss showed 100%.

Claude Code can build it. That does not mean you should own it.

A generated checklist usually starts the same way

Typical first pass: a list of booleans in localStorage, a progress bar, maybe a skip button.

Then reality expands the scope: host-asserted identity, mixed user/workspace progress, facts that reconcile without double-firing flow_completed, eligibility that is presentation-only, BYO vs Hosted storage, author tokens for live Hosted, test vs live keys, never sending host context through MCP.

None of those problems is shocking. Together they become a real subsystem.

Use Claude Code for integration, not subsystem invention

  1. Choose the subsystem you are happy to buy.
  2. Let Claude Code wire it into your application.
  3. Keep your engineering attention for the things users actually pay you for.

For Onboard, the integration boundary is intentionally simple:

<Onboard
  flowId="flw_..."
  publishableKey="bsw_live_pub_..."
  user={{ id: session.userId, name: session.name }}
  workspaceKey={workspace.id}
  authorToken={authorTokenFromBff}
/>

Or pass an OnboardAdapter for BYO. Bootstrapware handles the checklist UI and (in Hosted) progress. Your app still owns authentication. Follow Path A first if you only need a working UI.

A useful Claude Code prompt

Integrate Bootstrapware Onboard into this app.

Use a new route called /settings/setup.

Requirements:
- Use the Onboard component from @bootstrapware/onboard
- Import @bootstrapware/onboard/styles.css
- Pass user and workspaceKey from the existing session (opaque stable ids)
- Start with createLocalAdapter; document Hosted flowId + publishableKey
- Call completeStep from the host on real actions; pass facts for reconciliation
- Do not invent user.id
- Do not expose secret keys in the client
- Do not send host context or flags through MCP
- If no publishable key is in env, stop and ask me to mint one
- Keep the page component clean and reusable

This works because the prompt is concrete, bounded, and aligned to an existing product. Hand Claude: give this to your coding agent.

Buy narrow, build specific

Claude Code makes "I can build this" true more often than ever.

Onboard exists for the narrower question: "Should I still be the one maintaining dual-scope progress in six months?"

If the answer is no, use the agent to integrate the product rather than regenerate the product.

Related: Onboard · Agents · Cursor · Codex · Give this to your coding agent