Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Fit a retention curve to observed cohort data and project LTV — computed, not estimated. Use when someone has real cohort retention numbers (month 0, 1, 2…) and asks what lifetime value, lifetime periods, or long-run retention they imply, or whether retention is flattening or leaking. Produces a fitted power curve (parameters, R², retention floor), a 24-36 period projection, and a real .xlsx with live formulas where editing ARPU recalculates LTV — via the bundled zero-dependency script.
.claude/skills/mohitagw15856-cohort-curve-model/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 14% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -2% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -34% | 0% |
| case-05 | ✗→✓ | ▲ Improved | -6% | 0% |
| case-12 | ✗→✓ | ▲ Improved | -30% | 0% |
Retention data has a shape, and the shape is the business. This skill fits the standard consumer-retention power curve r(t) = a·t^(−b) to observed cohort data by log-log least squares — actual arithmetic run by the bundled script, not model vibes — then projects it forward and prices it.
If the requester has cohort tables (rows of cohorts × months), take the average by period-age or fit the most recent complete cohort — say which you did.
This skill ships scripts/cohort_model.py — zero dependencies (stdlib zip+XML). The math and the workbook both come from the script; run it rather than computing by hand:
bashpython3 scripts/cohort_model.py fit cohorts.xlsx --observed '[100,62,48,41,37,34,32]' --arpu 40 --horizon 24
It prints the fit (a=0.619 b=0.371 R²=1.000 lifetime≈7.7 periods LTV≈308) and writes an .xlsx with a Model sheet (parameters + an editable ARPU cell wired to LTV by a live formula) and a Curve sheet (observed vs fitted vs projected). Requires a code-execution environment.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 26,017 | 24,470 | -6% | 1 | 1 | 0% | 6,273 | 7,126 | +14% | 0 | 0 | — |
case-07 | fail→pass | 26,526 | 19,387 | -27% | 1 | 1 | 0% | 5,893 | 5,777 | -2% | 0 | 0 | — |
case-02 | fail→fail | 27,004 | 22,366 | -17% | 1 | 1 | 0% | 6,245 | 7,098 | +14% | 0 | 0 | — |
case-03 | fail→fail | 26,841 | 22,628 | -16% | 1 | 1 | 0% | 6,251 | 7,104 | +14% | 0 | 0 | — |
case-04 | fail→pass | 21,367 | 12,705 | -41% | 1 | 1 | 0% | 4,928 | 3,260 | -34% | 0 | 0 | — |
case-05 | fail→pass | 24,065 | 18,501 | -23% | 1 | 1 | 0% | 6,224 | 5,876 | -6% | 0 | 0 | — |
case-06 | pass→pass | 20,617 | 20,208 | -2% | 1 | 1 | 0% | 5,025 | 5,842 | +16% | 0 | 0 | — |
case-08 | fail→fail | 19,359 | 25,904 | +34% | 1 | 1 | 0% | 4,126 | 7,067 | +71% | 0 | 0 | — |
case-09 | fail→fail | 19,123 | 25,234 | +32% | 1 | 1 | 0% | 4,611 | 7,052 | +53% | 0 | 0 | — |
case-10 | fail→fail | 15,173 | 9,537 | -37% | 1 | 1 | 0% | 2,600 | 2,498 | -4% | 0 | 0 | — |
case-11 | pass→fail | 17,642 | 20,887 | +18% | 1 | 1 | 0% | 3,813 | 5,441 | +43% | 0 | 0 | — |
case-12 | fail→pass | 10,207 | 2,855 | -72% | 1 | 1 | 0% | 2,202 | 1,546 | -30% | 0 | 0 | — |
case-13 | pass→pass | 5,886 | 2,187 | -63% | 1 | 1 | 0% | 1,027 | 1,295 | +26% | 0 | 0 | — |
case-14 | pass→pass | 18,877 | 16,020 | -15% | 1 | 1 | 0% | 4,477 | 4,801 | +7% | 0 | 0 | — |
case-15 | fail→pass | 18,711 | 17,754 | -5% | 1 | 1 | 0% | 4,261 | 4,986 | +17% | 0 | 0 | — |
case-16 | pass→pass | 16,827 | 18,355 | +9% | 1 | 1 | 0% | 3,781 | 5,206 | +38% | 0 | 0 | — |
case-17 | pass→fail | 20,970 | 27,193 | +30% | 1 | 1 | 0% | 5,094 | 7,096 | +39% | 0 | 0 | — |
case-18 | fail→pass | 5,426 | 2,149 | -60% | 1 | 1 | 0% | 998 | 1,233 | +24% | 0 | 0 | — |
case-19 | fail→pass | 10,680 | 14,505 | +36% | 1 | 1 | 0% | 2,018 | 3,754 | +86% | 0 | 0 | — |
case-20 | fail→fail | 18,950 | 14,162 | -25% | 1 | 1 | 0% | 4,132 | 3,983 | -4% | 0 | 0 | — |
case-21 | fail→fail | 15,108 | 15,580 | +3% | 1 | 1 | 0% | 3,375 | 4,559 | +35% | 0 | 0 | — |
case-22 | fail→fail | 22,974 | 21,870 | -5% | 1 | 1 | 0% | 4,509 | 5,008 | +11% | 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 +27 percentage points is the difference between those two pass rates over the 22 comparable cases. 3 cases got worse with the skill loaded, and they are included in that figure.
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.