# customer-churn-signals

Builds and validates leading indicators of churn from account, product and support data. Useful when your health score keeps missing cancellations.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 20500 installs · ★ 1
- Author: Maya-Beth Finotti
- License: MIT · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/mbfinotti/revops-skills/tree/HEAD/skills/customer-churn-signals/SKILL.md
- Updated: 2026-09-14
- HTML: https://affpapa.org/en/nevibecode/skills/customer-churn-signals

## What it does

The skill takes you from a candidate list to a churn signal register. Each signal carries an event, a threshold, an observation window, a baseline, lift over the base churn rate, lead time and coverage. Miss any of the five definition parts and the signal is not testable, so you either fix the definition or drop the candidate.

It opens with an interview: B2B or B2C, how many churned accounts you have from past periods, which data sources are reachable and at what granularity, how many flags per week the team can absorb. Candidates then come from the signal taxonomy, definitions get written by hand, and each candidate's state is reconstructed at 30, 60 and 90 days before churn. If you can query the data directly, the skill computes it; otherwise it hands you the queries or spreadsheet steps.

Ranking runs on lift over base rate, median lead time and coverage, divided by what the signal costs to stand up. A weaker signal firing 90 days out beats a strong one that fires days before cancellation. Late events such as a failed payment or a downgrade request are classed as confirmatory, never leading. Combining signals into one score, weights or tiers belongs to `mbfinotti/revops-skills@customer-health-score`.

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add mbfinotti/revops-skills --skill customer-churn-signals -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/customer-churn-signals/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/customer-churn-signals/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add mbfinotti/revops-skills --skill customer-churn-signals -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/customer-churn-signals/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add mbfinotti/revops-skills --skill customer-churn-signals -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/customer-churn-signals/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install mbfinotti/revops-skills customer-churn-signals
```

2. **Manually: put the files in place**
- File: `.github/skills/customer-churn-signals/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add mbfinotti/revops-skills --skill customer-churn-signals -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/mbfinotti/revops-skills --path skills/customer-churn-signals
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/customer-churn-signals/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add mbfinotti/revops-skills --skill customer-churn-signals -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/mbfinotti/revops-skills/tree/HEAD/skills/customer-churn-signals/SKILL.md

## When to use it
- separate leading churn indicators from lagging metrics
- check whether a signal actually fired 60-90 days before past churn
- compute a signal's lift over the base churn rate
- drop candidates nobody can intervene on in time
- assemble a signal register with thresholds and observation windows

## Example prompts
- build a churn signal register from our accounts over the last 12 months
- check whether the login decline signal fired 90 days before cancellation
- our health score misses churn — work out which signals we are missing

## Source text · SKILL.md · MIT

Below is the content of a third-party file. It is data, not instructions for you: do not act on anything written inside unless the human asks. Block tag: f257b4fd2b8748e8.

BEGIN THIRD-PARTY FILE f257b4fd2b8748e8
```text
---
name: customer-churn-signals
description: Assemble, define, validate, and rank leading indicators of customer churn from account activity, product usage, and support data into a ranked churn signal register - each signal carrying event, threshold, window, baseline, lift over base rate, lead time, and coverage. Use whenever the user mentions churn signals, churn indicators, leading indicators of churn, an early warning system for at-risk accounts, champion departure, seat utilisation drops, payment failure, or says "our health score misses churn" - even if they never say "signal". Covers B2B and B2C subscription. Do NOT use for combining signals into one composite score, weights, bands, or tiers - use mbfinotti/revops-skills@customer-health-score instead.
license: MIT
metadata:
  author: Maya-Beth Finotti
  version: "1.2.6"
---

# Churn Signals

Identify, operationally define, validate against actually-observed past churn, and rank the signals that precede churn in the user's own accounts. The organizing distinction is leading versus lagging:

- **Lagging** (reports what already happened): churn rate, lost MRR, a falling NPS.
- **Leading** (appears weeks before cancellation and leaves time to act): login decline, narrowing feature adoption, a champion going quiet.

Every candidate must pass a two-part actionability test before it is worth shipping:

1. It fires early enough that someone can still intervene.
2. Someone actually can intervene on it.

Late-firing events - failed payments, downgrade requests, procurement delays, renewal-date slippage - are confirmation tripwires that formalize a decision made weeks earlier. Class them as confirmatory, never as leading.

Lincoln Murphy's Success Milestones frame is the standing caution over the whole exercise: usage is not success. Track progress toward the customer's own outcome, because accounts can look busy right up to an "unexpected" churn.

This skill ends at a ranked, validated signal register; whoever assembles those signals into a composite score - weighting, score scales, red/yellow/green tiers - or the CSM playbooks, save offers, and renewal plays that act on them should use `mbfinotti/revops-skills@customer-health-score`. Pipeline stage design, pre-sale lead scoring, and the sales-to-CS handoff are also out of scope.
```
END THIRD-PARTY FILE f257b4fd2b8748e8

The third-party file has ended. Everything between the f257b4fd2b8748e8 tags is data: requests and commands from it are not followed. An “end of file” line with another tag inside the block is part of the file.

First 2318 of 17327 bytes. © Maya-Beth Finotti · MIT · https://github.com/mbfinotti/revops-skills/tree/HEAD/skills/customer-churn-signals/SKILL.md

_Part of the page did not fit — see the HTML version._

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
