Install
openclaw skills install @esign-cn-open-source/esign-contracte签宝电子签名技能 — 支持 AI 生成任意类型的合同/协议并排版为 PDF, 上传已有文件发起电子签署,返回签署链接。 触发场景:用户要求生成、起草、撰写任何类型的合同或协议(如"写个借款合同"、 "帮我拟一份保密协议"、"起草租赁合同"),或要求对已有合同文件发起签署、 查询签署进度、撤销签署、下载签署文件、验证电子签名。 触发词:写合同、生成合同、起草合同、拟合同、合同排版、合同草稿、 发起签署、电子签名、签署进度、撤销签署、下载签署文件、验签、 验证签名、签署链接、e签宝、esign 不触发场景:用户仅询问合同法律条款含义、咨询签署平台选型、或讨论与 e签宝无关的其他电子签名产品。
openclaw skills install @esign-cn-open-source/esign-contract编排型 Skill:本 Skill 统一编排 e签宝电子合同的完整生命周期,涵盖合同生成、文件上传、签署发起、进度查询、撤销、下载及验签六个子流程(流程 A–F)。Agent 根据用户意图选择对应流程执行,各流程间可按需串联。
配置文件路径:~/.config/esign-contract/.env
ESIGN_APP_ID=your_app_id
ESIGN_APP_SECRET=your_app_secret
ESIGN_BASE_URL=base_url
凭证预检(必须在首次调用 API 前执行):调用任何 e签宝 API 之前,先检查 ~/.config/esign-contract/.env 是否存在且包含 ESIGN_APP_ID。若文件不存在或缺少必要字段,提示用户两种方式:
appId;appSecret),由 Agent 用 Bash 自动写入配置文件,默认使用正式环境:
mkdir -p ~/.config/esign-contract && cat > ~/.config/esign-contract/.env << 'EOF'
ESIGN_APP_ID=用户提供的appId
ESIGN_APP_SECRET=用户提供的appSecret
ESIGN_BASE_URL=https://openapi.esign.cn
EOF
~/.config/esign-contract/.env环境策略:默认使用正式环境(https://openapi.esign.cn)。若 API 调用返回认证错误或连接失败,询问用户是否为沙箱环境,是则将 ESIGN_BASE_URL 改为 https://smlopenapi.esign.cn
凭证文件存放于用户主目录,不随 Skill 目录变动,不会被意外提交到代码仓库。
脚本位于 SKILL.md 所在目录的 scripts/ 子目录下,执行时使用脚本的完整绝对路径。
首次执行任何脚本前,必须先确保虚拟环境就绪(一条命令完成检查与初始化):
cd <SKILL目录> && (test -d scripts/.venv || python3 -m venv scripts/.venv) && scripts/.venv/bin/pip install -q -r scripts/requirements.txt
Python 解释器:始终使用虚拟环境解释器:
scripts/.venv/bin/python3scripts/.venv/Scripts/python.exe中文 PDF 显示异常时安装 Noto CJK 字体,或放入
~/.config/esign-contract/(相对 SKILL.md 目录)。
📋 正在提取签署人信息...(仅上传文件流程)📄 正在排版合同...(仅 AI 生成合同流程)📤 正在上传...🔍 正在定位签章位置...✍️ 正在创建签署流程...✅ 签署流程已发起 — 合同名称
---
**甲方** 姓名(手机号)
🔗 签署链接
---
**乙方** 姓名(手机号)
🔗 签署链接
---
⏳ 请将对应链接发送给签署方,点击即可完成签署
📋 签署进度 — 合同名称
状态:● 签署中 创建时间:2026年3月27日 14:30
**甲方** 姓名 ✅已签署
**乙方** 姓名 ⏳待签署
⚠️ 签署流程已撤销 — 合同名称
📥 签署文件已下载 — 合同名称
📂 保存路径
references/error-handling.md&& 串联,减少交互轮次references/contract-generation.md 收集信息并生成合同,记住实际写入的文件路径(写入系统临时目录,如 /tmp/contract.md(macOS/Linux)或 %TEMP%\contract.md(Windows),可能追加序号)
用户确认合同内容时须确保所有字段已填充,不可带空字段进入排版
run.py format <实际md路径> <对应pdf路径>
references/signing-guide.md 执行签署(上传实际生成的 PDF → 定位签章 → 发起流程 → 获取链接)
~/.config/esign-contract/.env 配置references/error-handling.mdrun.py extract_text text "<文件路径>",识别签署方信息和签章关键字
references/signing-guide.md 执行签署(上传 → 关键字定位 → 发起流程 → 获取链接)
~/.config/esign-contract/.env 配置references/error-handling.md签署主体判断规则详见
references/signing-guide.md。
不知道 flowId 时先执行 run.py list_flows,再执行 run.py query_flow "<signFlowId>"。展示:流程状态、各签署方状态、创建时间。
签署方信息补全:API 返回的签署方姓名可能为空(如沙箱环境未注册的手机号)。展示前先用 run.py list_flows 读取本地 flow_history.json,按手机号匹配补全姓名和角色。
⚠️ 不可逆操作,必须用户确认。
确认后:run.py revoke_flow "<signFlowId>" "撤销原因"
前提:流程状态为已完成。run.py download_docs "<signFlowId>"(不传输出目录时自动使用系统临时目录)
参考 references/signing-guide.md 中的验签步骤。两种方式:提供本地 PDF 文件路径,或指定签署流程获取 fileId。
展示格式:
🔍 电子签名验证结果 — 合同名称
📄 文件完整性:✅ 未被篡改 / ❌ 已被修改
签署人:
1. 名称 — ✅ 签名有效 / ❌ 签名无效
证书:xxx | 签署时间:xxxx年xx月xx日 xx:xx
> 总结性结论
~/.config/esign-contract/.env 中的凭证切勿泄露或提交到代码仓库