renewal-forecast
Skill2 starsChanged 3 months agoMITView on GitHub
Use when the user says "renewal forecast", "forecast the quarter", "what will we renew", "commit number", "GRR forecast", "roll up my team's renewals". Turns a list of renewing accounts into a dollar forecast with low, expected and high cases for gross and net retention, contraction on its own line, and at-risk accounts grouped by shared mechanism. Not for one account's read (use renewal-risk) or explaining past retention to a board (use nrr-narrative).
In this repository54 other files it gives its agents.
- account-contextSkill
- account-planSkill
- account-reviewSkill
- adoption-planSkill
- advocacy-askSkill
- book-reviewSkill
- book-triageSkill
- business-reviewSkill
- call-prepSkill
- call-recapSkill
- champion-lossSkill
- churn-postmortemSkill
- coachingSkill
- commitmentsSkill
- coverage-modelSkill
- csm-hiringSkill
- csm-rampSkill
- csql-motionSkill
- cs-scorecardSkill
- cs-startSkill
- customer-updateSkill
- day-planSkill
- email-criticSkill
- escalationSkill
- exec-conversationSkill
- expansion-caseSkill
- expansion-scanSkill
- handoffSkill
- hard-conversationSkill
- health-scoreSkill
- internal-askSkill
- invoice-chaseSkill
- mutual-action-planSkill
- nrr-narrativeSkill
- offboardingSkill
- onboarding-planSkill
- one-pagerSkill
- playbook-builderSkill
- portfolio-reviewSkill
- price-increaseSkill
- renewal-negotiationSkill
- renewal-riskSkill
- renewal-runwaySkill
- sales-handoffSkill
- save-planSkill
- stakeholder-mapSkill
- status-updateSkill
- survey-follow-upSkill
- team-rollupSkill
- usage-emailSkill
- value-ledgerSkill
- voice-of-customerSkill
- what-do-i-oweSkill
- skill-nameSkill
The file
We split this skill into the rules it gives an agent
4 rules. About 0 are common, 4 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈4
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 13
If the user has pasted or attached a list of renewing accounts, go straight to "Do this".
- Distinctive: line 25
Fix the pool: Keep accounts renewing in the period.
- Distinctive: line 66
Adjust forecasters out loud: If last period shows one person's Likely landing short, apply a stated adjustment.
- Distinctive: line 67
Defaults are placeholders: Every percentage in the references is a common default, set your own.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Renewal Forecast
A dollar forecast for a renewal period, as a range the user can defend to finance: gross retention, net retention, contraction, and the one or two bets that move it.
Start here
If the user has pasted or attached a list of renewing accounts, go straight to "Do this". A CSV and a plain pasted list both work.
Otherwise ask for these in ONE message, then proceed with whatever comes back:
- The list, one row per account: account, ARR, renewal date, auto-renew (y/n), notice date, category (commit, likely, at risk, unknown, lost), reason. Any subset works.
- The period, and any expansion already signed or verbally expected.
- Last period's forecast against what landed, if the user has it.
Missing columns are inferred and tagged (assumed, confirm). If an "Account context" block exists in the conversation, use it for pricing model and contract shapes.
Do this
- Fix the pool. Keep accounts renewing in the period. Starting ARR is their sum. Say that the denominator is this period's renewing ARR, not the whole base.
- Split by how each renews. Auto-renew with the notice date passed is Commit. Auto-renew with the window still open stays in the judgement pool on its own line, because the customer can still serve notice. Opt-out date = renewal date minus notice period; flag any inside 30 days.
- Categorize on evidence. Load
references/entry-criteria.mdfor the tests and default ranges. No test passed means Unknown, never Likely. An account inside 90 days with no documented risk status is Unknown, because risk found late usually existed earlier. - Group at-risk by mechanism. One group per cause: a sunset, a price change, a segment, an acquirer. Price each group as two outcomes, resolves or does not. Low = every group fails, high = every group resolves, expected = the odds you state. Single-account risks stay ungrouped.
- Split every loss into churn and contraction. Contraction gets its own line in all three cases. Expansion stays separate and is never netted against a loss.
- Compute. GRR = retained / starting ARR. NRR = (retained + expansion) / starting ARR. Each as low, expected, high.
- Say what moves it. Name the largest bet, its swing in GRR points, what resolves it and by when. Keep accounts that may slip a period apart from accounts that may leave.
Output
Lead with the call. Use this skeleton exactly, with the numbers table in $k:
RENEWAL FORECAST: [period] | [n] renewals | $[x] starting ARR
Call: Plan to $[expected retained] ([GRR]% GRR, [NRR]% NRR). Range [low]% to [high]% GRR.
Biggest bet: [mechanism], $[x], swings GRR [n] points.
Numbers: churn | contraction | retained | expansion | GRR | NRR x low / expected / high
Pool: category | accounts | ARR | entry test met
Auto-renew split: passed | window open (names, notice dates) | actively decided
Bets: [mechanism] | accounts | $ | resolves: ... | fails: ... | odds | owner and date
Slip, not loss: [accounts, why, dollars]
Calibration: [adjustment applied, or none and why]
What would make me wrong: [one line, with the number it moves]
Checkpoint: "If [thing] has not happened by [date], [action]."
What I could not check
- [gap]A filled example is in examples/sample.md. Match its shape and length.
Rules
- Contraction is a line, not a footnote. A renew-or-churn flag cannot represent an account that renews smaller, and those accounts often carry much of a shortfall.
- Correlated risk is one bet. Accounts at risk for the same reason resolve together, so adding their probabilities as if independent understates the spread. Low and high are therefore wide on purpose.
- Unknown is a category. Without it unknowns drift into Likely, the comfortable bucket, and the forecast inherits the optimism.
- Silence is not Commit until the notice date passes. An open-window auto-renewal depends on the customer doing nothing, and one reminder email can end that.
- Show GRR beside NRR, GRR first. A few large expansions can hold NRR flat while the base shrinks. The gap between the two is the story.
- Slip is not loss. A renewal that moves a period breaks this period's number, not the year's retention, and the cause is usually their procurement, signatures or budget cycle, not their satisfaction.
- Adjust forecasters out loud. If last period shows one person's Likely landing short, apply a stated adjustment. Silent discounting costs trust and teaches nothing.
- Defaults are placeholders. Every percentage in the references is a common default, set your own. After two periods, replace them with what landed.
Related (only if installed)
renewal-risk for any single account in the pool. portfolio-review to challenge the reads before they enter the number. nrr-narrative to turn the result into the board story.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

