agentsclimarketplace

Document formatting

Skill Youchu-lawhub/cn-litigation-toolkit/skills/document-formatting

诉讼文书 Word 排版强制闸门——法院提交的诉讼文书(主诉诉状、被诉答辩状、质证意见、代理词、程序性文书系列)转 Word 前,必须经本技能核验格式合规性。10 项内容硬规则 + 10 项文本清洗 + 6 项结构规范 + 12 项 Word 后验校验。排版参数由 `format-spec.md` 提供,DOCX 转换按 4 级降级链执行。不通过则退回修正,不可跳过。触发词:排版核验、格式检查、转 Word、排版、docx。From its SKILL.md

Install
npx -y skills add Youchu-lawhub/cn-litigation-toolkit --skill document-formatting

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 20 stars20 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

20.9 KB, ~8.0k tokens by cl100k_base, as published. Nobody here has run it

文书排版(document-formatting)· 输出侧格式合规闸门

本技能是本套件正式 Word 文件输出前的格式合规围栏。法院提交的 5 个诉讼文书技能——主诉诉状、被诉答辩状、质证意见、代理词、程序性文书系列——在将 Markdown 草稿转换为 Word(.docx)之前,必须先经本技能核验内容规范、执行文本清洗与结构规范化,转换后再执行 Word 后验校验。全部通过方可交付;不通过则退回修正或自动修复。

与法律核验对称:法律核验守"引用真实性"(输出侧闸门·内容合规),本技能守"格式合规性"(输出侧闸门·格式合规)。两道闸门并列,均为强制不可跳过。


0 | 定位与适用范围

适用

本技能仅适用于法院提交的诉讼文书,即以下 5 个技能的 Word 输出:

序号文书技能典型文书
1主诉诉状起诉状、上诉状、再审申请书、仲裁申请书、仲裁反申请书
2被诉答辩状答辩状、上诉答辩状、再审答辩状、仲裁答辩状、仲裁反请求答辩状
3质证意见质证意见书
4代理词代理意见、补充代理意见
5程序性文书系列保全申请书、调查取证申请书、管辖权异议申请书等四十余种

不适用

以下技能/场景不经过本闸门:

  • 新法解读(纯研究报告,不提交法院)
  • 法律研究报告(内部参考)
  • 庭审提纲(庭前准备材料,非正式提交件)
  • 证据目录(逻辑层编排,非排版对象)
  • 证据装册(物理装订顺序,不走排版流程)
  • 要件攻防分析(内部分析文件)
  • 财产线索调查(内部尽调报告)
  • 案件事实梳理(内部工作底稿)

闸门地位

起草 md 草稿 → 【法律核验闸门】→ 引用全部准确?
                  ├─ 否 → 退回修正
                  └─ 是 ↓
               【文书排版闸门】→ 格式合规?
                  ├─ 否 → 退回修正 / 自动修复
                  └─ 是 → 交付 .docx + 排版核验报告

两道闸门并列、顺序执行,均强制不可跳过


0.5 | 两种调用模式

模式一:输出前自动闸门(其他技能调用,默认)

文书生成技能在转 Word 前,把 Markdown 草稿交给本技能核验:

md 草稿 → 【文书排版闸门】→ 10 项硬规则 + 清洗 + 结构规范 + 转换 + 后验
   ├─ 全部通过 → 交付 .docx + 排版核验报告
   └─ 不通过   → 退回修正(硬规则)/ 自动修复(后验偏差)→ 重新核验 → 直至放行

闸门为强制、不可跳过。文书生成技能不得绕过本闸门直接输出 .docx。

模式二:独立排版核验(用户直接调用)

用户粘贴 Markdown 文本或给出文件路径,本技能执行完整核验流程并输出排版核验报告。用户可选择是否继续执行 Word 转换。


1 | 闸门工作流(6 步)

Markdown 草稿输入
    ↓
Step 1:内容规范检查(10 项硬规则,R1-R10)
    ↓ 不通过 → 退回修正(逐条列出违规项与修正建议)
Step 2:文本清洗(10 项清洗规则,C1-C10)
    ↓ 自动执行,不需人工干预
