# Law Firm Document Filler

> 律所委托材料自动填写工具。用于将律所标准文书模板（.docx）转换为带占位符的模板， 并根据当事人信息自动填充生成完整的委托材料。 触发词：授权委托书、委托代理合同、律师事务所函、风险告知书、谈话笔录、批办表、 监督表、委托材料、律所文书、自动填写委托材料、生成委托书、模板制作、docx填写。 This skill should be used when a lawyer or law firm staff needs to: (1) convert a law firm document template (.docx) into a fillable template with placeholders, (2) automatically fill in client/case information into those templates to produce final documents.

- Skill: `cslawyer1985/law-firm-document-filler` (Agent Skill, multi-file: 6 files)
- Install (CLI): `npx skillmds@latest add cslawyer1985/law-firm-document-filler`
- Raw SKILL.md: https://api.skillmd.com/api/skills/cslawyer1985/law-firm-document-filler/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: cslawyer1985 (https://skillmd.com/u/cslawyer1985)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/cslawyer1985/law-firm-document-filler

---


# 律所委托材料自动填写

## 概述

本 Skill 实现律所委托材料的自动化填写，分为两个阶段：

1. **模板创建**：接收律所标准文书 .docx 文件，分析识别待填区域，替换为标准占位符 `{{FIELD_NAME}}`，保存到 `assets/templates/`。
2. **文书填写**：接收当事人/案件信息，将占位符替换为实际内容，输出完整 .docx 文书，保留原始格式和排版。

## 常见文书类型

以下为律所常用的委托材料，所有模板均保存于 `assets/templates/`：

| 文书 | 文件名 | 说明 |
|------|--------|------|
| 授权委托书 | 授权委托书.docx | 当事人授权律师代理 |
| 委托代理合同（通用） | 委托代理合同_通用.docx | 一般代理合同 |
| 委托代理合同（风险代理） | 委托代理合同_风险代理.docx | 风险代理合同 |
| 律师事务所函 | 律师事务所函.docx | 律所致法院/对方函件 |
| 风险告知书 | 风险告知书.docx | 诉讼风险提示 |
| 谈话笔录 | 谈话笔录.docx | 律师谈话记录 |
| 律所批办表 | 律所批办表.docx | 内部审批表 |
| 服务质量监督表 | 服务质量监督表.docx | 服务质量跟踪 |

## 阶段一：模板创建

当用户发送一份 .docx 格式的律所文书时，进入模板创建流程。

### 步骤 1：读取文书

使用 `python-docx` 读取 .docx 文件，提取全部文本内容和表格结构。

```python
from docx import Document
doc = Document('path/to/document.docx')
```

### 步骤 2：分析待填区域

通读文书全文，识别所有需要填写的区域。常见可识别模式：

- **下划线空白**：连续的下划线字符，如 `______`、`________`
- **括号空白**：`（　　）`、`(     )`、`【　　】` 中的空白
- **提示性文字**：如"甲方：______"、"委托人（签字）："之后的空白
- **表格空白单元格**：表格中明显需要填写的空白单元格
- **日期位置**：`年   月   日` 格式
- **金额位置**：`人民币          元`
- **选择项**：`□是  □否`、`诉讼/仲裁` 等可选内容

### 步骤 3：确认占位符命名

将识别到的待填区域向用户展示，请求确认。使用以下格式：

```
识别到以下待填字段：

1. 委托人姓名/名称 → {{委托人姓名}}
2. 委托人身份证号/统一社会信用代码 → {{委托人证件号}}
3. 委托人住址 → {{委托人住址}}
4. ...
```

**占位符命名规范**：使用 `{{中文描述}}` 格式，描述简洁明了，优先使用法律文书中的原词。

常见字段参考 `references/field-mapping.md`。

### 步骤 4：生成模板文件

确认后在原 .docx 中将待填内容替换为 `{{FIELD_NAME}}` 占位符，保存到 `assets/templates/` 目录。

替换时注意：
- **保留原有格式**：字体、字号、加粗、下划线等格式不变
- **处理跨 run 文本**：占位符可能跨越多个 XML run，需要先合并再替换
- **表格单元格**：表格中的字段同样替换
- **段落对齐**：不改变原有对齐方式

对每份模板，同时生成一个**字段清单**记录在 `assets/templates/README.md` 中，格式：

