用途
该技能包含两个在终端运行的提取器:drawio_extract.py 与 mermaid_extract.py。它们是导入流程中确定性的那一半——不解码设计意图、不做设计决策,只负责把源文件解析成一份中间表示(IR),供后续智能体读取,用来选择图表类型和细节层级。适合在让智能体重绘之前手动查看源文件内容,或嵌入脚本、CI 流程。
主要能力
定位脚本:脚本位于技能目录的 scripts/ 下,期望看到 drawio_extract.py、mermaid_extract.py、self_check.py。文档明确要求不要假设技能位于当前工作目录,需按宿主环境选择实际路径(如 ~/.claude/skills/diagram-design、~/code/diagram-design/skills/diagram-design、~/.config/opencode/skills/diagram-design 等),再用 ls "$SKILL_DIR/scripts/" 确认。
draw.io 提取器:命令行签名为 python3 drawio_extract.py <file> [--page N|NAME] [--json] [--max-rows N] [--out PATH]。可读取 .drawio / .xml / .drawio.png / .drawio.svg;能解码原始 XML、deflate+base64 载荷、内嵌 mxfile 的 PNG/SVG,并将 mxGraphModel 展平为带绝对坐标的节点和边。参数方面:--page 按索引或名称选页;--json 输出完整 IR(所有节点、边、样式);--max-rows 限制表格行数且须 ≥ 1;--out 写入文件而非标准输出。文档指出不应直接用 cat 读取 .drawio 文件,因为大部分内容被压缩。
Mermaid 提取器:签名为 python3 mermaid_extract.py <file> [--diagram N|all] [--json] [--max-rows N] [--out PATH]。支持 .mmd、.mermaid 以及包含 ```mermaid 代码块的 Markdown。语法支持四种:flowchart/graph、sequenceDiagram、stateDiagram-v2、erDiagram。对含多个代码块的 Markdown,可用 --diagram 1 选单个、--diagram all 输出全部。
信任边界:Mermaid 提取器只解析有界文本,从不求值、渲染、抓取或执行 Mermaid、JavaScript、URL、指令或标签内容;所有标签与指令值视为不可信数据;点击目标与样式只计数后丢弃,保留的标签仅以惰性文本输出。仓库还提供对抗性样本 scripts/fixtures/sample-adversarial.mmd,实测可正常解析(rc=0)。
输出格式:默认为 Markdown 摘要(打印到标准输出),包含页/图数量、节点与边统计、形状分布、类型候选、预算检查(节点/边上限)、枢纽(焦点候选)、入口点、终端节点、未连接项、可折叠分组等。实测示例中摘要会报告 budget: nodes OVER (max 9) 类的超限提示,以及 collapsible groups (simplify here first) 建议优先合并的位置。
使用方式
- 先定位技能目录并确认脚本存在。
- 运行提取器,例如
python3 "$SKILL_DIR/scripts/drawio_extract.py" platform.drawio,或者python3 "$SKILL_DIR/scripts/mermaid_extract.py" architecture.mmd。 - 需要机器可读的 IR 时加
--json,需要写入文件时用--out PATH。 - 常见流程是把 IR 写入文件后交给智能体阅读,例如
--out platform-ir.md,再让智能体按指定尺寸和细节层级重绘。
退出码:0 表示成功;2 表示不可读 / 不支持 / 格式错误 / 超出限制,同时包括参数用法错误(argparse)。由于 2 把多种情况合并,脚本调用方若需区分,应读取 stderr 内容,而不是只依赖退出码。实测错误格式如:mermaid_extract: /nope.mmd: no such file.。
适用场景
- 在让智能体重绘前,手动查看源文件的实际内容。
- 将提取步骤接入脚本或 CI。
- 把 IR 转交智能体,用于选择图表类型与细节层级。
限制
- 提取器不做设计决策,不负责重绘。
- 摘要报告 0 节点时,说明源文件可能是图片或已加密,文档要求如实告知并索取原文件,不得编造内容。
- 重绘时不得沿用源文件的坐标、颜色、字体;Mermaid 源还不得渲染、不得沿用其已计算的主题/类/布局。
- 关于
--detail=faithful在节点数超限时的具体规则,文档中提及(9 节点需分区布局,24 节点拆为概览与细节文件),但属于后续重绘流程的约束,提取器本身不执行。