# Legal Diagram

> 当用户需要根据文档、粘贴文本、事项描述、流程、时间线、当事方关系图、义务关系图、公司结构、资金流向或合规工作流生成法律或涉法 Mermaid 图表时使用。触发词：“diagram this contract”（为这份合同绘制图表）、“visualise this deal/matter”（可视化这笔交易/这个事项）、“map the parties”（绘制当事方关系图）、“create a timeline of events”（创建事件时间线）、“make an org chart”（制作组织结构图）、“obligation checklist”（义务清单）、“export as HTML diagram”（导出为 HTML 图表）。不适用于通用非法律图表、纯平面设计、图像生成或法律咨询。

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

---


# /legal-diagram

独立技能：将法律材料转化为适合上下文场景的 Mermaid 图表，并可选择导出可下载的 HTML 图形。保留结构的 Python 引擎提取带类型的真实信息；指令驱动的 LLM 丰富化填补缺口；选择器选择图表类型；图表以原生方式生成。

## 路由门控

每个真实的图表请求都按此固定顺序运行：首次运行检查、摄取、构建模式门控、生成、报告门控。非图表意图在第 0 步短路退出。

三个人工门控 = 强制硬停点：门控 0（教程提示）、门控 A（构建模式）、门控 B（HTML 报告）。门控纪律，无例外：

- 每项均以结构化选择呈现（使用问题工具）。无此类工具 → 带编号的纯文本列表。无论哪种方式，STOP，等待回复。
- 绝不跳过门控。绝不从措辞推断其答案。绝不在未回答的门控之后继续生成。详细、具体或点名图表类型的请求 = 仍然是请求，不是门控答案。
- 只有字面量标志可以预先作答：`--direct`/`--guided`（门控 A）、`--html`（门控 B）、`--tutorial`（教程）。其他任何内容都不算数。

### 第 0 步——意图与首次运行

首先检查显式短路信号：

1. **教程**信号：“tutorial”（教程）、“show me how”（演示给我看）、“first time”（第一次）、“demo”（演示）、“walk me through”（带我走一遍）、`--tutorial`。→ 加载 `workflows/tutorial.md`。在此停止。
2. **设置**信号：“check setup”（检查设置）、“install deps”（安装依赖）、“is setup ready”（设置是否就绪）。→ 加载 `shared/setup-check.md`，运行 `check_setup.py`，报告结果。在此停止。

否则，这是真实的图表请求（文件、粘贴文本或事项描述）。检测首次运行：

运行 `python scripts/first_run.py`。解析 `{state}`：`returning`（回访）、`first_run`（首次）或 `unknown`（未知）。脚本缺失、非零退出或没有 JSON → 视为 `unknown`。

- `returning`（已确认）→ 不提供教程；用户以前运行过该技能。继续到第 1 步。
- `first_run`、`unknown` 或任何非已确认 `returning` 的状态 → **门控 0**（硬停点）：“首次使用。想要快速教程，还是直接开始生成图表？”选项：**开始教程**（推荐，列在最前）/ **跳过，直接生成我的图表**。以结构化选择呈现，若宿主无选择工具则以带编号的纯文本列表呈现，然后 STOP，等待回复。回答后，运行 `python scripts/first_run.py --mark` 记录提示（尽力而为；在 `unknown` 状态且无可写磁盘时，标记可能无法持久化，没关系）。然后：教程 → 加载 `workflows/tutorial.md`，停止；跳过 → 继续到第 1 步。

`unknown` 默认为提供而非抑制：呈现选择，不替用户决定。仅在已确认的 `returning` 状态下抑制。教程可随时通过关键词触达。

### 第 1 步——在选择通道前先摄取

检测输入：文件路径、粘贴文本或对话/事项描述。加载 `shared/setup-check.md`（会话缓存）。

**多文件范围门控**（2 个及以上文件）⛔：除非用户已明确说明范围，否则强制硬停点。以结构化选择呈现，若宿主无选择工具则以带编号的纯文本列表呈现，然后 STOP，等待回复。选项：**一张合并图表** / **每份文档一张图**。绝不从措辞推断范围。存储 `diagram_scope`。单文件，或用户已明确说明范围 → 跳过。

仅运行第 1 遍（确定性清单，无 LLM）：`workflows/extract.md` 第 0-2 步。将结果存储为 `manifest_cache` 并传递给所选通道，确保第 1 遍绝不重复运行。仅事项描述输入（无文档）没有第 1 遍计数；没有计数也照常进行。

### 第 2 步——门控 A：构建模式（摄取之后）⛔ 阻塞

门控 A = 强制硬停点。除非用户输入了字面量 `--direct` 或 `--guided` 标志，否则始终触发。在门控 A 得到回答之前，不加载任何通道，不生成任何图表。

**只有字面量标志能预先作答。** 唯一的答案载体 = 用户消息中确切的 `--direct` 或 `--guided` 标记。存在 → 用一行说明已确定的模式（“构建模式：直接（标志）”）并加载相应通道。这是用户自己记录的选择，而非模型决策。

