All skills
cat-xierluo avatar

/legal-visualization

@48438a7

Legal Visualization。面向法律业务场景的法律图解与图表生成技能;当用户要求把案件材料、合同材料、合规事项、交易安排、证据链、诉讼流程、时间轴、法律关系、客户汇报、法律服务方案或律师团队工作整理成关系图、流程图、时间轴、证据链、风险图、路线图、PNG/SVG/PDF/.drawio 时使用;也兼容“法律可视化”“案件事实图”“法律关系图”等说法。先按受众、任务动词和路由规则筛选场景,再生成可交付图片,并保留 draw.io 源文件作为可编辑底稿。本技能不用于事实核验,也不替代法律结论判断。

Use this Skill: https://skilld.dev/gh/cat-xierluo/legal-skills/legal-visualization

This session only. Nothing lands on disk.

referencesxml-reference.md

≈1.7k tokens on demand. Your agent reads this file only when SKILL.md points to it.

draw.io XML 参考

详细记录 draw.io 图表的样式属性、连线路由和容器用法。

基础结构

<mxGraphModel adaptiveColors="auto">
  <root>
    <mxCell id="0"/>
    <mxCell id="1" parent="0"/>
    <!-- 所有节点和连线从 id=2 开始,parent="1" -->
  </root>
</mxGraphModel>

关键规则:

  • id="0" 和 id="1" 是保留节点,禁止删除或修改
  • 所有顶层元素 parent="1"
  • 子元素(容器内)parent="容器id",使用相对坐标

常见样式

节点样式属性

属性 值 说明
rounded=1 0/1 圆角
whiteSpace=wrap wrap 自动换行
fillColor #RRGGBB 背景色
strokeColor #RRGGBB 边框色
strokeWidth 数值 边框宽度
fontColor #RRGGBB 文字颜色
fontSize 数值 字体大小
fontStyle=1 0/1/2/4 1=粗体, 2=斜体, 4=下划线
align left/center/right 水平对齐
verticalAlign top/middle/bottom 垂直对齐
shadow=0 0/1 阴影

限定形状

法律图只使用以下节点形状。角色、主题和状态样式优先由 scripts/apply_visual_roles.py 从 VizSpec 编译,不要手工复制主题色。

圆角矩形(默认):

style="rounded=1;whiteSpace=wrap;fillColor=#E3F2FD;strokeColor=#1976D2;strokeWidth=2;"

菱形(判断/决策):

<mxCell id="decision-1" value="条件是否满足?" visualRole="decision"
  style="rhombus;whiteSpace=wrap;fillColor=#FFF3E0;strokeColor=#EF6C00;strokeWidth=2;"
  vertex="1" parent="1">
  <mxGeometry x="320" y="160" width="160" height="110" as="geometry"/>
</mxCell>

rect 仅用于表格单元格和细小分隔块;分区使用 swimlane 或 container=1。椭圆、圆柱、文档形、六边形、人形、双椭圆等不规则形状不属于正式法律图的限定清单,shape_policy 会告警。

连线(Edge)规则

⚠️ 最重要规则:每个 edge 必须有子元素

<!-- ❌ 错误:自闭合 edge 不会渲染 -->
<mxCell id="e1" edge="1" source="2" target="3" .../>

<!-- ✅ 正确:包含 mxGeometry 子元素 -->
<mxCell id="e1" edge="1" source="2" target="3" ...>
  <mxGeometry relative="1" as="geometry"/>
</mxCell>

正交连线(直角转弯)

<mxCell id="e1" value="标签" 
  style="endArrow=classic;strokeWidth=2;strokeColor=#78909C;exitX=1;exitY=0.5;entryX=0;entryY=0.5;edgeStyle=orthogonalEdgeStyle;curved=1;"
  edge="1" source="2" target="3" parent="1">
  <mxGeometry relative="1" as="geometry"/>
</mxCell>

箭头类型

类型 style 值
实心箭头 endArrow=classic
空心箭头 endArrow=classicThin
菱形 endArrow=diamond
无箭头(线条) 不加 endArrow

连线方向控制

从上到下:exitX=0.5;exitY=1; entryX=0.5;entryY=0;

从左到右:exitX=1;exitY=0.5; entryX=0;entryY=0.5;

从下到上:exitX=0.5;exitY=0; entryX=0.5;entryY=1;

从右到左:exitX=0;exitY=0.5; entryX=1;entryY=0.5;

带弯角的连线

