e签宝电子签名技能 — AI生成任意类型合同/协议并排版为PDF,支持上传文件发起电子签署,返回签署链接。触发场景:生成/起草/撰写各类合同(如借款合同、保密协议、租赁合同),或对已有合同发起签署、查询进度、撤销、下载签署文件等。
编排型 Skill:本 Skill 统一编排 e签宝电子合同的完整生命周期,涵盖合同生成、文件上传、签署发起、进度查询、撤销、下载及验签六个子流程(流程 A–F)。Agent 根据用户意图选择对应流程执行,各流程间可按需串联。
配置文件路径: ~/.config/esign-contract/.env
ini
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。若文件不存在或缺少必要字段,提示用户两种方式:
直接输入(推荐):请用户在对话中提供 App ID 和 App Secret(格式如 appId;appSecret),由 Agent 用 Bash 自动写入配置文件, 默认使用正式环境:
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
手动配置:登录 e签宝开放平台 获取凭证,手动编辑 ~/.config/esign-contract/.env
环境策略:默认使用正式环境( https://openapi.esign.cn)。若 API 调用返回认证错误或连接失败,询问用户是否为沙箱环境,是则将 ESIGN_BASE_URL 改为 https://smlopenapi.esign.cn
凭证文件存放于用户主目录,不随 Skill 目录变动,不会被意外提交到代码仓库。
脚本位于 SKILL.md 所在目录的 scripts/ 子目录下,执行时使用脚本的完整绝对路径。
首次执行任何脚本前,必须先确保虚拟环境就绪(一条命令完成检查与初始化):
bash
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 目录)。
脚本返回值、JSON 配置、执行命令等技术细节 禁止展示给用户 — 包括但不限于:脚本路径、命令行参数、JSON 响应体、fileId、坐标值。用户只需看到进度提示和最终结果
内部流程名称(流程 A/B/C/D/E/F)、步骤编号不展示给用户
每执行一个实际操作前,给出对应的进度提示。只提示实际执行的步骤,不套用固定模板。可选提示:
📋 正在提取签署人信息...(仅上传文件流程)📄 正在排版合同...(仅 AI 生成合同流程)📤 正在上传...🔍 正在定位签章位置...✍️ 正在创建签署流程...最终输出(签署流程发起成功): text
✅ 签署流程已发起 — 合同名称
---
**甲方** 姓名(手机号)
🔗 签署链接
---
**乙方** 姓名(手机号)
🔗 签署链接
---
⏳ 请将对应链接发送给签署方,点击即可完成签署
查询流程输出: text
📋 签署进度 — 合同名称
状态:● 签署中 创建时间:2026年3月27日 14:30
**甲方** 姓名 ✅已签署
**乙方** 姓名 ⏳待签署
撤销流程输出: text
⚠️ 签署流程已撤销 — 合同名称
下载文件输出: text
📥 签署文件已下载 — 合同名称
📂 保存路径
出错时参考 references/error-handling.md
多步骤用 && 串联,减少交互轮次
参考 references/contract-generation.md 收集信息并生成合同,记住实际写入的文件路径(写入系统临时目录,如 /tmp/contract.md(macOS/Linux)或 %TEMP%\contract.md(Windows),可能追加序号)
用户确认合同内容时须确保所有字段已填充,不可带空字段进入排版
排版生成 PDF: run.py format <实际md路径> <对应pdf路径>
参考 references/signing-guide.md 执行签署(上传实际生成的 PDF → 定位签章 → 发起流程 → 获取链接)
~/.config/esign-contract/.env 配置references/error-handling.md提取文本: run.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。
展示格式:
text
🔍 电子签名验证结果 — 合同名称
📄 文件完整性:✅ 未被篡改 / ❌ 已被修改
签署人:
1. 名称 — ✅ 签名有效 / ❌ 签名无效
证书:xxx | 签署时间:xxxx年xx月xx日 xx:xx
> 总结性结论
~/.config/esign-contract/.env 中的凭证切勿泄露或提交到代码仓库