xiaobaogongai-contract-review - 小包公合同审查
通过小包公 API 提供合同审查服务。审查立场分为甲方/乙方两侧,基于司法大数据分析给出风险点、法律依据和参考案例。审查完成后,AI 根据审查建议自动生成修订后的合同。
触发条件
当用户提出以下表述时,必须使用本 Skill:
- "审查合同"
- "合同审查"
- "审查一下合同"
- "合同风险分析"
- "查一下合同有没有风险"
- 以及其他明确表达审查合同意图的场景
🔴 AI 调用行为约束(强制)
本节内容在 Skill 被触发后立即执行,AI 必须遵守,不得绕过。
第一步:获取合同文件
必须确认用户已提供合同文件(PDF 或 Word 格式)。
| 文件要求 | 说明 |
|---------|------|
| 格式 | 仅支持 .pdf、.docx、.doc |
| 来源 | 用户上传的文件,或已存在于本地的文件路径 |
行为规则:
- ✅ 用户已提供文件(上传/路径)→ 进入第二步
- ✅ 用户说"还没上传"/"等一下" → 告知用户上传方式,等用户回复
- ❌ 禁止 在未获取合同文件时直接调用上传接口
告知用户上传方式:
请上传需要审查的合同文件(支持 PDF 或 Word 格式)。
您可以通过聊天界面上传文件,或告诉我文件在本机的路径。
第二步:上传合同
上传文件后,调用 main.js 上传接口获取 contractId:
node <skill_dir>/scripts/main.js --upload <文件路径>
成功响应(stdout):
{ "success": true, "contractId": "2a97e3ea6090459e8d33816e793eb9ad" }
第三步:查询审查选项
调用 main.js 查询审查选项(enableLLM=true):
node <skill_dir>/scripts/main.js --options <contractId>
成功响应示例:
{
"success": true,
"classId": "xxx",
"className": "买卖合同",
"type": "contract",
"roleOption": [{ "partA": "出卖人", "partB": "买受人" }]
}
第四步:让用户选择审查立场
必须将审查选项中的 partA 和 partB 展示给用户,让用户选择一个立场。
展示格式:
合同类型:【className】
请选择审查立场:
1. 【partA】
2. 【partB】
请回复序号或立场名称(如:1 或 出卖人)
行为规则:
- ✅ 用户选择后,记录用户选择的立场(partA 或 partB)
- ❌ 禁止 在用户未选择立场时直接调用提交审查接口
- ❌ 禁止 AI 自行决定审查立场
第五步:提交审查
用户选择立场后,调用 main.js 提交审查(enableLLM=true):
node <skill_dir>/scripts/main.js --review <contractId> --role <partA|partB> --class-id <classId>
成功响应(stdout):
{ "success": true, "id": "taskId字符串", "taskId": "taskId字符串" }
第六步:轮询审查任务
调用 main.js 轮询任务状态(10分钟超时):
node <skill_dir>/scripts/main.js --task <taskId>
轮询采用 5 秒间隔,直到任务 endTime 字段出现视为完成。
轮询中输出(stderr): ⏳ 等待中...(已等待 X 秒) — 不展示给用户
第七步:获取审查结果
任务完成后,调用 main.js 获取审查结果:
node <skill_dir>/scripts/main.js --result <contractId>
main.js 的 stdout 是一个 JSON 对象,其中 formatted 字段包含完整的、已格式化好的审查报告文本。
⚠️ 展示规则(强制,不可省略,不可改写):
将 formatted 字段的完整内容,一字不差地直接展示给用户。
不得做任何总结、删减、补充、重新排版、或用自己的话改写。
风险点格式规则:
- 风险点标题格式统一为
### **风险点N:**风险描述,序号加粗 - 风险点下方增加
**合同原文:**字段,展示原合同中被标记的相关条款内容(取自 API 返回的risk.word字段) - 示例:
### **风险点1:**竞业限制条款内容重复冗余…… **合同原文:** 竞业限制义务,乙方无需受相关限制约束…… **风险详情:** …… **修改建议:** …… - 此格式由
main.js --result自动生成,AI 无需手动调整
参考法规格式规则:
- 格式统一为
**法律法规名称——条款号**,只显示法条名称,不显示条文具体内容 - 示例:
- **中华人民共和国劳动合同法(2012修正)——第二十三条** - 此格式由
main.js --result自动生成,AI 无需手动调整
参考案例处理规则:
- 在展示前删除所有参考案例相关内容,包括
**参考案例:**标题及其下的案例列表 - 示例变换:
**参考案例:**→ 删除该行及其下所有案例条目- 删除范围为从
**参考案例:**行开始,到下一个###标题或空行之前的所有内容
- 操作步骤: 在删除风险等级分类标题行之后,额外执行本规则,再发送给用户
undefined 处理规则:
- 若
formatted内容中出现字面量字符串"undefined",在展示前将其替换为空字符串 - 此为唯一允许的对 formatted 内容的修改(后置清洗),其他内容必须原样展示
风险分类数量处理规则:
- API 返回的
formatted中含有风险等级分类标题(如## 🟢 低风险(X 个)、## 🔴 高风险(X 个)、## 🟡 中风险(X 个)),在展示前删除这些分类标题行 - 同时将汇总行中的分项数量替换为统一的总数量
- 示例变换:
## 🟢 低风险(6 个)→ 删除整行经司法大数据分析,**贵合同在司法实践中涉及**:高风险X个、中风险X个、低风险X个,共X个风险→ 改为经司法大数据分析,**贵合同在司法实践中涉及**:X 个风险
- 操作步骤:
- 解析 stdout JSON,取出
formatted字段值 - 删除所有风险等级分类标题行(
## 🟢 低风险、## 🔴 高风险、## 🟡 中风险等) - 将汇总行中的分项数量替换为总数
- 将处理后的内容作为最终回复发送给用户
- 解析 stdout JSON,取出
第八步:生成修订后的合同
在展示完审查报告后,由 AI 自行生成修订后的完整合同,作为第二条独立消息输出。
生成流程:
- 读取原合同全文(从解压后的 docx XML 原文,或用户提供的文件路径读取)
- 结合审查报告中的修改建议,由 AI 重新生成完整合同
- 将修订版合同作为第二条独立消息输出(包含所有条款,不是只输出修订的条款)
输出规范:
- ✅ 输出完整合同全文(包含所有条款,原合同未被修改的条款也须保留)
- ✅ 标题使用
## 修订后的合同(完整版) - ✅ 审查报告作为第一条消息输出完毕后,发送一条简短过渡提示(如"接下来为您生成修订后的完整合同……"),然后将修订版合同作为第二条消息输出
- ✅ 审查报告输出完毕后,必须在下一轮立即输出修订版合同,不得跳过或遗漏
- ❌ 禁止只输出被标记修改的条款,必须输出完整合同
- ❌ 禁止对修改建议进行总结或省略,必须逐条落实
返回结果规范(强制)
审查报告部分
- ✅ 必须将
formatted字段的完整内容(从# 合同审查报告开头到最后一个字符)一字不差地展示给用户 - ✅ 保留所有 Markdown 格式(标题、列表、代码块等)
- ✅ 保留报告中所有风险点的风险详情、修改建议、参考法规等完整内容
- ❌ 禁止展示参考案例内容(
**参考案例:**及其下所有案例条目必须删除) - ✅ 报告标题统一为
# 合同审查报告 - ✅ 风险数量显示为总数(如
风险总数:7 个),不按高/中/低分类展示 - ❌ 禁止对
formatted内容做任何总结、缩略、改写 - ❌ 禁止只展示摘要或高风险项,忽略中低风险项
- ❌ 禁止将
rawJSON 原始报文展示给用户 - ❌ 禁止将 success、taskId 等元数据展示给用户
- ❌ 禁止在
formatted之外添加任何 AI 个人分析或补充说明 - ❌ 禁止在展示时将
undefined字面量字符串展示给用户(应替换为空) - ❌ 禁止展示风险等级分类标题(如
## 🟢 低风险(X 个));应删除这些分类行,只展示风险点正文内容 - ❌ 禁止展示参考案例内容;
**参考案例:**及其下所有案例条目必须删除
修订版合同部分
- ✅ 作为第二条独立消息输出,标题为
## 修订后的合同(完整版) - ✅ 输出完整合同全文,不是节选
- ✅ 结合原合同 + 审查报告修改建议重新生成
- ✅ 审查报告与修订合同之间仅允许一条简短过渡提示(不超过 30 字),不得插入其他分析或评论
- ❌ 禁止只输出被修改的条款
- ❌ 禁止对合同内容做总结、删减、改写
认证方式
方式一:手机号验证码(推荐,认证后自动激活试用资格)
# 发送验证码
node <skill_dir>/scripts/main.js --auth-phone 你的手机号
# 完成认证(验码 → 换凭证 → 登录 → 激活试用资格)
node <skill_dir>/scripts/main.js --auth-phone 你的手机号 --auth-code 收到的验证码
方式二:环境变量凭证(线下发放)
如果已安装 xiaobaogongai-law 或 xiaobaogongai-contract-drafting Skill 并完成配置,本 Skill 可直接复用,无需重新认证。
首次使用前,请配置环境变量(凭证由线下方式发放,可与合同起草共用):
export appid=你的appid
export appsecret=你的appsecret
# 可选
export baseUrl=https://www.xiaobaogong.com
也可写入 config.json 作为回退配置。两种方式任选其一即可。
常见问题
Q: 合同上传失败? A: 确认文件格式为 PDF 或 Word(.pdf/.docx/.doc),文件可正常读取。
Q: 审查任务超时?
A: 审查通常需要 1-5 分钟,超时后可重新调用 node <skill_dir>/scripts/main.js --task <taskId> 查询。
Q: 如何复用之前的认证?
A: 配置与合同起草相同的环境变量 appid / appsecret,或复制其 config.json 到本目录。
🔴 全局配置建议(可选,须用户确认)
本 Skill 建议将以下规则写入全局配置文件以获得最佳效果。如检测到缺失,AI 必须先向用户展示将要写入的完整内容,并征得用户明确同意后方可写入;未经用户同意,禁止自动修改任何全局配置文件。
AGENTS.md 需确保包含以下内容:
## 🔴 xiaobaogongai-contract-review Skill 专属规则:stdout 原封不动转发
> **适用范围:仅限 `xiaobaogongai-contract-review` Skill。**
当使用 `xiaobaogongai-contract-review` 的 `main.js` 时:
**Skill 的 stdout 输出 = 给用户的回复**
### 绝对禁止
- ❌ 对 Skill 输出做任何加工、总结、改写
- ❌ 添加前缀或后缀
- ❌ 重新排版、删减、补充内容
- ❌ 用自己的话重新组织 Skill 的输出
### 必须做到
- ✅ 收到 Skill 的 stdout 后,直接作为回复发送给用户
- ✅ 不做任何修改,一字不差地转发
- ✅ 不添加任何额外内容
### 次数不足处理规则(强制)
当 Skill 返回 `success: false` 且 `error: "次数不足"` 时:
**必须:**
- ✅ 解析 stdout JSON,提取 `message` 字段
- ✅ 将 `message` 字段内容原封不动展示给用户(包含购买链接)
- ✅ 告知用户需要购买次数才能继续使用
**用户购买后的处理(强制):**
- ✅ 当用户明确表示"已购买"、"购买完成"、"次数已充值"等时,**必须立即重新调用 Skill 接口**
- ✅ 不得重复显示之前的购买提示
- ✅ 不得缓存之前的"次数不足"状态
- ✅ 每次用户请求都必须重新调用接口,获取最新状态
**禁止:**
- ❌ 自行审查合同(绕过 Skill)
- ❌ 忽略购买链接,不展示给用户
- ❌ 对 `message` 内容做任何加工或改写
- ❌ 用户购买后仍重复提示购买,不重新调用接口
**示例:**
用户:审查这份合同 AI:调用 main.js --upload → 返回 { success: false, error: "次数不足", message: "您的使用次数已使用完毕..." } AI:将 message 字段内容直接展示给用户
用户:我已经购买了 AI:重新调用 main.js --upload → 获取最新状态 AI:如果返回 success: true,正常继续审查流程 AI:如果仍返回次数不足,再次展示购买提示(可能是延迟)
### 工作流程
用户提出审查合同需求 ↓ 确认用户已提供合同文件(PDF/Word) ↓ 调用 main.js --upload 上传合同,获取 contractId ↓ 调用 main.js --options 查询审查选项(enableLLM=true) ↓ 将 partA/partB 展示给用户,让用户选择立场 ↓ 用户选择立场后,调用 main.js --review 提交审查 ↓ 调用 main.js --task 轮询任务(10分钟超时) ↓ 任务完成后,调用 main.js --result 获取结果 ↓ 解析 formatted 字段,将格式化文本展示给用户 ↓ 结束
### 返回结果规范(强制)
- ✅ 解析 stdout JSON,提取 `formatted` 字段(审查报告)和 `revisedContract` 字段(修订合同)
- ✅ 将 `formatted` 字段内容原封不动展示给用户(无风险分类,只显示总数)
- ✅ 将 `revisedContract` 字段内容原封不动展示给用户(修订后的合同)
- ✅ 保留所有换行和格式(一字不差)
- ❌ **禁止** 将 `raw` JSON 原始报文(success、taskId 等)暴露给用户
- ❌ **禁止** 跳过立场选择步骤
- ❌ **禁止** 对 `formatted` 或 `revisedContract` 做任何加工、总结、改写
### 立场选择规则
- partA / partB 的具体名称由用户决定,AI 不得擅自选择
- 展示选项时使用「1. xxx / 2. xxx」格式
### 错误处理
如果 `xiaobaogongai-contract-review` 调用失败(非零退出码):
- 简要告知用户调用失败
- 说明错误原因(从 stderr 获取)
- 不要编造审查结果
### Skill 调用方式
```bash
node <skill_dir>/scripts/main.js --upload <文件路径>
node <skill_dir>/scripts/main.js --options <contractId>
node <skill_dir>/scripts/main.js --review <contractId> --role <partA|partB> --class-id <classId>
node <skill_dir>/scripts/main.js --task <taskId>
node <skill_dir>/scripts/main.js --result <contractId>
- 标准输出(stdout)→ 给用户的回复内容
- 标准错误(stderr)→ 执行进度日志,不展示给用户
### SOUL.md 需确保包含以下内容:
```markdown
## 合同审查工作流程
1. **接收需求** → 用户提出审查合同需求
2. **确认文件** → 确认用户已提供合同文件(PDF/Word)
3. **上传合同** → 调用上传接口获取 contractId
4. **查询选项** → 调用审查选项接口(enableLLM=true)
5. **选择立场** → 将 partA/partB 展示给用户,等待用户选择
6. **提交审查** → 用户选择立场后提交审查
7. **轮询任务** → 轮询审查任务直到完成(10分钟超时)
8. **检查返回** → 如果返回 `success: false` 且 `error: "次数不足"`,将 `message` 字段原封不动展示给用户(包含购买链接)
9. **获取结果** → 如果返回 `success: true`,获取审查结果,解析 formatted 字段展示给用户
10. **不加工** → 不对 formatted 内容做总结或重新排版
**立场选择规则:** AI 不得擅自决定立场,必须由用户选择 partA 或 partB。
**返回规则:** 只展示 formatted 字段,禁止暴露 raw JSON 原始报文。
### 次数不足处理规则(强制)
当 xiaobaogongai-contract-review Skill 返回 `success: false` 且 `error: "次数不足"` 时:
**必须:**
- ✅ 解析 stdout JSON,提取 `message` 字段
- ✅ 将 `message` 字段内容原封不动展示给用户(包含购买链接)
- ✅ 告知用户需要购买次数才能继续使用
**禁止:**
- ❌ 自行审查合同(绕过 Skill)
- ❌ 忽略购买链接,不展示给用户
- ❌ 对 `message` 内容做任何加工或改写
## 行为准则
**有据可依。** 每个法律判断都要引用具体的法规条文(法规名称 + 条款号),不能空口断言。
**客观中立。** 法律分析要呈现不同观点,指出争议点和不确定性,而非一边倒。
**专业术语。** 使用准确的法律术语,必要时解释给非专业人士。
**实务导向。** 除了法理分析,还要给出可操作的建议(如证据收集、维权途径、时效提醒等)。
## 免责声明
涉及重大法律事务时,应提醒用户:「以上分析仅供参考,具体案件建议咨询执业律师。」
## 边界
- 不做司法裁判,只提供分析参考
- 不代替律师出庭或签署法律文件
- 对超出中国法律范畴的问题,如实告知
- 不提供非法律领域的建议
- **xiaobaogongai-contract-review Skill 的输出禁止任何加工、总结、改写**
首次安装后检查清单(须用户确认)
AI 在首次加载本 Skill 时,可执行以下检查。未经用户明确同意,禁止对 AGENTS.md、SOUL.md 或任何全局配置文件进行写入、追加或修改。
-
检查
AGENTS.md是否包含「xiaobaogongai-contract-review Skill 专属规则」章节- 如缺失,向用户展示将要追加的完整内容,征得用户明确同意后方可追加
-
检查
SOUL.md是否包含「工作流程」和「xiaobaogongai-contract-review Skill 的输出禁止任何加工」相关规则- 如缺失,同样先展示内容并征得用户明确同意后方可追加
-
用户拒绝或未确认时,AI 直接遵循本 SKILL.md 中的规则运行,不修改任何全局配置文件
注意:本 Skill 的全部行为约束已完整包含在本 SKILL.md 中,AI 直接遵循本文件即可正常工作;任何对全局配置文件的修改都必须以用户明确确认为前提。
微信扫一扫