SuperAPI AI 工具集

draw-io

设计与创作

查看项目

更新于 10-15 08:33

技能介绍

用途

draw.io Diagram Skill 是一个用于 draw.io 图表创建、编辑与审查的技能。根据资料描述,它适用于 .drawio XML 文件的编辑、PNG 转换、布局调整以及 AWS 图标的使用。

主要能力

  • 以纯 XML 文本方式编辑 .drawio 文件。
  • 将 .drawio 文件转换为 PNG(含透明背景、2 倍缩放等选项)。
  • 通过调整 mxGeometry 中的坐标、宽高完成布局调整。
  • 支持在 mxGraphModel 及文本元素 style 中设置字体(如 Noto Sans JP)。
  • 提供 AWS 图标搜索脚本,并建议使用最新版官方图标(mxgraph.aws4.*)。

使用方式

基本规则

  • 只编辑 .drawio 文件。
  • 不要直接编辑 .drawio.png 文件。
  • 在幻灯片中使用 pre-commit hook 自动生成的 .drawio.png。

字体设置

用于 Quarto 幻灯片时,在 mxGraphModel 标签指定默认字体:

<mxGraphModel defaultFontFamily="Noto Sans JP" ...>

并在每个文本元素的 style 属性中显式指定 fontFamily:

style="text;html=1;fontSize=27;fontFamily=Noto Sans JP;"

转换命令

转换脚本位于 scripts/convert-drawio-to-png.sh。

# 转换所有 .drawio 文件
mise exec -- pre-commit run --all-files

# 转换特定 .drawio 文件
mise exec -- pre-commit run convert-drawio-to-png --files assets/my-diagram.drawio

# 直接运行脚本(使用技能自带脚本)
bash ~/.claude/skills/draw-io/scripts/convert-drawio-to-png.sh assets/diagram1.drawio

内部使用的命令:

drawio -x -f png -s 2 -t -o output.drawio.png input.drawio

选项说明:

  • -x:导出模式
  • -f png:PNG 格式输出
  • -s 2:2 倍缩放(高分辨率)
  • -t:透明背景
  • -o:输出文件路径

布局调整步骤

  1. 用文本编辑器打开 .drawio 文件(纯 XML 格式)。
  2. 找到要调整元素的 mxCell(可通过 value 属性的文本搜索)。
  3. 调整 mxGeometry 标签中的坐标:x(距左位置)、y(距上位置)、width(宽度)、height(高度)。
  4. 运行转换并验证。

坐标计算:元素中心坐标 = y + (height / 2);对齐多个元素时,计算并匹配中心坐标。

设计原则

  • 清晰:创建简单、视觉整洁的图表。
  • 一致:统一颜色、字体、图标大小、线条粗细。
  • 准确:不因简化而牺牲准确性。

元素规则:为所有元素添加标签;用箭头表示方向(优先使用两个单向箭头而非双向箭头);使用最新官方图标;为自定义符号添加图例。

可访问性:确保足够颜色对比度;除颜色外使用图案区分。

渐进披露:将复杂系统拆分为分阶段图表——上下文图(外部视角的系统概览)、系统图(主要组件及关系)、组件图(技术细节与集成点)、部署图(基础设施配置)、数据流图(数据流与转换)、时序图(时序交互)。

元数据:在图表中包含标题、描述、最后更新时间、作者和版本。

最佳实践

  • 背景色:移除 background="#ffffff",使用透明背景以适配多种主题。
  • 字体大小:使用标准字号的 1.5 倍(约 18px)以保证 PDF 可读性。
  • 日文文本宽度:每字符预留 30-40px,宽度不足会导致意外换行。例如 10 字符文本预留 300-400px:
<!-- For 10-character text, allow 300-400px -->
<mxGeometry x="140" y="60" width="400" height="40" />
  • 箭头放置:始终将箭头放在后层(在 XML 中紧跟标题之后);避免与标签重叠;箭头起点/终点距标签下边缘至少 20px。
