skills/cohort-analysis/SKILL.md
Structure a cohort analysis for retention, LTV, or behavioural patterns. Use when asked to run a cohort analysis, analyse retention by cohort, segment users by behaviour over time, or calculate lifetime value by acquisition period. Produces a complete cohort analysis framework with methodology, cohort definitions, retention curves, and prioritised interventions.
npx skillsauth add mohitagw15856/pm-claude-skills cohort-analysisInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill produces a structured cohort analysis covering retention curves, LTV estimation, behavioural segmentation, and actionable interventions. Output is ready to present to product leadership or share with growth and data teams.
Ask the user for these if not provided:
Analysis type: [Retention / LTV / Behavioural / Churn] Cohort definition: [Acquisition month / Signup channel / Plan tier / Feature adoption date] Observation window: [X months / weeks] Primary metric: [Metric name] Date prepared: [Date]
| Cohort | Period | Size | Description | |---|---|---|---| | [Cohort 1] | [Jan 2025] | [N users] | [e.g. Users who signed up in Jan 2025 via organic] | | [Cohort 2] | [Feb 2025] | [N users] | [...] |
Cohort logic:
How to read: Each cell shows what % of the cohort performed the key metric in period N.
| Cohort | Period 0 | Period 1 | Period 2 | Period 3 | Period 6 | Period 12 | |---|---|---|---|---|---|---| | Jan 2025 | 100% | [X%] | [X%] | [X%] | [X%] | [X%] | | Feb 2025 | 100% | [X%] | [X%] | [X%] | [X%] | [X%] | | [Trend] | — | [↑/↓ vs prior] | [...] | [...] | [...] | [...] |
Retention plateau: [At what period does retention flatten? What % does it flatten at?]
Key observations:
Retention curves, drawn — also render the curves as a Mermaid/chart line chart so the plateau and cross-cohort gaps are visible (it renders live in the playground and exports as PNG). One line per cohort, period on the x-axis:
{
"type": "line",
"title": "Retention by cohort (%)",
"labels": ["P0", "P1", "P2", "P3", "P6", "P12"],
"series": [
{ "name": "Jan 2025", "data": [100, 62, 51, 45, 40, 37] },
{ "name": "Feb 2025", "data": [100, 66, 55, 49, 44, 41] }
]
}
ARPU per period: [£/$/€ X per active user per month] Retention curve used: [Which cohort or blended average]
| Period | Retained % | Revenue per user | Cumulative LTV | |---|---|---|---| | Month 1 | [X%] | [£X] | [£X] | | Month 3 | [X%] | [£X] | [£X] | | Month 6 | [X%] | [£X] | [£X] | | Month 12 | [X%] | [£X] | [£X] |
Blended LTV: [£X at 12 months — based on blended retention across cohorts]
LTV by segment: | Segment | LTV (12M) | vs Baseline | |---|---|---| | [Organic] | [£X] | [+X%] | | [Paid] | [£X] | [-X%] | | [Enterprise] | [£X] | [+X%] |
Group cohorts by behaviour patterns, not just acquisition date:
| Segment | Definition | Size | Retention (P6) | LTV (12M) | |---|---|---|---|---| | Power users | [Used core feature ≥ 3x/week in first 30 days] | [X%] | [X%] | [£X] | | Casual users | [Used 1–2x/week in first 30 days] | [X%] | [X%] | [£X] | | Dormant | [Logged in but did not use core feature] | [X%] | [X%] | [£X] | | Never activated | [Signed up but never completed onboarding] | [X%] | [X%] | [£X] |
Activation threshold insight: [What action — taken within the first X days — most strongly predicts retention? This is the "aha moment" to optimise for.]
List the signals that appear before users churn, so teams can intervene:
| Signal | How early does it appear? | Churn correlation | Intervention | |---|---|---|---| | [No login for 7 days] | [7 days before churn] | [Strong] | [Re-engagement email sequence] | | [Support ticket with escalation] | [14 days before churn] | [Moderate] | [CSM outreach within 48 hours] | | [Feature usage dropped >50% WoW] | [10 days before churn] | [Strong] | [In-app nudge with use-case tutorial] |
Compare oldest and newest cohorts to assess whether product improvements are showing up in retention:
| Metric | [Oldest cohort — e.g. Jan 2024] | [Newest cohort — e.g. Jan 2025] | Change | |---|---|---|---| | Period 1 retention | [X%] | [X%] | [↑/↓ X pp] | | Period 3 retention | [X%] | [X%] | [↑/↓ X pp] | | Activation rate | [X%] | [X%] | [↑/↓ X pp] | | Avg. sessions in first 30 days | [X] | [X] | [↑/↓] |
Verdict: [Are more recent cohorts performing better or worse? What shipped in that period that might explain the change?]
Prioritise by impact on retention curve:
| # | Recommendation | Target segment | Expected impact | Effort | Priority | |---|---|---|---|---|---| | 1 | [e.g. Redesign onboarding to hit activation milestone in day 1, not day 7] | [Never-activated segment] | [+X pp P1 retention] | [Medium] | P1 | | 2 | [e.g. Launch re-engagement sequence at day 7 inactivity trigger] | [Dormant segment] | [+X pp P2 retention] | [Low] | P1 | | 3 | [e.g. Introduce power-user features earlier to accelerate habit formation] | [Casual users] | [+X pp P6 LTV] | [High] | P2 |
Provide the core cohort query so data teams can replicate or extend the analysis:
-- Retention cohort query
SELECT
DATE_TRUNC('month', u.created_at) AS cohort_month,
DATE_TRUNC('month', e.event_date) AS activity_month,
DATEDIFF('month', u.created_at, e.event_date) AS period,
COUNT(DISTINCT e.user_id) AS retained_users,
COUNT(DISTINCT c.user_id) AS cohort_size,
ROUND(COUNT(DISTINCT e.user_id) * 100.0 / COUNT(DISTINCT c.user_id), 1) AS retention_rate
FROM users u
JOIN events e ON u.user_id = e.user_id
JOIN (
SELECT user_id, DATE_TRUNC('month', created_at) AS cohort_month
FROM users
WHERE created_at >= '[start_date]'
) c ON u.user_id = c.user_id AND DATE_TRUNC('month', u.created_at) = c.cohort_month
WHERE e.event_type = '[key_retention_event]'
GROUP BY 1, 2, 3
ORDER BY 1, 3;
business
Analyze why deals are won and lost and turn it into an action plan. Use when asked to run a win/loss analysis, review closed-won and closed-lost deals, understand why the team is losing to a competitor, or summarize sales feedback into patterns. Produces a structured win/loss report with themes, win/loss rates by segment and competitor, representative quotes, and prioritized actions for product, marketing, and sales.
development
Route a fuzzy request to the right skill in this library. Use when the user is unsure which skill fits, asks 'which skill should I use for X', describes a task without naming a skill, or when a request could plausibly match several skills. Produces a best-fit recommendation with the inputs to gather, a runner-up with the tie-breaker, and a workflow recipe when the job spans multiple skills.
testing
Triage a vulnerability or scanner finding — assess real severity, exploitability, and how urgently to fix. Use when asked to triage a CVE, prioritize scanner/pentest findings, assess a vuln's risk, or decide what to patch first. Produces a triage verdict: CVSS-informed severity adjusted for your context, exploitability, real risk, a fix/mitigation, and an SLA — so you fix what matters, not just what's red.
development
Stand up a Voice of Customer (VoC) program that turns feedback into action. Use when asked to build a VoC program, design a customer feedback loop, consolidate feedback sources, or set up a closed-loop feedback process. Produces a VoC program design — objectives, feedback sources and channels, a taxonomy, collection and analysis cadence, closed-loop routing, ownership, and success metrics.