Onboarding Audit
Audit an app's onboarding experience against the universal "Onboarding Done Right" checklist (sections A–I). Customizes the checklist for the app's business context, audits actual code, and produces a fact-find brief that feeds into /lp-do-analysis before planning.
When to Use
- DO (
/lp-do-fact-find): When a startup loop card targets onboarding improvement
- L2→L3 readiness: When a business is launching and onboarding is a critical activation lever
- Standalone: Operator invokes
/lp-onboarding-audit <BIZ> at any time to audit an existing onboarding flow
- Post-launch: Periodic re-audit to check regression or measure improvement
Operating Mode
READ + CUSTOMIZE + AUDIT + REPORT
Allowed:
- Read generic checklist from
.claude/skills/_shared/onboarding-done-right-checklist.md
- Read business strategy plans, brand language docs, businesses.json
- Read onboarding component code, routes, layouts, analytics, test files
- Trace flow logic and data contracts
- Run read-only commands (grep, find, file listing)
- Create/update fact-find brief at
docs/plans/<app>-onboarding-audit-fact-find.md
- Create/update Business OS card and stage doc via agent API
Not Allowed:
- Code changes or refactors (use
/lp-do-build after planning)
- Running tests (audit is static analysis + code reading)
- User research or live user testing (audit is code-only)
- Marking items Pass without citing evidence
Inputs
| Source |
Path |
Required |
| Business unit code |
<BIZ> (e.g., BRIK, HEAD, PET) |
Yes |
| Strategy plan |
docs/business-os/strategy/<BIZ>/plan.user.md |
Yes |
| Business registry |
docs/business-os/strategy/businesses.json |
Yes |
| Generic checklist |
.claude/skills/_shared/onboarding-done-right-checklist.md |
Yes |
| Brand language |
docs/business-os/strategy/<BIZ>/<YYYY-MM-DD>-brand-identity-dossier.user.md |
No — enhances customization |
| App name |
<app> argument (e.g., prime) |
No — if BIZ has multiple apps |
| Scope limit |
--scope A,B,E argument |
No — audit specific sections only |
Workflow
Step 1: Resolve Business Context
Goal: Understand the business, app type, audience, and brand before customizing the checklist.
- Read
businesses.json to map BIZ → app list and theme
- Read strategy plan for: business model, target audience, app purpose, maturity stage
- Read brand language doc (if exists) for: audience definition, personality, device context
- If user specified an app, audit that one; otherwise audit all apps for that business
- Classify app type as one of:
- Free content app / Free guest companion / Paid app / Freemium
- Enterprise/B2B / Admin/internal tool / Booking/commerce / Social/community
- Document the classification — it drives N/A decisions in Step 2
Outputs for brief:
- Business Unit, App name(s), App type classification
- Target audience summary, Device context, Business model
Step 2: Customize the Checklist
Goal: Make the generic checklist specific to this app's purpose.
- Read
.claude/skills/_shared/onboarding-done-right-checklist.md
- For each section A–I:
- Check applicability using the "App Type N/A Guidance" table
- If N/A: document WHY (e.g., "Section F (Paywall) → N/A: Prime is a free guest companion app")
- If applicable: write 1–2 sentences translating generic items into this app's context
- Examples of app-specific interpretation:
- Section A (Value-first) for Prime: "Guest sees their personalized arrival plan within 2 screens of starting onboarding"
- Section B (Friction) for Prime: "Guest profile capture must justify every field — ETA is critical, room preferences are deferrable"
- Section G (Analytics) for a pre-L2 app: "Likely missing entirely — flag as a prerequisite gap"
Outputs for brief:
- Customized checklist with N/A reasoning and app-specific interpretation per section
Step 3: Audit Actual Onboarding Code
Goal: Scan the codebase using lp-do-fact-find's evidence audit methodology.
Locate onboarding entry points:
- Search for:
onboard*, welcome*, setup*, guided*, activation* in component names and routes
- Common paths:
apps/<app>/src/components/onboarding/, apps/<app>/src/app/onboarding/
- Read layout files, flow components, step components
Trace flow logic:
- Number of steps, conditional branching, skip/exit paths
- Data collected at each step (fields, schemas)
- Where data is persisted (API calls, local storage, state)
Scan analytics instrumentation:
- Search for
track, record, analytics, event, log in onboarding components
- Check: per-step events, completion event, drop-off tracking, error logging
- Note any analytics SDK setup (Mixpanel, Amplitude, PostHog, etc.)
Check accessibility:
- Grep for
aria-, tabIndex, role=, focus(), label, sr-only
- Check touch target sizes in styles
- Look for focus management between steps
Check error handling:
- Network failure states, retry logic, validation UX
- Loading states (skeleton loaders vs spinners vs nothing)
- Timeout handling, session expiry during onboarding
Review test coverage:
- Locate test files for onboarding components
- Note what's covered vs gaps
- Check for integration/E2E tests of the full flow
If no onboarding flow is found: STOP. Report that the app has no onboarding and recommend building one. Do not fabricate audit results.
Outputs for brief:
- Component inventory (all onboarding-related file paths)
- Flow map (steps → data → persistence → analytics)
- Test coverage summary
Step 4: Score Each Section
Goal: Produce a Pass/Fail/Partial/N/A verdict for each checklist item with evidence.
Scoring rules:
- Pass: Implemented and meets practice — cite component path + line number
- Fail: Missing, broken, or anti-pattern — explain what's wrong
- Partial: Implemented with gaps — specify what's missing
- N/A: Not applicable — reasoning from Step 2
Section-level verdict:
80% of applicable items Pass → Section passes
50% of applicable items Fail → Section fails (requires immediate attention)
- 50–80% Pass → Section needs improvement
Must-have risk items (from the scoring rubric):
- Aha moment not reached quickly → automatic risk flag
- Sign-up before value when not required → automatic risk flag
- No onboarding funnel analytics → automatic risk flag
- No paywall test strategy for paid apps → automatic risk flag
Step 5: Produce Fact-Find Brief
Goal: Write an analysis-ready brief using lp-do-fact-find Outcome A format.
Output path:
docs/plans/<app>-onboarding-audit-fact-find.md
Frontmatter (required):
---
Type: Fact-Find
Outcome: Planning
Status: <Ready-for-analysis | Needs-input>
Domain: UI
Workstream: Engineering
Created: <YYYY-MM-DD>
Last-updated: <YYYY-MM-DD>
Feature-Slug: <app>-onboarding-audit
Deliverable-Type: <code-change | multi-deliverable>
Execution-Track: <code | mixed>
Primary-Execution-Skill: lp-do-build
Supporting-Skills: lp-design-system
Related-Analysis: docs/plans/<app>-onboarding-audit-analysis.md
Business-OS-Integration: on
Business-Unit: <BIZ>
---
Brief sections (in order):
- Scope — Summary, goals, non-goals, constraints
- App Context — Business unit, app type, audience, device, business model
- Evidence Audit — Component inventory, flow map, data contracts, analytics coverage, test landscape
- Customized Checklist — Section-by-section scores with per-item evidence:
### Section A: Value-first flow
**App-specific interpretation:** <1-2 sentences>
**Verdict:** Pass | Fail | Needs-Improvement | N/A
- [x] A.1 Core promise is benefit-led — **Pass** — `GuestProfileStep.tsx:15` shows "Help us prepare your perfect stay"
- [ ] A.2 Aha moment designed — **Fail** — No meaningful result shown; flow ends at generic "Welcome" screen
...
- Findings Summary — Sections passing / failing / needing improvement / N/A
- Risks — Table with top risks, likelihood, impact, mitigation
- Recommended Fixes — Prioritized as P0 (critical) / P1 (important) / P2 (polish), each with component path and expected impact
- Confidence Inputs — Implementation, Approach, Impact, Delivery-Readiness, Testability scores (0–100) for
/lp-do-analysis
- Suggested Task Seeds — Non-binding task ideas for
/lp-do-analysis and later /lp-do-plan
- Analysis Readiness — Status + blocking items if any
Step 6: Report Completion
Completion message format:
Onboarding audit complete for <app> (<BIZ>).
**Audit summary:**
- Sections audited: <N> | Passing: <N> | Failing: <N> | Needs improvement: <N> | N/A: <N>
**Must-have risk check:**
- Aha moment: <Pass | FAIL>
- Sign-up before value: <Pass | FAIL | N/A>
- Funnel analytics: <Pass | FAIL>
- Paywall test strategy: <Pass | FAIL | N/A>
**Top 3 risks:**
1. <Risk 1> (Severity: High | Medium | Low)
2. <Risk 2>
3. <Risk 3>
**Recommended fixes:** P0: <N> | P1: <N> | P2: <N>
**Brief:** `docs/plans/<app>-onboarding-audit-fact-find.md`
**Status:** Ready-for-analysis | Needs-input
**Next:** `/lp-do-analysis <app>-onboarding-audit`
Quality Checks
Integration
- Consumed by:
/lp-do-analysis (selects the right onboarding improvement approach before tasking)
- Feeds into:
/lp-do-plan and then /lp-do-build
- References:
.claude/skills/_shared/onboarding-done-right-checklist.md (generic checklist)
- Loop position: DO (
/lp-do-fact-find) — specialized fact-find for onboarding audits
- Trigger conditions:
- Card targets onboarding improvement
- Business at L2→L3 transition (launch readiness)
- Operator invokes manually at any time
- Business OS sync: Creates card + fact-find stage doc when
Business-Unit is present
Red Flags (Invalid Run)
- No onboarding found: If the app has no discoverable onboarding flow, STOP and report. Do not fabricate results.
- Business context missing: If strategy plan doesn't exist and context can't be inferred, STOP and ask user to provide it.
- Scoring without evidence: Every Pass must cite a file path. If you can't find evidence, mark as Fail or Partial, never Pass.
- N/A without reasoning: Every N/A must explain why. "Not applicable" alone is not acceptable.
- Zero risks identified: Every audit must surface at least one risk. If everything genuinely passes, flag the must-have items as the minimum verification.
Example Invocation
/lp-onboarding-audit BRIK
/lp-onboarding-audit BRIK prime
/lp-onboarding-audit BRIK prime --scope A,B,G
1---2name: lp-onboarding-audit3description: Audit an app's onboarding flow against the "Onboarding Done Right" checklist. Customizes the generic checklist for the app's purpose and audience, then audits actual code using lp-do-fact-find's Outcome A process. Produces an analysis-ready brief.4---5
6# Onboarding Audit
7
8Audit an app's onboarding experience against the universal "Onboarding Done Right" checklist (sections A–I). Customizes the checklist for the app's business context, audits actual code, and produces a fact-find brief that feeds into `/lp-do-analysis` before planning.
9
10## When to Use
11
12- **DO (`/lp-do-fact-find`)**: When a startup loop card targets onboarding improvement
13- **L2→L3 readiness**: When a business is launching and onboarding is a critical activation lever
14- **Standalone**: Operator invokes `/lp-onboarding-audit <BIZ>` at any time to audit an existing onboarding flow
15- **Post-launch**: Periodic re-audit to check regression or measure improvement
16
17## Operating Mode
18
19**READ + CUSTOMIZE + AUDIT + REPORT**
20
21**Allowed:**
22- Read generic checklist from `.claude/skills/_shared/onboarding-done-right-checklist.md`
23- Read business strategy plans, brand language docs, businesses.json
24- Read onboarding component code, routes, layouts, analytics, test files
25- Trace flow logic and data contracts
26- Run read-only commands (grep, find, file listing)
27- Create/update fact-find brief at `docs/plans/<app>-onboarding-audit-fact-find.md`
28- Create/update Business OS card and stage doc via agent API
29
30**Not Allowed:**
31- Code changes or refactors (use `/lp-do-build` after planning)
32- Running tests (audit is static analysis + code reading)
33- User research or live user testing (audit is code-only)
34- Marking items Pass without citing evidence
35
36## Inputs
37
38| Source | Path | Required |
39|--------|------|----------|
40| Business unit code | `<BIZ>` (e.g., `BRIK`, `HEAD`, `PET`) | Yes |
41| Strategy plan | `docs/business-os/strategy/<BIZ>/plan.user.md` | Yes |
42| Business registry | `docs/business-os/strategy/businesses.json` | Yes |
43| Generic checklist | `.claude/skills/_shared/onboarding-done-right-checklist.md` | Yes |
44| Brand language | `docs/business-os/strategy/<BIZ>/<YYYY-MM-DD>-brand-identity-dossier.user.md` | No — enhances customization |
45| App name | `<app>` argument (e.g., `prime`) | No — if BIZ has multiple apps |
46| Scope limit | `--scope A,B,E` argument | No — audit specific sections only |
47
48## Workflow
49
50### Step 1: Resolve Business Context
51
52**Goal:** Understand the business, app type, audience, and brand before customizing the checklist.
53
541. Read `businesses.json` to map BIZ → app list and theme
552. Read strategy plan for: business model, target audience, app purpose, maturity stage
563. Read brand language doc (if exists) for: audience definition, personality, device context
574. If user specified an app, audit that one; otherwise audit all apps for that business
585. **Classify app type** as one of:
59 - Free content app / Free guest companion / Paid app / Freemium
60 - Enterprise/B2B / Admin/internal tool / Booking/commerce / Social/community
616. Document the classification — it drives N/A decisions in Step 2
62
63**Outputs for brief:**
64- Business Unit, App name(s), App type classification
65- Target audience summary, Device context, Business model
66
67### Step 2: Customize the Checklist
68
69**Goal:** Make the generic checklist specific to this app's purpose.
70
711. Read `.claude/skills/_shared/onboarding-done-right-checklist.md`
722. For each section A–I:
73 - **Check applicability** using the "App Type N/A Guidance" table
74 - If N/A: document WHY (e.g., "Section F (Paywall) → N/A: Prime is a free guest companion app")
75 - If applicable: write 1–2 sentences translating generic items into this app's context
763. Examples of app-specific interpretation:
77 - Section A (Value-first) for Prime: "Guest sees their personalized arrival plan within 2 screens of starting onboarding"
78 - Section B (Friction) for Prime: "Guest profile capture must justify every field — ETA is critical, room preferences are deferrable"
79 - Section G (Analytics) for a pre-L2 app: "Likely missing entirely — flag as a prerequisite gap"
80
81**Outputs for brief:**
82- Customized checklist with N/A reasoning and app-specific interpretation per section
83
84### Step 3: Audit Actual Onboarding Code
85
86**Goal:** Scan the codebase using lp-do-fact-find's evidence audit methodology.
87
881. **Locate onboarding entry points:**
89 - Search for: `onboard*`, `welcome*`, `setup*`, `guided*`, `activation*` in component names and routes
90 - Common paths: `apps/<app>/src/components/onboarding/`, `apps/<app>/src/app/onboarding/`
91 - Read layout files, flow components, step components
92
932. **Trace flow logic:**
94 - Number of steps, conditional branching, skip/exit paths
95 - Data collected at each step (fields, schemas)
96 - Where data is persisted (API calls, local storage, state)
97
983. **Scan analytics instrumentation:**
99 - Search for `track`, `record`, `analytics`, `event`, `log` in onboarding components
100 - Check: per-step events, completion event, drop-off tracking, error logging
101 - Note any analytics SDK setup (Mixpanel, Amplitude, PostHog, etc.)
102
1034. **Check accessibility:**
104 - Grep for `aria-`, `tabIndex`, `role=`, `focus()`, `label`, `sr-only`
105 - Check touch target sizes in styles
106 - Look for focus management between steps
107
1085. **Check error handling:**
109 - Network failure states, retry logic, validation UX
110 - Loading states (skeleton loaders vs spinners vs nothing)
111 - Timeout handling, session expiry during onboarding
112
1136. **Review test coverage:**
114 - Locate test files for onboarding components
115 - Note what's covered vs gaps
116 - Check for integration/E2E tests of the full flow
117
118**If no onboarding flow is found:** STOP. Report that the app has no onboarding and recommend building one. Do not fabricate audit results.
119
120**Outputs for brief:**
121- Component inventory (all onboarding-related file paths)
122- Flow map (steps → data → persistence → analytics)
123- Test coverage summary
124
125### Step 4: Score Each Section
126
127**Goal:** Produce a Pass/Fail/Partial/N/A verdict for each checklist item with evidence.
128
129**Scoring rules:**
130- **Pass:** Implemented and meets practice — cite component path + line number
131- **Fail:** Missing, broken, or anti-pattern — explain what's wrong
132- **Partial:** Implemented with gaps — specify what's missing
133- **N/A:** Not applicable — reasoning from Step 2
134
135**Section-level verdict:**
136- >80% of applicable items Pass → **Section passes**
137- >50% of applicable items Fail → **Section fails** (requires immediate attention)
138- 50–80% Pass → **Section needs improvement**
139
140**Must-have risk items** (from the scoring rubric):
141- Aha moment not reached quickly → automatic risk flag
142- Sign-up before value when not required → automatic risk flag
143- No onboarding funnel analytics → automatic risk flag
144- No paywall test strategy for paid apps → automatic risk flag
145
146### Step 5: Produce Fact-Find Brief
147
148**Goal:** Write an analysis-ready brief using `lp-do-fact-find` Outcome A format.
149
150**Output path:**
151```
152docs/plans/<app>-onboarding-audit-fact-find.md
153```
154
155**Frontmatter (required):**
156```yaml
157---
158Type: Fact-Find
159Outcome: Planning
160Status: <Ready-for-analysis | Needs-input>
161Domain: UI
162Workstream: Engineering
163Created: <YYYY-MM-DD>
164Last-updated: <YYYY-MM-DD>
165Feature-Slug: <app>-onboarding-audit
166Deliverable-Type: <code-change | multi-deliverable>
167Execution-Track: <code | mixed>
168Primary-Execution-Skill: lp-do-build
169Supporting-Skills: lp-design-system
170Related-Analysis: docs/plans/<app>-onboarding-audit-analysis.md
171Business-OS-Integration: on
172Business-Unit: <BIZ>
173---
174```
175
176**Brief sections (in order):**
177
1781. **Scope** — Summary, goals, non-goals, constraints
1792. **App Context** — Business unit, app type, audience, device, business model
1803. **Evidence Audit** — Component inventory, flow map, data contracts, analytics coverage, test landscape
1814. **Customized Checklist** — Section-by-section scores with per-item evidence:
182 ```
183 ### Section A: Value-first flow
184 **App-specific interpretation:** <1-2 sentences>
185 **Verdict:** Pass | Fail | Needs-Improvement | N/A
186
187 - [x] A.1 Core promise is benefit-led — **Pass** — `GuestProfileStep.tsx:15` shows "Help us prepare your perfect stay"
188 - [ ] A.2 Aha moment designed — **Fail** — No meaningful result shown; flow ends at generic "Welcome" screen
189 ...
190 ```
1915. **Findings Summary** — Sections passing / failing / needing improvement / N/A
1926. **Risks** — Table with top risks, likelihood, impact, mitigation
1937. **Recommended Fixes** — Prioritized as P0 (critical) / P1 (important) / P2 (polish), each with component path and expected impact
1948. **Confidence Inputs** — Implementation, Approach, Impact, Delivery-Readiness, Testability scores (0–100) for `/lp-do-analysis`
1959. **Suggested Task Seeds** — Non-binding task ideas for `/lp-do-analysis` and later `/lp-do-plan`
19610. **Analysis Readiness** — Status + blocking items if any
197
198### Step 6: Report Completion
199
200**Completion message format:**
201
202```
203Onboarding audit complete for <app> (<BIZ>).
204
205**Audit summary:**
206- Sections audited: <N> | Passing: <N> | Failing: <N> | Needs improvement: <N> | N/A: <N>
207
208**Must-have risk check:**
209- Aha moment: <Pass | FAIL>
210- Sign-up before value: <Pass | FAIL | N/A>
211- Funnel analytics: <Pass | FAIL>
212- Paywall test strategy: <Pass | FAIL | N/A>
213
214**Top 3 risks:**
2151. <Risk 1> (Severity: High | Medium | Low)
2162. <Risk 2>
2173. <Risk 3>
218
219**Recommended fixes:** P0: <N> | P1: <N> | P2: <N>
220
221**Brief:** `docs/plans/<app>-onboarding-audit-fact-find.md`
222**Status:** Ready-for-analysis | Needs-input
223**Next:** `/lp-do-analysis <app>-onboarding-audit`
224```
225
226## Quality Checks
227
228- [ ] Business context resolved (strategy plan read, app type classified)
229- [ ] Brand language read (if exists) for audience and voice context
230- [ ] Checklist customized (N/A marked with reasoning, app-specific interpretation per section)
231- [ ] All onboarding components found and read (not guessed)
232- [ ] Every Pass/Fail cites component path + line number (no verdicts without evidence)
233- [ ] Every N/A section has documented reasoning
234- [ ] Must-have risk items checked (A: Aha, B: sign-up gate, G: analytics, F: paywall)
235- [ ] At least one risk identified (no "everything is perfect" audits)
236- [ ] Fact-find brief has all required lp-do-fact-find Outcome A sections
237- [ ] Confidence inputs provided (5 dimensions, 0–100)
238- [ ] Analysis readiness status set
239- [ ] Brief saved at correct path with correct frontmatter
240
241## Integration
242
243- **Consumed by**: `/lp-do-analysis` (selects the right onboarding improvement approach before tasking)
244- **Feeds into**: `/lp-do-plan` and then `/lp-do-build`
245- **References**: `.claude/skills/_shared/onboarding-done-right-checklist.md` (generic checklist)
246- **Loop position**: DO (`/lp-do-fact-find`) — specialized fact-find for onboarding audits
247- **Trigger conditions**:
248 - Card targets onboarding improvement
249 - Business at L2→L3 transition (launch readiness)
250 - Operator invokes manually at any time
251- **Business OS sync**: Creates card + fact-find stage doc when `Business-Unit` is present
252
253## Red Flags (Invalid Run)
254
2551. **No onboarding found:** If the app has no discoverable onboarding flow, STOP and report. Do not fabricate results.
2562. **Business context missing:** If strategy plan doesn't exist and context can't be inferred, STOP and ask user to provide it.
2573. **Scoring without evidence:** Every Pass must cite a file path. If you can't find evidence, mark as Fail or Partial, never Pass.
2584. **N/A without reasoning:** Every N/A must explain why. "Not applicable" alone is not acceptable.
2595. **Zero risks identified:** Every audit must surface at least one risk. If everything genuinely passes, flag the must-have items as the minimum verification.
260
261## Example Invocation
262
263```
264/lp-onboarding-audit BRIK
265/lp-onboarding-audit BRIK prime
266/lp-onboarding-audit BRIK prime --scope A,B,G
267```