{"id":"law-to-markdown","name":"law-to-markdown","summary":"法定・規制文書(.txt/.docx/.pdf)をMarkdownに変換します。「法的条項をマークダウンに変換」または「pdf/docxをマークダウンに変換」のユーザー要望に適用されます。","body":"# Law To Markdown\n\n## 处理规则\n\n1. 输入为 `.txt`：直接转存为 `.md`。\n2. 输入为 `.pdf` / `.docx`：\n   - 先检查是否已安装 `mineru-ocr` skill。\n   - 未安装：提示先安装 `mineru-ocr`，安装地址：\n     `https://github.com/cat-xierluo/legal-skills/tree/main/skills/mineru-ocr`\n   - 已安装：优先调用 `mineru-ocr` 处理。\n   - 调用失败：先提示检查 `mineru-ocr` 配置/Token。\n   - 仅当用户明确同意时，才使用本地回退（`python-docx` / `pdfplumber`）。\n3. 第一阶段完成后默认执行第二阶段格式调整（仅格式，不改原文字符）：\n   - 由调用该 skill 的大模型先判断“法律/非法律”，并把结果传给脚本。\n   - 若调用方未传结果，则脚本使用硬规则自动识别（`--law-decision auto`）。\n   - 法律名称 `#`\n   - 编/分编 `##`\n   - 章 `###`\n   - 节 `####`\n   - 条 `#####`（仅“第X条”为标题；`第X条【条标】`整行为标题不拆）\n   - 款/项/目无标题\n   - 项、目按标记换行\n   - 清理多余空格：去行尾空格、去行首 ASCII 空格、去正文行首全角缩进、规范标题后的空格\n4. 若识别为明显非法律文本（如 GB/标准类文档），第二阶段明确拒绝：`Stage2: rejected (non-law-document)`。\n5. 若第二阶段未识别法律结构或保真校验失败，则自动 no-op，不改文本。\n6. 默认执行第三阶段检查（双子阶段，硬门槛）：\n   - Stage3-A：校验 `stage2` 相对 `stage1` 的文字内容准确性（去标题符号与空白后字符流必须一致）\n   - Stage3-B：校验结构效果（结构层级、条标题规则、非法律策略、空格规范、项/目换行）\n   - 任一失败触发自动重走，最多 2 次；仍失败默认报错退出\n\n## 二阶段识别参数\n\n- `--law-decision law`：调用方已判定为法律文本，直接按法律结构优化。\n- `--law-decision non-law`：调用方已判定为非法律文本，阶段二直接拒绝。\n- `--law-decision auto`：不传判定时的默认模式，使用脚本内硬规则。\n\n## 三阶段参数\n\n- `--skip-stage3-check`：跳过第三阶段检查（默认不跳过）。\n- `--stage3-max-retries`：失败后自动重走次数，默认 `2`。\n- `--stage3-strict` / `--no-stage3-strict`：\n  - 默认严格模式（失败即报错退出）\n  - 非严格模式仅输出报告，不阻断流程\n- `--artifact-level minimal|standard|debug`：\n  - `minimal`（默认）：面向交付，输出最少\n  - `standard`：保留过程文件（`stage1/stage2/stage3-check`）便于排查\n  - `debug`：保留全部过程产物（包含调试信息）\n\n## 输出规则\n\n- 默认输出到输入文件同目录的 `markdown/` 子目录，并按输入文件名创建独立目录：\n  - `markdown/<文件名>/`\n- 默认（`--artifact-level minimal`）输出：\n  - `<原文件名>+审核报告.md`（详细过程和结论）\n  - `<原文件名>+最终成果.md`（仅法律文本且审核通过时生成）\n- 非法律文档（如 GB/标准类）：\n  - 结论为“拒绝处理”\n  - 仅输出 `<原文件名>+审核报告.md`\n  - 不输出 `<原文件名>+最终成果.md`\n- 审核未通过时会自动保留过程文件用于排查：\n  - `<文件名>.stage1.md`\n  - `<文件名>.stage2.md`\n  - `<文件名>.stage3-check.md`\n- 若需更多产物可切换：\n  - `--artifact-level standard`：保留 `stage1/stage2/stage3-check`\n  - `--artifact-level debug`：保留全部调试产物\n- 可通过命令参数指定 `--out` 或 `--out-dir`。\n\n## 常用命令\n\n```bash\npython3 law-to-markdown/scripts/law_to_markdown.py \"input.txt\"\npython3 law-to-markdown/scripts/law_to_markdown.py \"input.docx\"\npython3 law-to-markdown/scripts/law_to_markdown.py \"input.pdf\"\n```\n\n用户明确同意回退时：\n\n```bash\npython3 law-to-markdown/scripts/law_to_markdown.py \"input.docx\" --allow-fallback\npython3 law-to-markdown/scripts/law_to_markdown.py \"input.pdf\" --allow-fallback\n```","author":"@anbeime","ownerProfile":null,"authorContacts":null,"sourceUrl":"https://github.com/anbeime/skill/tree/main/skills/legal-assistant-skills-main/law-to-markdown","license":"Apache-2.0","category":"document","lang":"multi","tokens":1155,"stars":0,"calls30d":1,"claimed":false,"visibility":"public","origin":"crawler","version":"0.1.0","createdAt":"2026-08-22","updatedAt":"2026-08-22","files":[{"path":"agents/openai.yaml","size":178,"sha256":"49a2ed7e6467b6fd595343f6aa451828f8b395f5faa5a553f721284cdfd8420b"},{"path":".gitignore","size":37,"sha256":"af32d2261e191c3304d5525d50c3c334b2dfedad1a014e899a68bc66a2820c67"},{"path":"LICENSE.txt","size":11357,"sha256":"c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4"},{"path":"scripts/cn_law_normalizer.py","size":9783,"sha256":"35e7d5625e599451f2028a5633e6800bed7de1abe3ce66935a75ca42139a6fcb"},{"path":"scripts/law_to_markdown.py","size":31475,"sha256":"5739e3f031a311ab4bf5ee77a00a80990bc8927cc4cbd9c7634fcd553988b5ef"},{"path":"scripts/requirements.txt","size":38,"sha256":"033e38d28da389875f533444e80084665c2d1cbb6bdc9c46e31ca21729804062"},{"path":"scripts/stage3_checker.py","size":15482,"sha256":"22f99cf452c06c7327a814bd9e3f12bb8fda02eb1f94ab74265ee39b00a64f99"}],"requires":{"mcp":[],"tools":[]},"safety":{"flags":[],"scannedAt":"2026-08-22","hasScripts":true,"networkEndpoints":[]}}