ai-inventory
EU AI Act per-system inventory — track each AI system's role (provider, deployer, importer,…
Show contracts with cancel-by deadlines coming up and warn before notice windows close, working from a maintained renewal register. Use when the user asks "what's renewing soon", "what renewals are due", "did we miss a cancellation window", "add this to the renewal tracker", or
$ npx -y skills add anthropics/claude-for-legal --skill renewal-tracker --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/renewal-trackerContext preview
The summary Claude sees to decide when to auto-load this skill.
Show contracts with cancel-by deadlines coming up and warn before notice windows close, working from a maintained renewal register. Use when the user asks "what's renewing soon", "what renewals are due", "did we miss a cancellation window", "add this to the renewal tracker", or
name: renewal-tracker description: > Show contracts with cancel-by deadlines coming up and warn before notice windows close, working from a maintained renewal register. Use when the user asks "what's renewing soon", "what renewals are due", "did we miss a cancellation window", "add this to the renewal tracker", or on a scheduled basis. Receives handoffs from saas-msa-review. argument-hint: "[--days N to change window | --missed for lapsed windows]"
Surfaces what's renewing and when you have to cancel by.
1. **Read `~/.claude/plugins/config/claude-for-legal/commercial-legal/renewal-register.yaml`** (the config directory — survives plugin updates).
2. **Default mode:** Mode 2 — what's coming up in the next 90 days, grouped by urgency using half-open intervals so each deadline lands in exactly one band: 🔴 0–13 days, 🟠 14–44 days, 🟡 45–89 days. Days 14, 45, and 90 are boundaries — each belongs to exactly one band, not two.
3. **`--days N`:** Change the window.
4. **`--missed`:** Mode 4 — cancel-by deadlines that passed without recorded cancellation.
5. **If register is empty and the [CLM] is connected:** Offer Mode 3 — scan the [CLM] for active agreements with renewal dates and bulk-load.
6. **Output includes recommended actions:** who to ping (the business owner from each register entry), which ones have uncapped pricing (get leverage before window closes).
/commercial-legal:renewal-tracker
/commercial-legal:renewal-tracker --days 180
/commercial-legal:renewal-tracker --missed
---
Nobody reads a contract twice. The renewal date is extracted once, at review time, and then it lives somewhere — ideally somewhere that shouts at you 45 days before the cancel-by deadline, not 45 days after.
This skill maintains the renewal register and surfaces what's coming.
Lives at `~/.claude/plugins/config/claude-for-legal/commercial-legal/renewal-register.yaml` (the config directory — survives plugin updates). Each entry:
- counterparty: "Acme SaaS Inc." agreement: "Acme Platform Subscription Agreement" signed_date: 2025-06-15 initial_term_end: 2026-06-15 current_term_end: 2026-06-15 # rolls forward after each auto-renewal; compute cancel_by_* from this renewal_mechanism: "auto-renew annual" notice_period_days: 60 notice_method: "email" # email / portal / certified mail / registered post / courier / per contract §X transit_buffer_days: 0 # 0 for electronic, 5 for domestic certified mail, 10 for international registered post — or per contract if specified cancel_by_calendar: 2026-04-16 # current_term_end minus notice_period_days cancel_by_effective: 2026-04-16 # rolled back to last business day if needed send_by_effective: 2026-04-16 # cancel_by_effective minus transit_buffer_days — the date you must SEND the notice cancel_by_roll_note: "" # e.g., "rolled back from Sunday 2026-11-01; verify against contract's business-day definition" cancel_by_provenance: "[model calculation — verify against the notice clause]" price_on_renewal: "then-current list (uncapped)" annual_value: 48000 business_owner: "jane@company.com" clm_id: "IC-12345" # if connected docusign_envelope: "abc-123" # if connected status: "active" # active | cancelled | renewed | lapsed notes: "Pricing uncapped — revisit before renewal. Alt vendors: X, Y."
**Notice transit time — alert off `send_by_effective`, not `cancel_by_effective`.** A 60-day window with a certified-mail requirement is really ~55 days. The tracker that alerts on the received-by date is the tracker that misses the deadline. Compute `send_by_effective = cancel_by_effective - transit_buffer_days` and fire alerts (the 🔴 / 🟠 / 🟡 urgency bands in Mode 2) off `send_by_effective`. Mode 2's urgency column shows `send_by_effective`; a detail column surfaces `cancel_by_effective`, `notice_method`, and `transit_buffer_days` so the reader can see the delta and challenge the buffer.
**Rolling renewals — the register that doesn't roll forward is the register that's right once.** Store `initial_term_end` for the record, but compute `cancel_by_*` from `current_term_end`. When a renewal fires (the cancel window passes and no notice was given), prompt:
> This contract auto-renewed on [date]. Update the register: new `current_term_end` is [date + renewal period], new `cancel_by_effective` is [computed], new `send_by_effective` is [computed]. Confirm?
After year one, `initial_term_end` is wrong and only `current_term_end` produces a correct cancel-by date.
**The register's cancel-by date must be the last BUSINESS DAY on which notice is effective, not the calendar date.** A calendar date that falls on a weekend is the single most common way a renewal deadline gets missed. The register catches it.
When you compute (or ingest) a cancel-by date:
1. **Compute the calendar date.** `cancel_by_calendar = initial_term_end − notice_period_days` (or whatever the clause specifies). This is the raw arithmetic. 2. **Business-day roll-back keyed to governing law.** The contract's governing law determines which holidays count. US: federal holidays + the state's holidays if governing law is a state. England & Wales: bank holidays. Germany: Feiertage (vary by Bundesland — ask which). Canada: federal + provincial. Singapore: public holidays. If Saturday, roll back to Friday. If Sunday, roll back to Friday. If a holiday in the governing-law jurisdiction, roll back to the prior business day. Roll BACK, never forward — forward means notice arrives after the window closes. For non-US governing law, if you can't determine the holiday calendar, flag it: "Governing law is [X] — business-day roll-back uses US federal holidays as a placeholder. Verify against the [jurisdiction] holiday calendar before relying on
Reference agents, skills, and data connectors for the legal workflows we see most — in-house commercial, privacy, product, corporate, employment, litigation, regulatory, AI governance, IP, and the learning side of the practice (law school clinics and
EU AI Act per-system inventory — track each AI system's role (provider, deployer, importer,…
Run an AI impact assessment — structured intake, risk analysis, regulatory classification per…
Run the cold-start interview — learns your AI governance practice and writes…
Guided customization of your AI governance practice profile — change one thing without…
Manage matter workspaces — new, list, switch, close, or detach (practice-level).…
Keep the AI policy current with practice — weekly sweep of saved AIAs, triage results, and…