关于 contract-analysis
contract-analysis 是面向 ServiceNow 法律服务与合同生命周期管理的合同审查技能。它帮助法律团队提取条款、评估风险并记录审查结果。
主要功能
- 01提取付款、责任和终止条款
- 02识别义务与关键期限
- 03标记高风险合同条款
- 04按风险等级评估合同
- 05生成结构化审查报告
适用场景
- 01审查新签合同并标记偏离条款
- 02评估合同续约日期与通知期限
- 03审计合同组合中的风险
- 04向业务相关方概述合同义务
MCP 相关
该技能通过 MCP 工具查询 ServiceNow 合同、附件和法律案件,可创建法律任务、更新合同记录并写入审查报告。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ happy-technologies-llc/ happy-platform-skills --skill contract-analysis安装后在 Claude Code 中输入/contract-analysis确认已加载。
详细介绍
合同分析
概述
此技能提供了一套在 ServiceNow Legal Service Delivery 和 Contract Lifecycle Management 中分析合同的结构化方法。它可以帮助你:
- 从
ast_contract检索合同记录,并从sn_legal_case检索相关法律案件 - 提取并整理付款、责任、赔偿和终止条款等关键条款
- 识别合同生命周期内双方的义务和截止日期
- 标记高风险条款,例如无限责任、自动续约、宽泛的 IP 转让或非标准条款
- 跟踪续约日期、到期时间范围和通知期限要求
- 评估合规要求,包括监管、数据隐私和行业特定要求
- 生成结构化分析报告,供法律审查和业务相关方参考
适用场景: 新合同需要法律审查时、评估合同续约时、开展整个合同组合的风险审计时,或业务相关方需要通俗易懂的合同义务摘要时。
所需插件: com.sn_legal_service_delivery
先决条件
- 角色:
sn_legal_case_user、sn_legal_case_manager、contract_manager或sn_legal_admin - 访问权限: 对
ast_contract、sn_legal_case、sn_legal_task和sys_attachment表的读取权限 - 知识: 了解合同法基础知识、所在组织的标准合同条款以及风险承受阈值
- 插件: 必须激活 Legal Service Delivery(
com.sn_legal_service_delivery)。可选:启用 Contract Lifecycle Management 以获取更丰富的合同元数据。
流程
第 1 步:检索合同记录
查询合同,获取其核心元数据和当前状态。
使用 MCP(Claude Code/Desktop):
Tool: SN-Get-Record
Parameters:
table_name: ast_contract
sys_id: [contract_sys_id]
fields: sys_id,number,short_description,contract_type,vendor,starts,ends,renewal_date,payment_amount,total_cost,state,terms_and_conditions,auto_renew,notice_period,assigned_to,department,contract_administrator,parent_contract
使用 REST API:
GET /api/now/table/ast_contract/[contract_sys_id]?sysparm_fields=sys_id,number,short_description,contract_type,vendor,starts,ends,renewal_date,payment_amount,total_cost,state,terms_and_conditions,auto_renew,notice_period,assigned_to,department,contract_administrator,parent_contract&sysparm_display_value=true
第 2 步:检索合同文件
获取附件,以访问合同正文并进行分析。
使用 MCP:
Tool: SN-Query-Table
Parameters:
table_name: sys_attachment
query: table_name=ast_contract^table_sys_id=[contract_sys_id]
fields: sys_id,file_name,content_type,size_bytes,sys_created_on,sys_created_by
limit: 20
order_by: sys_created_on
使用 REST API:
GET /api/now/table/sys_attachment?sysparm_query=table_name=ast_contract^table_sys_id=[contract_sys_id]^ORDERBYDESCsys_created_on&sysparm_fields=sys_id,file_name,content_type,size_bytes,sys_created_on,sys_created_by&sysparm_limit=20
下载附件内容:
GET /api/now/attachment/[attachment_sys_id]/file
第 3 步:提取关键合同条款
按以下条款类别分析合同:
| 条款类别 | 要提取的关键字段 | 风险指标 |
|---|---|---|
| 付款条款 | 金额、频率、净付款天数、滞纳金、价格调整 | 净付款期限为 15 天或更短;年度涨幅 > 5% |
| 责任 | 责任上限金额、免责范围、间接损失 | 无限责任;没有双方共同适用的责任上限 |
| 赔偿 | 范围、除外情形、抗辩义务 | 赔偿范围宽泛且未排除 IP 相关事项 |
| 终止 | 违约触发条件、便利终止期限、善后安排 | 不允许便利终止;锁定期 > 12 个月 |
| 续约 | 自动续约、通知期限、价格调整 | 自动续约且通知期限 < 60 天 |
| 保密 | 期限、范围、允许披露的情形 | 永久保密;没有除外情形 |
| IP 权利 | 所有权、许可授予、工作成果 | 向供应商广泛转让 IP;未授予回授许可 |
| 数据隐私 | 数据处理、违规通知、DPA | 没有 DPA;违规通知期限 > 72 小时 |
| SLA/性能 | 正常运行时间、响应时间、抵扣、补救措施 | 没有 SLA 抵扣;长期未达标时不能终止合同 |
| 适用法律 | 司法管辖权、争议解决、审判地点 | 外国司法管辖区;强制仲裁 |
第 4 步:评估风险级别
为每个条款类别评分,并计算整体合同风险级别:
风险评分框架:
- 低(1): 条款符合组织标准,无偏差
- 中(2): 与标准略有偏差;记录后可接受
- 高(3): 存在重大偏差;需要高级法律顾问批准
- 严重(4): 条款不可接受;签署前必须重新谈判
整体风险计算:
- 任一单项得分为严重(4)= 整体风险为严重
- 平均分 >= 3.0 = 整体风险为高
- 平均分 >= 2.0 = 整体风险为中
- 平均分 < 2.0 = 整体风险为低
第 5 步:检查相关法律案件和事项
查询是否存在与此合同或供应商相关的法律活动。
使用 MCP:
Tool: SN-Query-Table
Parameters:
table_name: sn_legal_case
query: short_descriptionLIKE[vendor_name]^ORdescriptionLIKE[contract_number]
fields: sys_id,number,short_description,state,case_type,priority,assigned_to,resolution_notes
limit: 10
使用 REST API:
GET /api/now/table/sn_legal_case?sysparm_query=short_descriptionLIKE[vendor_name]^ORdescriptionLIKE[contract_number]&sysparm_fields=sys_id,number,short_description,state,case_type,priority,assigned_to,resolution_notes&sysparm_limit=10&sysparm_display_value=true
第 6 步:标记需关注的条款
为每个需要关注或重新谈判的条款创建法律任务。
使用 MCP:
Tool: SN-Create-Record
Parameters:
table_name: sn_legal_task
fields:
short_description: "Review unlimited liability clause - Section 8.2"
description: "Contract [contract_number] contains an unlimited liability provision in Section 8.2. Organization standard requires liability cap at 12 months of fees. Recommend renegotiation to add mutual liability cap."
legal_case: [case_sys_id]
priority: 2
task_type: contract_review
assigned_to: [counsel_sys_id]
due_date: [review_deadline]
state: 1
使用 REST API:
POST /api/now/table/sn_legal_task
Content-Type: application/json
{
"short_description": "Review unlimited liability clause - Section 8.2",
"description": "Contract contains unlimited liability. Standard requires cap at 12 months of fees.",
"legal_case": "[case_sys_id]",
"priority": "2",
"task_type": "contract_review",
"assigned_to": "[counsel_sys_id]",
"due_date": "[review_deadline]",
"state": "1"
}
第 7 步:生成合同分析报告
将完整分析作为工作备注记录在法律案件中。
使用 MCP:
Tool: SN-Add-Work-Notes
Parameters:
table_name: sn_legal_case
sys_id: [case_sys_id]
work_notes: |
=== CONTRACT ANALYSIS REPORT ===
Contract: [contract_number] - [short_description]
Vendor: [vendor_name]
Analyst: AI Contract Analyst
Date: [current_date]
CONTRACT OVERVIEW:
- Type: [contract_type]
- Effective: [start_date] to [end_date]
- Total Value: $[total_cost]
- Auto-Renewal: [Yes/No] | Notice Period: [notice_period] days
- Governing Law: [jurisdiction]
KEY TERMS SUMMARY:
1. Payment: [payment_summary]
2. Liability Cap: [liability_summary]
3. Indemnification: [indemnity_summary]
4. Termination: [termination_summary]
5. Data Privacy: [privacy_summary]
6. IP Rights: [ip_summary]
7. SLA/Performance: [sla_summary]
RISK ASSESSMENT:
- Overall Risk Level: [HIGH/MEDIUM/LOW]
- Critical Issues: [count]
- High-Risk Items: [count]
FLAGGED CLAUSES:
1. [CRITICAL] Section 8.2 - Unlimited liability (standard: 12-month cap)
2. [HIGH] Section 12.1 - Auto-renew with 30-day notice (standard: 90 days)
3. [HIGH] Section 15.3 - No DPA attached (required for data processing)
4. [MEDIUM] Section 6.4 - IP assignment broader than industry standard
COMPLIANCE REQUIREMENTS:
- GDPR: [compliant/non-compliant] - [details]
- SOC 2: [compliant/non-compliant] - [details]
- Industry-specific: [details]
RECOMMENDED ACTIONS:
1. Renegotiate liability cap to 12 months of annual fees
2. Extend auto-renewal notice period to 90 days
3. Execute Data Processing Agreement before contract signing
4. Narrow IP assignment clause to deliverables only
RENEWAL CALENDAR:
- Contract Expires: [end_date]
- Renewal Decision Deadline: [notice_date]
- Days Until Notice Required: [days_remaining]
第 8 步:更新合同元数据
将分析结果写回合同记录,以便进行合同组合跟踪。
使用 MCP:
Tool: SN-Update-Record
Parameters:
table_name: ast_contract
sys_id: [contract_sys_id]
data:
risk_level: high
review_date: [current_date]
short_description: "[original_description] [REVIEWED]"
work_notes: "Legal analysis completed. Risk level: HIGH. 4 flagged clauses require renegotiation. See legal case [case_number] for full analysis."
使用 REST API:
PATCH /api/now/table/ast_contract/[contract_sys_id]
Content-Type: application/json
{
"risk_level": "high",
"review_date": "[current_date]",
"work_notes": "Legal analysis completed. Risk level: HIGH. 4 flagged clauses."
}
工具用法
MCP 工具参考
| 工具 | 使用时机 |
|---|---|
SN-Natural-Language-Search | 按供应商名称、类型或描述查找合同 |
SN-Query-Table | 对合同、案件、任务和附件执行结构化查询 |
SN-Get-Record | 根据 sys_id 检索单个合同或案件 |
SN-Create-Record | 为已标记的条款创建法律任务 |
SN-Update-Record | 更新合同风险级别和审查元数据 |
SN-Add-Work-Notes | 将分析报告发布到法律案件 |
REST API 参考
| 端点 | 方法 | 用途 |
|---|---|---|
/api/now/table/ast_contract | GET | 查询合同 |
/api/now/table/ast_contract/{sys_id} | GET/PATCH | 读取或更新合同 |
/api/now/table/sn_legal_case | GET/POST | 查询或创建法律案件 |
/api/now/table/sn_legal_task | POST | 为已标记的条款创建审查任务 |
/api/now/table/sys_attachment | GET | 检索合同文档附件 |
/api/now/attachment/{sys_id}/file | GET | 下载附件内容 |
最佳实践
- 使用操作手册: 为每种合同类型(SaaS、专业服务、NDA、许可)维护标准分析模板,以确保一致性
- 对照标准: 始终将条款与组织批准的合同模板和备选方案进行比较
- 跟踪偏差: 记录所有偏离标准条款的情况,即使已接受,也应记录,以便了解整个合同组合的风险
- 设置续约提醒: 至少在自动续约通知截止日期前 90 天创建日历提醒
- 交叉核对供应商: 检查与同一供应商签订的其他有效合同,以识别总体风险敞口
- 保护特权信息: 将所有分析工作备注标记为律师—客户特权;不要向非法律人员分享原始分析
- 关注法规: 始终检查特定司法管辖区的要求(欧盟供应商适用 GDPR,加利福尼亚州适用 CCPA 等)
- 跟踪版本: 记录分析的合同版本;如存在修订或附函,则予以标记
故障排除
“在 ast_contract 中找不到合同记录”
原因: 根据 CLM 配置,合同可能存储在其他表中
解决方案: 检查 clm_contract_document、sn_sm_contract 或自定义合同表。查询 sys_db_object,使用 nameLIKEcontract 查找所有与合同相关的表。
“无法访问合同附件”
原因: 附件 ACL 限制了访问权限,或文档存储在外部
解决方案: 确认你拥有 itil 或 contract_manager 角色。检查合同是否引用了用于存储文档的外部 URL 字段。
“ast_contract 上没有风险级别字段”
**原因:**该字段可能是自定义添加的,也可能属于可选插件
**解决方案:**使用 name=ast_contract^elementLIKErisk 查询 sys_dictionary,查找可用的风险相关字段。如有需要,可创建自定义字段。
“续约日期的计算似乎不正确”
**原因:**自动续约逻辑可能取决于自定义业务规则或 notice_period 字段的格式
**解决方案:**确认 notice_period 字段存储的是天数(而不是月数)。检查 ast_contract 上用于计算续约日期的业务规则:sys_script,条件为 collection=ast_contract^scriptLIKErenewal。
示例
示例 1:SaaS 供应商协议审查
**输入:**合同 CON0045678 - “Enterprise SaaS Platform - 与 DataCorp 签订的 3 年协议”
分析:
- 总价值:3 年共 $1.2M
- 自动续约:是,需提前 30 天通知(已标记:低于 90 天的标准)
- 责任:赔偿上限为 12 个月费用(可接受)
- SLA:99.9% 正常运行时间,并提供服务抵扣(可接受)
- 数据隐私:未包含 DPA(关键:GDPR 要求提供)
- 总体风险:高(缺少 DPA)
**操作:**创建法律任务,在合同签署前起草并签署 DPA。
示例 2:NDA 审查
**输入:**合同 CON0045679 - “与 AcquiCo 签订的并购尽职调查互保 NDA”
分析:
- 期限:3 年,终止后存续 2 年
- 范围:适当地限于交易评估
- 残余知识条款:存在(中等风险)
- 禁止招揽:附有 18 个月的附加条款(需要审查)
- 总体风险:中
操作:
Tool: SN-Update-Record
Parameters:
table_name: ast_contract
sys_id: def456abc...
data:
risk_level: medium
review_date: 2026-03-19
work_notes: "NDA reviewed. Medium risk. Residual knowledge clause and non-solicitation rider flagged for counsel review."
示例 3:合同组合风险审计
输入:“分析未来 90 天内到期的所有合同”
查询:
Tool: SN-Query-Table
Parameters:
table_name: ast_contract
query: active=true^endsBETWEENjavascript:gs.beginningOfToday()@javascript:gs.daysAgoEnd(-90)
fields: sys_id,number,short_description,vendor,ends,auto_renew,notice_period,total_cost,risk_level
limit: 50
order_by: ends
**结果:**12 份合同即将到期,其中 4 份为自动续约合同,需在 30 天内发出通知;2 份没有记录风险评估。优先立即审查这 6 份合同。
相关技能
legal/legal-request-triage- 对收到的合同审查请求进行分类legal/contract-obligation-extraction- 提取合同中的具体义务legal/legal-matter-summarization- 总结与合同关联的法律事项document/document-extraction- 从合同文档中提取结构化数据document/smart-documents- 管理合同模板并生成合同