
Product Analytics
- 617 installs
- 23.5k repo stars
- Updated July 17, 2026
- alirezarezvani/claude-skills
product-analytics is a Claude Code skill that generates structured product analytics dashboard templates surfacing North Star metrics, retention, activation, and feature adoption for developers and PMs who need leadershi
About
product-analytics is a dashboard templating skill from alirezarezvani/claude-skills that instantiates product measurement views instead of blank spreadsheets. It ships at least two templates: an Executive Dashboard with North Star trend across trailing 12 periods, growth and retention summaries, revenue-linked indicators, and a risks-and-actions block, plus a Product Health Dashboard for full-journey bottleneck monitoring. KPI tables include Activation Rate, W8 Retention, and Paid Conversion columns with current, target, delta, owner, and action fields. Developers and product engineers reach for product-analytics when leadership asks for a standardized metrics deck or health review and the team needs consistent cohort and adoption framing rather than one-off charts.
- Three ready-to-use dashboard templates: Executive, Product Health, and Feature Adoption
- Includes North Star trend, cohort retention matrix, funnel waterfall, and adoption rate tables
- Pre-built KPI blocks with current/target/delta/owner/action columns
- Feature adoption tracking with first-use, repeat usage, and time-to-adoption metrics
- Direct handoff to analytics tooling or growth experiments after dashboard approval
Product Analytics by the numbers
- 617 all-time installs (skills.sh)
- Ranked #653 of 3,282 Productivity & Planning skills by installs in the Skillselion catalog
- Security screen: HIGH risk (skills.sh audit)
- Data as of Jul 31, 2026 (Skillselion catalog sync)
npx skills add https://github.com/alirezarezvani/claude-skills --skill product-analyticsAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 617 |
|---|---|
| repo stars | ★ 23.5k |
| Security audit | 2 / 3 scanners passed |
| Last updated | July 17, 2026 |
| Repository | alirezarezvani/claude-skills ↗ |
How do you template product analytics dashboards quickly?
Instantly generate structured product analytics dashboards that surface North Star metrics, retention, activation, and feature adoption without manual design work.
Who is it for?
Product managers and engineers preparing recurring leadership or health reviews who need consistent North Star and retention dashboard scaffolding.
Skip if: Teams that already have a fixed BI tool with live warehouse connectors and only need SQL, not dashboard structure guidance.
When should I use this skill?
Leadership or PM workflows need a North Star, retention, activation, or feature adoption dashboard layout generated from scratch.
What you get
Structured executive and product health dashboard outlines with North Star trends, cohort retention blocks, KPI tables, and risk action sections.
- Executive dashboard outline
- Product health dashboard outline
- KPI table with owners and actions
By the numbers
- Includes 2 dashboard templates: Executive and Product Health
- Executive North Star section spans trailing 12 periods
Files
Product Analytics
Define, track, and interpret product metrics across discovery, growth, and mature product stages.
When To Use
Use this skill for:
- Metric framework selection (AARRR, North Star, HEART)
- KPI definition by product stage (pre-PMF, growth, mature)
- Dashboard design and metric hierarchy
- Cohort and retention analysis
- Feature adoption and funnel interpretation
Workflow
1. Select metric framework
- AARRR for growth loops and funnel visibility
- North Star for cross-functional strategic alignment
- HEART for UX quality and user experience measurement
2. Define stage-appropriate KPIs
- Pre-PMF: activation, early retention, qualitative success
- Growth: acquisition efficiency, expansion, conversion velocity
- Mature: retention depth, revenue quality, operational efficiency
3. Design dashboard layers
- Executive layer: 5-7 directional metrics
- Product health layer: acquisition, activation, retention, engagement
- Feature layer: adoption, depth, repeat usage, outcome correlation
4. Run cohort + retention analysis
- Segment by signup cohort or feature exposure cohort
- Compare retention curves, not single-point snapshots
- Identify inflection points around onboarding and first value moment
5. Interpret and act
- Connect metric movement to product changes and release timeline
- Distinguish signal from noise using period-over-period context
- Propose one clear product action per major metric risk/opportunity
KPI Guidance By Stage
Pre-PMF
- Activation rate
- Week-1 retention
- Time-to-first-value
- Problem-solution fit interview score
Growth
- Funnel conversion by stage
- Monthly retained users
- Feature adoption among new cohorts
- Expansion / upsell proxy metrics
Mature
- Net revenue retention aligned product metrics
- Power-user share and depth of use
- Churn risk indicators by segment
- Reliability and support-deflection product metrics
Dashboard Design Principles
- Show trends, not isolated point estimates.
- Keep one owner per KPI.
- Pair each KPI with target, threshold, and decision rule.
- Use cohort and segment filters by default.
- Prefer comparable time windows (weekly vs weekly, monthly vs monthly).
See:
references/metrics-frameworks.mdreferences/dashboard-templates.md
Cohort Analysis Method
1. Define cohort anchor event (signup, activation, first purchase). 2. Define retained behavior (active day, key action, repeat session). 3. Build retention matrix by cohort week/month and age period. 4. Compare curve shape across cohorts. 5. Flag early drop points and investigate journey friction.
Retention Curve Interpretation
- Sharp early drop, low plateau: onboarding mismatch or weak initial value.
- Moderate drop, stable plateau: healthy core audience with predictable churn.
- Flattening at low level: product used occasionally, revisit value metric.
- Improving newer cohorts: onboarding or positioning improvements are working.
Anti-Patterns
| 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 |
Tooling
scripts/metrics_calculator.py
CLI utility for retention, cohort, and funnel analysis from CSV data. Supports text and JSON output.
# 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 jsonCSV format for retention/cohort:
user_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-02CSV format for funnel:
user_id,stage
u001,visit
u001,signup
u001,activate
u002,visit
u002,signupCross-References
- Related:
product-team/experiment-designer— for A/B test planning after identifying metric opportunities - Related:
product-team/product-manager-toolkit— for RICE prioritization of metric-driven features - Related:
product-team/product-discovery— for assumption mapping when metrics reveal unknowns - Related:
finance/saas-metrics-coach— for SaaS-specific metrics (ARR, MRR, churn, LTV)
Dashboard Templates
1. Executive Dashboard Template
Purpose: quick company-level product signal for leadership.
Sections: 1. North Star trend (current, target, trailing 12 periods) 2. Growth summary (new users/accounts, activation) 3. Retention summary (short-term + medium-term cohorts) 4. Revenue-linked product indicators 5. Risks and actions
Suggested KPI block:
| KPI | Current | Target | Delta | Owner | Action |
|---|---|---|---|---|---|
| North Star | |||||
| Activation Rate | |||||
| W8 Retention | |||||
| Paid Conversion |
2. Product Health Dashboard Template
Purpose: monitor full user journey and detect bottlenecks.
Sections: 1. Acquisition funnel by channel/segment 2. Activation funnel with drop-off points 3. Cohort retention matrix + curve chart 4. Feature adoption distribution 5. Reliability metrics tied to user outcomes
Recommended views:
- Weekly cohort retention heatmap
- Funnel stage conversion waterfall
- Segment comparison (SMB vs enterprise)
- New vs returning user behavior split
3. Feature Adoption Dashboard Template
Purpose: evaluate feature launch quality and ongoing usage.
Sections: 1. Exposure and eligibility count 2. First-use adoption rate 3. Repeat usage rate (2nd, 3rd, nth use) 4. Time-to-adoption from signup/activation 5. Impact on primary outcomes (retention, conversion)
Adoption KPI examples:
| Metric | Definition |
|---|---|
| First-use adoption | Users who used feature at least once / eligible users |
| Repeat adoption | Users with 2+ uses / users with first use |
| Sustained adoption | Users with usage in 3 of last 4 weeks |
| Time to adoption | Median days from eligibility to first use |
Dashboard Design Rules
- Keep each dashboard to one decision horizon (weekly ops vs quarterly strategy).
- Always annotate major product releases on charts.
- Add threshold bands for risk detection.
- Show metric definitions next to charts.
- Include a short "what changed" narrative block.
Metrics Frameworks
AARRR (Pirate Metrics)
AARRR breaks the product journey into five stages.
1. Acquisition
- How users discover the product
- Example metrics: signups, CAC, channel conversion
2. Activation
- First meaningful value moment
- Example metrics: activation rate, time-to-first-value
3. Retention
- Ongoing user return behavior
- Example metrics: D7/W4 retention, rolling retained users
4. Revenue
- Monetization and value capture
- Example metrics: conversion to paid, ARPU, expansion revenue
5. Referral
- Organic growth from existing users
- Example metrics: referral rate, invite conversion, K-factor
North Star Metric Framework
North Star = metric capturing long-term customer value delivered.
North Star Criteria
- Reflects real user value
- Sensitive to product improvements
- Predictive of sustainable growth
- Understandable across functions
Example North Star Metrics
- Collaboration SaaS: weekly active teams
- Marketplace: successful transactions per active buyer
- Content product: hours of qualified consumption
Input Metrics
Track levers that influence the North Star:
- Acquisition quality
- Activation quality
- Engagement depth
- Retention durability
HEART Framework
HEART is a UX-oriented framework from Google.
- Happiness: satisfaction, NPS, perceived quality
- Engagement: interaction depth/frequency
- Adoption: first-time use of features/products
- Retention: return behavior over time
- Task Success: completion rate, error rate, time on task
HEART + Goals-Signals-Metrics
1. Goals: what UX outcome you want 2. Signals: observed behavior indicating movement 3. Metrics: measurable indicator for each signal
Framework Selection Guide
| Situation | Recommended Framework |
|---|---|
| Early growth and funnel bottlenecks | AARRR |
| Company-wide strategic alignment | North Star |
| UX and product quality optimization | HEART |
| Mixed maturity org | North Star + AARRR operational layers |
Example: B2B SaaS Product
- North Star: weekly active accounts completing core workflow
- AARRR operational metrics:
- Acquisition: qualified signups
- Activation: % accounts completing setup in 7 days
- Retention: W8 retained accounts
- Revenue: paid conversion and expansion rate
- Referral: invited teammate activation rate
- HEART for onboarding redesign:
- Task Success: onboarding completion rate
- Happiness: onboarding CSAT
#!/usr/bin/env python3
"""Product metrics calculator: retention, cohort matrix, and funnel conversion."""
import argparse
import csv
import datetime as dt
import json
import sys
from collections import defaultdict
def parse_date(value: str) -> dt.date:
return dt.date.fromisoformat(value.strip()[:10])
def load_csv(path: str):
with open(path, "r", encoding="utf-8", newline="") as handle:
return list(csv.DictReader(handle))
def retention(args: argparse.Namespace) -> int:
rows = load_csv(args.input)
cohorts = {}
activity = defaultdict(set)
for row in rows:
user = row[args.user_column].strip()
cohort_date = parse_date(row[args.cohort_column])
activity_date = parse_date(row[args.activity_column])
cohorts[user] = min(cohorts.get(user, cohort_date), cohort_date)
delta = (activity_date - cohorts[user]).days
if delta >= 0:
activity[delta].add(user)
base_users = len(cohorts)
if base_users == 0:
print("No users found.", file=sys.stderr)
return 1
results = []
for period in range(0, args.max_period + 1):
users = len(activity.get(period, set()))
rate = users / base_users
results.append({"period": period, "active_users": users, "retention_rate": round(rate, 4)})
if getattr(args, "format", "text") == "json":
print(json.dumps({"base_users": base_users, "periods": results}, indent=2))
else:
print("Retention by period")
print("period,active_users,retention_rate")
for r in results:
print(f"{r['period']},{r['active_users']},{r['retention_rate']:.4f}")
return 0
def cohort(args: argparse.Namespace) -> int:
rows = load_csv(args.input)
cohorts = {}
activity = defaultdict(set)
for row in rows:
user = row[args.user_column].strip()
cohort_date = parse_date(row[args.cohort_column])
activity_date = parse_date(row[args.activity_column])
if args.cohort_grain == "month":
cohort_key = cohort_date.strftime("%Y-%m")
else:
cohort_key = f"{cohort_date.isocalendar().year}-W{cohort_date.isocalendar().week:02d}"
cohorts.setdefault(user, cohort_key)
age = (activity_date - cohort_date).days
if age >= 0:
activity[(cohort_key, age)].add(user)
cohort_sizes = defaultdict(int)
for cohort_key in cohorts.values():
cohort_sizes[cohort_key] += 1
cohort_keys = sorted(cohort_sizes.keys())
results = []
for cohort_key in cohort_keys:
size = cohort_sizes[cohort_key]
for age in range(0, args.max_period + 1):
active = len(activity.get((cohort_key, age), set()))
rate = (active / size) if size else 0
results.append({"cohort": cohort_key, "age_days": age, "active_users": active,
"cohort_size": size, "retention_rate": round(rate, 4)})
if getattr(args, "format", "text") == "json":
print(json.dumps({"cohorts": dict(cohort_sizes), "rows": results}, indent=2))
else:
print("cohort,age_days,active_users,cohort_size,retention_rate")
for r in results:
print(f"{r['cohort']},{r['age_days']},{r['active_users']},{r['cohort_size']},{r['retention_rate']:.4f}")
return 0
def funnel(args: argparse.Namespace) -> int:
rows = load_csv(args.input)
stages = [item.strip() for item in args.stages.split(",") if item.strip()]
if not stages:
print("No stages provided.")
return 1
stage_users = {stage: set() for stage in stages}
for row in rows:
user = row[args.user_column].strip()
stage = row[args.stage_column].strip()
if stage in stage_users:
stage_users[stage].add(user)
results = []
previous_count = None
first_count = None
for stage in stages:
count = len(stage_users[stage])
if first_count is None:
first_count = count
conv_prev = (count / previous_count) if previous_count else 1.0
conv_first = (count / first_count) if first_count else 0
results.append({"stage": stage, "users": count,
"conversion_from_previous": round(conv_prev, 4),
"conversion_from_first": round(conv_first, 4)})
previous_count = count
if getattr(args, "format", "text") == "json":
print(json.dumps({"stages": results}, indent=2))
else:
print("stage,users,conversion_from_previous,conversion_from_first")
for r in results:
print(f"{r['stage']},{r['users']},{r['conversion_from_previous']:.4f},{r['conversion_from_first']:.4f}")
return 0
def build_parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(
description="Calculate retention, cohort, and funnel metrics from CSV data."
)
subparsers = parser.add_subparsers(dest="command", required=True)
common = {
"help": "CSV input path",
}
fmt_help = "Output format (default: text)"
retention_parser = subparsers.add_parser("retention", help="Calculate retention by day.")
retention_parser.add_argument("input", **common)
retention_parser.add_argument("--user-column", default="user_id")
retention_parser.add_argument("--cohort-column", default="cohort_date")
retention_parser.add_argument("--activity-column", default="activity_date")
retention_parser.add_argument("--max-period", type=int, default=30)
retention_parser.add_argument("--format", choices=["text", "json"], default="text", help=fmt_help)
retention_parser.set_defaults(func=retention)
cohort_parser = subparsers.add_parser("cohort", help="Build cohort retention matrix rows.")
cohort_parser.add_argument("input", **common)
cohort_parser.add_argument("--user-column", default="user_id")
cohort_parser.add_argument("--cohort-column", default="cohort_date")
cohort_parser.add_argument("--activity-column", default="activity_date")
cohort_parser.add_argument("--cohort-grain", choices=["week", "month"], default="week")
cohort_parser.add_argument("--max-period", type=int, default=30)
cohort_parser.add_argument("--format", choices=["text", "json"], default="text", help=fmt_help)
cohort_parser.set_defaults(func=cohort)
funnel_parser = subparsers.add_parser("funnel", help="Calculate funnel conversion by stage.")
funnel_parser.add_argument("input", **common)
funnel_parser.add_argument("--user-column", default="user_id")
funnel_parser.add_argument("--stage-column", default="stage")
funnel_parser.add_argument("--stages", required=True)
funnel_parser.add_argument("--format", choices=["text", "json"], default="text", help=fmt_help)
funnel_parser.set_defaults(func=funnel)
return parser
def main() -> int:
parser = build_parser()
args = parser.parse_args()
try:
return args.func(args)
except FileNotFoundError:
print(f"Error: file not found: {args.input}", file=sys.stderr)
return 1
except KeyError as e:
print(f"Error: column not found in CSV: {e}", file=sys.stderr)
return 1
except Exception as e:
print(f"Error: {e}", file=sys.stderr)
return 1
if __name__ == "__main__":
raise SystemExit(main())
Related skills
How it compares
Pick product-analytics for dashboard structure and KPI framing, not for wiring event pipelines or warehouse queries.
FAQ
What dashboards does product-analytics include?
product-analytics provides an Executive Dashboard for company-level North Star, growth, retention, and revenue signals, and a Product Health Dashboard to monitor the full user journey and surface bottlenecks with actionable KPI rows.
Which KPIs does the executive template track?
product-analytics executive KPI blocks include North Star, Activation Rate, W8 Retention, and Paid Conversion, each with current, target, delta, owner, and action columns for leadership review cadences.
Is Product Analytics safe to install?
skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.