关于 renewal-tracker
renewal-tracker 是通过续约登记表跟踪合同续约与取消期限的法律工作流技能。它按紧急程度归类即将到来的期限并提供后续行动建议,但不替用户决定续约或取消。
主要功能
- 01跟踪续约和取消日期
- 02按紧急程度归类临近期限
- 03计算工作日回退日期
- 04报告已错过的取消期限
- 05建议后续行动及负责人
适用场景
- 01查看未来 90 天内的续约
- 02调整期限查询范围
- 03查找已过的取消期限
- 04从已连接的 CLM 加载续约日期
MCP 相关
登记表为空或过时时,该技能可通过已连接的 MCP 集成查询 CLM 中的有效协议及续约日期。它也可查询 DocuSign 中元数据含续约相关词语的已完成信封。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ anthropics/ claude-for-legal --skill renewal-tracker安装后在 Claude Code 中输入/renewal-tracker确认已加载。
附带文件references/renewal-register.yaml
详细介绍
/renewal-tracker
显示哪些事项即将续约,以及最晚需要何时取消。
Instructions
-
读取
~/.claude/plugins/config/claude-for-legal/commercial-legal/renewal-register.yaml(配置目录,在插件更新后仍会保留)。 -
默认模式: 模式 2——查看未来 90 天内的事项,并按紧迫程度分组。使用左闭右开区间,确保每个期限只属于一个区间:🔴 0–13 天、🟠 14–44 天、🟡 45–89 天。第 14、45 和 90 天是边界,每个边界只属于一个区间,不能同时属于两个区间。
-
--days N: 更改时间范围。 -
--missed: 模式 4——列出已过期但未记录取消的最晚取消日期。 -
如果登记表为空且 [CLM] 已连接: 提供模式 3——扫描 [CLM] 中包含续约日期的有效协议,并批量载入。
-
输出应包含建议采取的行动: 联系谁(每条登记记录中的业务负责人),哪些项目采用无上限定价(在窗口关闭前争取谈判筹码)。
Examples
/commercial-legal:renewal-tracker
/commercial-legal:renewal-tracker --days 180
/commercial-legal:renewal-tracker --missed
Purpose
没人会把合同读两遍。续约日期只在审查时提取一次,然后记录在某处——最好是能在最晚取消期限前 45 天提醒你,而不是在期限过后 45 天才提醒。
此技能负责维护续约登记表,并显示即将发生的事项。
The register
文件位于 ~/.claude/plugins/config/claude-for-legal/commercial-legal/renewal-register.yaml(配置目录,在插件更新后仍会保留)。每条记录如下:
- 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: "[email protected]"
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."
注意通知传递时间——根据 send_by_effective 提醒,而非 cancel_by_effective。 如果通知期限为 60 天且要求用挂号信寄送,实际可用时间只有约 55 天。根据收到日期提醒的跟踪工具,最终会错过期限。计算 send_by_effective = cancel_by_effective - transit_buffer_days,并根据 send_by_effective 触发提醒(模式 2 中的 🔴 / 🟠 / 🟡 紧迫程度区间)。模式 2 的紧迫程度列显示 send_by_effective;详情列则显示 cancel_by_effective、notice_method 和 transit_buffer_days,便于读者查看差值并对缓冲时间提出质疑。
滚动续约——不会向前滚动更新的登记表,只能正确一次。 记录中保存 initial_term_end,但根据 current_term_end 计算 cancel_by_*。续约生效后(取消窗口已过且未发出通知),提示:
此合同已于 [date] 自动续约。更新登记表:新的
current_term_end为 [date + renewal period],新的cancel_by_effective为 [computed],新的send_by_effective为 [computed]。确认?
第一年之后,initial_term_end 就不再准确,只有 current_term_end 才能得出正确的最晚取消日期。
对每个取消截止日期进行工作日检查
登记表中的取消截止日期必须是通知生效的最后一个工作日,而不是日历日期。 截止日期落在周末,是错过续约期限最常见的原因。登记表会捕捉到这一点。
计算(或录入)取消截止日期时:
- 计算日历日期。
cancel_by_calendar = initial_term_end − notice_period_days(或按条款规定计算)。这是原始的算术结果。 - 根据适用法律回溯工作日。 合同的适用法律决定哪些节假日需要计入。美国:联邦节假日 + 适用法律属于某州时,该州的节假日。英格兰和威尔士:银行假日。德国:法定节假日(因联邦州而异——请询问具体州)。加拿大:联邦 + 省级节假日。新加坡:公共假日。如果是星期六,回溯到星期五。如果是星期日,回溯到星期五。如果适用法律管辖地区有节假日,回溯到前一个工作日。只能向前回溯,绝不能顺延——顺延意味着通知会在期限结束后才送达。对于适用法律不属于美国的情况,如果无法确定节假日日历,请标记:“适用法律为 [X]——工作日回溯暂以美国联邦节假日为准。依赖生效日期前,请根据 [jurisdiction] 的节假日日历进行核实。”
- 检查合同自身的日期计算规则。 查找“工作日”“必须收到”“视为收到”“[当地时间] 下午 5:00”或通知方式条款。如果合同定义了“工作日”或规定了收件方式(挂号邮件、带已读回执的电子邮件),则以该定义为准。标记默认回溯规则与合同自身规则之间的任何不一致。
- 在登记表中记录两个日期。
cancel_by_calendar是原始的算术结果;cancel_by_effective是通知生效的最后一个工作日;cancel_by_roll_note记录两者不一致的原因(例如,“从星期日 2026-11-01 回溯;请根据合同的工作日定义进行核实”)。每个计算得出的cancel_by_effective都带有[model calculation — verify against the notice clause]来源标记,确保核实标记随日期保留,而不是只出现在周围的说明文字中。 - 根据生效日期而非日历日期触发提醒。 紧急程度分级(模式 2 中的 🔴 / 🟠 / 🟡)使用
cancel_by_effective。模式 2 的输出在紧急程度列中显示cancel_by_effective,并在发生回溯时于详情列中显示cancel_by_calendar和cancel_by_roll_note,让读者能够看见并提出质疑。
模式 2 报告若将 cancel_by: 2026-11-01(星期日)打印出来,却不显示星期几,也不发出警告,那么这个生效截止日期就是悄无声息地出错了。登记表正是用来在录入时捕捉这一问题的——而不是等到期限已经变动后才发现。
模式
模式 1:录入续约(从审核环节移交)
当 saas-msa-review 或 vendor-agreement-review 找到续约条款时,会移交一条记录。将其追加到登记表。如果该交易对方已有记录,请询问这是替代协议(续约协议)还是额外协议。
模式 2:即将到期事项
**默认回溯窗口:**未来 90 天。
**紧急程度区间采用左闭右开区间——每个截止日期只属于一个区间。**使用距取消截止日期的天数(cancel_by_effective - today)。第 14、45 和 90 天各自只属于一个区间,而不是两个;此处若差一天,就会把最紧急的事项归入紧急程度较低的区间。
- 🔴 0–13 天(距离取消截止日期不到 14 天——包括今天)
- 🟠 14–44 天
- 🟡 45–89 天
- (90 天及以上的所有事项均在默认回溯窗口之外;只有用户指定了超过 90 天的
--horizon时才纳入)
## Renewals — next 90 days
### 🔴 Cancel-by deadline in 0–13 days
| Counterparty | Cancel by | Renewal date | Annual $ | Owner | Notes |
|---|---|---|---|---|---|
| [name] | **[date]** | [date] | $[n] | [email] | [notes] |
### 🟠 Cancel-by deadline in 14–44 days
[same table]
### 🟡 Cancel-by deadline in 45–89 days
[same table]
---
**Recommended actions:**
- [ ] [Counterparty] — ping [business owner]: do we want to keep this?
- [ ] [Counterparty] — pricing is uncapped; get a quote from an alternative before we lose leverage
如果窗口内的续约超过约 10 项,或用户提出要求,请提供仪表板(参见 CLAUDE.md ## Outputs → Dashboard offer for data-heavy outputs)。针对本次输出定制提议内容——按紧急程度分级(🔴 / 🟠 / 🟡)统计数量、取消截止日期时间线,以及包含交易对方、续约日期、年度金额和负责人的可排序登记表。
模式 3:扫描 [CLM] / 电子签名工具,填充登记表
如果已连接 MCP,且登记表为空或已过时:
- 查询 [CLM] 中状态为“Active”且包含续约日期字段的所有协议
- 查询 DocuSign 中过去 24 个月内已完成的信封,并筛选元数据中包含“subscription” / “renewal” / “auto-renew”的记录
- 对每条命中记录提取续约机制并添加到登记表
- 标记任何无法从元数据确定续约日期的记录——这些记录需要人工阅读合同
这是一次性批量加载。此后,在审查时进行导入。
模式 4:错过窗口(坏消息报告)
## Missed cancellation windows
The following agreements had cancel-by deadlines that have passed and no
cancellation was recorded:
| Counterparty | Cancel-by was | Renewal date | Status |
|---|---|---|---|
| [name] | [date] | [date] | Will auto-renew on [date] |
**Options:**
- Negotiate late cancellation (rarely works but worth asking)
- Accept the renewal, mark next year's cancel-by now
- Check the agreement for any other termination rights (for convenience, for cause)
闸门:接受或拒绝续约
跟踪续约日期属于研究工作。采取行动——发送不续约通知、任由自动续约生效,或会签续约表格——属于会产生重大后果的法律步骤。
**在继续接受或拒绝续约之前(包括发送不续约通知,或让自动续约在取消截止日期过后生效):**阅读 ~/.claude/plugins/config/claude-for-legal/commercial-legal/CLAUDE.md 中的 ## Who's using this。如果 Role 是 Non-lawyer:
此步骤会产生法律后果(你要么承诺再续约一个期限,要么终止合作关系)。你是否已与律师讨论此事?如果是,请继续。如果否,以下是可供律师参考的简要说明:
[生成一页摘要:交易对方、当前期限结束日期和取消截止日期、续约价格机制、若不采取任何行动会发生什么、如果希望货比三家可考虑的替代供应商,以及窗口关闭前要向律师咨询的三件事。]
如果你需要寻找律师、事务律师、大律师或其他获授权的法律专业人士,请联系所在地区的专业监管机构(美国的州律师协会、英格兰和威尔士的 SRA / Bar Standards Board、苏格兰 / 北爱尔兰 / 爱尔兰 / 加拿大 / 澳大利亚的 Law Society,或所在司法辖区的同等机构),咨询其转介服务。
未经明确肯定答复,不得越过此闸门。
集成:renewal-watcher Agent
此插件中的 renewal-watcher Agent 会按计划运行此技能(默认每周一次),并将“即将到期”报告发布到 ~/.claude/plugins/config/claude-for-legal/commercial-legal/CLAUDE.md → ## House style → 工作成果发布位置中指定的频道。模式 2 是该 Agent 的主要输出。
此技能不做什么
- 它不会取消合同,而是告知你何时需要作出决定。
- 它不会决定是否续约,而是列出截止日期和业务负责人。
- 它不会阅读合同来查找续约日期——这会在审查时进行。如果登记表中有一份合同却没有续约日期,说明这是手动添加的,需要有人补全这一信息。