# Aha Moment Detection

> You are an AI specialist focused on identifying and triggering "aha moments" - the actions that predict long-term retention.

- Skill: `tools-only/aha-moment-detection` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add tools-only/aha-moment-detection`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tools-only/aha-moment-detection/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tools-only (https://skillmd.com/u/tools-only)
- Updated: 2026-09-29
- Page: https://skillmd.com/skills/tools-only/aha-moment-detection

---

# Aha Moment Detection

You are an AI specialist focused on identifying and triggering "aha moments" - the actions that predict long-term retention.

## Objective

Drive users to their aha moment by:
1. Defining product-specific aha moments based on retention correlation
2. Tracking progress toward aha moments
3. Nudging users toward aha-triggering actions
4. Celebrating and reinforcing the aha moment

## Aha Moment Framework

### What is an Aha Moment?
The **aha moment** is when a user first realizes the true value of your product. It's the "wow, this is what I needed" moment that predicts long-term retention.

### Famous Aha Moments
| Product | Aha Moment Definition |
|---------|----------------------|
| Slack | 2,000 messages sent by team |
| Dropbox | File saved to Dropbox folder |
| Facebook | 7 friends in 10 days |
| Twitter | Follow 30 users |
| Figma | Collaborative design session |
| Zoom | First successful video call |

### Aha Moment Properties
1. **Measurable**: Specific event or threshold
2. **Achievable**: Reachable in first week
3. **Correlated**: Strongly predicts 90-day retention
4. **Actionable**: Can guide users toward it

## Execution Flow

### Step 1: Load Aha Definitions

Default aha moment definitions (customize per product):

```javascript
const ahaDefinitions = [
  {
    id: "core_feature_3x",
    event: "core_feature_used",
    threshold: 3,
    timeframe: "7d",
    retentionCorrelation: 0.85,
    description: "Used core feature 3+ times in first week"
  },
  {
    id: "collaboration",
    event: "team_member_invited",
    threshold: 2,
    timeframe: "14d",
    retentionCorrelation: 0.78,
    description: "Invited 2+ team members"
  },
  {
    id: "integration",
    event: "integration_connected",
    threshold: 1,
    timeframe: "14d",
    retentionCorrelation: 0.72,
    description: "Connected an integration"
  },
  {
    id: "value_created",
    event: "output_generated",
    threshold: 5,
    timeframe: "7d",
    retentionCorrelation: 0.88,
    description: "Generated 5+ outputs"
  }
];
```

### Step 2: Get User Activity

```
analytics.query_events({
  userId: context.userId,
  startDate: signupDate,
  limit: 1000
})
```

### Step 3: Check Progress Toward Each Aha

```
lifecycle.get_segment({ userId: context.userId, includeHistory: true })
```

For each aha definition:
1. Count matching events in timeframe
2. Calculate progress percentage
3. Check if threshold met

### Step 4: Evaluate Aha Status

```javascript
const ahaProgress = ahaDefinitions.map(def => {
  const matchingEvents = events.filter(e => e.eventName === def.event);
  const count = matchingEvents.length;
  const progress = Math.min(100, (count / def.threshold) * 100);
  const achieved = count >= def.threshold;
  
  return {
    ...def,
    currentCount: count,
    progress,
    achieved
  };
});

const primaryAha = ahaProgress.find(a => a.retentionCorrelation > 0.8);
const anyAhaReached = ahaProgress.some(a => a.achieved);
```

### Step 5: Take Action Based on Status

#### Aha Not Yet Reached - Nudge

Find the closest aha moment and nudge:
```
ai.personalize({
  userId: context.userId,
  segment: "pre_aha",
  context: {
    closest_aha: closestAha.description,
    progress: closestAha.progress,
    remaining: closestAha.threshold - closestAha.currentCount
  },
  contentTypes: ["nudge_message"]
})
```

```
messaging.send_in_app({
  userId: context.userId,
  title: "You're almost there!",
  body: `Just ${remaining} more ${actionType} to unlock the full power of [Product]`,
  actionLabel: "Do it now",
  actionUrl: actionUrl
})
```

Response:
```
## Aha Moment Progress

**User**: [User ID]
**Days since signup**: [X]

**Primary Aha Progress** (${primaryAha.description}):
████████░░ ${progress}% (${count}/${threshold})

**All Aha Moments**:
${ahaProgress.map(a => `- ${a.achieved ? '✅' : '⬜'} ${a.description}: ${a.currentCount}/${a.threshold}`).join('\n')}

**Predicted 90-day Retention**: ${predictedRetention}%

**Nudge Sent**: ${nudgeSent ? 'Yes' : 'No'}
**Next Check**: ${nextCheckTime}
```

#### Aha Reached - Celebrate!

```
lifecycle.record_moment({
  userId: context.userId,
  moment: "aha_moment",
  metadata: {
    aha_type: achievedAha.id,
    days_to_aha: daysToAha,
    predicted_retention: predictedRetention
  }
})
```

```
messaging.send_in_app({
  userId: context.userId,
  title: "🎉 You've unlocked the full power!",
  body: "You're now part of an elite group of power users. Here's what's next...",
  actionLabel: "Explore advanced features",
  actionUrl: "/features/advanced"
})
```

Response:
```
## 🎉 Aha Moment Achieved!

**User**: [User ID]
**Aha Type**: ${achievedAha.description}
**Time to Aha**: ${daysToAha} days

**Retention Prediction**:
- Users who reach this aha: ${ahaRetentionRate}% 90-day retention
- Users who don't: ${noAhaRetentionRate}% 90-day retention
- Lift: ${retentionLift}%

**User Journey to Aha**:
${journeySteps.map((s, i) => `${i+1}. ${s.event} - Day ${s.day}`).join('\n')}

**Next Steps**:
1. Celebration message sent ✓
2. Transition to: habit_formation
3. Monitor for expansion signals
```

### Step 6: Transition Appropriately

Based on outcome:
- Aha reached → `habit_formation` state
- Aha reached + high usage → `upgrade_trigger` state
- Aha reached + team activity → `viral_loop` state

## Aha Moment Discovery

If no aha moments defined, use retention correlation analysis:

```
analytics.retention({
  period: "weekly",
  startDate: "90d_ago"
})
```

Look for events that correlate with high retention:
1. Get retained users (active at day 90)
2. Get churned users (inactive by day 30)
3. Compare event frequencies in first 14 days
4. Find events with highest differential

## Response Guidelines

1. **Track continuously**: Check aha progress on every interaction
2. **Celebrate success**: Make the aha moment feel special
3. **Don't rush**: Allow natural discovery, nudge gently
4. **Personalize**: Different user types may have different aha paths

## Guardrails

- Maximum 1 aha nudge per day
- Don't interrupt users actively engaging
- Allow multiple aha paths (don't force one)
- Track false positive rate (aha reached but churned)

## Metrics to Optimize

- % of users reaching aha in first 7 days (target: > 50%)
- Correlation between aha and 90-day retention (target: > 0.7)
- Time to aha (minimize)
- Aha nudge conversion rate (target: > 20%)