<mxCell id="e1" style="endArrow=classic;edgeStyle=orthogonalEdgeStyle;rounded=1;" edge="1" source="2" target="3" parent="1">
  <mxGeometry relative="1" as="geometry">
    <Array as="points">
      <mxPoint x="300" y="150"/>
    </Array>
  </mxGeometry>
</mxCell>

容器(Container)

不可见分组容器

<mxCell id="grp1" value="" style="group;" vertex="1" parent="1">
  <mxGeometry x="60" y="80" width="600" height="300" as="geometry"/>
</mxCell>
<mxCell id="c1" value="子节点" style="..." vertex="1" parent="grp1">
  <mxGeometry x="10" y="10" width="120" height="60" as="geometry"/>
</mxCell>

领域校验器会把真实祖先/后代关系视为合法包含,不报告碰撞。若因兼容旧模板必须把背景框和内部节点都保留为 parent="1",应在背景框 style 中显式增加 container=1;不要依赖节点 ID 或中文名称猜测容器语义。

泳道容器(Swimlane)

<mxCell id="lane1" value="区域名称" style="swimlane;startSize=30;fillColor=#F5F5F5;strokeColor=#BDBDBD;strokeWidth=2;" vertex="1" parent="1">
  <mxGeometry x="60" y="80" width="600" height="300" as="geometry"/>
</mxCell>

坐标系统

  • 顶层元素:从 x=60, y=80 开始(避免从 0,0 开始导致 viewBox 问题)
  • 容器内子元素:使用相对坐标(相对于容器的左上角)
  • 网格对齐:所有坐标为 10 的倍数

自动布局参数

节点数 节点宽度 节点高度 水平间距 垂直间距
1-7 160px 70px 220px 160px
8-15 140px 60px 180px 130px
16+ 120px 50px 150px 110px

中文宽度修正

  • 纯英文:按字符数 × 10px
  • 含中文:按字符数 × 16px,最小宽度 × 1.3
  • 最大宽度不超过 350px

标题和标签

图表标题

<mxCell id="title" value="图表标题"
  style="text;fontSize=24;fontStyle=1;align=center;fillColor=none;strokeColor=none;fontColor=#1a1a2e;"
  vertex="1" parent="1">
  <mxGeometry x="200" y="20" width="400" height="40" as="geometry"/>
</mxCell>

技术标注(小字)

<mxCell id="label" value="补充说明"
  style="text;fontSize=10;fontColor=#757575;align=center;fillColor=none;strokeColor=none;"
  vertex="1" parent="1">
  <mxGeometry x="100" y="160" width="120" height="18" as="geometry"/>
</mxCell>

暗色模式

mxGraphModel 使用 adaptiveColors="auto" 启用自动暗色适配。

  • strokeColor、fillColor、fontColor 使用默认颜色时自动适配
  • 显式颜色在暗色模式下自动反转
  • 如需手动指定:light-dark(lightColor,darkColor)

导出注意事项

SVG viewBox 修正

导出后如果内容偏移,用文本编辑器修改 SVG 的 viewBox 属性:

  • 找到内容实际边界(最小 x/y,最大 x+width/y+height)
  • 修正为 viewBox="minX-20 minY-10 width height"

常见问题

问题 原因 解决
导出的 SVG 空白 viewBox 偏移 手动修正 viewBox
节点文字不换行 缺少 whiteSpace=wrap 添加属性
连线不显示 edge 没有 mxGeometry 子元素 按规则添加
XML 解析错误 注释中有双破折号 -- 改用单破折号
合法泳道被报重叠 子节点未使用真实 parent,或扁平背景框未声明 container=1 优先改为父子结构;兼容旧模板时显式标注容器
XML 合法但仍可交付失败 结构检查不证明几何和文本正确 运行 scripts/validate_drawio.py 并打开实际导出图片

Source: SKILL.md on GitHub

No alerts2mo3 checks · Risk SAFE
  • Gen Agent Trust Hub2mo

    The skill 'legal-visualization' is a legitimate utility for generating legal diagrams and charts. It uses Python scripts and the draw.io CLI to convert legal materials into visual formats such as SVG and PNG. The analysis found no signs of malicious code, data exfiltration, or prompt injection. The use of system commands is strictly for local file conversion, which is the core purpose of the skill.

  • Socket2mo

    No alerts

  • Snyk2mo

    Risk: LOW · No issues

Signed by skilld at 48438a7. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub yesterday.

Activeupdated 2 months ago
version
0.8.2
author
杨卫薪律师(微信ywxlaw)
homepage
https://github.com/cat-xierluo/legal-skills

README badge

README badge for cat-xierluo/legal-skills/legal-visualization