# drawio-skill **Repository Path**: rickqi/drawio-skill ## Basic Information - **Project Name**: drawio-skill - **Description**: Generate draw.io diagrams from natural language — 11 presets (UML, SysML/MBSE, BPMN, network, C4…), 36 tools: codebase/CI/infra-to-diagram, image→editable diagram, mind maps, build-up animation, exec-view compression, click-through runbooks, PR diff bot. Vision self-check, 10,000+ shapes. Exports PNG/SVG/PDF/JPG. - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-26 - **Last Updated**: 2026-10-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # drawio-skill —— 从文字到专业图表 [](LICENSE) [](https://github.com/Agents365-ai/drawio-skill/stargazers) [](https://github.com/Agents365-ai/drawio-skill/network/members) [](https://github.com/Agents365-ai/drawio-skill/releases/latest) [](https://github.com/Agents365-ai/drawio-skill/commits/main) [](https://skillsmp.com/skills/agents365-ai-drawio-skill-skills-drawio-skill-skill-md) [](https://clawhub.ai/agents365-ai/drawio-pro-skill) [](https://github.com/Agents365-ai/365-skills) [](https://agentskills.io) [English](README.md) · **中文** · [📖 在线文档](https://agents365-ai.github.io/drawio-skill/) 一个把自然语言描述变成 `.drawio` XML,并通过 draw.io 桌面版原生 CLI 导出 PNG / SVG / PDF / JPG 的技能。它还能把**现有代码库**(Python / JS-TS / Go / Rust)、**Terraform / Kubernetes / docker-compose 基础设施**或 **SQL schema** 转成自动布局的图表。支持 **Claude Code、Cursor、Copilot、OpenClaw、Codex、Autohand Code、Hermes** 等任何兼容 [Agent Skills](https://agentskills.io) 规范的 agent。
![]() 星形 · 7 个节点 中央消息代理 + 6 个微服务辐射排列,本例中线条零交叉。 |
![]() 分层 · 10 节点 / 4 层 电商架构,同层水平 + 对角线交叉连线均通过路由走廊绕行。 |
![]() 环形 · 8 个节点 CI/CD 流水线,含闭合回路和 2 个分支,沿矩形外围流动。 |
logging 包的类继承层级 —— 一条命令生成,模块自动分框,每条继承边都被解析。
幕后是一条 提取器 → 自动布局 → 校验 的流水线:
```bash
# 导入关系图 —— Python / JS-TS / Go / Rust
python3 scripts/pyimports.py myproject --group -o graph.json
python3 scripts/jsimports.py ./src --group -o graph.json
python3 scripts/goimports.py ./module --group -o graph.json
python3 scripts/rustimports.py ./crate --group -o graph.json
# Python 类继承层级
python3 scripts/pyclasses.py mypackage --group -o graph.json
# 基础设施即代码 —— 自动解析官方云图标
python3 scripts/tfimports.py ./infra -o graph.json # Terraform → AWS/Azure/GCP 图标
python3 scripts/k8simports.py ./manifests -o graph.json # K8s YAML/JSON → kind 图标
python3 scripts/composeimports.py compose.yml -o graph.json # 服务 + 命名卷
# 实时基础设施 —— 画「真正在运行 / 已部署」的东西
terraform show -json | python3 scripts/tfstate.py - -o graph.json # 已部署的云资源
docker inspect $(docker ps -q)| python3 scripts/dockerimports.py - -o graph.json # 正在运行的容器
kubectl get all,ing,cm,secret,pvc -o json | python3 scripts/k8simports.py - -o graph.json # 实时集群
# 数据与交互
python3 scripts/sqlerd.py schema.sql -o graph.json # SQL DDL → ER 图
python3 scripts/ciimports.py . -o graph.json # GitHub Actions + GitLab CI -> 流水线 DAG
python3 scripts/openapiimports.py openapi.yaml -o graph.json # OpenAPI/Swagger → API 图(按方法着色)
python3 scripts/seqlayout.py seq.json -o sequence.drawio # 时序图,直接生成 .drawio
python3 scripts/c4.py c4.json -o c4.drawio # C4 模型,多页 + 下钻
# 对比两张图 / 两个快照 → 高亮「改了什么」
python3 scripts/drawiodiff.py old.drawio new.drawio -o graph.json # +新增 -删除 ~变更
# 架构时间轴 → 从 git 历史生成「代码怎么长出来的」自包含 HTML 播放器
python3 scripts/timelapse.py src --importer pyimports # → architecture-evolution.html
# 反向:把已有的 .drawio 描述成结构化 Markdown(README / PR 摘要)
python3 scripts/explain.py architecture.drawio -o architecture.md
# 图 → PowerPoint 幻灯片(每页一张;C4 模型 → 演示稿)
python3 scripts/drawio2pptx.py c4.drawio -o c4.pptx # 需要: pip install python-pptx
# 交互式 HTML 查看器 —— 平移/缩放/搜索/页签 + 可用的下钻链接,单文件
python3 scripts/drawiohtml.py c4.drawio -o c4.html
# 数据流动画 SVG —— 让边「流动」起来(marching ants);GitHub 可直接渲染
python3 scripts/svgflow.py architecture.drawio -o flow.svg
# 反向:.drawio → Mermaid 流程图(GitHub 原生渲染的 diagrams-as-code)
python3 scripts/drawio2mermaid.py architecture.drawio --fenced -o arch.md
# 语言变体:提取标签 → 翻译值 → 应用(布局不动)
python3 scripts/relabel.py architecture.drawio --extract -o labels.json
python3 scripts/relabel.py architecture.drawio --map labels.json -o architecture_cn.drawio
# 给已有 .drawio 换主题(如暗色模式)
python3 scripts/restyle.py architecture.drawio --preset dark
# 按数据给已有 .drawio 上色 → 成本 / 延迟 / 流量热力图
python3 scripts/heatmap.py architecture.drawio -m latency.csv --size -o hot.drawio
# 任一提取器 → 自动布局 → 可编辑的 .drawio
python3 scripts/autolayout.py graph.json -o diagram.drawio
# 图片 → 可编辑 .drawio —— 由你的视觉提取出图结构 JSON,本脚本据此重建
python3 scripts/raster2drawio.py whiteboard-graph.json -o out.drawio
# 看一张图按节点依赖顺序逐步"画出来" → HTML 播放器(可选 GIF)
python3 scripts/buildup.py architecture.drawio --gif build.gif # → buildup.html
# 大图 → 高管摘要(聚类)+ 点击下钻回到完整图
python3 scripts/compress.py big.drawio -o exec.drawio
# 决策树流程图 → 点击式 HTML 排查手册(无需 draw.io CLI)
python3 scripts/runbook.py triage.drawio -o triage.html
# CI:为 PR 改动的每个 .drawio 渲染 base/head/diff PNG + Markdown 报告
python3 scripts/prdiff.py --base origin/main --head HEAD -o drawio-pr/report.md
# Tube-Map 模式 —— 把流水线 / 旅程重绘成地铁风格线路图
python3 scripts/tubemap.py metro.json -o metro.drawio
```
| 组件 | 作用 |
|---|---|
| **13 个提取器** | **Python · JS/TS · Go · Rust** 的导入关系图、**Python 类继承**、**Terraform / Kubernetes / docker-compose** 资源图(自动配官方云图标)、**SQL DDL → ER 图**、**OpenAPI / Swagger → API 图**(按 HTTP 方法着色的接口 + schema),**CI 流水线 → DAG**(GitHub Actions `needs:` 依赖图 + GitLab 阶段,含触发器、matrix 规模、可复用工作流调用)、以及从 `terraform show -json` / `docker inspect` / `kubectl get -o json` 提取的**实时**基础设施(画出真正已部署的样子) |
| **图对比 (diff)** | `drawiodiff.py` 把两张 `.drawio`(或两个实时快照)对比成一张彩色图 —— 新增=绿、删除=红、变更=橙 —— 一眼看出架构 / 基础设施**漂移** |
| **语言变体** | `relabel.py` 按 JSON 映射批量换标签,布局/样式/id 全不动 —— `--extract` 导出全部标签,翻译值后 `--map` 应用。一张图 → 中英双胞胎,双语文档必备 |
| **换主题** | `restyle.py` 给**已有** `.drawio` 应用风格预设(内置 `dark`/`corporate`/… 或自定义)—— 按色相重映射调色板,同色节点保持同组;布局与连线路由不动 |
| **指标热力图** | `heatmap.py` 按一份「节点→数值」的 CSV/JSON 给已有 `.drawio` 重新着色 —— 成本 / 延迟 / 流量 / 错误率沿渐变由低到高上色(可选按值缩放节点 + 自动图例),按 cell id 或标签匹配 |
| **架构时间轴** | `timelapse.py` 沿 git 历史逐个提交重跑提取器,拼成一个自包含 HTML 播放器 —— 看着模块和依赖边随时间长出来(▶ 播放 / ‹ › 单步) |
| **图 → Markdown** | `explain.py` 把一张 `.drawio` 反向描述成结构化文档 —— 按层级列出组件、关系、C4 多页分节 —— 方便把架构摘要塞进 README 或 PR |
| **交互式查看器** | `drawiohtml.py` 把 `.drawio` 发布成一个自包含 HTML —— 页签、拖拽平移、滚轮缩放、节点搜索,C4 模型的下钻链接照常可点。发一个文件即可分享;不需要 draw.io,也不需要服务器 |
| **图 → PowerPoint** | `drawio2pptx.py` 把多页图变成 16:9 幻灯片(每页一张、页名当标题)—— C4 模型一键变成可演示的 slideshow |
| **数据流动画** | `svgflow.py` 让图里的边「流动」起来(沿箭头方向的 marching-ants 动画)—— 自包含循环 SVG,可在 GitHub、文档或幻灯片背景里直接播放 |
| **图 → Mermaid** | `drawio2mermaid.py` 把 `.drawio` 转成 Mermaid `flowchart`(容器变 subgraph、保留边标签)—— 粘进 Markdown 就是 GitHub 原生渲染的 diagrams-as-code |
| **时序图引擎** | `seqlayout.py` 从消息列表直接算出 lifeline / 激活条 / 箭头几何 —— 不需要 Graphviz,不需要手摆 |
| **自动布局** | Graphviz 自动布点,正交连线**绕开**节点 —— 大图不再需要手动摆坐标。`--tune` 双向各排一次取更可读的 |
| **传递约简** | 删掉被更长路径蕴含的边,把密集的"毛线团"变成可读图(asyncio:149 → 46 条边) |
| **嵌套容器** | `--group` 按子包给模块分框,深层包树自动嵌套 |
| **确定性校验器** | `validate.py` 在视觉自检前先做结构 lint(悬空边、重复 id、重叠) |
布局需要 Graphviz(`brew install graphviz` / `apt install graphviz`)—— 可选,其余功能无需它。完整格式与参数见 [references/autolayout.md](skills/drawio-skill/references/autolayout.md)。在 CI 中重新生成、校验(`--strict` 门禁)并无头渲染:[docs/CI_CN.md](docs/CI_CN.md)。
## 🧩 支持的图表类型
| 类别 | 示例 | 特色 |
|------|------|------|
| 架构图 | 微服务、云(AWS/GCP/Azure)、网络拓扑、部署 | 分层泳道、hub 居中策略 |
| C4 模型 | 系统上下文、容器、组件 | 多页 `.drawio`、点击下钻链接 |
| ML / 深度学习 | Transformer、CNN、LSTM、GRU | 张量形状标注、层类型配色 |
| 流程图 | 业务流程、工作流、决策树、状态机 | 语义形状(平行四边形 I/O、菱形判断) |
| UML | 类图、序列图 | 继承 / 组合 / 聚合箭头;生命线 + 激活框 |
| SysML / MBSE | 模块定义图(bdd)、内部模块图(ibd)、需求图(req)、参数图(par) | «block» / «requirement» 分栏、satisfy/derive/verify 依赖边、原生 `mxgraph.sysml.*` 端口与流 |
| BPMN | 业务流程、泳池与泳道 | 原生 `mxgraph.bpmn.*` 事件/任务/网关,顺序流 vs 消息流 |
| 网络拓扑 | LAN/WAN、子网、DMZ | `mxgraph.networks.*` 设备形状、区域容器、链路标注;Cisco/机架经形状搜索 |
| 跨职能泳道图 | 谁在哪步做什么、交接流程 | 泳池 + 角色泳道、流程图形状、正交交接边 |
| 数据图 | ER 图、数据流图(DFD) | 表容器、PK/FK 标记 |
| Mermaid 作图 | 思维导图、甘特图、timeline、journey、饼图、桑基图、看板等 28 种 | CLI(≥ v30)原生转换 —— 只写结构,布局白送 |
| 其他 | 组织架构图、线框图 | — |
## 🔍 形状搜索
需要真实的 AWS / Azure / GCP / Cisco / Kubernetes / UML / BPMN 图标?Skill 会在 **10,000+ 个官方 draw.io 形状**中搜出精确的 style 字符串 —— 厂商图标正确渲染,而不是因为猜错 `shape=mxgraph.*` 名称而退化成空白方框。
> *"加一个 AWS Lambda 连到 S3 桶"* · *"用真正的 Kubernetes pod 图标"*
```bash
python3 scripts/shapesearch.py "aws lambda" --limit 5
# → Lambda (77x93)
# outlineConnect=0;...;shape=mxgraph.aws3.lambda;fillColor=#F58534;...
```
shapesearch.py 解析出的真实官方 draw.io 形状,而非手猜的 shape= 字符串。
覆盖 AWS / Azure / GCP / Cisco / Kubernetes / UML / BPMN / ER / 电气 / P&ID 以及通用形状集。可手写的 style 速查表 + 搜索用法见 [references/shapes.md](skills/drawio-skill/references/shapes.md)。
## 🤖 AI / LLM 品牌图标
draw.io **没有**任何现代 AI/LLM 品牌图标,所以画 LLM 应用架构时只能是一堆方框。`aiicons.py` 能把品牌名解析成 draw.io 图片样式,覆盖 [lobe-icons](https://github.com/lobehub/lobe-icons)(MIT)的 **321 个图标**(OpenAI、Claude、Gemini、Mistral、Llama、Cohere、DeepSeek、Qwen、Ollama、LangChain、HuggingFace……),并经 [simple-icons](https://simpleicons.org)(CC0)补充 **18 个数据存储品牌**(Redis、Postgres、MongoDB、Qdrant、Milvus、Supabase……),适合 RAG 架构图。
```bash
python3 scripts/aiicons.py "claude" --json # CDN 引用(默认)
python3 scripts/aiicons.py "openai" --embed # 内联为自包含 data URI
```
aiicons.py 解析。默认从 unpkg CDN 引用图标(渲染时需联网),--embed 可内联以离线使用。logo 为各自所有者的商标,仅用于标识。
## 🎨 样式预设
把视觉风格"教"给 Skill 一次,所有图表自动复用。内置五种预设:`default`、`corporate`、`handdrawn`、`colorblind-safe`(Okabe-Ito 色盲安全色板)、`dark`;也可以从 `.drawio` 文件或图片学习你的风格:
```
画一个微服务架构图,使用我的 "corporate" 样式
```
```
从 ~/diagrams/brand.drawio 学习我的样式,保存为 "mybrand"
```
Skill 会提取配色、形状、字体和连线风格,渲染预览图,**确认后**才保存预设。完整管理命令见 [docs/STYLE_PRESETS_CN.md](docs/STYLE_PRESETS_CN.md)。
## 🔄 工作流程
微信支付 |
支付宝 |
Buy Me a Coffee |
打赏 |