Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Product analytics and growth expert. Use when designing event tracking, defining metrics, running A/B tests, or analyzing retention. Covers AARRR framework, funnel analysis, cohort analysis, and experimentation.
.claude/skills/majiayu000-product-analytics/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 84% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 122% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 106% | 0% |
| case-22 | ✗→✓ | ▲ Improved | 312% | 0% |
| case-02 | ✓→✓ | = Same ✓ | 114% | 0% |
> These rules are mandatory. Violating them means the skill is not working correctly.
Events must NEVER contain personally identifiable information.
javascript// ❌ FORBIDDEN: PII in event properties track('user_signed_up', { email: 'user@example.com', // PII! name: 'John Doe', // PII! phone: '+1234567890', // PII! ip_address: '192.168.1.1', // PII! credit_card: '4111...', // NEVER! }); // ✅ REQUIRED: Anonymized/hashed identifiers only track('user_signed_up', { user_id: hash('user@example.com'), // Hashed plan: 'pro', source: 'organic', country: 'US', // Broad location OK }); // Masking utilities const maskEmail = (email) => { const [name, domain] = email.split('@'); return `${name[0]}***@${domain}`; };
All event names must follow the object_action snake_case format.
javascript// ❌ FORBIDDEN: Inconsistent naming track('signup'); // No object track('newProject'); // camelCase track('Upload File'); // Spaces and PascalCase track('user-created'); // kebab-case track('BUTTON_CLICKED'); // SCREAMING_CASE // ✅ REQUIRED: object_action snake_case track('user_signed_up'); track('project_created'); track('file_uploaded'); track('payment_completed'); track('checkout_started');
Track metrics that drive decisions, not vanity metrics.
javascript// ❌ FORBIDDEN: Vanity metrics without context track('page_viewed'); // No insight track('button_clicked'); // Too generic track('app_opened'); // Doesn't indicate value // ✅ REQUIRED: Actionable metrics tied to outcomes track('feature_activated', { feature: 'dark_mode', time_to_activation_hours: 2.5, user_segment: 'power_user', }); track('checkout_completed', { order_value: 99.99, items_count: 3, payment_method: 'credit_card', coupon_applied: true, });
A/B tests must have proper sample size and significance thresholds.
javascript// ❌ FORBIDDEN: Drawing conclusions too early // "After 100 users, variant B has 5% higher conversion!" // This is not statistically significant. // ✅ REQUIRED: Proper experiment setup const experimentConfig = { name: 'new_checkout_flow', hypothesis: 'New flow increases conversion by 10%', // Statistical requirements significance_level: 0.05, // 95% confidence power: 0.80, // 80% power minimum_detectable_effect: 0.10, // 10% lift // Calculated sample size sample_size_per_variant: 3842, // Guardrails max_duration_days: 14, stop_if_degradation: -0.05, // Stop if 5% worse };
| Scenario | Framework/Tool | Key Metric | |----------|---------------|------------| | Overall product health | North Star Metric | Time spent listening (Spotify), Nights booked (Airbnb) | | Growth optimization | AARRR (Pirate Metrics) | Conversion rates per stage | | Feature validation | A/B Testing | Statistical significance (p < 0.05) | | User engagement | Cohort Analysis | Day 1/7/30 retention rates | | Conversion optimization | Funnel Analysis | Drop-off rates per step | | Feature impact | Attribution Modeling | Multi-touch attribution | | Experiment success | Statistical Testing | Power, significance, effect size |
A North Star Metric is the one metric that best captures the core value your product delivers to customers. When this metric grows sustainably, your business succeeds.
✓ Captures product value delivery
✓ Correlates with revenue/growth
✓ Measurable and trackable
✓ Movable by product/engineering
✓ Understandable by entire org
✓ Leading (not lagging) indicator| Company | North Star Metric | Why It Works | |---------|------------------|--------------| | Spotify | Time Spent Listening | Core value = music enjoyment | | Airbnb | Nights Booked | Revenue driver + value delivered | | Slack | Daily Active Teams | Engagement = product stickiness | | Facebook | Monthly Active Users | Network effect foundation | | Amplitude | Weekly Learning Users | Value = analytics insights | | Dropbox | Active Users Sharing Files | Core product behavior |
North Star Metric
↓
┌──────┴──────┬──────────┬──────────┐
│ │ │ │
Input 1 Input 2 Input 3 Input 4
(Supporting metrics that drive NSM)
Example: Spotify
NSM: Time Spent Listening
├── Daily Active Users
├── Playlists Created
├── Songs Added to Library
└── Share/Social ActionsThe AARRR framework tracks the customer lifecycle across five stages:
ACQUISITION → ACTIVATION → RETENTION → REFERRAL → REVENUEWhen users discover your product
Key Questions:
Metrics:
• Website visitors
• App installs
• Sign-ups per channel
• Cost per acquisition (CPA)
• Channel conversion ratesExample Events:
javascript// Landing page view track('page_viewed', { page: 'landing', utm_source: 'google', utm_medium: 'cpc', utm_campaign: 'brand_search' }); // Sign-up started track('signup_started', { source: 'homepage_cta' });
When users experience core product value
Key Questions:
Metrics:
• Time to first action
• Activation rate (% completing key action)
• Setup completion rate
• Feature adoption rateExample "Aha!" Moments:
Slack: Send 2,000 messages in team
Twitter: Follow 30 users
Dropbox: Upload first file
LinkedIn: Connect with 5 peopleExample Events:
javascript// Activation milestone track('activated', { user_id: 'usr_123', activation_action: 'first_project_created', time_to_activation_hours: 2.5 });
When users keep coming back
Key Questions:
Metrics:
• Day 1/7/30 retention rate
• Weekly/Monthly active users (WAU/MAU)
• Churn rate
• Usage frequency
• Feature stickiness (DAU/MAU)Retention Calculation:
Day X Retention = Users returning on Day X / Total users in cohort
Example:
Cohort: 1000 users signed up Jan 1
Day 7: 300 returned
Day 7 Retention = 300/1000 = 30%Example Events:
javascript// Daily engagement track('session_started', { user_id: 'usr_123', session_count: 42, days_since_signup: 15 });
When users recommend your product
Key Questions:
Metrics:
• Viral coefficient (K-factor)
• Referral rate (% users referring)
• Invites sent per user
• Invite conversion rate
• Net Promoter Score (NPS)Viral Coefficient:
K = (% users who refer) × (avg invites per user) × (invite conversion rate)
Example:
K = 0.20 × 5 × 0.30 = 0.30
K > 1: Viral growth (each user brings >1 new user)
K < 1: Need paid acquisitionExample Events:
javascript// Referral actions track('invite_sent', { user_id: 'usr_123', channel: 'email', recipients: 3 }); track('referral_converted', { referrer_id: 'usr_123', new_user_id: 'usr_456', channel: 'email' });
When users generate business value
Key Questions:
Metrics:
• Monthly Recurring Revenue (MRR)
• Average Revenue Per User (ARPU)
• Customer Lifetime Value (LTV)
• LTV:CAC ratio
• Conversion to paid
• Revenue churnLTV Calculation:
LTV = ARPU × Gross Margin / Churn Rate
Example:
ARPU: $50/month
Gross Margin: 80%
Churn: 5%/month
LTV = $50 × 0.80 / 0.05 = $800
Healthy LTV:CAC ratio: 3:1 or higherExample Events:
javascript// Revenue events track('subscription_started', { user_id: 'usr_123', plan: 'pro', mrr: 29.99, billing_cycle: 'monthly' }); track('upgrade_completed', { user_id: 'usr_123', from_plan: 'basic', to_plan: 'pro', mrr_change: 20.00 });
markdown## Acquisition - Total visitors: 50,000 - Sign-ups: 2,500 (5% conversion) - Top channels: Organic (40%), Paid (30%), Referral (20%) ## Activation - Activated users: 1,750 (70% of sign-ups) - Time to activation: 3.2 hours (median) - Activation funnel drop-off: 30% at setup step 2 ## Retention - Day 1: 60% - Day 7: 35% - Day 30: 20% - Churn: 5%/month ## Referral - K-factor: 0.4 - Users referring: 15% - Invites per user: 4.2 - Invite conversion: 25% ## Revenue - MRR: $125,000 - ARPU: $50 - LTV: $800 - LTV:CAC: 4:1 - Conversion to paid: 25%
Detailed material starting at ## Key Metrics & Formulas has been moved to reference/extended.md to keep this skill concise. Load that reference when the task requires the moved examples, command catalogs, checklists, platform details, or implementation templates.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 16,837 | 30,435 | +81% | 1 | 1 | 0% | 2,945 | 5,409 | +84% | 0 | 0 | — |
case-02 | pass→pass | 10,262 | 6,138 | -40% | 1 | 1 | 0% | 2,010 | 4,303 | +114% | 0 | 0 | — |
case-03 | pass→pass | 6,915 | 5,552 | -20% | 1 | 1 | 0% | 1,236 | 4,126 | +234% | 0 | 0 | — |
case-04 | pass→pass | 3,666 | 2,532 | -31% | 1 | 1 | 0% | 652 | 3,565 | +447% | 0 | 0 | — |
case-05 | pass→pass | 14,748 | 15,492 | +5% | 1 | 1 | 0% | 2,427 | 5,800 | +139% | 0 | 0 | — |
case-06 | pass→pass | 17,618 | 11,737 | -33% | 1 | 1 | 0% | 2,699 | 4,962 | +84% | 0 | 0 | — |
case-07 | pass→pass | 12,093 | 7,068 | -42% | 1 | 1 | 0% | 2,138 | 4,480 | +110% | 0 | 0 | — |
case-08 | pass→pass | 15,798 | 8,280 | -48% | 1 | 1 | 0% | 2,423 | 4,388 | +81% | 0 | 0 | — |
case-09 | pass→pass | 15,813 | 14,332 | -9% | 1 | 1 | 0% | 2,566 | 5,553 | +116% | 0 | 0 | — |
case-10 | fail→pass | 13,606 | 8,961 | -34% | 1 | 1 | 0% | 2,070 | 4,590 | +122% | 0 | 0 | — |
case-11 | pass→pass | 14,475 | 12,559 | -13% | 1 | 1 | 0% | 2,241 | 5,166 | +131% | 0 | 0 | — |
case-12 | pass→pass | 12,478 | 15,538 | +25% | 1 | 1 | 0% | 2,098 | 5,732 | +173% | 0 | 0 | — |
case-13 | pass→pass | 13,427 | 11,884 | -11% | 1 | 1 | 0% | 2,277 | 5,237 | +130% | 0 | 0 | — |
case-14 | pass→pass | 19,754 | 14,595 | -26% | 1 | 1 | 0% | 3,815 | 6,129 | +61% | 0 | 0 | — |
case-15 | pass→pass | 7,576 | 13,799 | +82% | 1 | 1 | 0% | 1,363 | 4,186 | +207% | 0 | 0 | — |
case-16 | pass→pass | 12,492 | 7,484 | -40% | 1 | 1 | 0% | 1,905 | 4,225 | +122% | 0 | 0 | — |
case-17 | pass→pass | 11,781 | 10,410 | -12% | 1 | 1 | 0% | 1,938 | 4,842 | +150% | 0 | 0 | — |
case-18 | fail→pass | 15,362 | 9,395 | -39% | 1 | 1 | 0% | 2,308 | 4,755 | +106% | 0 | 0 | — |
case-19 | pass→pass | 13,064 | 10,154 | -22% | 1 | 1 | 0% | 2,056 | 4,640 | +126% | 0 | 0 | — |
case-20 | pass→pass | 11,980 | 7,765 | -35% | 1 | 1 | 0% | 2,001 | 4,356 | +118% | 0 | 0 | — |
case-21 | pass→pass | 12,911 | 11,920 | -8% | 1 | 1 | 0% | 2,015 | 4,834 | +140% | 0 | 0 | — |
case-22 | fail→pass | 6,102 | 4,614 | -24% | 1 | 1 | 0% | 947 | 3,905 | +312% | 0 | 0 | — |
case-23 | pass→pass | 9,514 | 7,322 | -23% | 1 | 1 | 0% | 1,709 | 4,476 | +162% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +17 percentage points is the difference between those two pass rates over the 23 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.