---
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 (
);
}
```
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 (
);
}
```
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"
```
**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