AgentSkillsCN

addlaws

自动化格式化并添加中国法律到 VuePress 法律库。支持批量处理,并通过 LAWS_PROGRESS.md 进行进度跟踪。

SKILL.md
--- frontmatter
name: addlaws
description: "自动化格式化并添加中国法律到 VuePress 法律库。支持批量处理和通过 LAWS_PROGRESS.md 进行进度跟踪。"
allowed-tools: [Read, Write, Edit, Glob, Grep, Bash]
license: MIT
source: https://github.com/justlaws/just-laws

录入法律技能

你是一个专业的法律收录助手,负责将中国法律自动添加到 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(法律简称)

版本比较方法

  1. 从原文文件名提取日期(如 中华人民共和国种子法_20211224.md2021年12月24日
  2. 读取已收录法律 md 文件的立法记录
  3. 提取立法记录中的最后一条日期(最新的修订日期)
  4. 比较两个日期

示例

code
原文文件名:中华人民共和国种子法_20211224.md
原文日期:2021年12月24日

已收录文件立法记录最后一条:
根据2021年12月24日第十三届全国人民代表大会常务委员会...修正
提取日期:2021年12月24日

比较:日期相同或更旧 → 不处理
     日期更新 → 执行替换

已存在处理

  • 如果原文日期相同或更旧:跳过该法律收录并记录
  • 如果原文日期更新:备份旧文件(.old)并替换,保持原分类不变

步骤 3:读取并分析结构

.temp/laws_md/ 查找文件名包含法律名称的 md 文件

分析结构

  • 检查是否有"第一编、第二编"等结构
  • 检查是否有"第一章、第二章"等二级标题(##)
  • 统计条文数量(搜索 "**第")

判断文件类型

类型结构特征处理方式Frontmatter示例
A无任何章节标题单个 README.md❌ 不需要国旗法
B仅有章/节(##)单个 README.mdsidebar: auto种子法
C有编/章节结构多个 md 文件部分文件需要民法典、刑法

步骤 4:格式化并创建文件

通用格式化规则(所有类型适用)

参考示例种子法

  1. 立法记录

    • 每条单独成行
    • 记录间必须空行(关键!)
    • 删除中文与数字间空格
    • 不能包含全角括号 ()
  2. 章节标题

    • 章:## 第一章 总则(中文空格  
    • 节:### 第一节 一般规定
  3. 条号**第一条** (加粗+中文空格)

  4. 空行规则所有元素之间必须有空行(最重要)

  5. 数字格式:数字与中文之间不要有空格(如 2021年12月24日,不是 2021 年 12 月 24 日

类型 A:无章节法律(如国旗法)

参考示例国旗法

markdown
# 中华人民共和国{法律名称}

{立法修法记录 - 每条记录单独一行,记录间有空行}

**第一条** 条文内容...

**第二条** 条文内容...

类型 A 特殊规则

  • 不需要 frontmatter
  • 不需要 sidebar: auto
  • 其他遵循通用格式化规则(空行、立法记录格式等)

类型 B:有章节法律(如种子法)

参考示例种子法

markdown
---
sidebar: auto
---

# 中华人民共和国{法律名称}

{立法修法记录 - 每条记录单独一行,记录间有空行}

## 第一章 总则

**第一条** 条文内容...

类型 B 特殊规则

  • 需要添加 frontmatter:sidebar: auto
  • 其他遵循通用格式化规则

类型 C:有编结构法律(如民法典、刑法)

参考示例

处理方式

  1. 拆分文件

    • README.md(封面页:法律标题 + 立法记录)
    • 01-general-principles.md(第一编)
    • 02-{英文名称}.md(第二编)
    • 03-{英文名称}.md(第三编)
    • ...(其他编)
    • 00-supplementary.md(附则,如有)
  2. README.md 格式(封面页):

    markdown
    ---
    next: /{分类}/{英文名称}/01-general-principles.md
    ---
    
    # 中华人民共和国{法律名称}
    
    {立法修法记录}
    

    注意:README.md 只包含标题和立法记录,不包含章节和条文

  3. 第一编的格式

    markdown
    ---
    prev: /{分类}/{英文名称}/
    ---
    
    # 第一编 总则
    
    ### 第一章 基本规定
    
    **第一条** 条文内容...
    
  4. 其他编的格式(第二编及以后):

    markdown
    # 第二编 XXX
    
    ### 第一章 XXX
    
    **第X条** 条文内容...
    

    注意:第二编及以后的文件 不需要 frontmatter

  5. 标题级别

    • 编标题使用 # (一级标题)
    • 章标题使用 ## (二级标题)
    • 节标题使用 ### (三级标题)
  6. 文件命名:使用数字 + 英文

    • 第一编: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,在法律列表中添加:

markdown
[{法律简称}](../{分类}/{英文名称}/)

示例:在 docs/category/economic.md 中添加:

markdown
[种子法](../economic/seed-law/)

注意:链接末尾需要加 /

5.2 配置 sidebar(仅类型 C:有编结构的法律)

编辑 docs/.vuepress/config.js,在 sidebar 对象中添加:

javascript
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

参考示例

步骤 6:更新进度

编辑 LAWS_PROGRESS.md

  • 法律状态:未收录✅ 已收录
  • 分类进度:更新分子和百分比
  • 总计进度:更新顶部和底部统计
  • 统计表格:更新对应分类进度

步骤 7:提交代码

bash
# 类型 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 工具按照格式要求创建格式化文件

最常见错误(必读!)

  1. 空行遗漏:所有元素之间必须有空行(立法记录、章节、条文之间)
  2. 全角括号:立法记录中不能包含 ()(容易从原文复制过来)
  3. Frontmatter 错误:无章节法律不需要 frontmatter,有章节法律需要 sidebar: auto
  4. 链接路径:category 链接末尾必须有 /,链接中不能有空格或中文

Frontmatter 快速参考

法律类型文件Frontmatter
无章节(如国旗法)README.md❌ 不需要
有章节(如种子法)README.mdsidebar: auto
有编结构(如民法典)README.mdnext: 01-general-principles.md
有编结构(如民法典)第一编prev: ../
有编结构(如民法典)其他编❌ 不需要

文件结构判断流程

code
读取原始 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%)