Contract Renewal Tracker Skill

Drop in your contract list and see which renewals you can still cancel, which ones you're already locked into, and get every cancel-by date in your calendar with reminders.

Contract Renewal Tracker Skill cover

What it does

Never miss a cancel-by date again. Give it a CSV of contracts or SaaS subscriptions; it rolls every auto-renewing term forward to today, works out the notice deadline, sorts what needs a decision, totals the money at stake and writes a calendar file with reminders.

Python 3.9+, standard library only, offline. Includes a Claude Code skill (skills/contract-renewal-tracker/SKILL.md) and plugin manifest.

What you get

The screenshot is real output from the kit’s own commands. Tested from a fresh download of this exact zip: ./run_tests.sh ran 10 tests OK on Python 3.13 and 3.10.

Real terminal output from Contract Renewal Tracker Skill: demo and passing tests

Quick start

./demo.sh                     # runs on examples/contracts.csv as of 2026-11-09
./run_tests.sh                # 10 tests
python3 -m renewals check contracts.csv --out renewals/ [--window 90] [--as-of 2026-12-01] [--alarms 30,7,1]

Input

One row per contract. Headers are matched by common names (Vendor/Name/Supplier, Start Date, End Date/Expiration, Term, Auto Renew/Evergreen, Renewal Term, Notice Period, Annual Value/Cost, Owner, Cancel By). Map anything else with --col field=Header (fields: name, start, end, term, renewal_term, auto, notice, value, owner, cancel_by).

  • Dates: 2026-03-01, 03/01/2026, 1 Mar 2026, 01.03.2026.
  • Periods: 12, 12 months, 1 year, 60 days, 90d, 2w (terms default to months, notice to days).
  • Values: $18,000.00, 6.480,50 EUR.

How dates are calculated

RuleExample
A term of N months ends the day before the same date N months laterstart 2025-12-01, 12 months -> ends 2026-11-30
Auto-renewing contracts roll forward by the renewal term until the current term ends today or later2024-07-01 annual -> current term ends 2027-06-30 (2 renewals so far)
Notice deadline = current term end minus the notice period (days or months)ends 2026-11-30, 60 days -> notice by 2026-10-01
A Cancel By column overrides the calculation for the current term only
Month ends are clamped2026-01-31 + 1 month = 2026-02-28

Statuses

StatusMeaning
locked-inNotice deadline passed; it renews for another term. Next chance is next_term_end minus notice
act-nowNotice deadline within --window days (default 60)
no-notice-periodAuto-renews within the window but no notice period is recorded
ends-soon / expiredDoesn't auto-renew; ends within the window / already ended
ok, errorNothing due / a date or period couldn't be read

Outputs (--out)

  • renewals.csv: every contract with status, deadline, days left, term end, next term end, value, notes.
  • renewals.ics: all-day events for each future cancel-by deadline (with reminders) and each term end. Import into Google Calendar, Outlook or Apple Calendar.
  • summary.json: counts by status, value needing a decision, value already locked in, detected columns.

Exit code 1 if any row has an error.

Honest limits

  • Not legal advice. Deadlines come from your CSV, not from the contract text; confirm each against the notice clause (business days, written-notice requirements, different reference dates).
  • One renewal term per contract (no price escalators or step-ups); values are as entered.

Format and license

Zip, 14 KB, v1.0, 13 files. You may use and modify this kit for your own work and for clients you serve, including paid client work. Not legal advice.

FAQ

Does it read the contract PDFs?
No. It works from a CSV you or Claude fill in; always confirm deadlines against the notice clause.
Which calendars?
Any that imports .ics: Google Calendar, Outlook, Apple Calendar.
Is this legal advice?
No. It does the date math; your counsel or the contract decides what notice is valid.
How do I get the files?
Right after payment, Stripe’s confirmation page shows your download link.
Refunds?
Email hello@youraitools.co within 14 days if it doesn’t work and we can’t fix it.
Can I pay with crypto?
Yes. Pay the same price in USDC or USDT on Base, Ethereum, Arbitrum, Optimism, Polygon or Solana from the "Pay with crypto" button, with no account or KYC. We check the payment on-chain and show your download links as soon as it confirms.

Get Contract Renewal Tracker Skill

Track contract and SaaS renewals from a spreadsheet: auto-renewals rolled forward, cancel-by deadlines, locked-in renewals flagged, .ics reminders. $19 once.

Save with a bundle

Pairs well with

Download$19

Shopify Product CSV Checker Skill

Check a Shopify product CSV before import: headers, handles, variants, prices, weights and images, with safe auto-fixes and a change log. Works with old and new templates. $19 once.

View Shopify Product CSV Checker Skill
DownloadFree

Sitemap Validator (Free)

Free XML sitemap validator: Google's 50,000 URL / 50 MB limits, lastmod format, duplicates, sitemap indexes and redirecting or 404 URLs. Runs locally.

View Sitemap Validator (Free)
Download$19

WooCommerce Product CSV Checker Skill

Check a WooCommerce product CSV before import: variations, prices, booleans, encoding, duplicate SKUs and image paths, with a safely fixed copy. $19 once.

View WooCommerce Product CSV Checker Skill

Related