--- name: fix-onboarding description: | Run /check-onboarding, then fix the highest priority onboarding issue. Creates one fix per invocation. Invoke again for next issue. Use /log-onboarding-issues to create issues without fixing. --- # /fix-onboarding Fix the highest priority onboarding issue. ## What This Does 1. Invoke `/check-onboarding` to audit new user experience 2. Identify highest priority issue 3. Fix that one issue 4. Verify the fix 5. Report what was done **This is a fixer.** It fixes one issue at a time. Run again for next issue. ## Process ### 1. Run Primitive Invoke `/check-onboarding` skill to get prioritized findings. ### 2. Fix Priority Order Fix in this order: 1. **P0**: No onboarding flow, broken auth, paywall before value 2. **P1**: No empty states, no guidance, complex forms, no loading 3. **P2**: No progressive disclosure, no tooltips, no tour 4. **P3**: Retention hooks ### 3. Execute Fix **No onboarding flow (P0):** Create `app/onboarding/page.tsx`: ```tsx export default function OnboardingPage() { return (

Welcome! 👋

Let's get you started with your first [thing].

Create your first [thing]
); } ``` Add redirect for new users: ```tsx // middleware.ts or layout check const isNewUser = !user.hasCompletedOnboarding; if (isNewUser) redirect('/onboarding'); ``` **No empty states (P1):** Create `components/empty-state.tsx`: ```tsx export function EmptyState({ title, description, action, actionHref, }: { title: string; description: string; action: string; actionHref: string; }) { return (
📭

{title}

{description}

{action}
); } ``` Use in lists: ```tsx {items.length === 0 ? ( ) : ( )} ``` **No first-action guidance (P1):** Add inline hints: ```tsx

💡 Quick tip: Start by creating your first project. It only takes 30 seconds!

``` **Complex initial forms (P1):** Simplify to essential fields only: ```tsx // Before: 10 required fields // After: 2 required fields + "You can add more details later"

You can add more details later

``` **No loading states (P1):** Add skeleton component: ```tsx export function Skeleton({ className }: { className?: string }) { return (
); } // Usage {isLoading ? (
) : ( )} ``` ### 4. Verify After fix: ```bash # New user gets onboarding # Test: Create new account, verify redirect # Empty state shows # Test: Clear user data, check list renders empty state # Loading state shows # Test: Throttle network, verify skeleton visible ``` ### 5. Report ``` Fixed: [P0] No onboarding flow Created: - app/onboarding/page.tsx (welcome screen) - middleware.ts update (new user redirect) - components/onboarding-complete-button.tsx Flow: 1. New user signs up 2. Redirected to /onboarding 3. Single CTA to first action 4. Marked complete on first creation Next highest priority: [P1] No empty states Run /fix-onboarding again to continue. ``` ## Branching Before making changes: ```bash git checkout -b feat/onboarding-$(date +%Y%m%d) ``` ## Single-Issue Focus Onboarding has many moving parts. Fix incrementally: - Test each change with real new users - Measure activation rate changes - Easy to A/B test variations Run `/fix-onboarding` repeatedly to improve activation. ## Related - `/check-onboarding` - The primitive (audit only) - `/log-onboarding-issues` - Create issues without fixing - `/cro` - Conversion rate optimization