| name | commercial-renewal-tracker |
| description | 展示具有即将到来的取消截止日期的合同,在通知窗口关闭前发出预警, 基于维护的续约登记册运行。当用户询问"什么即将续约""哪些续约即将到期" "我们是否错过了取消窗口""将此添加到续约追踪器"时使用,或按计划运行。 接收来自 saas-msa-review 的交接数据。
|
| argument-hint | [--days N 变更窗口 | --missed 查看已过期的窗口] |
/renewal-tracker
呈现哪些合同即将续约以及必须在何时之前取消。
指令
-
读取 $LEGAL_AGENT_PROFILE_HOME/commercial-legal/renewal-register.yaml(配置目录——插件更新后仍保留)。
-
默认模式: 模式2——未来90天内即将到来的事项,按紧急程度分组。
-
--days N: 变更窗口。
-
--missed: 模式4——已过期的取消截止日期。
-
如果登记册为空且合同管理系统已连接: 提供模式3——扫描合同管理系统获取当前协议并批量加载。
-
输出包含建议操作: 联系谁(每条登记记录中的业务负责人)、哪些具有无上限定价。
示例
commercial-renewal-tracker
commercial-renewal-tracker --days 180
commercial-renewal-tracker --missed
目的
没有人读合同第二遍。续约日期在审查时提取一次,然后存于某处——最好是在取消截止日期前45天大声提醒,而不是45天后。
本技能基于一个核心区分运行:cancel_by_effective(通知必须送达的最后一天)与 send_by_effective(为确保通知在截止日期前送达,你必须发出通知的日期)。仅以 send_by_effective 触发预警——发送截止日期而非到达截止日期。这两个日期不同,差别可能让你在截止日期错过。
登记册
位于 $LEGAL_AGENT_PROFILE_HOME/commercial-legal/renewal-register.yaml。
- counterparty: "Acme SaaS Inc."
agreement: "Acme平台订阅协议"
signed_date: 2025-06-15
initial_term_end: 2026-06-15
current_term_end: 2026-06-15
renewal_mechanism: "自动续约年度"
notice_period_days: 60
notice_method: "书面通知/邮件"
transit_buffer_days: 3
cancel_by_calendar: 2026-04-16
cancel_by_effective: 2026-04-16
send_by_effective: 2026-04-13
cancel_by_roll_note: ""
cancel_by_provenance: "[模型计算 — 对照通知条款核实]"
price_on_renewal: "当时价目表(无上限)"
annual_value: 48000
business_owner: "jane@company.com"
clm_id: "IC-12345"
status: "active"
notes: "定价无上限——续约前重审。替代供应商:X, Y。"
transit_buffer_days 字段说明
transit_buffer_days 是发出通知与通知实际送达之间所需的额外天数。计算方式:
send_by_effective = cancel_by_effective - transit_buffer_days
以 send_by_effective 触发预警,而非 cancel_by_effective。
常见缓冲天数:
| 通知方式 | 建议缓冲 |
|---|
| 电子邮件(合同约定) | 0–1天 |
| 挂号信/EMS | 3–5天 |
| 公证送达 | 5–7天 |
| 合同约定"书面通知"但未指定方式 | 3天(保守) |
| 合同约定"提前[N]日送达" | 3天 |
如果合同通知条款对送达时间有明确规定(如"送达后次日起算"),缓冲按该规定计算,而非按上表。送达时间存疑时,向上取整。
滚动续约字段说明
存储 initial_term_end 供历史记录。从 current_term_end 计算 cancel_by_*。
当续约自动触发后,须更新 current_term_end。 如果登记册条目的 current_term_end 已过期且状态为 active,提示用户:
[对方当事人] 的 current_term_end([日期])已过去。是否已发生续约?如果是,请提供新的到期日以更新登记册。如果否,这可能是一个错过的取消窗口——运行 --missed 查看详情。
工作日回退——五步流程
每个 cancel_by_calendar 日期必须回退至最近的工作日,才能得出 cancel_by_effective。中国法下,以合同约定的管辖法域确定节假日范围。
五步流程:
-
读取合同约定的管辖法律。 大多数中国境内合同适用中国法,工作日以中国法定节假日为准。如适用境外法律,相应调整节假日范围。
-
识别法定节假日。 中国法定节假日共11天(元旦1天、春节7天、清明1天、劳动节1天、端午1天、中秋1天、国庆7天),但每年具体日期由国务院提前公布,可能因调休制度前移或后移。使用 web_search 搜索"[YYYY]年国务院节假日安排"确认当年调休日期,标注 [联网检索 — 需复核]。
-
识别调休工作日。 为凑足连休,部分周六/周日被调整为工作日(调休)。调休日视为工作日,即使是周末。
-
计算回退日期。 调用 mcp_date_add 工具:以 current_term_end 为基准日,减去 notice_period_days 天,得到 cancel_by_calendar。再判断该日期是否为工作日;如落在节假日或非调休周末,向前回退至最近的工作日(即更早的日期)。向前回退而非顺延,因为截止日期是不可让步的。
-
记录两个字段并写明依据。 cancel_by_calendar(协议文字计算出的日期)+ cancel_by_effective(回退后的有效工作日)。在 cancel_by_roll_note 中记录回退原因(例如:"2026年4月16日(周四)—— 无需回退,为工作日"或"2026年10月2日(节假日)—— 回退至2026年9月30日(周三)")。
cancel_by_provenance 字段 记录计算来源:[模型计算 — 对照通知条款核实](初始录入)或 [律师核实 — YYYY-MM-DD](经人工确认后更新)。
节假日数据时效性。 国务院通常于每年11-12月公布次年节假日安排。如果审查时次年调休日期尚未公布,在 cancel_by_provenance 中标注:[模型计算 — [YYYY]年调休安排尚未公布,回退日期待次年公告后核实]。
模式
模式1:录入续约(来自审查的交接)
当SaaS审查或供应商协议审查发现续约条款时,自动准备登记记录。
接收来自 saas-msa-review 的交接数据,格式:
counterparty: "[名称]"
agreement: "[协议标题]"
signed_date: "[ISO日期]"
current_term_end: "[ISO日期]"
renewal_mechanism: "[按合同原文]"
notice_period_days: [天数]
notice_method: "[按合同原文]"
transit_buffer_days: [建议缓冲天数]
price_on_renewal: "[按合同原文]"
annual_value: [年度金额]
business_owner: "[联系人]"
追加至登记册前,运行工作日回退流程计算 cancel_by_effective 和 send_by_effective。展示计算结果请用户确认,再写入登记册。
模式2:即将到来的事项
默认回顾窗口: 未来90天。调用 mcp_get_datetime 获取当前日期作为计算基准,调用 mcp_days_between 计算各条目的 send_by_effective 距今天数,按以下半开区间分组:
- 🔴 0-13天
- 🟠 14-44天
- 🟡 45-89天
## 续约——未来90天
*以发送截止日(send_by_effective)计,非到达截止日*
### 🔴 取消通知须在0-13天内发出
| 对方当事人 | 发送截止日 | 到达截止日 | 续约日 | 年度金额 | 负责人 | 备注 |
|---|---|---|---|---|---|---|
### 🟠 取消通知须在14-44天内发出
[同上表格]
### 🟡 取消通知须在45-89天内发出
[同上表格]
---
**建议操作:**
- [ ] [对方当事人] — 联系 [业务负责人]:我们还要这个吗?
- [ ] [对方当事人] — 定价无上限;在失去谈判优势前获取替代报价
模式3:扫描合同管理系统/电子签章工具填充登记册
如果MCP已连接且登记册为空或过期:
- 查询合同管理系统(e签宝、法大大等)——搜索状态为"已生效"且包含续约/自动续约条款的协议。
- 提取以下字段:对方当事人名称、协议类型、签署日期、期限结束日期、通知窗口(如元数据中有)。
- 如元数据中无通知窗口:标注该条目需人工补全——技能不从正文推断(推断可能错误)。列出合同名称,提示用户提供缺失信息。
- 对每条提取记录运行工作日回退流程,计算
cancel_by_effective 和 send_by_effective。
- 批量展示供用户确认后写入登记册。不要在未经确认的情况下覆盖现有条目。
如果MCP未连接,提示:
合同管理系统未连接。你可以手动提供协议,或从SaaS/供应商协议审查交接数据录入。逐份录入:将协议拖入此对话,技能将提取续约条款并计算截止日期。
模式4:错过的窗口(坏消息报告)
## 错过的取消窗口
| 对方当事人 | 取消截止日为 | 已过去天数 | 续约日 | 状态 |
|---|---|---|---|---|
**选项:**
- 与对方协商逾期取消(很少成功,但值得一问,尤其是长期关系中)
- 接受续约,现在标记下一轮取消截止日(`current_term_end` 已更新为新到期日)
- 检查协议中是否存在其他终止权利(如重大违约终止、不满意条款)
关卡:非律师用户
续约追踪是研究。行动——发送不续约通知、让自动续约生效或签署续约——是产生法律后果的步骤。
阅读 $LEGAL_AGENT_PROFILE_HOME/commercial-legal/profile.md → ## 使用者。如果角色为非律师:
发送不续约通知是具有法律效力的行为,可能对公司的合同权利和义务产生重大影响。你是否已与律师审阅?如需寻找律师:请联系中华全国律师协会或所在地地方律师协会获取推荐服务。
未经明确同意,不得越过此关卡。
仪表盘选项
当登记册条目超过10条时,在输出末尾提供:
📊 想以仪表盘形式查看? 我将构建一个交互视图,包含:摘要统计(按紧急程度计数、年度总价值)、彩色可排序表格、取消截止日时间线图,以及标注无上限定价风险的高亮行。如已连接图表工具,调用 mcp_generate_bar_chart 生成按紧急程度分组的续约分布图,调用 mcp_generate_line_chart 生成时间线视图,直接在对话中渲染;否则写入HTML文件可在浏览器中打开。
集成:续约提醒代理
续约提醒代理按计划运行本技能(默认每周),将"即将到来的事项"报告发布到审查指引中配置的频道(飞书/企业微信/钉钉/邮件)。如需按日触发🔴紧急项,代理每日运行检查并仅在存在🔴项时推送。
本技能不做的事
- 不取消合同。告知你何时应做决定。
- 不决定是否续约。呈现截止日期和业务负责人。
- 不阅读合同以查找续约日期——这在审查时完成。
- 不在未经用户确认的情况下覆盖登记册现有条目。