onboarding-optimization — Claude Code skill: audit your first-run flow
This skill walks through your app's first-run screens, flags the ones that only add friction, and moves permission prompts and sign-up to better moments.
npx skills add appeeky/aso-skills --skill onboarding-optimization -a claude-codeWhat onboarding-optimization does
The skill drives the agent through an activation-first method. You start by naming the event where a new user gets real value, then every screen between app open and that event gets scored on necessity, timing, value exchange and cognitive load. Screens that are friction only get removed or deferred.
Permission prompts have their own section: push, location, camera, contacts and tracking each come with a when-to-ask and a never-ask column. Before the system dialog the skill recommends a screen that explains the benefit. Sign-up patterns are laid out in a table — required account before value, long profile setup, email verification — with a note on which ones kill momentum.
You also get flow templates per app type, funnel benchmarks and personalization rules: 3–5 questions at most, each visibly changing the experience, with a progress indicator. The output is an audit of your current flow, a hypothesis for the biggest drop-off and a revised path with a count of removed steps. It leans on Firebase or Mixpanel funnels, so without them some conclusions stay guesses.
What it helps with
- pin down the activation event for your app
- spot screens that only add friction
- move the push prompt to after activation
- cut drop-off on a mandatory sign-up
- rebuild the first-run flow end to end
Example prompts for the agent
- audit my app's onboarding and show me where users drop off
- our Day 1 retention is falling — walk through the first-run flow
- when should I ask for push and location permissions?
How to install onboarding-optimization
1Skills CLI (Vercel)
npx skills add appeeky/aso-skills --skill onboarding-optimization -a claude-code2Manually: put the files in place
~/.claude/skills/onboarding-optimization/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/onboarding-optimization/
1Skills CLI (Vercel)
npx skills add appeeky/aso-skills --skill onboarding-optimization -a codex2Manually: put the files in place
.agents/skills/onboarding-optimization/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add appeeky/aso-skills --skill onboarding-optimization -a cursor2Manually: put the files in place
.cursor/skills/onboarding-optimization/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install appeeky/aso-skills onboarding-optimization2Manually: put the files in place
.github/skills/onboarding-optimization/SKILL.md1Skills CLI (Vercel)
npx skills add appeeky/aso-skills --skill onboarding-optimization -a gemini-cli2Platform CLI
gemini skills install https://github.com/appeeky/aso-skills --path skills/onboarding-optimizationManually: put the files in place
.devin/skills/onboarding-optimization/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add appeeky/aso-skills --skill onboarding-optimization -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about onboarding-optimization
How do I install onboarding-optimization in Claude?
Run npx skills add appeeky/aso-skills --skill onboarding-optimization -a claude-code. The skill lands in ~/.claude/skills/onboarding-optimization/SKILL.md.
What does onboarding-optimization do?
It maps every screen from app open to the activation event, labels each one required, value-adding or friction only, and proposes a revised flow. It also covers permission timing and sign-up friction.
How is it different from retention-optimization?
onboarding-optimization handles the first run and activation, while retention-optimization covers Day 7 and Day 30 retention. Paywall placement lives in monetization-strategy.
Source text
SKILL.md · MIT
---
name: onboarding-optimization
description: When the user wants to improve their app's onboarding experience, increase activation rate, reduce Day 1 drop-off, or optimize the first-run flow. Use when the user mentions "onboarding", "first-run", "activation", "tutorial", "day 1 retention", "new user flow", "permission prompts", "sign-up conversion", "onboarding funnel", or "users dropping off early". For overall retention strategy, see retention-optimization. For paywall placement, see monetization-strategy.
metadata:
version: 1.0.0
---
# Onboarding Optimization
You optimize the first-run experience to maximize activation — the moment a new user completes the core action that predicts long-term retention.
## The Activation Principle
**Activation ≠ sign-up.** Activation is the first time the user gets real value from your app. Identify it before anything else.
| App Type | Activation Event |
|----------|-----------------|
| Fitness | First workout completed |
| Productivity | First task or project created |
| Social | First connection made or content posted |
| Finance | First account linked or budget set |
| Games | First level or match completed |
| Meditation | First session completed |
| Photo/Video | First photo edited or exported |
**Rule:** Everything in onboarding should funnel toward that one activation event as fast as possible.
## Initial Assessment
1. Check for `app-marketing-context.md`
2. Ask: **What is your activation event?**
3. Ask: **What % of new users reach it within 24 hours?** (baseline)
4. Ask: **Where do users drop off?** (which step, if known)
5. Ask: **How long does your current onboarding take?** (steps, screens)
6. Ask: **Do you have Firebase/Mixpanel funnels set up?**
## Onboarding Audit Framework
### Step 1 — Map the Current Flow
List every screen from app open to activation:
```
App open → [Screen 1] → [Screen 2] → ... → Activation event
```
Flag each screen: **Required** | **Value-adding** | **Friction only**
Remove or defer everything that is friction-only.
### Step 2 — Score Each Screen
| Factor | Question | Score |
|--------|---------|-------|
| **Necessity** | Can the user reach activation without this? | 0 = skip it |
| **Timing** | Is this the right moment for this ask? | |
| **Value exchange** | Does the user understand why this benefits them? | |
| **Cognitive load** | How many decisions does this require? | |
### Step 3 — Permission Prompt Timing
Permissions are the #1 drop-off point. Rules:
| Permission | When to ask | Never ask |
|-----------|------------|-----------|
| Push notifications | After activation, not before | On cold open |
| Location | When the feature needs it | During sign-up |
| Camera/microphone | Contextually, when used | Before any value |
| Contacts | When the social feature is used | In onboarding |
| Tracking (ATT) | After user is invested | On first open |
**The pre-permission screen:** Always show a native-looking explanation screen before the system prompt. Users who understand the "why" grant at 2–3× the rate.
### Step 4 — Sign-Up Friction
| Pattern | Impact | Recommendation |
|---------|--------|---------------|
| Required sign-up before value | High drop-off | Defer to post-activation |
| Only email+password | Medium drop-off | Add Sign in with Apple + Google |
| Long profile setup | High drop-off | Ask 1 question max, defer rest |
| Email verification required | Kills momentum | Defer or make optional |
**Guest mode / try before sign-up:** Allow users to experience the core value before requiring an account. Conversion from guest → registered is typically 40–60% vs. a hard gate at 15–30%.
## Onboarding Patterns by App Type
### Value-First (recommended for most apps)
```
Open → Core feature demo / interactive preview
→ Activation moment
→ "Save your progress" → Sign-up
→ Permission asks
→ Personalization
```
### Personalization-First (works for health, fitness, AI apps)
```
Open → 3–5 personalization questions (show progress bar)
→ "Your plan is ready" reveal moment
→ Sign-up gate (invested now)
→ Activation
```
### Social-First (social apps)
```
Open → Sign in with Apple/Google (single tap)
→ Find friends / follow suggestions
→ First feed with content
→ Activation (post, comment, react)
```
## Funnel Benchmarks
| Step | Benchmark | Poor |
|------|-----------|------|
| App open → first interaction | > 85% | < 70% |
| Sign-up conversion | > 60% | < 40% |
| Push permission grant | > 50% | < 30% |
| Activation (D0) | > 40% | < 20% |
| Day 1 retention | > 30% | < 15% |
## Personalization Questions
If you include personalization, follow these rules:
- Maximum **3–5 questions** in onboarding
- Each question must visibly affect the experience
- Show a progress indicator (step 1 of 3)
- Use visual selections, not text inputs
- Never ask for data you won't use immediately
## Paywall Placement in Onboarding
**Rule:** Show value before the paywall.
| Placement | Works When |
|-----------|-----------|
| Before activation | Almost never — user has no reference for value |
| At activation | Strong — user just felt the value |
| Post-activation, D1 | Strongest for subscription apps |
| Contextual (feature gate) | Good for feature-based paywall |
See `monetization-strategy` for paywall design details.
## Output Format
### Onboarding Audit
```
Current flow:
[Screen 1] — Required / friction
[Screen 2] — Value-adding
[Screen 3] — Required / friction
...
[Activation event] — Step N
Drop-off analysis:
Biggest drop: [screen] ([X]% exit rate if known)
Estimated cause: [hypothesis]
Recommended changes:
1. [Remove / defer X] — Expected impact: [lift in activation]
2. [Reorder Y before Z] — Expected impact: [rationale]
3. [Add pre-permission screen for Z] — Expected impact: [grant rate improvement]
Revised flow:
Open → [Screen] → [Screen] → Activation → Sign-up → Permissions
Estimated steps removed: [N]
Estimated time to activation: [Xs → Xs]
```
### Permission Screen Copy Template
```
[Icon representing the permission]
[Benefit headline — what the user gets]
e.g., "Get notified when your goal is complete"
[One-line explanation]
e.g., "We'll only send you reminders you set — no spam."
[Allow button] [Not now]
```
## Related Skills
- `retention-optimization` — Day 7/30 retention strategy
- `monetization-strategy` — Paywall placement and trial design
- `ab-test-store-listing` — Test onboarding variants
- `app-analytics` — Set up activation funnel tracking
- `rating-prompt-strategy` — When to ask for a rating post-activation
© appeeky · MIT · appeeky/aso-skills