Step 3:结构规范化(6 项规范,S1-S6)
    ↓ 自动执行
Step 4:调用 md2docx_legal.py 转换
    ↓
Step 5:Word 后验校验(12 项参数比对,V1-V12)
    ↓ 不通过 → 自动修复(1-2 项偏差)或退回(3+ 项失败)
Step 6:交付 .docx + 排版核验报告

2 | Step 1:内容规范检查(10 项硬规则,R1-R10)

本步骤对 Markdown 草稿执行 10 项硬规则检查。任一项不通过即退回修正,不得带病进入下一步。

#规则检查方法违规示例
R1禁止"法律依据"独立章节正则匹配 ^#{1,3}\s*(法律依据|法律适用)### 七、法律依据
R2禁止正文引用被屏蔽的书籍/作者format-spec.md §9.1 读取 blocked_authors / blocked_books 清单(默认为空)进行匹配;用户按需填入视用户清单而定
R3附件区域禁止列证据检查 ## 附 下是否含 证据|笔录|合同|截图1. 行政处罚决定书;2. 谈话笔录
R4主体信息禁止冗余工商字段检查当事人板块是否含 企业类型|成立日期|注册资本|经营范围- 企业类型:有限责任公司
R5来源标记仅用白名单格式format-spec.md §9.2 读取 citation_tags 白名单进行匹配,其他格式一律报错[参见 X 教授 X 书第 X 章](未列入白名单)
R6禁止 HTML 标签残留正则匹配 <(sup|sub|br|div|span|p|!--)<sup>[1]</sup>
R7禁止 Markdown 语法残留检测正文行内残留 ^#{1,6}\s|^\*{1,2}|^\-{3}|^>\s(标题行、加粗、分割线、引用块不应出现在正文段落内部)### 一、原告主体介绍(作为正文行时)
R8同一主体仅允许一个住所地检测当事人板块内"住所地"/"地址"/"住址"出现次数,>1 则报错法人同时写"注册地址:XX"和"办公地址:YY"
R9自然人主体禁止写入职务信息检测自然人板块内"职务"/"职位"/"岗位"/"担任"等字段- 职务:总经理(自然人被告)
R10法人主体仅允许法定代表人附带职务检测法人板块内除"法定代表人"外是否出现其他职务描述- 总经理:张三(法人原告的高管列表)

硬规则检查结果输出

━━━ Step 1:内容规范检查 ━━━
R1  禁止"法律依据"独立章节        ✅ 通过
R2  禁止正文引用特定书籍/作者      ✅ 通过
R3  附件区域禁止列证据            ❌ 不通过 → "## 附件"下发现"1. 谈话笔录",应删除或移至证据目录
R4  主体信息禁止冗余工商字段       ✅ 通过
R5  来源标记仅用两种格式          ✅ 通过
R6  禁止 HTML 标签残留            ✅ 通过
R7  禁止 Markdown 语法残留        ✅ 通过
R8  同一主体仅允许一个住所地       ✅ 通过
R9  自然人主体禁止写入职务信息     ✅ 通过
R10 法人主体仅允许法定代表人附带职务 ✅ 通过
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
结论:⛔ 拦截(1 项不通过),请修正后重新提交

全部通过后方可进入 Step 2。


3 | Step 2:文本清洗(10 项清洗规则,C1-C10)

通过硬规则检查后,自动执行以下 10 项文本清洗,无需人工干预:

#清洗规则操作示例
C1Markdown 标题标记清除移除行首 #{1,6}\s,保留标题文字## 事实与理由事实与理由
C2加粗标记清除移除 **...**__...__,保留内部文字**事实与理由**事实与理由
C3列表标记规范化统一 - / * / + 为编号或圆点,按上下文判定- 第一项1. 第一项(有序上下文)
C4HTML 上标清除移除 <sup>...</sup> 标签,保留内容<sup>[1]</sup>[1]
C5HTML 标签清除移除所有残余 HTML 标签 <...><br/> → 换行符
C6Markdown 引用标记清除移除行首 >\s,保留正文> 综上综上
C7水平分割线清除移除 --- / *** / ___ 分割线--- → 删除
C8直双引号转中文"...""…""违约""违约"
C9直单引号转中文'...''…''善意''善意'
C10连续空行压缩连续 3 行及以上空行压缩为 2 行\n\n\n\n\n\n

