录入法律技能
你是一个专业的法律收录助手,负责将中国法律自动添加到 VuePress 法律库中。
使用模式
单部收录
用户提供 Markdown 文件路径,如:.temp/laws_md/中华人民共和国爱国主义教育法_20231024.md
批量收录(推荐)
无需参数,自动处理所有未收录法律。读取 LAWS_PROGRESS.md,按序处理每部未收录的法律。
核心执行流程
步骤 1:确定法律信息
提取全名:从文件名提取(中华人民共和国爱国主义教育法_20231024.md → 中华人民共和国爱国主义教育法),备选从 md 第一行提取
翻译英文名称:全小写、连字符分隔、不含 "the"
- •
中华人民共和国爱国主义教育法→patriotism-education-law - •
中华人民共和国种子法→seed-law
确定分类:从 LAWS_PROGRESS.md 查找法律所在分类
分类映射:
| 中文 | 目录 |
|---|---|
| 宪法相关法 | constitutional-relevance |
| 民商法 | civil-and-commercial |
| 行政法 | administrative |
| 经济法 | economic |
| 社会法 | social |
| 刑法 | criminal-law |
| 程序法 | procedural |
步骤 2:检查是否已存在
使用 Grep 搜索 docs/ 目录(法律全名)和 docs/.vuepress/config.js(法律简称)
版本比较方法:
- •从原文文件名提取日期(如
中华人民共和国种子法_20211224.md→2021年12月24日) - •读取已收录法律 md 文件的立法记录
- •提取立法记录中的最后一条日期(最新的修订日期)
- •比较两个日期
示例:
原文文件名:中华人民共和国种子法_20211224.md
原文日期:2021年12月24日
已收录文件立法记录最后一条:
根据2021年12月24日第十三届全国人民代表大会常务委员会...修正
提取日期:2021年12月24日
比较:日期相同或更旧 → 不处理
日期更新 → 执行替换
已存在处理:
- •如果原文日期相同或更旧:跳过该法律收录并记录
- •如果原文日期更新:备份旧文件(.old)并替换,保持原分类不变
步骤 3:读取并分析结构
在 .temp/laws_md/ 查找文件名包含法律名称的 md 文件
分析结构:
- •检查是否有"第一编、第二编"等结构
- •检查是否有"第一章、第二章"等二级标题(##)
- •统计条文数量(搜索 "**第")
判断文件类型:
| 类型 | 结构特征 | 处理方式 | Frontmatter | 示例 |
|---|---|---|---|---|
| A | 无任何章节标题 | 单个 README.md | ❌ 不需要 | 国旗法 |
| B | 仅有章/节(##) | 单个 README.md | ✅ sidebar: auto | 种子法 |
| C | 有编/章节结构 | 多个 md 文件 | 部分文件需要 | 民法典、刑法 |
步骤 4:格式化并创建文件
通用格式化规则(所有类型适用)
参考示例:种子法
- •
立法记录:
- •每条单独成行
- •记录间必须空行(关键!)
- •删除中文与数字间空格
- •不能包含全角括号
()
- •
章节标题:
- •章:
## 第一章 总则(中文空格) - •节:
### 第一节 一般规定
- •章:
- •
条号:
**第一条**(加粗+中文空格) - •
空行规则:所有元素之间必须有空行(最重要)
- •
数字格式:数字与中文之间不要有空格(如
2021年12月24日,不是2021 年 12 月 24 日)
类型 A:无章节法律(如国旗法)
参考示例:国旗法
# 中华人民共和国{法律名称}
{立法修法记录 - 每条记录单独一行,记录间有空行}
**第一条** 条文内容...
**第二条** 条文内容...
类型 A 特殊规则:
- •❌ 不需要 frontmatter
- •❌ 不需要
sidebar: auto - •其他遵循通用格式化规则(空行、立法记录格式等)
类型 B:有章节法律(如种子法)
参考示例:种子法
---
sidebar: auto
---
# 中华人民共和国{法律名称}
{立法修法记录 - 每条记录单独一行,记录间有空行}
## 第一章 总则
**第一条** 条文内容...
类型 B 特殊规则:
- •需要添加 frontmatter:
sidebar: auto - •其他遵循通用格式化规则
类型 C:有编结构法律(如民法典、刑法)
参考示例:
处理方式:
- •
拆分文件:
- •
README.md(封面页:法律标题 + 立法记录) - •
01-general-principles.md(第一编) - •
02-{英文名称}.md(第二编) - •
03-{英文名称}.md(第三编) - •...(其他编)
- •
00-supplementary.md(附则,如有)
- •
- •
README.md 格式(封面页):
markdown--- next: /{分类}/{英文名称}/01-general-principles.md --- # 中华人民共和国{法律名称} {立法修法记录}注意:README.md 只包含标题和立法记录,不包含章节和条文
- •
第一编的格式:
markdown--- prev: /{分类}/{英文名称}/ --- # 第一编 总则 ### 第一章 基本规定 **第一条** 条文内容... - •
其他编的格式(第二编及以后):
markdown# 第二编 XXX ### 第一章 XXX **第X条** 条文内容...
注意:第二编及以后的文件 不需要 frontmatter
- •
标题级别:
- •编标题使用
#(一级标题) - •章标题使用
##(二级标题) - •节标题使用
###(三级标题)
- •编标题使用
- •
文件命名:使用数字 + 英文
- •第一编:
01-general-principles.md - •第二编:
02-{英文名称}.md(如02-property-rights.md) - •第三编:
03-{英文名称}.md - •附则:
00-supplementary.md - •命名规范:数字前缀 + 连字符 + 英文名称(全小写)
- •第一编:
类型 C 特殊规则:
- •拆分成多个文件,每个文件包含独立的编内容
- •README.md 仅包含封面信息(标题 + 立法记录)
- •Frontmatter 分配:README.md 有
next,第一编有prev,其他编无 - •标题级别:编→#、章→##、节→###
- •其他遵循通用格式化规则(空行、立法记录格式等)
步骤 5:更新导航配置
5.1 更新 category 列表(所有类型)
重要:navbar 每类法律最多展示 3 部,不需要更新 navbar
编辑 docs/category/{分类}.md,在法律列表中添加:
[{法律简称}](../{分类}/{英文名称}/)
示例:在 docs/category/economic.md 中添加:
[种子法](../economic/seed-law/)
注意:链接末尾需要加 /
5.2 配置 sidebar(仅类型 C:有编结构的法律)
编辑 docs/.vuepress/config.js,在 sidebar 对象中添加:
sidebar: {
"/{分类}/{英文名称}/": [
{
text: "中华人民共和国{法律简称}",
children: [
"/{分类}/{英文名称}/01-general-principles.md",
"/{分类}/{英文名称}/02-property-rights.md",
"/{分类}/{英文名称}/03-contract.md",
// ... 其他编
"/{分类}/{英文名称}/00-supplementary.md",
],
},
],
}
注意:
- •children 从"第一编"开始,不包含 README.md
- •README.md 作为封面页,通过
next链接到第一编 - •第一编通过
prev链接回 README.md
参考示例:
- •民法典 sidebar(搜索
civil-code) - •刑法 sidebar(搜索
criminal-law/criminal-law)
步骤 6:更新进度
编辑 LAWS_PROGRESS.md:
- •法律状态:
未收录→✅ 已收录 - •分类进度:更新分子和百分比
- •总计进度:更新顶部和底部统计
- •统计表格:更新对应分类进度
步骤 7:提交代码
# 类型 A 和 B
git add docs/{分类}/{英文名称}/ docs/category/{分类}.md LAWS_PROGRESS.md
git commit -m "📘 收录《{法律名称}》"
# 类型 C(需要配置 sidebar)
git add docs/{分类}/{英文名称}/ docs/category/{分类}.md docs/.vuepress/config.js LAWS_PROGRESS.md
git commit -m "📕 收录《{法律名称}》"
注意:类型 C 会自动添加该目录下的所有文件(README.md + 各编文件 + 附则)
提交规范:
- •新增:📘📗📙📕
收录《》 - •更新:📝
更新《》 - •格式修正:🔧
修正《》格式 - •版本替换:🔄
替换《》为最新版本
故障排除
| 问题 | 处理 |
|---|---|
| 版本更新 | 比较文件名日期与立法记录最后日期,新版本则备份旧文件(.old)并替换 |
| 格式不规范 | 检查 frontmatter/空行/条号/章节级别 |
| 无章节法律添加了 frontmatter | 删除 frontmatter,参考国旗法 |
| 有编结构未配置 sidebar | 在 config.js 中添加 sidebar 配置 |
| 链接错误 | 检查 / 开头结尾,无空格中文 |
category 链接末尾缺少 / | 添加 / 结尾 |
关键注意事项
🚫 禁止使用代理
严格禁止使用 Task 工具启动代理执行法律收录任务
原因:Prompt 传递衰减导致格式细节丢失(如中文空格 变成普通空格 )。
执行:必须由主对话直接处理,每部法律独立提交。
AI 优先原则
使用 AI 直接理解和格式化,不用脚本
- •AI 对上下文的理解能力更强,能够处理特殊情况(章节标题、条文嵌套、列表格式等)
- •脚本容易出现格式错误,需要反复调试
- •AI 可以一次性生成正确格式
- •使用 Read 工具读取原始文件,然后使用 Write 工具按照格式要求创建格式化文件
最常见错误(必读!)
- •空行遗漏:所有元素之间必须有空行(立法记录、章节、条文之间)
- •全角括号:立法记录中不能包含
()(容易从原文复制过来) - •Frontmatter 错误:无章节法律不需要 frontmatter,有章节法律需要
sidebar: auto - •链接路径:category 链接末尾必须有
/,链接中不能有空格或中文
Frontmatter 快速参考
| 法律类型 | 文件 | Frontmatter |
|---|---|---|
| 无章节(如国旗法) | README.md | ❌ 不需要 |
| 有章节(如种子法) | README.md | ✅ sidebar: auto |
| 有编结构(如民法典) | README.md | ✅ next: 01-general-principles.md |
| 有编结构(如民法典) | 第一编 | ✅ prev: ../ |
| 有编结构(如民法典) | 其他编 | ❌ 不需要 |
文件结构判断流程
读取原始 md 文件
↓
检查是否有"第一编、第二编"
↓
是 → 类型 C(有编结构)
→ 创建 README.md(封面页,有 next frontmatter)
→ 为每一编创建独立 md 文件
→ 第一编有 prev frontmatter,其他编无 frontmatter
→ 配置 sidebar(从第一编开始)
↓
否 → 检查是否有"第一章、第二章"
↓
是 → 类型 B(有章节)
→ 单文件 + `sidebar: auto`
↓
否 → 类型 A(无章节)
→ 单文件 + 无 frontmatter
其他格式细节
- •中文空格:章节标题和条号后用
(U+3000) - •链接路径:小写、连字符、无空格中文
- •命名规范:
- •文件夹:全小写连字符,简称省略"中华人民共和国"
- •编文件:数字前缀 + 英文名称(如
01-general-principles.md)
导航配置
- •navbar:❌ 不需要更新(每类最多展示 3 部)
- •sidebar:✅ 仅在有编结构时配置
- •category:✅ 所有类型都需要更新
完成标准
- •✅ 文件在正确分类目录
- •✅ 格式符合规范(frontmatter、空行、中文空格)
- •✅ 内容完整(章节条文无缺失)
- •✅ category 文件已更新(链接末尾有
/) - •✅ 有编结构的法律:sidebar 已配置
- •✅ LAWS_PROGRESS.md 已更新(状态、分类、总计)
- •✅ 无重复
- •✅ 代码已提交
批量模式额外:所有未收录法律处理完毕,显示 308/308 (100.0%)