cat-xierluo/legal-skills/court-sms
Claude Code and agent skill by cat-xierluo/legal-skills
- community
Checking that the SKILL.md file is still in the repository.
本技能应在用户收到法院短信(文书送达、立案通知、开庭提醒等)时使用,自动提取案号、当事人、下载链接,下载文书并归档到对应案件目录。会落盘敏感诉讼数据到本地,请确认目标位置私密。
Install
npx vskill@latest install cat-xierluo/legal-skills/court-smsSKILL.md
法院短信识别与文书下载
隐私与合规说明(透明告知,不阻挡执行)
本技能处理的是法院诉讼文书与送达短信,内容含案号、当事人、法院信息、送达时间等敏感诉讼数据,部分还可能涉及客户机密与个人隐私。使用即表示你授权本技能按以下方式处理:
- 下载的文书与归档记录会落到本地文件系统(案件目录 + skill 内部
archive/)。案件目录位置由config/workspace.json的case_root决定(未配置时用当前工作目录),请把它指向仅你本人可访问的私密路径,且勿提交到公开仓库或同步到第三方服务。 - 涉及登录凭证(账号、密码、验证码)的步骤,在你粘贴含相关信息的短信后默认自动代入,以实现无感下载。
- 新建案件目录、写入内部归档记录均按流程自动执行,无需逐步确认。
功能概述
处理法院短信的完整流程:粘贴短信 → 解析内容 → 匹配案件 → 下载文书 → 归档保存。
支持两种触发方式:
方式一:粘贴短信原文
方式二:直接发送送达链接
用户可能直接粘贴送达链接(非完整短信文本),此时跳过短信文本解析,直接从 URL 中提取 qdbh、sdbh、sdsin 参数,进入第三步下载流程。
短信类型分类
| 类型 | 特征 | 含下载链接 | 处理方式 | |
|---|---|---|---|---|
| 文书送达 | 含送达平台链接 + 案号 | 是 | 下载文书并归档到案件目录 | |
| 立案通知 | 含"已立案"等关键词 | 可能有 | 展示解析结果 | |
| 信息通知 | 无链接,纯信息 | 否 | 展示解析结果 |
支持的送达平台:zxfw.court.gov.cn(全国)、sd.gdems.com(广东)、jysd.10102368.com(集约送达)、dzsd.hbfy.gov.cn(湖北)、sfpt.cdfy12368.gov.cn(司法送达网)。同一平台可能使用不同域名(同构异域名),通过 URL 路径特征识别平台。详见 references/sms-patterns.json。
工作流(四步)
第一步:输入解析
- 读取
references/sms-patterns.json作为解析参考 - 判断输入类型:
- 完整短信:包含法院签名(如
【xx法院】)+ 正文 + 链接 → 完整解析流程 - 纯链接:用户直接发送送达 URL(如
https://zxfw.court.gov.cn/...?qdbh=xxx&sdbh=xxx&sdsin=xxx)→ 跳过短信文本解析,直接从 URL 提取参数,进入第三步下载。案号、当事人等信息在下载文书后从文书内容中提取。
- 对用户粘贴的短信文本进行分析(纯链接输入跳过此步):
a) 短信分类:根据关键词判断类型
- 文书送达:包含 zxfw.court.gov.cn 链接
- 立案通知:包含"已立案"、"立案通知"等
- 信息通知:其他
b) 案号提取:使用正则 [((〔[]\d{4}[))〕]] 匹配标准案号格式
标准案号格式示例:
(YYYY)苏XXXX民初XXXX号(YYYY)粤XXXX执保XXXX号〔YYYY〕京XXXX民初XXXX号
c) 当事人提取:从短信文本初步识别,最终以文书内容为准
- 注意:短信中的称呼(如"张三,您好")仅为短信接收人,不作为案件当事人
- 公司名称:
xx有限责任公司、xx有限公司、xx股份有限公司 - 诉讼对峙:
A与B、A诉B、原告A 被告B - 角色前缀:
原告:xxx、被告:xxx等 - 下载文书后,以起诉状、传票中的当事人信息为准,覆盖短信阶段的初步判断
d) 下载链接提取:识别短信中的送达平台链接并提取参数
| 平台 | 域名 | 下载方式 | 提取参数 | |
|---|---|---|---|---|
| 全国法院统一送达平台 | zxfw.court.gov.cn | curl API 直连 | qdbh, sdbh, sdsin | |
| 广东法院电子送达 | sd.gdems.com | 浏览器自动化 | 路径中的送达标识码 | |
| 集约送达平台 | jysd.10102368.com | 浏览器自动化 | key | |
| 湖北电子送达 | dzsd.hbfy.gov.cn | HTTP API(免账号)/ 浏览器自动化(账号模式) | 免账号:msg;账号模式:账号+密码从正文提取 | |
| 司法送达网 | sfpt.cdfy12368.gov.cn | 纯 Playwright(无 API) | 验证码(手机尾号后6位 / 短信验证码) |
e) 送达证据核对(P0):读取 送达与期限规则,区分发送、收到、生成和法律上的送达。
- zxfw 的
getWsListBySdbhNew在已测响应中不含dt_cjsj,不得臆造该字段;即使其他接口有创建时间,也不能自动当送达时间。 - 按“文书 + 受送达人”核对适用基础、送达回证或系统发送成功/到达证据。二维码生成、文书落款、普通短信时间仅记为线索,不能借同批另一份文书的日期起算。
- 按参考格式整理证据,执行
python3 scripts/check_service_evidence.py /private/path/service-evidence.json;仅输出confirmed时进入期限规则核对。检查器只检查结构和一致性,不替代原始证据核验。 - 未知、冲突或检查失败时,
service.served_on=null,展示“送达时间待确认”及缺口,继续下载与归档;不得输出确定期限或倒计时。
f) 下载期避免 python heredoc:优先写临时 .py 文件或改用 execute_code,避免 python3 <<'PY' 写法——它命中危险命令规则(pattern key script execution via heredoc),逐次触发审批弹窗。python3 -c(key script execution via -e/-c flag)同理。
排除列表:法院名称、法官姓名、地名、法律术语等不应作为当事人提取。详见sms-patterns.json→party_extraction.exclude_keywords。
输出格式(向用户展示):
第二步:确定归档目录
0. 先读归档根目录配置 config/workspace.json 的 case_root,按下列优先级确定「归档基准目录」,不要一上来就扫当前工作区:
| 优先级 | 条件 | 归档基准 | 说明 | |
|---|---|---|---|---|
| 1 | 当前工作目录本身就是一个案件目录(目录名含案号,或目录内有 案件信息.md / case.yaml) | 当前工作目录 | 保留「一案一工作区」习惯,就地归档 | |
| 2 | case_root 非空 | case_root | 在根目录下按 search_depth(默认 3 层)递归查找命中的案件目录 | |
| 3 | case_root 为 null 或配置文件不存在 | 当前工作目录 | 旧行为,向后兼容 |
命中 case_root 模式时,只在该根目录树内匹配与新建,不得把文书落进当前工作区。必须递归匹配,否则「案件目录已存在于根目录的子文件夹里」会被漏掉,从而在根目录重建一份重复目录——这是最容易出的错。
- 在基准目录内匹配案件目录:案号优先(兼容全角
()/半角()/〔〕),其次当事人组合;命中多个同案号目录时取最近修改者,并在归档报告中说明 - 查找归档子目录:在匹配到的案件目录下,查找法院文书相关的子目录(如
08*、法院送达、court等) - 如未找到匹配案件,自动在基准目录下按 `new_case_dir_template` 新建
{案号} {当事人与案由}/,不询问用户
2.1 上下文核验(避免遗漏跨法院/多程序并行的关键事实)
命中已有案件目录后,先读该案件目录根下的 `案件信息.md`(或对应叙事文档)和 case.yaml 的程序历程,再继续第四步。这一步专门应对以下情形——错过任何一项都会产出错误归档:
- 跨法院并行:同一对当事人、同一标的,已有 A 法院案号在办,新送达来自 B 法院且案号不同——必须用 B 法院案号归到现有项目目录,并标注二者关系;不得默默写入 A 法院案号路径导致日后翻案底找不到对应文书。
- 重复立案/管辖回流:该项目历史上曾被某法院退回"不属于本院管辖",现在同一法院又出现新案号——属异常事件,必须在报告里点出,由用户决定是否走管辖异议或撤诉协调。
- 当事人同名陷阱:两个独立项目共享相同原告/被告姓名,目录短码不同——核
case.yaml的律所案号/法院案号双重校验,避免把新文书归档到错误的同名项目。
读取到的关键背景写进 archive.archive.context_notes,归档报告里也单独列「与现有项目的关系」一节,避免用户只看短信原文时漏掉案号冲突。
第三步:文书下载
平台判断:根据第一步识别的链接域名,选择下载策略。-zxfw.court.gov.cn→ 方案一(API 直连)→ 方案二 → 方案三-sd.gdems.com或jysd.10102368.com→ 跳过方案一,直接方案二 → 方案三-dzsd.hbfy.gov.cn→ 湖北专属流程(见下方)-sfpt.cdfy12368.gov.cn(含广西实例171.106.48.55:28083)→ SFDW 专属流程(见下方)- 未知域名但 URL 路径匹配已知平台特征 → 按路径识别平台(同构异域名支持)- 完全无法识别 → 提示用户提供链接信息⛔ 降级铁律:严格串行,禁止并行。当前方案成功即停止,绝不降级。禁止"双保险"并行尝试多个方案。
依赖
| 依赖 | 用途 | 适用方案 | 安装方式 | |
|---|---|---|---|---|
| Python 3.8+ | 送达证据检查(标准库,无需 pip) | 期限核对前 | macOS/Linux 使用已有 python3;缺少时提示安装后重试期限核对 | |
curl | API 下载 | 方案一 | macOS/Linux 预装 | |
jq | JSON 解析(可选) | 方案一 | brew install jq | |
| Playwright | 浏览器自动化 | 方案二/三 | 见下方 |
Playwright 安装指引(仅方案二/三需要):
⛔ 大多数情况下不需要 Playwright:zxfw 平台方案一直接 curl 调用 API,无需浏览器。仅 gdems/jysd 平台或方案一失败后才需要方案二/三。禁止在方案一执行期间同时打开浏览器。
方案一 — API 直连(优先)
完全无头,无需浏览器。直接调用 zxfw 后端 API 获取文书下载链接,再用 curl 下载 PDF。
API 信息:
- 端点:
POST https://zxfw.court.gov.cn/yzw/yzw-zxfw-sdfw/api/v1/sdfw/getWsListBySdbhNew - Content-Type:
application/json - 请求体:
{ "qdbh": "xxx", "sdbh": "xxx", "sdsin": "xxx" }(从短信 URL 提取) - 响应字段:
data[].c_wsmc(文书名称)、data[].wjlj(OSS 签名下载链接)、data[].c_fymc(法院名称) - 无需认证、无需浏览器
方案二 — 无头浏览器(Playwright CLI)
当方案一 API 不可用或链接过期时,用 Playwright CLI 无头模式打开页面,拦截网络请求获取下载链接。
方案三 — 交互式浏览器(Playwright MCP)
当方案二不可用时(需要已配置 Playwright MCP):
如 API 调用未成功,改用页面交互:
湖北平台下载流程(dzsd.hbfy.gov.cn)
湖北电子送达平台有两种链路,根据 URL 格式自动选择:
链路一:免账号模式(URL 含 /hb/msg=xxx)
- 从 URL 提取
msg参数值 - 尝试 HTTP API 直连:
- 如需验证码或 HTTP 失败,降级到 Playwright MCP(方案三)
链路二:账号模式(URL 含 /sfsddz)
- 从短信正文提取凭证:
- 账号:匹配
账号\s*(\d{15,20}) - 默认密码:匹配
默认密码[::]\s*([0-9A-Za-z]+)
- 需要浏览器自动化(Playwright MCP),登录页包含验证码
- 登录后遍历待签收/已签收/已过期文书列表,逐个下载
提示:湖北平台两种模式都可能遇到验证码。免账号模式优先尝试 HTTP API,账号模式建议引导用户手动打开链接或使用 Playwright MCP。
司法送达网下载流程(SFDW - sfpt.cdfy12368.gov.cn)
司法送达网所有 POST 请求使用 TDHCryptoUtil 加密,无法通过 HTTP API 下载,只能使用纯 Playwright 流程。
广西实例:171.106.48.55:28083 域名下的链接路由到同一 SFDW 平台,下载流程相同。
验证码获取(两种方式,按优先级尝试):
- 手机尾号后6位(优先):从案件分配信息中获取律师手机号,取后6位作为验证码输入
- 短信验证码:从短信正文中提取,匹配
验证码[::]\s*(\w{4,6})
Playwright MCP 流程:
提示:如手机尾号验证失败,提示用户查看短信中的验证码并手动输入。wsList 每项包含 wjmc(文件名)、wjgs(格式)。
失败兜底
当三级均失败时:
第四步:归档保存
- 确定目标目录:直接沿用第二步得出的「归档基准目录 + 案件目录」,不再按当前工作区重新判断,不询问用户
- 基准目录按第二步的三级优先级确定(案件工作区 >
config/workspace.json的case_root> 当前工作区) - 如找到匹配案件目录,优先查找法院文书子目录(如
08*、法院送达、court等);如无子目录则直接归档到案件根目录 - 如未找到匹配案件,自动在基准目录下新建:
{案号} {当事人与案由}/ - 如目标目录不存在,自动创建
- 获取当前日期:
date "+%Y%m%d" - 确定文书标题:
- 优先使用 API 返回的标题
- 否则根据
sms-patterns.json中的document_titles映射推断 - 最后回退到原始文件名(去除扩展名),如仍无法确定则使用
未知文书
- 构建文件名:
{title}({case_name})_{YYYYMMDD}收.pdf
- 示例:
受理通知书(张三与李四合同纠纷)_20260404收.pdf - 清理非法字符:
< > : " | ? * \ / - 如同名文件已存在,追加
_2后缀 - 跨法院/多程序场景:短信案号与项目目录短码不一致时,文书名以短信案号为准(
{短信案号} {title}-{接收人}_{YYYYMMDD}收.pdf),不使用项目旧案号,避免后续翻案底时找不到对应文书。
- 移入目标目录
- 不要顺手改 `案件信息.md`、`case.yaml`、时间线等叙事/任务文件——遇到跨法院、案号冲突、管辖异常等需要人工判断的事项,归档仅落 PDF,叙事更新由用户确认后再单独处理。
- 写入内部记录:保存本次处理的完整信息到 skill 内部的 `archive/` 目录(即
.claude/skills/court-sms/archive/),不是案件文件夹。格式详见 `references/archive-format.md`
> 透明告知:archive/ 会留存短信原文(sms_raw)、案号、当事人、法院编号、下载参数与 API 响应等敏感诉讼信息。该目录默认不纳入版本库(已加入 .gitignore),请勿将其同步到公开仓库、第三方网盘或共享目录。
- 基础文书解析:法院 PDF 通常带文字层,提取首页文本,快速识别文书类型和关键信息
- 传票:提取开庭时间、地点、法庭、案号,向用户高亮提醒
- 通知书/告知书:提取缴费期限、举证期限等关键日期
- 起诉状/答辩状:提取案由、当事人、诉讼请求概要
- 判决书/裁定书:读取正文及末尾救济告知,核对审级、程序和可上诉性;不能仅凭标题认定一审或可上诉
- 其他文书:展示文书标题和法院名称
- 如一次下载多份文书,逐一解析,汇总为一份报告
> 深度分析(如判决书解读、合同审查)不在此技能范围内,请使用专用分析技能处理。
- 上诉期限核对(P1):按 送达与期限规则 执行,不按标题直接计算
- 先通过送达证据检查,再阅读该份文书的救济告知,核对适用期间、当事人及例外。普通民事15/10日等仅是候选规则;保全、终审、小额诉讼、境内无住所等须分别判断。
- 核对当年官方放假调休日历及适用程序法;按日通常不计起算当日,期间内节假日照计,仅末日按规则顺延,调休上班日不按普通周末处理。
- 送达、可上诉性、期间规则或日历任一未确认,
deadline_status=pending,appeal_deadline=null、appeal_days_remaining=null,报告明确待核验项。确认无该项上诉权时用not_applicable。 - 只有全部核对完成才记录
deadline_status=confirmed,附deadline_basis和对应service证据。多文书、多受送达人分别计算;历史sent_at不能直接迁移为已确认送达日期。 - 缴费、举证等期限单独读取原通知的起算事件与义务,禁止复用上诉期限表。
- 向用户汇报:按 `references/report-format.md` 输出结构化报告
- 先确认归档完成(案号、法院、当事人、案由、文件数、位置)
- 列出所有已归档的文书清单
- 如含传票,⚠️ 高亮提醒开庭时间、地点、审理程序
- 如含判决书/裁定书,⏰ 展示已核实期限或待核验原因,不省略未知状态
- 如部分失败,列出失败文书和原始链接
第五步:PDF 后处理(可选)
不默认启用。仅在检测到文件拆分时主动提示用户。
归档完成后,扫描目标目录中的 PDF 文件,检测是否有同一文书被拆分为多个文件的情况。
读取用户偏好
读取 config/user-preferences.json 获取用户的合并和重命名偏好。如文件不存在,使用默认值(参考 config/user-preferences.example.json)。
关键偏好项:
| 偏好 | 默认值 | 说明 | |
|---|---|---|---|
merge_strategy | per_evidence | 合并策略:per_evidence(按编号分别合并)或 unified(统一合并) | |
merge_options.unified.bookmarks.enabled | true | 统一合并时是否添加 PDF 书签 | |
rename.enabled | true | 是否精简文件名 |
触发检测
读取 references/sms-patterns.json → post_processing.trigger 配置,按以下规则分组:
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/court-sms/SKILL.md
Popularity
- Repository stars
- 450
- Repository forks
- 66
- 7-day trend score
- 31
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/cat-xierluo/legal-skills/court-sms)