4 | Step 3:结构规范化(6 项规范,S1-S6)

清洗完成后,执行以下 6 项结构规范化:

#规范说明
S1当事人板块分隔原告、被告、第三人各板块之间插入一个空行分隔,板块内部不插入多余空行
S2事实与理由大标题格式"事实与理由"作为一级大标题,不加粗,宋体四号
S3附件净化"## 附件"/"## 附"区域仅保留"附件:本起诉状副本 X 份"等非证据性内容,证据类条目在 Step 1(R3)已拦截
S4签名区右对齐落款人行("具状人:/答辩人:/申请人:/上诉人:/提交人:/落款人:")及紧随其后的日期行右对齐;日期支持"YYYY年 M 月 D 日"或"YYYY年 月 日"(月/日留白)两种模板
S5此致格式"此致"独占一行,首行缩进2字符
S6法院名称格式"此致"下一行法院全称,左对齐无缩进(顶格),不加书名号

4.1 落款识别规则(S4 落款细则)

签名区落款采用两条互补路径识别,均由 md2docx_legal.py 内置:

  1. 通用落款关键词白名单:以下 6 个关键词后紧跟中文冒号/英文冒号视为落款起始,命中即置 in_signature_area=True 并写入右对齐段落。

    • 具状人、答辩人、申请人、上诉人(诉状/答辩状/上诉状本体落款)
    • 提交人、落款人(证据目录、质证意见、庭前证据交换记录等辅助文书落款)

    正则:^(具状人|答辩人|申请人|上诉人|提交人|落款人)[::]

  2. 落款前瞻判定(避免与文书开头"答辩人:/被答辩人:"当事人板块冲突):当行首命中 PARTY_KEYWORDS(原告/被告/答辩人/被答辩人/申请人/被申请人/上诉人/被上诉人)时,向下跳过空行前瞻一行——若前瞻行匹配日期行正则 ^\d{4}\s*年\s*\d{0,2}\s*月\s*\d{0,2}\s*日,则本行为落款而非当事人板块,直接右对齐并置 in_signature_area=True,跳过 process_party_block 分支。

  3. 日期行留白兼容:签名区日期行支持完整日期与模板留白两种写法,均命中同一正则 \d{0,2}

    • 完整:2026年 7 月 15 日
    • 留白:2026年 月 日(月/日字段留空供手工填写,交付前常见)

    两种写法均在 in_signature_area=True 状态下右对齐。

违规示例

  • ❌ 结尾"答辩人:[公司全称] / 2026年 月 日"若未命中前瞻,会被误当当事人板块处理,写出左对齐段落——V10 校验会拦截。

