# 合同审核助手

> 通用合同审核技能。当用户上传或指定一份合同文件（.docx/.doc），要求进行合同评审、 合同审查、合同风险评估、合同条款分析时应触发此技能。适用于甲方模板合同的独立审查， 覆盖签约主体、标的、付款、交付验收、知识产权、保密、违约、争议解决、生效期限共9大 审查维度。输出原合同Track Changes修订版 + 独立Word审查报告。同时支持合同对比功能， 对比两份合同的差异。

- Skill: `cslawyer1985/skill-60` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add cslawyer1985/skill-60`
- Raw SKILL.md: https://api.skillmd.com/api/skills/cslawyer1985/skill-60/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: cslawyer1985 (https://skillmd.com/u/cslawyer1985)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/cslawyer1985/skill-60

---


# 合同审核助手

通用合同审查技能。从专业合同审查员角度，对合同进行结构化风险评估，在原合同上标注修订建议，并生成独立审查报告。

## 触发条件

用户消息中出现以下任一关键词组合时触发：
- "合同" + "审核/审查/评审"
- "合同风险评估"
- "帮我看看这份合同"
- "审合同"
- "合同对比"/"对比合同"

## 己方信息配置

审查签约主体时需要参照己方信息。启动审查前，按以下顺序处理：

### 1. 检查已有配置

读取 `~/.workbuddy/contract-review-config.json`。若存在且完整，直接使用。

### 2. 引导用户配置

若配置文件不存在或不完整，向用户询问：

```
检测到尚未设置己方签约信息（此步骤可选）。

设置后可在审查时自动核验签约主体信息。如需设置，请提供以下信息：

- 公司全称
- 纳税识别号（统一社会信用代码）
- 注册地址及电话
- 开户银行及账号

输入"跳过"则仅审查条款风险，不检查签约主体。
```

用户提供信息后，写入 `~/.workbuddy/contract-review-config.json`，格式：
```json
{
  "company_name": "XX科技有限公司",
  "tax_id": "91440300XXXXXXXXXX",
  "address": "XX市XX区XX路XX号",
  "phone": "0755-XXXXXXXX",
  "bank_name": "XX银行XX支行",
  "bank_account": "XXXXXXXXXXXX",
  "updated_at": "2026-05-27"
}
```

### 3. 修改己方信息

若用户要求修改己方信息，按上述格式更新配置文件。修改后告知用户变更内容。

## 审查工作流

### 阶段一：合同文本提取

1. 确定合同文件路径（用户上传或指定）
2. 若为 `.doc` 格式，先用 LibreOffice 转换为 `.docx`：
   ```bash
   python scripts/office/soffice.py --headless --convert-to docx <合同文件.doc>
   ```
3. 用 pandoc 提取合同文本：
   ```bash
   pandoc --track-changes=all <合同文件.docx> -t plain -o /tmp/contract_text.txt
   ```
4. 读取提取后的文本，理解完整合同内容

### 阶段二：合同审查分析

加载 `references/review_rules.md` 获取9大审查维度详述。对合同全文逐一检查：

1. **签约主体信息** — 若有己方配置，核对己方信息是否准确；检查对方信息完整性
2. **标的/价格条款** — 标的描述清晰度、价格大小写一致性、税率发票约定
3. **付款条款** — 付款方式、节点、比例、逾期责任
4. **交付与验收** — 交付内容、期限、验收标准、验收不合格处理
5. **知识产权** — 归属约定、使用授权范围、侵权责任分配
6. **保密义务** — 保密范围、期限、例外情形、违约责任
7. **违约责任** — 违约情形、责任对等性、违约金标准、赔偿上限
8. **争议解决** — 管辖约定、争议解决方式、法律适用
9. **合同生效与期限** — 生效条件、有效期、续约/终止条款

每个维度按以下标准判定风险等级：

| 等级 | 图标 | 判定标准 |
|------|------|----------|
| 高风险 | ? | 可能导致重大经济损失或法律纠纷的条款 |
| 中风险 | ? | 存在潜在不利因素但可通过协商解决的条款 |
| 低风险 | ? | 表述可优化但不影响核心权益的条款 |

同时检测模糊表述：
- "合理期限"、"重大损失"、"不可抗力"、"必要的配合"、"及时通知"、"适当的措施"等
- 标记为"需明确定义"并给出具体化建议

### 阶段三：生成修订版合同

在原合同 .docx 上用 Track Changes 标注修订建议。

1. 解包原合同：
   ```bash
   python scripts/office/unpack.py <原合同.docx> unpacked/
   ```

2. 编辑 `unpacked/word/document.xml`，对需要修改的条款：
   - 删除不当内容：使用 `<w:del>` 包裹删除文本，`<w:delText>` 替代 `<w:t>`
   - 新增修改建议：使用 `<w:ins>` 包裹新增文本
   - 模糊表述批注：使用 `scripts/comment.py` 添加批注

   修订原则：
   - 作者名使用 "AI审查助手"
   - 仅对风险条款添加修订建议
   - 高风险条款必须标注，中风险条款建议标注，低风险仅批注
   - 对模糊表述添加批注而非直接修改

3. 添加批注示例：
   ```bash
   python scripts/comment.py unpacked/ 0 "建议明确验收期限为具体天数，避免无限期拖延"
   python scripts/comment.py unpacked/ 1 "此处'合理期限'表述模糊，建议明确为30个工作日"
   ```

4. 重新打包：
   ```bash
   python scripts/office/pack.py unpacked/ <修订版合同.docx> --original <原合同.docx>
   ```

### 阶段四：生成审查报告

用 docx-js 生成独立的审查报告 Word 文档。

报告结构：

1. **封面** — 合同名称 + 审查日期 + 审查结论摘要
2. **审查概览表** — 9大维度风险等级一览
3. **高风险条款详述** — 每条：条款原文引用 + 风险原因 + 修订建议
4. **中低风险条款** — 条款名称 + 备注
5. **模糊表述清单** — 原文引用 + 问题说明 + 建议明确方式
6. **审查结论** — 总体风险等级 + 签约建议

报告格式要求：
- 表头使用蓝色底色（#2E75B6），白色字体
- 高风险行使用浅红色底色（#FCE4EC）
- 中风险行使用浅黄色底色（#FFF9C4）
- 低风险行使用浅绿色底色（#E8F5E9）
- 正文字体宋体 10.5pt，标题黑体

### 阶段五：输出交付

询问用户选择输出模式：

1. **仅生成文件**（推荐） — 同时输出修订版合同 + 审查报告
2. **生成文件 + 对话摘要** — 除文件外，在对话中列出关键风险提示

交付文件：
- `<原合同名>_修订版.docx` — 带 Track Changes 的修订版合同
- `<原合同名>_审查报告.docx` — 独立审查报告

## 合同对比功能

当用户要求对比两份合同时（关键词："合同对比"、"对比合同"、"两版合同差异"）：

1. 提取两份合同的文本
2. 逐条款对比，识别差异：
   - 条款新增/删除
   - 条款内容变更
   - 条款顺序调整
3. 按审查报告格式输出对比结果，差异类型字段改为"版本A vs 版本B对比"
4. 不生成修订版合同（涉及两份文档），仅生成对比报告

## 交互原则

1. 审查前先告知用户审查范围和计划
2. 发现高风险条款时，在修订文件中重点标注，在报告中详细说明
3. 遇到无法判断的条款时，标记为"需人工复核"并说明原因
4. 审查完成后告知用户审查报告和修订文件的位置
5. 若用户提供多份合同，逐份审查，每份生成独立报告