```markdown
## 授权委托书.docx
| 占位符 | 说明 | 示例 |
|--------|------|------|
| {{委托人姓名}} | 自然人或法人名称 | 张三 / XX有限公司 |
| {{委托人证件号}} | 身份证号或统一社会信用代码 | 310XXXXXXXXXXXXXXX |
| ... | ... | ... |
```

### 步骤 5：更新模板索引

每新增一个模板，更新 `assets/templates/README.md` 中的模板索引。

## 阶段二：文书填写

当用户提供当事人/案件信息，要求填写某份或某几份文书时，进入填写流程。

### 步骤 1：确认目标文书

用户可能说：
- "帮我填一份授权委托书" → 定位 `assets/templates/授权委托书.docx`
- "这批案子要全套材料都填了" → 全部模板
- "填委托代理合同和律所函" → 指定模板

若用户未明确指定，先询问需要填写哪些文书。

### 步骤 2：收集填写信息

根据目标文书的字段清单，收集所需信息。参考 `references/field-mapping.md` 了解各字段含义。

信息收集方式：
- **结构化发送**：用户可能一次性提供所有信息
- **对话式收集**：逐个字段向用户确认
- **从上下文推断**：如果会话中已有相关信息，直接复用

必须收集的通用基础信息：

| 字段 | 说明 |
|------|------|
| {{委托人姓名}} | 当事人（自然人/法人）名称 |
| {{委托人证件号}} | 身份证号或统一社会信用代码 |
| {{委托人住址}} | 住所/注册地址 |
| {{委托人联系方式}} | 电话 |
| {{案由}} | 案件性质（如"民间借贷纠纷"） |
| {{委托事项}} | 代理范围（如"一审诉讼代理"） |
| {{管辖机关}} | 受理法院/仲裁机构 |
| {{律所名称}} | 律师事务所全称 |
| {{代理律师}} | 承办律师姓名 |
| {{律师执业证号}} | 律师执业证编号 |
| {{日期}} | 签署日期 |

### 步骤 3：执行填写

使用 `scripts/fill_docx.py` 脚本替换占位符。

```bash
python3 scripts/fill_docx.py \
  --template assets/templates/授权委托书.docx \
  --output outputs/授权委托书_张三.docx \
  --fields '{"委托人姓名":"张三","委托人证件号":"310XXXXXXXXXXXXXXX",...}'
```

或使用 JSON 字段文件：

```bash
python3 scripts/fill_docx.py \
  --template assets/templates/授权委托书.docx \
  --output outputs/授权委托书_张三.docx \
  --fields-file /tmp/fields.json
```

### 步骤 4：输出与检查

填写完成后：
1. 将生成的 .docx 输出到工作目录
2. 向用户简要汇报填写了哪些文书和关键信息
3. 提醒用户核对填写内容的准确性（法律文书建议人工复核）

## 脚本说明

### fill_docx.py

核心填充脚本，详见 `scripts/fill_docx.py`。功能：
- 读取模板 .docx 文件
- 搜索所有 `{{FIELD_NAME}}` 占位符（支持跨 run 搜索）
- 用实际值替换占位符，保留原始格式
- 处理正文段落和表格单元格
- 输出新 .docx 文件

### 依赖

需要安装 `python-docx`：

```bash
pip install python-docx
```

## 各文书填写要点

各文书模板的占位符清单和填写说明见 `assets/templates/README.md`。

### 首次谈话笔录

该模板有 5 个占位符，外加 3 项固定默认值。

**固定默认值（无需用户提供）**：
- 谈话地点 = `北京天驰君泰（扬州）律师事务所`
- 法律援助选择 = `不申请法律援助`
- 页脚律所信息（名称、地址、电话）已内置，保持不变

**填写流程**（智能提取 + 按需确认）：

用户调用本 skill 时应一并发送对话记录或起诉状/答辩状等文书，skill 据此自动完成以下流程。

**智能预提取（减少提问）：**

在开始提问前，先扫描用户发送的所有内容，尝试自动提取以下信息：

| 可提取内容 | 提取来源 | 提取后处理 |
|-----------|---------|-----------|
| 委托人姓名/名称 | 对话当事人自我介绍、起诉状原告/被告 | 直接填入，无需确认 |
| 委托人身份信息（身份证、统一社会信用代码、地址） | 对话、起诉状 | 直接填入 |
| 对方当事人信息 | 对话、起诉状 | 直接填入 |
| 委托人诉讼地位（原告/被告） | 起诉状"原告""被告"标注、对话"起诉/被诉" | 直接判断，无需询问 |
| 案由 | 起诉状/答辩状标题、对话 | 提取后反馈确认 |
| 管辖机关 | 起诉状"此致 XX法院"、传票 | 提取后反馈确认 |
| 代理费金额、收费方式 | 对话、委托合同、起诉状诉讼请求中的"律师费" | 提取后反馈确认，无需重新询问 |
| 法定代表人信息 | 对话、起诉状、工商信息 | 直接填入 |
| 事实与理由 | 对话、起诉状/答辩状正文 | 直接作为谈话内容基础 |

