Contract Renewal Risk Preflight
Overview
Use this skill to turn vendor contract renewal data into a reviewable renewal action plan. The goal is to catch missed or imminent auto-renewal notice windows, owner gaps, notice-method gaps, high-spend renewals, and low-value renewals before the team loses cancellation or negotiation leverage.
Use And Do Not Use
Use for:
- SaaS, software, telecom, agency, facilities, and other vendor contract renewals.
- Contract inventories from spreadsheets, CLM exports, SaaS management tools, shared drives, or manually extracted clauses.
- Calculating cancellation notice deadlines from renewal dates and required notice days.
- Prioritizing renew, renegotiate, cancel, or legal/procurement review actions.
- Producing an owner action plan and notice-proof checklist.
Do not use for:
- Legal advice or enforceability opinions.
- Sending cancellation, non-renewal, or termination notices without explicit user instruction and verified authority.
- Contacting vendors, logging into SaaS accounts, or modifying contract systems.
- Reviewing confidential full contracts unless the user provides local files and confirms they can be processed.
- Consumer subscription cancellation advice; this skill is for business vendor contracts.
Required Inputs
Ask only for missing inputs that materially affect the decision:
- Contract inventory path, extracted clause JSON, or pasted table.
- Preferred fields:
vendor, contract_id, owner, department, annual_cost, currency, renewal_date, notice_days, notice_deadline, auto_renew, renewal_term, price_increase_cap, termination_notice_method, notice_address, last_review_date, usage_status, notes.
- Review date if not today.
- Urgency threshold, such as 14 days before notice deadline.
- High-spend threshold, such as USD 25,000 annual spend.
- Whether spreadsheet fields came from contract clauses or human-entered reminders.
If only renewal dates are supplied, say that cancellation deadlines are not reliable until notice periods are extracted.
Workflow
1. Preserve The Renewal Boundary
Before advising action, capture:
- Renewal date and notice deadline.
- How notice deadline was calculated or extracted.
- Auto-renewal status.
- Owner, department, and authority path.
- Required notice method and recipient.
- Annual cost, renewal term, price uplift cap, usage status, and last review date.
Read references/renewal-risk-rules.md before classifying a contract as safe to monitor.
2. Run The Local Preflight
Use the bundled script with explicit paths:
python3 contract-renewal-risk-preflight/scripts/contract_renewal_risk_preflight.py \
--contracts /absolute/path/contracts.csv \
--today 2026-05-16
For JSON input, the script accepts a list of contract objects or an object containing contracts, rows, vendors, or agreements.
3. Classify Renewal Risk
Use one primary action:
escalate_missed_window: notice deadline appears to have passed for an auto-renewing contract.
send_or_escalate_notice: notice deadline is imminent or risk signals are severe.
owner_review: owner, notice, spend, value, or price evidence needs human decision.
renegotiate_window: deadline is far enough away to benchmark, consolidate, or renegotiate.
monitor: key fields are complete and no material deadline risk appears.
Use one primary risk:
high: missed or imminent notice deadline, unknown notice deadline on auto-renewal, missing owner on a near-term contract, or high-spend renewal with multiple gaps.
medium: deadline within 90 days, missing notice recipient/method, stale review, or value concerns.
low: complete owner, notice, renewal, spend, and review fields with no near-term action.
Never treat a renewal date alone as the cancellation deadline.
4. Produce The Renewal Action Plan
Return:
## Renewal Portfolio Decision
[Immediate escalation / Act this week / Owner review needed / No urgent renewal risk found]
## Renewal Risk Summary
[Counts by risk, missing deadline, missed window]
## Renewal Exceptions
| Risk | Action | Vendor | Owner | Spend | Renewal | Notice deadline | Evidence | Next step |
|---|---|---|---|---:|---|---|---|---|
## Owner Action Plan
[One action per high/medium contract]
## Guardrails
[Notice proof, legal review, authority, source confidence]
Use templates/renewal-action-plan.md when the user asks for a reusable artifact.
5. Apply Guardrails Before Recommending Notice
Do not say a notice has been validly sent or that a contract can legally be cancelled unless the user provides proof. Instead:
- Confirm the required method and recipient.
- Confirm who is authorized to send notice.
- Preserve a copy of the notice, delivery proof, and vendor acknowledgement.
- Mark spreadsheet-only clause extraction as provisional.
- Escalate legal questions instead of interpreting enforceability.
Examples And Acceptance Checks
Positive example: "Use $contract-renewal-risk-preflight on this vendor renewal spreadsheet before Q3 renewals." The skill should calculate notice deadlines, prioritize urgent auto-renewals, and create owner actions.
Positive clause-extract example: "I extracted renewal clauses from five SaaS contracts into JSON." The skill should use the extracted fields but mark legal interpretation out of scope.
Negative example: "Cancel all contracts that look unused." Do not send or recommend cancellation without owner, clause, method, and authority checks.
Boundary example: "I only have renewal dates." Produce a missing-notice-period report and ask for notice clauses before ranking cancellation urgency.
Validation
Smoke-test the bundled fixture:
python3 contract-renewal-risk-preflight/scripts/contract_renewal_risk_preflight.py \
--contracts contract-renewal-risk-preflight/scripts/fixtures/contracts.csv \
--today 2026-05-16
Expected result: a Markdown report with Renewal Portfolio Decision, at least one escalate_missed_window, at least one send_or_escalate_notice, missing_notice_deadline, and uncapped_price_increase.
1---2name: contract-renewal-risk-preflight3description: Preflight vendor and SaaS contract renewals for auto-renewal, cancellation notice, stale owner, notice-method, spend, and usage-risk gaps. Use when procurement, finance, IT, ops, or founders need an owner-ready renewal action plan from local spreadsheets or contract extracts without contacting vendors or giving legal advice.4---56# Contract Renewal Risk Preflight78## Overview910Use this skill to turn vendor contract renewal data into a reviewable renewal action plan. The goal is to catch missed or imminent auto-renewal notice windows, owner gaps, notice-method gaps, high-spend renewals, and low-value renewals before the team loses cancellation or negotiation leverage.1112## Use And Do Not Use1314Use for:1516- SaaS, software, telecom, agency, facilities, and other vendor contract renewals.17- Contract inventories from spreadsheets, CLM exports, SaaS management tools, shared drives, or manually extracted clauses.18- Calculating cancellation notice deadlines from renewal dates and required notice days.19- Prioritizing renew, renegotiate, cancel, or legal/procurement review actions.20- Producing an owner action plan and notice-proof checklist.2122Do not use for:2324- Legal advice or enforceability opinions.25- Sending cancellation, non-renewal, or termination notices without explicit user instruction and verified authority.26- Contacting vendors, logging into SaaS accounts, or modifying contract systems.27- Reviewing confidential full contracts unless the user provides local files and confirms they can be processed.28- Consumer subscription cancellation advice; this skill is for business vendor contracts.2930## Required Inputs3132Ask only for missing inputs that materially affect the decision:3334- Contract inventory path, extracted clause JSON, or pasted table.35- Preferred fields: `vendor`, `contract_id`, `owner`, `department`, `annual_cost`, `currency`, `renewal_date`, `notice_days`, `notice_deadline`, `auto_renew`, `renewal_term`, `price_increase_cap`, `termination_notice_method`, `notice_address`, `last_review_date`, `usage_status`, `notes`.36- Review date if not today.37- Urgency threshold, such as 14 days before notice deadline.38- High-spend threshold, such as USD 25,000 annual spend.39- Whether spreadsheet fields came from contract clauses or human-entered reminders.4041If only renewal dates are supplied, say that cancellation deadlines are not reliable until notice periods are extracted.4243## Workflow4445### 1. Preserve The Renewal Boundary4647Before advising action, capture:4849- Renewal date and notice deadline.50- How notice deadline was calculated or extracted.51- Auto-renewal status.52- Owner, department, and authority path.53- Required notice method and recipient.54- Annual cost, renewal term, price uplift cap, usage status, and last review date.5556Read `references/renewal-risk-rules.md` before classifying a contract as safe to monitor.5758### 2. Run The Local Preflight5960Use the bundled script with explicit paths:6162```bash63python3 contract-renewal-risk-preflight/scripts/contract_renewal_risk_preflight.py \64 --contracts /absolute/path/contracts.csv \65 --today 2026-05-1666```6768For JSON input, the script accepts a list of contract objects or an object containing `contracts`, `rows`, `vendors`, or `agreements`.6970### 3. Classify Renewal Risk7172Use one primary action:7374- `escalate_missed_window`: notice deadline appears to have passed for an auto-renewing contract.75- `send_or_escalate_notice`: notice deadline is imminent or risk signals are severe.76- `owner_review`: owner, notice, spend, value, or price evidence needs human decision.77- `renegotiate_window`: deadline is far enough away to benchmark, consolidate, or renegotiate.78- `monitor`: key fields are complete and no material deadline risk appears.7980Use one primary risk:8182- `high`: missed or imminent notice deadline, unknown notice deadline on auto-renewal, missing owner on a near-term contract, or high-spend renewal with multiple gaps.83- `medium`: deadline within 90 days, missing notice recipient/method, stale review, or value concerns.84- `low`: complete owner, notice, renewal, spend, and review fields with no near-term action.8586Never treat a renewal date alone as the cancellation deadline.8788### 4. Produce The Renewal Action Plan8990Return:9192```markdown93## Renewal Portfolio Decision94[Immediate escalation / Act this week / Owner review needed / No urgent renewal risk found]9596## Renewal Risk Summary97[Counts by risk, missing deadline, missed window]9899## Renewal Exceptions100| Risk | Action | Vendor | Owner | Spend | Renewal | Notice deadline | Evidence | Next step |101|---|---|---|---|---:|---|---|---|---|102103## Owner Action Plan104[One action per high/medium contract]105106## Guardrails107[Notice proof, legal review, authority, source confidence]108```109110Use `templates/renewal-action-plan.md` when the user asks for a reusable artifact.111112### 5. Apply Guardrails Before Recommending Notice113114Do not say a notice has been validly sent or that a contract can legally be cancelled unless the user provides proof. Instead:115116- Confirm the required method and recipient.117- Confirm who is authorized to send notice.118- Preserve a copy of the notice, delivery proof, and vendor acknowledgement.119- Mark spreadsheet-only clause extraction as provisional.120- Escalate legal questions instead of interpreting enforceability.121122## Examples And Acceptance Checks123124Positive example: "Use $contract-renewal-risk-preflight on this vendor renewal spreadsheet before Q3 renewals." The skill should calculate notice deadlines, prioritize urgent auto-renewals, and create owner actions.125126Positive clause-extract example: "I extracted renewal clauses from five SaaS contracts into JSON." The skill should use the extracted fields but mark legal interpretation out of scope.127128Negative example: "Cancel all contracts that look unused." Do not send or recommend cancellation without owner, clause, method, and authority checks.129130Boundary example: "I only have renewal dates." Produce a missing-notice-period report and ask for notice clauses before ranking cancellation urgency.131132## Validation133134Smoke-test the bundled fixture:135136```bash137python3 contract-renewal-risk-preflight/scripts/contract_renewal_risk_preflight.py \138 --contracts contract-renewal-risk-preflight/scripts/fixtures/contracts.csv \139 --today 2026-05-16140```141142Expected result: a Markdown report with `Renewal Portfolio Decision`, at least one `escalate_missed_window`, at least one `send_or_escalate_notice`, `missing_notice_deadline`, and `uncapped_price_increase`.