mcpField
R
renewal-tracker

renewal-tracker

github.com/anthropics生产力9.8k605 次安装14 周前更新
代码仓库

关于 renewal-tracker

renewal-tracker 是通过续约登记表跟踪合同续约与取消期限的法律工作流技能。它按紧急程度归类即将到来的期限并提供后续行动建议,但不替用户决定续约或取消。

主要功能

  1. 01跟踪续约和取消日期
  2. 02按紧急程度归类临近期限
  3. 03计算工作日回退日期
  4. 04报告已错过的取消期限
  5. 05建议后续行动及负责人

适用场景

  1. 01查看未来 90 天内的续约
  2. 02调整期限查询范围
  3. 03查找已过的取消期限
  4. 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

  1. 读取 ~/.claude/plugins/config/claude-for-legal/commercial-legal/renewal-register.yaml(配置目录,在插件更新后仍会保留)。

  2. 默认模式: 模式 2——查看未来 90 天内的事项,并按紧迫程度分组。使用左闭右开区间,确保每个期限只属于一个区间:🔴 0–13 天、🟠 14–44 天、🟡 45–89 天。第 14、45 和 90 天是边界,每个边界只属于一个区间,不能同时属于两个区间。

  3. --days N: 更改时间范围。

  4. --missed: 模式 4——列出已过期但未记录取消的最晚取消日期。

  5. 如果登记表为空且 [CLM] 已连接: 提供模式 3——扫描 [CLM] 中包含续约日期的有效协议,并批量载入。

  6. 输出应包含建议采取的行动: 联系谁(每条登记记录中的业务负责人),哪些项目采用无上限定价(在窗口关闭前争取谈判筹码)。

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 才能得出正确的最晚取消日期。

对每个取消截止日期进行工作日检查

登记表中的取消截止日期必须是通知生效的最后一个工作日,而不是日历日期。 截止日期落在周末,是错过续约期限最常见的原因。登记表会捕捉到这一点。

计算(或录入)取消截止日期时:

  1. 计算日历日期。 cancel_by_calendar = initial_term_end − notice_period_days(或按条款规定计算)。这是原始的算术结果。
  2. 根据适用法律回溯工作日。 合同的适用法律决定哪些节假日需要计入。美国:联邦节假日 + 适用法律属于某州时,该州的节假日。英格兰和威尔士:银行假日。德国:法定节假日(因联邦州而异——请询问具体州)。加拿大:联邦 + 省级节假日。新加坡:公共假日。如果是星期六,回溯到星期五。如果是星期日,回溯到星期五。如果适用法律管辖地区有节假日,回溯到前一个工作日。只能向前回溯,绝不能顺延——顺延意味着通知会在期限结束后才送达。对于适用法律不属于美国的情况,如果无法确定节假日日历,请标记:“适用法律为 [X]——工作日回溯暂以美国联邦节假日为准。依赖生效日期前,请根据 [jurisdiction] 的节假日日历进行核实。”
  3. 检查合同自身的日期计算规则。 查找“工作日”“必须收到”“视为收到”“[当地时间] 下午 5:00”或通知方式条款。如果合同定义了“工作日”或规定了收件方式(挂号邮件、带已读回执的电子邮件),则以该定义为准。标记默认回溯规则与合同自身规则之间的任何不一致。
  4. 在登记表中记录两个日期。 cancel_by_calendar 是原始的算术结果;cancel_by_effective 是通知生效的最后一个工作日;cancel_by_roll_note 记录两者不一致的原因(例如,“从星期日 2026-11-01 回溯;请根据合同的工作日定义进行核实”)。每个计算得出的 cancel_by_effective 都带有 [model calculation — verify against the notice clause] 来源标记,确保核实标记随日期保留,而不是只出现在周围的说明文字中。
  5. 根据生效日期而非日历日期触发提醒。 紧急程度分级(模式 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,且登记表为空或已过时:

  1. 查询 [CLM] 中状态为“Active”且包含续约日期字段的所有协议
  2. 查询 DocuSign 中过去 24 个月内已完成的信封,并筛选元数据中包含“subscription” / “renewal” / “auto-renew”的记录
  3. 对每条命中记录提取续约机制并添加到登记表
  4. 标记任何无法从元数据确定续约日期的记录——这些记录需要人工阅读合同

这是一次性批量加载。此后,在审查时进行导入。

模式 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 的主要输出。

此技能不做什么

  • 它不会取消合同,而是告知你何时需要作出决定。
  • 它不会决定是否续约,而是列出截止日期和业务负责人。
  • 它不会阅读合同来查找续约日期——这会在审查时进行。如果登记表中有一份合同却没有续约日期,说明这是手动添加的,需要有人补全这一信息。

评论

支持 Markdown