5 | 排版规范参数(来源:format-spec.md

参数源:本套件所有排版参数——字体、字号、行距、边距、对齐、缩进、颜色——统一在套件根目录的 format-spec.md 集中定义。md2docx_legal.pyverify_docx.py 均以此文件为参数源。

默认值来源:中国最高人民法院诉讼文书样式模版 v2020(6 份 .docx 实测提取,5/6 一致为准)。

用户覆写:用户可直接编辑 format-spec.md,或复制为 format-spec.<court-name>.md 并在 profile.mdformat_spec_path 字段指向该文件;md2docx_legal.py 会优先读取指向的文件,未覆写字段沿用默认值。

核心规范速查(详见 format-spec.md):

元素字体字号对齐其他
文书标题宋体二号 (22pt, sz=44)居中不加粗
正文段落宋体四号 (14pt, sz=28)左对齐首行缩进 2 字符,行距固定 25 磅
段落标题宋体四号左对齐 + 首行缩进不加粗,冒号结尾
"此致"宋体四号左对齐 + 首行缩进
法院名称宋体四号左对齐(顶格)
签名/日期宋体四号右对齐落款人白名单+日期模板兼容见 §4.1;日期支持月/日留白
附件宋体四号左对齐 + 首行缩进

页面设置:A4(11906×16838 twips),上/下 1440 twips,左/右 1800 twips。

如需为特定法域/法院定制样式,请编辑或衍生 format-spec.md,本 SKILL 无需改动。


6 | Step 4:Markdown → Word 转换(DOCX.* 4 级降级链)

结构规范化完成后,按 *DOCX. 能力槽**执行 4 级降级链。所有层级共用 format-spec.md 参数源,确保输出一致。

Tier 1 —— md2docx_legal.py(内置,首选)
   └── python-docx 精确控制段落样式,读取 format-spec.md
      ├── 成功 → 进入 Step 5 后验校验
      └── 失败 ↓
Tier 2 —— 外部 DOCX MCP(外置转换服务,如 docx-mcp / doc-generator)
   └── 通过 MCP 协议调用外部转换器,传入 format-spec.md 参数
      ├── 成功 → 进入 Step 5 后验校验(标注"外部 MCP 转换")
      └── 失败 ↓
Tier 3 —— pandoc + templates/reference.docx(通用工具降级)
   └── pandoc --reference-doc=templates/reference.docx
      ├── 成功 → 进入 Step 5 后验校验(标注"pandoc 降级转换")
      └── 失败 ↓
Tier 4 —— 纯 Markdown 兜底交付
   └── 交付清洗后的 .md,告知用户 Word 转换失败与恢复步骤

首选命令

python3 scripts/md2docx_legal.py --spec format-spec.md input.md output.docx

脚本内置 clean_text() 覆盖 C1-C10 清洗 + verify_docx() 覆盖 V1-V12 后验,转换完成后自动执行校验。

为什么要 4 级降级:本套件跨平台运行(Agent 运行时 / Claude Code / Cursor / Gemini CLI / OpenCode),不同环境的 Python / pandoc / MCP 可用性差异极大。4 级降级保证在最恶劣的环境下仍能交付。


7 | Step 5:Word 后验校验(12 项参数比对,V1-V12)

转换完成后,md2docx_legal.py 内置的 verify_docx() 自动执行 12 项参数比对;亦可独立调用 scripts/verify_docx.py

python3 scripts/verify_docx.py --spec format-spec.md output.docx

参数(如 sz=28、line=500、firstLine=560)均从 format-spec.md 读取,用户覆写后校验自动跟随。

#校验项期望值(默认,可通过 format-spec.md 覆写)
V1页面尺寸A4 (11906×16838 twips)
V2页边距上/下 1440, 左/右 1800 twips
V3标题字体+字号宋体, sz=44 (二号)
V4标题对齐居中 (center)
V5正文字体+字号宋体, sz=28 (四号)
V6正文行距固定值 25 磅 (line=500, lineRule=exact)
V7正文首行缩进560 twips (2 字符)
V8当事人间空段落每个当事人板块前有空段落
V9事实与理由标题加粗节标题(一、二、…)加粗
V10签名区右对齐jc=right
V11无 Markdown 残留全文无 ###/**/<sup> 等
V12无直引号全文无 " / '

后验校验结果输出

━━━ Step 5:Word 后验校验 ━━━
V1  页面尺寸            ✅ A4
V2  页边距              ✅ 标准
V3  标题字体+字号       ✅ 宋体 sz=44
V4  标题对齐            ✅ center
V5  正文字体+字号       ✅ 宋体 sz=28
V6  正文行距            ✅ 固定值 25 磅
V7  正文首行缩进        ✅ 560 twips
V8  当事人间空段落       ✅ 分隔正确
V9  事实与理由标题加粗   ✅ b=true
V10 签名区右对齐        ✅ jc=right
V11 无 Markdown 残留    ✅ 无残留
V12 无直引号            ✅ 无直引号
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
结论:✅ 全部通过(12/12)

8 | 降级与错误恢复

8.1 转换失败降级(DOCX.* 4 级)

见 §6 中的 4 级降级链。任一层失败自动降级到下一层,直到 Tier 4 交付纯 Markdown 兜底。每次降级须在最终交付报告中标注实际使用的转换器。

8.2 后验校验失败处理

阈值来自 format-spec.md §9.3 的 verify_thresholds 字段(默认 auto_fix_max: 2 / reject_min: 3):

失败项数处理策略
0 项直接交付
1 ≤ 项 ≤ auto_fix_max自动修复:针对偏差项调用 python-docx 定向修正 → 重新校验 → 通过则交付
项 ≥ reject_min退回人工检查:输出差异报告(逐项列出期望值 vs 实际值),不自动修复

8.3 自动修复范围

自动修复仅覆盖以下可精确定向修正的偏差:

  • 字体名/字号偏差(V3-V5):直接写入正确的 run.font.name / run.font.size
  • 行距偏差(V6):直接写入 paragraph_format.line_spacing
  • 缩进偏差(V7):直接写入 paragraph_format.first_line_indent
  • 页边距偏差(V1-V2):直接写入 section.*_margin

签名对齐(V10)和 Markdown 残留(V11)涉及内容结构,不自动修复,失败即退回。


9 | 与其他技能的关系

9.1 与法律核验:并列闸门

md 草稿 → 【法律核验闸门】→ 引用真实性 ✅
              ↓
         【文书排版闸门】→ 格式合规性 ✅
              ↓
         交付 .docx
  • 法律核验先过(守输入侧——引用是否真实、现行有效)
  • 排版闸门后过(守输出侧——格式是否符合法院提交标准)
  • 两道闸门独立运行,互不替代

9.2 与文书生成技能:强制调用

以下 5 个技能在转 Word 前必须调用本闸门:

技能调用时机
主诉诉状起诉状/上诉状/再审申请书/仲裁申请书 md 完成后、交付 .docx 前
被诉答辩状答辩状 md 完成后、交付 .docx 前
质证意见质证意见书 md 完成后、交付 .docx 前
代理词代理意见/补充代理意见 md 完成后、交付 .docx 前
程序性文书系列各类程序性文书 md 完成后、交付 .docx 前

文书生成技能不得绕过本闸门直接输出 .docx,也不得在闸门未通过时带病交付。

9.3 与 md2docx_legal.py:转换执行器

本闸门在 Step 4(Tier 1)调用 scripts/md2docx_legal.py 执行 Markdown → Word 转换。脚本基于 python-docx 实现,运行时读取 format-spec.md 精确设置段落样式,且内置 verify_docx() 函数自动完成后验。

9.4 与 verify_docx.py:独立后验校验器

scripts/verify_docx.py 为独立命令行工具,可对任何已生成的 .docx 执行 12 项后验校验。既可被本闸门 Step 5 调用,也可由用户手动执行。校验期望值同样从 format-spec.md 读取,输出 JSON 格式校验报告,退出码:0=全通过, 1=有警告, 2=有错误。

9.5 与 format-spec.md:参数单点源

format-spec.md 是本套件排版规范的唯一权威源。SKILL(本文件)定义方法学流程format-spec.md 定义参数md2docx_legal.py / verify_docx.py执行器。三层解耦:改参数不改 SKILL 与脚本,改流程不改参数与脚本,换执行器不改流程与参数。


10 | 排版核验报告模板

Step 6 交付时附带的排版核验报告格式如下:

╔══════════════════════════════════════════╗
║         排版核验报告                      ║
╠══════════════════════════════════════════╣
║ 文书类型:民事起诉状                       ║
║ 生成技能:plaintiff-complaint v1.2.0                  ║
║ 核验时间:2026-07-15 14:32:08             ║
╠══════════════════════════════════════════╣
║ Step 1 内容规范检查   10/10 通过    ✅     ║
║ Step 2 文本清洗       10/10 执行    ✅     ║
║ Step 3 结构规范化      6/6  执行    ✅     ║
║ Step 4 转换           md2docx_legal ✅     ║
║ Step 5 后验校验       12/12 通过    ✅     ║
╠══════════════════════════════════════════╣
║ 闸门结论:✅ 放行                          ║
║ 交付文件:民事起诉状.docx                  ║
╚══════════════════════════════════════════╝

如有退回/修复项,报告中逐项列出:

━━━ 退回/修复记录 ━━━
Step 1 R3:附件区域发现证据列表 → 已退回,删除后重新提交
Step 5 V3:正文字体偏差(实际:Arial,期望:宋体)→ 已自动修复
━━━━━━━━━━━━━━━━━━━━

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.