**提取原则：已能确定的直接填入，仅模糊或缺失的才询问用户。**

1. 仅询问内容中无法提取的必填信息：

通过文字提问（不弹选项）：

- **代理律师和电话仅首次使用时询问**，之后默认使用上一次的值。若用户输入的内容中指定了不同律师或电话，或以"改律师为""律师换成"等方式明确要求更换，则以新输入为准

首次使用或更换时询问：
- 「本次代理的律师是哪位？（支持两位律师，如"朱彬、陈志宇"）」→ 填入 `{{代理律师}}`，并存入默认
- 「律师的联系电话是多少？」→ 填入 `{{律师电话}}`（全局复用），并存入默认

后续使用直接复用默认值，不再重复询问。

2. 根据已提取 + 用户补充的信息：
   - 从中提取当事人的姓名，若对话中未出现，则询问：「当事人的姓名？」→ 填入 `{{委托人姓名}}`
   - 若委托人为法人（有统一社会信用代码、"有限公司"等特征），提取法定代表人姓名和职务。若对话中未出现，则依次文字提问：
     - 「贵公司法定代表人（营业执照上登记的负责人）的姓名是？」
     - 「该法定代表人在公司的职务是？」
     → 自动填入起诉状/答辩状的法人身份信息中，并额外生成《法定代表人身份证明书》
   - **若委托人为自然人，则跳过法定代表人相关的一切提问和生成。**
   - 归纳生成 `{{谈话内容}}`
   - 识别对方当事人和纠纷类型，**生成建议案由**，反馈用户确认。案由仅指纠纷类型（如"民间借贷纠纷""买卖合同纠纷"），不包含对方名称。提供 1-2 个备选案由供用户选择 → 填入 `{{案由}}` 和 `{{案件对方及案由}}`（后者由 Skill 自动拼接为"对方名称+案由"格式）
   - 判断委托人诉讼地位：对话中出现"起诉""告""被告是谁""法院立案"等 → 默认原告（生成**民事起诉状**）；出现"被诉""应诉""他们起诉我"等 → 默认被告（生成**民事答辩状**）。必要时询问用户确认。起诉状与答辩状中，若当事人为法人则自动填入法定代表人信息
   - 识别受理法院/仲裁机构，**生成建议管辖机关**，反馈用户确认：「根据对话内容，建议管辖机关为：**XX区人民法院**，是否正确？」→ 填入 `{{管辖机关}}`
     - 若对话中未提及管辖机关，则询问用户：「本案的管辖法院/仲裁机构是？」
     - 用户可选择确认或自行输入

3. 收费方式与金额：
   - 若对话中提及代理费金额（如"代理费XX元"），提取后反馈用户确认：「根据对话内容，代理费金额为：**XX元**，是否正确？」
   - 若用户选择普通收费，确认金额后填入 `{{代理费金额}}`
   - 若用户选择风险代理，依次确认：
     - 收费模式（①纯风险 或 ②基础费+风险）→ `{{收费方式选择}}`
     - 风险服务费比例和支付条件 → `{{风险服务费比例}}` `{{风险服务费方案一}}`
     - 若选择②，还需询问基础服务费金额 → `{{基础服务费}}`
   - 若用户发送的起诉状/对话中已含律师费或代理费信息，自动提取并反馈确认，无误则直接填入，无需重新询问

**输出文件夹命名规范：**

所有生成文书统一存放在桌面文件夹 `~/Desktop/{委托人}与{对方}{案由}/` 下。例如：

- `~/Desktop/周明辉与扬州盛居装饰工程有限公司买卖合同纠纷/`
- `~/Desktop/扬州锐诚机械制造有限公司与泰州鑫盛精密配件有限公司承揽合同纠纷/`

文件夹名称由 Skill 在开始生成时自动创建，避免所有案件文件混在同一目录。

**提问规范：**

Skill 调用中的提问分两类，处理方式不同：

**类型 A：自由内容输入（律师姓名、电话、当事人姓名等）**

