Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when defining product KPIs, building metric dashboards, running cohort or retention analysis, or interpreting feature adoption trends across product stages.
.claude/skills/alirezarezvani-product-analytics/SKILL.md| Model | Eval pass | Runs |
|---|---|---|
| gemini-3.6-flash | 100% | 13 |
| gemini-3.1-pro-preview | 100% | 2 |
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 23% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 30% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 20% | 0% |
| case-12 | ✗→✓ | ▲ Improved | -20% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 13% | 0% |
Define, track, and interpret product metrics across discovery, growth, and mature product stages.
Use this skill for:
See:
references/metrics-frameworks.mdreferences/dashboard-templates.md| Anti-pattern | Fix | |---|---| | Vanity metrics — tracking pageviews or total signups without activation context | Always pair acquisition metrics with activation rate and retention | | Single-point retention — reporting "30-day retention is 20%" | Compare retention curves across cohorts, not isolated snapshots | | Dashboard overload — 30+ metrics on one screen | Executive layer: 5-7 metrics. Feature layer: per-feature only | | No decision rule — tracking a KPI with no threshold or action plan | Every KPI needs: target, threshold, owner, and "if below X, then Y" | | Averaging across segments — reporting blended metrics that hide segment differences | Always segment by cohort, plan tier, channel, or geography | | Ignoring seasonality — comparing this week to last week without adjusting | Use period-over-period with same-period-last-year context |
scripts/metrics_calculator.pyCLI utility for retention, cohort, and funnel analysis from CSV data. Supports text and JSON output.
bash# Retention analysis python3 scripts/metrics_calculator.py retention events.csv python3 scripts/metrics_calculator.py retention events.csv --format json # Cohort matrix python3 scripts/metrics_calculator.py cohort events.csv --cohort-grain month python3 scripts/metrics_calculator.py cohort events.csv --cohort-grain week --format json # Funnel conversion python3 scripts/metrics_calculator.py funnel funnel.csv --stages visit,signup,activate,pay python3 scripts/metrics_calculator.py funnel funnel.csv --stages visit,signup,activate,pay --format json
CSV format for retention/cohort:
csvuser_id,cohort_date,activity_date u001,2026-01-01,2026-01-01 u001,2026-01-01,2026-01-03 u002,2026-01-02,2026-01-02
CSV format for funnel:
csvuser_id,stage u001,visit u001,signup u001,activate u002,visit u002,signup
product-team/experiment-designer — for A/B test planning after identifying metric opportunitiesproduct-team/product-manager-toolkit — for RICE prioritization of metric-driven featuresproduct-team/product-discovery — for assumption mapping when metrics reveal unknownsfinance/saas-metrics-coach — for SaaS-specific metrics (ARR, MRR, churn, LTV)| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-08 | pass→pass | 9,882 | 9,092 | -8% | 1 | 1 | 0% | 1,704 | 2,780 | +63% | 0 | 0 | — |
case-01 | fail→fail | 20,848 | 18,063 | -13% | 1 | 1 | 0% | 4,161 | 4,917 | +18% | 0 | 0 | — |
case-02 | pass→pass | 11,498 | 11,583 | +1% | 1 | 1 | 0% | 2,178 | 3,253 | +49% | 0 | 0 | — |
case-09 | pass→pass | 13,534 | 9,797 | -28% | 1 | 1 | 0% | 2,233 | 2,984 | +34% | 0 | 0 | — |
case-03 | pass→pass | 11,052 | 8,470 | -23% | 1 | 1 | 0% | 2,140 | 2,719 | +27% | 0 | 0 | — |
case-04 | fail→pass | 12,193 | 7,384 | -39% | 1 | 1 | 0% | 2,095 | 2,585 | +23% | 0 | 0 | — |
case-05 | pass→pass | 13,556 | 10,897 | -20% | 1 | 1 | 0% | 2,342 | 3,099 | +32% | 0 | 0 | — |
case-06 | fail→pass | 13,150 | 9,464 | -28% | 1 | 1 | 0% | 2,249 | 2,931 | +30% | 0 | 0 | — |
case-07 | fail→pass | 10,678 | 6,628 | -38% | 1 | 1 | 0% | 2,036 | 2,451 | +20% | 0 | 0 | — |
case-10 | pass→pass | 13,977 | 9,533 | -32% | 1 | 1 | 0% | 2,286 | 2,901 | +27% | 0 | 0 | — |
case-11 | pass→pass | 10,920 | 6,947 | -36% | 1 | 1 | 0% | 1,725 | 2,417 | +40% | 0 | 0 | — |
case-12 | fail→pass | 10,157 | 2,217 | -78% | 1 | 1 | 0% | 1,990 | 1,596 | -20% | 0 | 0 | — |
case-13 | fail→pass | 9,009 | 2,221 | -75% | 1 | 1 | 0% | 1,531 | 1,736 | +13% | 0 | 0 | — |
case-14 | fail→fail | 14,580 | 1,777 | -88% | 1 | 1 | 0% | 3,248 | 1,598 | -51% | 0 | 0 | — |
case-21 | pass→pass | 5,392 | 4,508 | -16% | 1 | 1 | 0% | 1,326 | 2,396 | +81% | 0 | 0 | — |
case-15 | fail→pass | 10,175 | 8,351 | -18% | 1 | 1 | 0% | 1,700 | 2,713 | +60% | 0 | 0 | — |
case-16 | pass→pass | 8,687 | 5,180 | -40% | 1 | 1 | 0% | 1,514 | 2,193 | +45% | 0 | 0 | — |
case-17 | fail→pass | 14,094 | 10,804 | -23% | 1 | 1 | 0% | 2,498 | 3,243 | +30% | 0 | 0 | — |
case-18 | pass→pass | 11,884 | 9,792 | -18% | 1 | 1 | 0% | 2,176 | 3,215 | +48% | 0 | 0 | — |
case-19 | pass→pass | 12,881 | 13,258 | +3% | 1 | 1 | 0% | 2,243 | 3,074 | +37% | 0 | 0 | — |
case-20 | pass→pass | 9,622 | 10,560 | +10% | 1 | 1 | 0% | 2,099 | 3,673 | +75% | 0 | 0 | — |
case-22 | pass→pass | 7,016 | 6,367 | -9% | 1 | 1 | 0% | 1,586 | 2,706 | +71% | 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. 22 cases were attempted. The headline lift of +32 percentage points is the difference between those two pass rates over the 22 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.