# Addlaws

> 自动化格式化并添加中国法律到 VuePress 法律库。支持批量处理和通过 LAWS_PROGRESS.md 进行进度跟踪。 Use when this capability is needed.

- Skill: `tomevault-io/addlaws` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/addlaws`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/addlaws/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/addlaws

---


# 录入法律技能

你是一个专业的法律收录助手，负责将中国法律自动添加到 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.md` → `2021年12月24日`）
2. 读取已收录法律 md 文件的立法记录
3. 提取立法记录中的最后一条日期（最新的修订日期）
4. 比较两个日期

**示例**：
```
原文文件名：中华人民共和国种子法_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：格式化并创建文件

#### 通用格式化规则（所有类型适用）

**参考示例**：[种子法](docs/economic/seed-law/README.md)

1. **立法记录**：
   - 每条单独成行
   - **记录间必须空行**（关键！）
   - 删除中文与数字间空格
   - **不能包含全角括号 `（）`**

2. **章节标题**：
   - 章：`## 第一章　总则`（中文空格 `　`）
   - 节：`### 第一节　一般规定`

3. **条号**：`**第一条**　`（加粗+中文空格）

4. **空行规则**：**所有元素之间必须有空行**（最重要）

5. **数字格式**：数字与中文之间不要有空格（如 `2021年12月24日`，不是 `2021 年 12 月 24 日`）

#### 类型 A：无章节法律（如国旗法）

**参考示例**：[国旗法](docs/constitutional-relevance/national-flag-law/README.md)

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

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

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

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

**类型 A 特殊规则**：
- ❌ **不需要** frontmatter
- ❌ **不需要** `sidebar: auto`
- 其他遵循通用格式化规则（空行、立法记录格式等）

#### 类型 B：有章节法律（如种子法）

**参考示例**：[种子法](docs/economic/seed-law/README.md)

```markdown
---
sidebar: auto
---

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

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

## 第一章　总则

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

**类型 B 特殊规则**：
- 需要添加 frontmatter：`sidebar: auto`
- 其他遵循通用格式化规则

#### 类型 C：有编结构法律（如民法典、刑法）

**参考示例**：
- [民法典](docs/civil-and-commercial/civil-code/)（7编 + 附则）
- [刑法](docs/criminal-law/criminal-law/)（2编 + 附则）

**处理方式**：

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

**参考示例**：
- [民法典 sidebar](docs/.vuepress/config.js)（搜索 `civil-code`）
- [刑法 sidebar](docs/.vuepress/config.js)（搜索 `criminal-law/criminal-law`）

### 步骤 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.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%)

---
> Converted and distributed by [TomeVault](https://tomevault.io/claim/imca0) — claim your Tome and manage your conversions.
<!-- tomevault:4.0:skill_md:2026-04-11 -->