直接用文字提问，用户在对话中输入文本回答。例如：
> 本次代理的律师是哪位？（支持两位律师，如"朱彬、陈志宇"）

不要使用任何选项/按钮。用户在聊天框直接打字。

**类型 B：内容确认/方案选择（案由、管辖机关、收费方式等）**

使用 `AskUserQuestion`，每个选项必须有**实际内容**（建议值、备选方案），不允许出现空白或仅"自定义"字样的选项。

正确示例（案由确认）：
- 选项 1：扬州盛居装饰工程有限公司买卖合同纠纷（建议值）
- 选项 2：合同纠纷
- 选项 3：货款追索纠纷

用户可点击选项或选择"其他"输入自定义内容（"其他"由 UI 自动提供，不要自行添加）。

错误示例：仅提供"自定义"或"用户填写"作为唯一选项。

**{{谈话内容}} 的提取结构**（按顺序组织，使用阿拉伯数字编号）：
```
1. 案件基本情况：[简述案件起因和经过]
2. 当事人诉求：[当事人的核心诉求]
3. 关键事实和时间节点：[重要事实及时点]
4. 证据情况：[当事人已有证据和线索]
5. 律师分析及建议：[律师对案件的法律分析和建议]
6. 其他说明：[补充事项]
```

**提取注意事项**：
- 用客观第三人称叙述，使用"委托人"而非"你"、"我"
- 保留关键时间、金额、人名、地名等具体信息
- 去掉对话中的口语化表达，改为正式书面语言
- 律师的风险告知和建议部分可适当概括

## 注意事项

1. **格式保留**：Word 文档的占位符可能分散在多个 Run 中，替换时需合并处理
2. **表格支持**：很多律所文书使用表格布局，必须正确处理表格中的占位符
### 委托代理合同（普通/风险）

两份模板共用基础字段，风险版额外包含风险代理特有的费用结构字段。

**共用字段：**

| 占位符 | 说明 | 普通版 | 风险版 |
|--------|------|:---:|:---:|
| `{{委托人姓名}}` | 委托人名称 | ✓ | ✓ |
| `{{案件对方及案由}}` | 对方当事人+纠纷类型 | ✓ | ✓ |
| `{{代理律师}}` | 承办律师姓名 | ✓ | ✓ |
| `{{签署日期}}` | 签署日期 | ✓ | ✓ |

**普通版特有：**

| 占位符 | 说明 |
|--------|------|
| `{{代理费金额}}` | 固定金额代理费 |

**风险版特有：**

| 占位符 | 说明 |
|--------|------|
| `{{风险代理事项}}` | 委托的具体法律服务事项描述 |
| `{{争议标的}}` | 案件争议标的额 |
| `{{收费方式选择}}` | ①纯风险服务费 或 ②基础服务费+风险服务费 |
| `{{风险服务费方案一}}` | 方案①的具体费用标准和支付条件 |
| `{{风险服务费比例}}` | 风险服务费百分比 |
| `{{付款天数}}` | 实现利益后付款天数 |
| `{{基础服务费}}` | 方案②的基础服务费金额 |
| `{{风险服务费方案二}}` | 方案②的风险服务费标准和支付条件 |
| `{{合同期限}}` | 合同履行期限 |
| `{{合同份数}}` | 合同正本份数（默认2份） |

**自动选择逻辑：**

从对话中检测以下关键词自动判断使用哪份模板：
- **风险代理信号**：`风险代理`、`胜诉后付费`、`按比例收费`、`标的额百分比`、`成功后支付`、`半风险`
- **普通收费信号**：对话中明确提到固定金额代理费（如"代理费XX元"），且无风险代理相关表述

若对话中无明确收费信息，询问用户：「本案采用普通收费还是风险代理？普通收费一次性支付固定代理费，风险代理按实际回款比例收费。」

**重要：委托代理合同只输出一份。根据上述逻辑自动选择普通收费或风险代理，绝不两份同时输出。**

### 授权委托书

授权委托书包含一份基础信息 + 一份**块占位符**机制（支持多律师）。

| 占位符 | 说明 |
|--------|------|
| `{{委托人姓名}}` | 委托人 |
| `{{案件对方及案由}}` | 对方+案由 |
| `{{代理律师}}` | 律师姓名（支持多人，"朱彬、陈志宇"） |
| `{{律师电话}}` | 律师联系电话（同一值复用） |
| `{{委托期限}}` | 委托期限（默认"一审审理终结之日止"） |
| `{{签署日期}}` | 签署日期 |

