标准文件格式校验技能
按 GB/T 1.1—2020 对标准化文件做合规校验,并在原文基础上给出修改建议标注。
何时使用
- 收到一份国标/行标/团标/企标草案,想快速找出不符合 GB/T 1.1—2020 的地方
- 想在送审前自查,得到一份"原文 + 标注 + 修改建议清单"的产出
- 想把同类规则批量套到不同草案中,要求规则库可扩展
何时不要使用
- 草案是扫描型 PDF / 图片中的标准(需要先 OCR)
- 草案是英文 ISO/IEC 标准(规则不同,需要换成 ISO/IEC Directives Part 2 规则库)
- 用户希望"自动 patch 原文件"——本技能只标注建议,不直接改写
工作流
- 结构识别:
scripts/check.py的detect_elements()自动识别封面、前言、范围、规范性引用文件、术语和定义、技术要素主体、附录的起止行号;支持# 1 范围与**1 范围**两种常见排版。 - 规则加载:从
references/rules.yaml加载所有规则项;每条带id / element / severity / check / target / pattern / suggestion。 - 逐项匹配:对每个目标范围逐行扫描;
present类"匹配即报",absent类"目标范围内未出现即报",regex_on类对行内运行正则。 - 标注渲染:在原文触发行末尾插入
<!-- [!RULE_ID|severity] -->,并在文件末尾追加"修改建议清单"Markdown 表格。 - 可选报告:传
--report时额外输出一份纯文本结构化报告(便于二次处理或归档)。
输入输出契约
输入
| 字段 | 要求 |
|---|---|
| 路径 | 本地绝对/相对路径均可 |
| 格式 | Markdown 文本 |
| 大小 | 建议 ≤ 5 万字符;超过请按章调用 |
> docx 输入请先走 tencent-local-office-edit 转为 markdown;
> PDF 输入请先走 pdf skill / OCR 转为 markdown。
输出
| 文件 | 内容 |
|---|---|
--output 标注版 |
原文 + 行内 <!-- [!RULE_ID|severity] --> 标注 + 末尾"修改建议清单" |
--report 报告版 |
统计摘要 + 按行号排序的逐项明细 |
命令
python scripts/check.py \
--rules references/rules.yaml \
--input examples/sample-input.md \
--output examples/sample-output.md \
--report examples/sample-output-report.md
依赖 PyYAML:
pip install pyyaml
严重程度等级
定义在 references/rules.yaml 的 severity 节中。规则条目只能使用下列取值:
| 取值 | 含义 |
|---|---|
error |
必须修改,否则不通过审查 |
warning |
建议修改,可能影响下游使用 |
info |
提示性建议,不阻塞审查 |
规则库扩展
新增一条规则,只需要在 references/rules.yaml 追加:
- id: my_new_rule
element: body # 命中哪个要素
description: "一句中文描述"
severity: warning # error / warning / info
check: present # present | absent | regex_on
target: body # cover | foreword | scope | normative_references | terms | body | annex | all
pattern: "正则表达式"
exception: ["例外关键词"] # 可省略
suggestion: "修改建议文本"
复用为其他起草规则
如果要套到 GB/T 1.2 / GB/T 1.3 / ISO/IEC Directives Part 2 等:
- 不改脚本:换一份 YAML 规则库即可(
pattern与suggestion字段重新填) - 改 SKILL.md 头部:把
base_standard/standard_year/description字段同步更新 - 改 README.md:标注新标准版本与适用范围
协作依赖
tencent-local-office-edit:把 docx 草案转为 markdownpdfskill + OCR:处理扫描型 PDFcn-national-standard-downloader:拉取 GB/T 1.1—2020 原文与起草说明
当前已知边界
absent类规则对"目标范围为空 vs 标题识别异常"的区分还比较粗;可在 detect_elements 上做强约束- 附录类型标识与标题是否"同一行"的判定较严格,下个版本加 warning 而非 error
- 跨语种并行校验(中英文标准互校)尚未支持
文件目录
gb-t-1-1-format-checker/
├── SKILL.md # 本文件
├── README.md # 开发者说明
├── references/
│ ├── rules.yaml # 权威规则库(YAML)
│ ├── check-rules.md # markdown 导览版(人读)
│ ├── element-catalog.md # 要素目录
│ └── severity-levels.md # 严重程度定义
├── examples/
│ ├── sample-input.md # 闭环测试样本
│ ├── sample-output.md # 模型真实校验产出
│ └── sample-output-report.md # 报告版(机器友好)
└── scripts/
└── check.py # 校验脚本