**其他所有情况 → 呈现门控并 STOP。** 详细、具体或点名图表类型的请求（“这个具体案件的全面图表”“制作组织结构图”）= 请求，不是门控答案。绝不从措辞推断构建模式。先以通俗语言说明第 1 遍的发现：“发现 [N 个当事方、M 个事件、……]。您希望如何构建？”（无文档输入省略计数）。以结构化选择呈现，若宿主无选择工具则以带编号的纯文本列表呈现，然后等待回复。选项，固定顺序：

- **引导式，逐步进行**
- **直接生成**

不重排选项，不按措辞暗示选择。顺序固定；选择权在用户。

选择后：加载 `workflows/direct.md` 或 `workflows/guided.md`，传入 `manifest_cache`、`input_source` 和 `diagram_scope`。两条通道共享 `workflows/generation.md` 进行构建；门控 B（HTML 报告）在那里触发。

**面向用户的语言（对普通用户友好）。** 绝不向用户显示 Mermaid 内部类型名称。使用 `shared/diagram-type-map.md` 中“通俗名称”一节的通俗名称——“timeline”（时间线）、“org chart”（组织结构图）、“flowchart”（流程图）、“obligation checklist”（义务清单）等。也接受通俗词语请求（“帮我做一张组织结构图”），并通过同一术语表映射。法律词汇没有问题；技术性图表词汇保持内部使用。

**输出语言（EN/FR）。** 门控、摘要、信息引导和理由说明以用户的提示语言呈现（EN 或 FR；FR 图表名称按术语表的 FR 列）。提取的证据和图表标签保持源语言逐字不变，绝不翻译。HTML 导出界面通过 `render_html.py --ui-lang en|fr` 跟随。

## 脚本

所有脚本命令均从技能根目录（包含本 `SKILL.md` 的文件夹）运行。解析一次技能根目录，然后以 `python scripts/<name>.py` 形式调用脚本。

| 脚本                        | 作用                                                                                    |
| ----------------------------- | --------------------------------------------------------------------------------------- |
| `scripts/check_setup.py`      | 依赖检查 → `{ok, missing[], installed[], optional{}}`                           |
| `scripts/first_run.py`        | 首次运行状态 → `{state}`（`returning`/`first_run`/`unknown`）；`--mark` 消费标志 |
| `scripts/extract_entities.py` | 编排器：规范化 → 检测 → 清单 JSON                                        |
| `scripts/diagram_selector.py` | 丰富化提取 + 意图 → 推荐类型                                         |
| `scripts/patch_gate.py`       | 第 2 遍补丁门控：验证并应用 LLM JSON Patch → `{ok, findings[], enriched_extraction_result}` |
| `scripts/eval_pass2.py`       | 第 2 遍评估评分器：根据标签期望评定 LLM 补丁 → `{ok, results[], score}` |
| `scripts/render_html.py`      | Mermaid + FigureDescription → 独立 HTML                                           |

`scripts/normalize/`（格式适配器）和 `scripts/extraction/`（候选实体采集器、解析器和实体化器）是编排器使用的库。一次性安装依赖：`pip install -r requirements.txt -c constraints.txt` 用于发布验证版本，或省略 `-c constraints.txt` 以进行广泛兼容性测试。

## 工作流加载映射

| 意图/需求                                                  | 文件                       |
| ------------------------------------------------------------ | -------------------------- |
| 首次运行演练 + 设置门控                           | `workflows/tutorial.md`    |
| 交互式默认通道（摘要/信息引导 → 菜单）              | `workflows/guided.md`      |
| 高级用户通道（读取所有信号，硬上限 1）               | `workflows/direct.md`      |
| 共享生成核心（选择 → 防护 → 生成 → 交付） | `workflows/generation.md`  |
| 两遍提取（两条通道均调用）                   | `workflows/extract.md`     |
| 第 2 遍质量评估（执行丰富化，根据标签评分） | `workflows/eval-pass2.md`  |
| 无文档摄取集 + 交付模式                       | `shared/elicitation.md`    |
| 独立 HTML 图形导出                                | `workflows/html-export.md` |

## 参考加载映射

| 意图/需求                                                       | 文件                                  |
| ----------------------------------------------------------------- | ------------------------------------- |
| 依赖检查流程                                        | `shared/setup-check.md`               |
| 按类型防护、实体规范化、解析器缺陷                | `shared/parser-guards.md`             |
| FigureDescription 字段、标题、图例、风险评分标准、注意事项 | `shared/figure-description-schema.md` |
| 30 个法律类别 → Mermaid 类型                                | `shared/diagram-type-map.md`          |
| 语义节点类别、调色板、CSS 类命名               | `shared/node-styles.md`               |
| 字段目录 + 检测层级 + 信号                       | `references/extraction-schema.md`     |

## 输出

输出仅为 CLI 显示：围栏 Mermaid 块在 Claude 网页应用中渲染为工件，在 CLI 中渲染为语法高亮代码。不写入笔记文件。该块之后，门控 B 以可选择项的形式提供 HTML 报告；导出会转义事项文本、以严格模式运行 Mermaid、在存在随附引擎时使用它，并且仅在显式启用时才加载固定的 CDN 回退。完整输出规则：`workflows/generation.md` 第 5 步。

## 边界

Mermaid 用于思考、规划、解释和生成结构。它不是法律建议、不是可提交法院的证据材料，也不是法律写作的替代品。每张图表都带有一行注意事项。机密材料仅保存在经批准用于该事项的工具中。