**块占位符（自动展开）：**

| 占位符 | 行为 |
|--------|------|
| `{{代理律师_受托人声明}}` | 展开为 N 行（每位律师一行）："受托人：<name>，北京天驰君泰（扬州）律师事务所律师" |
| `{{代理律师_代理权限声明}}` | 展开为 N 行："受托人<name>律师，代理权限为：特别授权（...）" |
| `{{代理律师_联系方式声明}}` | 展开为 N 行："受托人：<name>，联系方式：<phone>" |

N = 代理律师字段用"、,，;；/"分隔后的名字数量。例如 `代理律师="朱彬、陈志宇"` 时，N=2，每个块占位符展开为 2 行（行内换行 `<w:br/>`）。

### 民事起诉状

民事起诉状由 Skill 根据案件信息自动生成。原告和被告身份支持自然人和法人两种格式，按照以下规则统一输出：

**自然人格式（{{原告信息}} / {{被告信息}}）：**
```
张三，男，1985年6月15日出生，居民身份证号码：31010119850615XXXX，汉族，住所地：上海市浦东新区XX路XX号，联系电话：138XXXXXXXX。
```

**法人格式（{{原告信息}} / {{被告信息}}）：**
```
上海XX有限公司，统一社会信用代码：91310115XXXXXXXXXX，住所地：上海市浦东新区XX路XX号，联系电话：021-XXXXXXXX。
法定代表人：李四。
```

Skill 在生成起诉状时自动判断：若对话中出现身份证号，按自然人格式；若出现统一社会信用代码或"法定代表人"，按法人格式。不需要的字段（如自然人不需要社会信用代码）自动省略。

| 占位符 | 说明 |
|--------|------|
| `{{原告信息}}` | 原告身份信息（自然人或法人格式，自动判断） |
| `{{被告信息}}` | 被告身份信息（格式同上） |
| `{{诉讼请求}}` | 诉讼请求（自动归纳为编号列表） |
| `{{事实与理由}}` | 案件事实与法律依据（从对话摘要生成） |
| `{{管辖机关}}` | 受理法院 |
| `{{签署日期}}` | 日期 |

### 民事答辩状

委托人作为被告时生成（替代起诉状）。格式与起诉状一致，身份信息填入规则相同（自然人/法人自动判断），角色互换：

- 答辩人（被告）= 委托人信息
- 被答辩人（原告）= 对方信息

| 占位符 | 说明 |
|--------|------|
| `{{被告信息}}` | 委托人身份信息（自然人或法人格式） |
| `{{原告信息}}` | 对方身份信息（格式同上） |
| `{{案件对方及案由}}` | 对方+案由（共用） |
| `{{答辩请求}}` | 答辩核心请求（如"驳回原告全部诉讼请求"） |
| `{{答辩意见正文}}` | 事实反驳与法律抗辩 |
| `{{管辖机关}}` | 受理法院 |
| `{{签署日期}}` | 日期 |

**起诉状与答辩状只生成一份，根据委托人诉讼地位自动选择。**

### 代理词

代理词由 Skill 根据案件信息和代理意见生成，格式已预置（开头、正文、结尾）。

| 占位符 | 说明 |
|--------|------|
| `{{委托人姓名}}` | 委托人名称（共用） |
| `{{代理律师}}` | 代理律师（共用） |
| `{{案件对方及案由}}` | 对方+案由（共用） |
| `{{代理意见正文}}` | 代理意见主体（从案件事实和法律分析生成） |
| `{{管辖机关}}` | 受理法院 |
| `{{签署日期}}` | 日期 |

### 办案小结

办案小结由 Skill 自动生成，**字数控制在 300 字以内**。内容结构：

1. 案件基本信息（当事人、案由、管辖法院）
2. 办案过程摘要（主要工作、关键节点）
3. 案件结果或阶段性进展
4. 简要总结

| 占位符 | 说明 |
|--------|------|
| `{{办案小结内容}}` | 自动生成的正文（≤300字） |
| `{{代理律师}}` | 承办律师（共用） |
| `{{签署日期}}` | 日期 |

3. **法律复核**：自动填写的文书建议当事人和律师双重核对后使用
4. **信息保密**：处理当事人隐私信息时注意保密，不在对话中完整展示敏感内容
5. **模板复用**：模板保存在 `assets/templates/`，打包后同事可直接使用

