Document formatting
Skill Youchu-lawhub/cn-litigation-toolkit/skills/document-formatting
中国民商事诉讼工具箱 — 面向执业律师与公司法务的全流程诉讼工具箱 (23 skills, MCP-agnostic, CC BY-NC-ND 4.0)
npx -y skills add Youchu-lawhub/cn-litigation-toolkit --skill document-formattingAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
3 things to look at
- 26 days oldThe repository was created 26 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 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.
- 7 stars7 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.
What its author says it does
Copied from the file, not written here
诉讼文书 Word 排版强制闸门——法院提交的诉讼文书(主诉诉状、被诉答辩状、质证意见、代理词、程序性文书系列)转 Word 前,必须经本技能核验格式合规性。10 项内容硬规则 + 10 项文本清洗 + 6 项结构规范 + 12 项 Word 后验校验。排版参数由 `format-spec.md` 提供,DOCX 转换按 4 级降级链执行。不通过则退回修正,不可跳过。触发词:排版核验、格式检查、转 Word、排版、docx。
SKILL.md
20.9 KB, 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 项文本清洗,无需人工干预:
| # | 清洗规则 | 操作 | 示例 |
|---|---|---|---|
| C1 | Markdown 标题标记清除 | 移除行首 #{1,6}\s,保留标题文字 | ## 事实与理由 → 事实与理由 |
| C2 | 加粗标记清除 | 移除 **...** 和 __...__,保留内部文字 | **事实与理由** → 事实与理由 |
| C3 | 列表标记规范化 | 统一 - / * / + 为编号或圆点,按上下文判定 | - 第一项 → 1. 第一项(有序上下文) |
| C4 | HTML 上标清除 | 移除 <sup>...</sup> 标签,保留内容 | <sup>[1]</sup> → [1] |
| C5 | HTML 标签清除 | 移除所有残余 HTML 标签 <...> | <br/> → 换行符 |
| C6 | Markdown 引用标记清除 | 移除行首 >\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 内置:
-
通用落款关键词白名单:以下 6 个关键词后紧跟中文冒号/英文冒号视为落款起始,命中即置
in_signature_area=True并写入右对齐段落。- 具状人、答辩人、申请人、上诉人(诉状/答辩状/上诉状本体落款)
- 提交人、落款人(证据目录、质证意见、庭前证据交换记录等辅助文书落款)
正则:
^(具状人|答辩人|申请人|上诉人|提交人|落款人)[::] -
落款前瞻判定(避免与文书开头"答辩人:/被答辩人:"当事人板块冲突):当行首命中 PARTY_KEYWORDS(原告/被告/答辩人/被答辩人/申请人/被申请人/上诉人/被上诉人)时,向下跳过空行前瞻一行——若前瞻行匹配日期行正则
^\d{4}\s*年\s*\d{0,2}\s*月\s*\d{0,2}\s*日,则本行为落款而非当事人板块,直接右对齐并置in_signature_area=True,跳过process_party_block分支。 -
日期行留白兼容:签名区日期行支持完整日期与模板留白两种写法,均命中同一正则
\d{0,2}:- 完整:
2026年 7 月 15 日 - 留白:
2026年 月 日(月/日字段留空供手工填写,交付前常见)
两种写法均在
in_signature_area=True状态下右对齐。 - 完整:
违规示例:
- ❌ 结尾"答辩人:[公司全称] / 2026年 月 日"若未命中前瞻,会被误当当事人板块处理,写出左对齐段落——V10 校验会拦截。
5 | 排版规范参数(来源:format-spec.md)
参数源:本套件所有排版参数——字体、字号、行距、边距、对齐、缩进、颜色——统一在套件根目录的 format-spec.md 集中定义。md2docx_legal.py 与 verify_docx.py 均以此文件为参数源。
默认值来源:中国最高人民法院诉讼文书样式模版 v2020(6 份 .docx 实测提取,5/6 一致为准)。
用户覆写:用户可直接编辑 format-spec.md,或复制为 format-spec.<court-name>.md 并在 profile.md 的 format_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,期望:宋体)→ 已自动修复
━━━━━━━━━━━━━━━━━━━━