<!-- Title -->
<mxCell id="title" value="..." .../>

<!-- Arrows (back layer) -->
<mxCell id="arrow1" style="edgeStyle=..." .../>

<!-- Other elements (front layer) -->
<mxCell id="box1" .../>
  • 箭头连接到文本标签:文本元素不支持 exitX/exitY,需使用显式坐标:
<!-- Good: Explicit coordinates with sourcePoint/targetPoint -->
<mxCell id="arrow" style="..." edge="1" parent="1">
  <mxGeometry relative="1" as="geometry">
    <mxPoint x="1279" y="500" as="sourcePoint"/>
    <mxPoint x="119" y="500" as="targetPoint"/>
    <Array as="points">
      <mxPoint x="1279" y="560"/>
      <mxPoint x="119" y="560"/>
    </Array>
  </mxGeometry>
</mxCell>
  • edgeLabel 偏移调整:通过 offset 属性控制箭头标签与箭头的距离(负值置于箭头上方,正值置于下方):
<!-- Place above arrow (negative value to distance) -->
<mxPoint x="0" y="-40" as="offset"/>

<!-- Place below arrow (positive value to distance) -->
<mxPoint x="0" y="40" as="offset"/>
  • 移除无关的装饰性图标(例如已有 ECR,则单独的 Docker 图标多余)。
  • 标签与标题:仅服务名用 1 行;服务名加补充信息用 2 行并换行;冗余写法(如 ECR Container Registry)缩短为 1 行;使用 <br> 标签换行。
  • 背景框架与内部元素放置:在背景框架(分组框)内放置元素时须留足边距。内部元素须距框架边界至少 30px;须考虑圆角(rounded=1)和描边宽度;须对 PNG 输出进行目视验证是否溢出。

坐标计算验证示例:背景框架 y=20、height=400,则范围为 y=20-420;内部元素顶部为 frame y + 30 或更多(如 y=50),底部为 frame y + height - 30 或更少(如至多 y=390)。

<!-- Bad example (may overflow) -->
<mxCell id="bg" style="rounded=1;strokeWidth=3;...">
  <mxGeometry x="500" y="20" width="560" height="400" />
</mxCell>
<mxCell id="label" value="Title" style="text;...">
  <mxGeometry x="510" y="30" width="540" height="35" />
</mxCell>
<!-- Good example (sufficient margin) -->
<mxCell id="bg" style="rounded=1;strokeWidth=3;...">
  <mxGeometry x="500" y="20" width="560" height="430" />
</mxCell>
<mxCell id="label" value="Title" style="text;...">
  <mxGeometry x="510" y="50" width="540" height="35" />
</mxCell>

参考与 AWS 图标

参考内容包括布局指南、AWS 图标和 AWS 图标搜索脚本。AWS 图标搜索示例:

python ~/.claude/skills/draw-io/scripts/find_aws_icon.py ec2
python ~/.claude/skills/draw-io/scripts/find_aws_icon.py lambda

检查清单

  • 未设置背景色(page="0")
  • 字体大小合适(建议更大)
  • 箭头置于后层
  • 箭头不与标签重叠(在 PNG 中验证)
  • 箭头起点/终点距标签足够远(至少 20px)
  • 箭头不穿透方框或图标(在 PNG 中验证)
  • 内部元素不溢出背景框架(在 PNG 中验证)
  • 背景框架与内部元素间边距 30px+
  • AWS 服务名称为官方名称/正确缩写
  • AWS 图标为最新版本(mxgraph.aws4.*)
  • 无多余元素残留
  • 已目视验证 PNG 转换结果

适用场景

根据资料,该技能适用于需要编辑 .drawio XML、进行 PNG 转换、调整布局以及使用 AWS 图标进行架构类图表制作的场景,也覆盖审查图表布局与可访问性的需求。

限制

资料中未提供该技能的具体平台依赖、运行环境要求、收费方式、价格、性能指标或效果承诺等信息,暂未提供。