Communitygithub.com

diagram-generator

根据自然语言描述、笔记、代码片段、数据库模式、表格或现有图表源码,生成、优化、验证并渲染各种类型的图表。支持流程图、泳道图、时序图、状态图、ER 图、类图、架构图、依赖图、甘特图、思维导图、用户旅程图、桑基图、组织结构图、网络图等多种视觉模型。默认使用 Mermaid,同时支持 Graphviz DOT、PlantUML 和 SVG 输出。

diagram-generator 是什么?

Diagram Generator 是一个 AI 技能,旨在帮助开发者和 AI Agent 用户从混乱或结构化的输入中快速创建清晰、可编辑的图表。它支持多种图表类型,包括流程图、泳道图、时序图、状态图、ER 图、类图、架构/C4 风格图、依赖图、甘特图、思维导图、用户旅程图、桑基图、组织结构图和网络图。该技能优先生成基于文本的图表源码,便于审查、版本控制和优化;仅在用户明确要求时才渲染为 PNG、SVG 或 PDF 文件。它内置了一个决策表,用于根据用户意图自动选择最合适的图表语言:默认使用 Mermaid(适合大多数场景和 Markdown 嵌入),对于密集的依赖图使用 Graphviz DOT,对于 UML 重度的工程图使用 PlantUML,在文本语言无法可靠表达时退化为直接 SVG 标记。技能还包含详细的生成规则、验证清单和渲染脚本(scripts/render_diagram.py),该脚本会尝试现有的本地工具并给出可操作的安装提示。该技能适用于 Claude Code、Cursor、Codex 等 AI Agent 平台,可以集成到文档生成或渗透测试报告等上下游流程中。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/zhaoxuya520/reverse-skill/tree/main/skills/diagram-generator

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Diagram Generator

ACTION REQUIRED(读完后立刻执行)

  1. NOW:确认当前任务是否命中本 skill 的适用范围
  2. NOW:读取 ../tool-index.md,校验工具可用性和实际路径
  3. NEXT:缺工具时调用 bootstrap,不要猜路径
  4. ACT:进入"工作流"第一步并执行,不要停在确认状态

目的

从混乱或结构化的输入中创建清晰、可编辑的图表。优先使用基于文本的图表源码,以便后续审查、版本控制和优化。仅在用户要求生成图片/PDF 或者可下载的产物能够显著提升效果时,才渲染为文件。

默认工作流

  1. 识别用户的意图、受众和原始材料。
  2. 根据下面的决策表选择合适的图表类型和语言。
  3. 在编写图表代码之前,规范实体、关系、标签、状态、分支以及时间/顺序信息。
  4. 生成简洁、可读的图表源码。
  5. 语法上验证合理性,并在创建文件时运行 scripts/render_diagram.py。
  6. 返回图表源码以及关于假设的简短说明。如果生成了文件,请包含输出文件的链接。

不要过度请求澄清。如果请求不够明确,请做出合理的假设并简要标注。

图表语言决策表

除非其他语言明显更好,否则使用 Mermaid。

用户想要优先使用原因
流程、决策树、简单泳道Mermaid flowchart可读性强,易于嵌入 Markdown
系统/用户交互序列Mermaid sequenceDiagram 或 PlantUML sequenceMermaid 用于文档;PlantUML 用于 UML 的正式性
生命周期、状态机、转换Mermaid stateDiagram-v2 或 PlantUML state紧凑的转换语法
数据库模式、实体、关系Mermaid erDiagram可移植的 ER 表示法
类/接口/对象模型Mermaid classDiagram 或 PlantUML classMermaid 用于文档;PlantUML 用于详细的 UML
项目进度Mermaid gantt简洁的时间线语法
层次结构、想法、笔记Mermaid mindmap概念图的良好默认选择
客户/产品旅程Mermaid journey内置的旅程表示法
Git 历史Mermaid gitGraph内置的 Git 表示法
依赖图、包图、大型网络Graphviz DOT适合密集图形的更好布局引擎
包含层、集群、边界的架构Mermaid flowchart 结合子图、Graphviz 集群或 PlantUML C4 风格根据请求的精度选择
带权重的流程/桑基图关系Mermaid sankey-beta(如果支持),否则 SVG 或 GraphvizMermaid 的支持可能因渲染器而异
源语言不适合的自定义视觉SVG对布局和样式进行精确控制

输出策略

  • 始终提供可编辑的源码,除非用户明确只要求图片。
  • 默认生成一个最佳图表。只有在确实有用时才提供备选方案。
  • 优先选择稳定、简单的语法,避免使用可能在较旧版本的 Mermaid/PlantUML 中无法渲染的高级特性。
  • 使用简短的标签。需要时将长文本拆分为图表外的注释。
  • 避免模糊的节点 ID。使用 ASCII ID 和可读的标签。
  • 保留用户术语,但在图表中统一大小写。
  • 对于技术图表,在暗示的情况下包含边界,例如客户端、服务、数据库、队列、外部 API 和操作员/用户。
  • 对于业务流程图表,在存在时区分快乐路径、决策点、失败、重试和手动步骤。
  • 对于基于不确定文本创建的图表,在代码之后包含一个 Assumptions 部分。

Mermaid 生成规则

查阅 references/diagram-patterns.md 以获取紧凑模板。

通用 Mermaid 规则:

  • 以正确的图表指令开始,例如 flowchart TD、sequenceDiagram、erDiagram、gantt、mindmap 或 journey。
  • 对于流程图,使用 flowchart TD,除非用户要求从左到右;对于架构和流水线,使用 flowchart LR。
  • 使用子图表示泳道或架构层。使用可读标签命名子图。
  • 保持节点 ID 稳定且仅使用 ASCII,例如 ingest_service[Ingest Service]。
  • 对包含可能混淆解析器的标点符号的标签使用引号。
  • 使用决策菱形表示分支:decision{Condition?}。
  • 使用一致的边标签:仅在有意义时使用 -- yes -->、-- no -->、-. async .-> 或 == critical ==>。
  • 在时序图中,在消息之前声明参与者。使用 actor 表示人类,participant 表示系统。
  • 使用 alt/else/end、opt/end、loop/end 和 par/and/end 块表示条件、可选、重复和并行流程。

Graphviz DOT 生成规则

对于大型、密集或对布局敏感的关系图,使用 Graphviz。

  • 对于有向关系,优先使用 digraph G;对于无向网络,优先使用 graph G。
  • 在顶部设置对布局友好的图属性:rankdir=LR、nodesep、ranksep,以及必要时使用 splines=true。
  • 使用 subgraph cluster_name 表示边界和子系统。
  • 使用简洁的标签和克制的样式。
  • 仅在边标签增加含义时使用。
  • 对于大量节点,使用集群按域分组,避免交叉严重的全连接边。

PlantUML 生成规则

当用户要求 UML 或需要正式的 UML 表示法时,使用 PlantUML。

  • 使用 @startuml 和 @enduml 包裹图表。
  • 在有用时使用 actor、participant、database、queue、collections 或 component 原型。
  • 使用 package、rectangle 或 node 表示架构边界。
  • 对于类图,除非用户要求详细细节,否则只包含重要的字段/方法。
  • 对于活动图,使用清晰的开始/结束标记和明确的分支标签。

SVG 生成规则

仅在文本图表语言无法可靠表达所需视觉效果时使用 SVG。

  • 保持 SVG 简单、可访问和可编辑。
  • 包含 <title> 和有意义的文本标签。
  • 优先使用矩形、线条、箭头和分组,而不是复杂的路径。
  • 不要嵌入外部字体或远程图片。

渲染文件

当用户要求 PNG/SVG/PDF 时,创建源文件并运行:

python "<SKILL_ROOT>/diagram-generator/scripts/render_diagram.py" input.mmd --format svg --out output.svg
python "<SKILL_ROOT>/diagram-generator/scripts/render_diagram.py" input.dot --format png --out output.png
python "<SKILL_ROOT>/diagram-generator/scripts/render_diagram.py" input.puml --format svg --out output.svg

<SKILL_ROOT> 是本包 skills/ 目录的实际路径,AI 应自动检测。

渲染器有意容忍依赖问题。它会尝试常见的本地工具,并在渲染器不可用时报告可操作的安装提示。除非脚本成功完成且输出文件存在,否则不要声称已渲染图片。

验证清单

在最终确定之前:

  • 图表类型与用户的任务匹配。
  • 所选语言的源码在语法上是合理的。
  • 标签足够简短以便容纳。
  • 边和消息顺序准确反映输入。
  • 当输入不完整时,已注明假设。
  • 对于生成的文件,输出存在并且可以打开或具有非零大小。

常用回答模板

对于大多数图表回答,使用以下结构:

下面是可编辑的 [language] 版本:

```[language]
[source]

Assumptions:

  • [仅当需要时]

Rendered file: [link] [仅当生成了文件]


对于英文用户的请求,用英文回答。对于中文用户的请求,用中文回答,除非他们要求其他语言。

---

## 按需自举(On-Demand Bootstrap)

### 自动化能力边界

| 工具 | 可自动安装 | 安装方式 | 说明 |
|------|-----------|---------|------|
| Mermaid CLI (mmdc) | ✓ | npm install -g @mermaid-js/mermaid-cli | 渲染 Mermaid 为 PNG/SVG |
| Graphviz (dot) | ✗ | 手动安装 | https://graphviz.org/download/ |
| PlantUML | ✗ | 需要 Java + plantuml.jar | https://plantuml.com/download |
| Python (render script) | ✓ | 已在 bootstrap 中 | `scripts/render_diagram.py` 依赖 |

### 说明

本 skill 主要输出文本格式的图表源码(Mermaid/DOT/PlantUML),不一定需要本地渲染工具。只有当用户明确要求生成 PNG/SVG/PDF 文件时才需要对应的渲染器。

如果渲染器不可用,`scripts/render_diagram.py` 会输出安装提示而不是报错。

---

## 路由上下文

**上游入口**: `skills/SKILL.md`(总控)、`routing.md`
**触发条件**: 用户说"画图"、"流程图"、"架构图"、"攻击路径图"、"时序图"、"Mermaid"、"Graphviz"、"PlantUML"
**下游出口**:
- 生成的图表可嵌入 `docs-generator/` 的报告中
- 攻击路径图可配合 `pentest-tools/` 的渗透报告

**同级关联模块**: `docs-generator/`(报告中嵌入图表)


## 任务完成自检(声称完成前 MUST 通过)

- [ ] 我是否执行了工作流中的每一步(而不是只阅读)?
- [ ] 我是否基于 `tool-index` 使用了真实工具路径?
- [ ] 我是否产出了可复现证据(命令/脚本/截图/报告)?
- [ ] 我是否完成并回写了 RULES 要求的 Checklist 项?

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

api-security

Use for authorized security assessment of REST, GraphQL, WebSocket, or SOAP APIs, including discovery, authentication, authorization, rate-limit, and CI/CD testing.

apk-reverse

在 CLI 环境下做 Android APK 逆向时使用。适用于 APK 解包、Java 反编译、smali 修改、重打包、Frida 动态 Hook,以及按需切换到 so/native 分析。优先使用本机已安装的 jadx、apktool、frida、adb、ida-reverse、radare2。

attack-chain

Use for authorized multi-stage attack-path planning and orchestration when a task spans reconnaissance, initial access, privilege escalation, lateral movement, or impact assessment. Route single-stage tasks directly to their specialist skill.

binary-diff

|

binary-ninja-reverse

Use for authorized binary analysis in Binary Ninja, including HLIL/MLIL/LLIL inspection, strings/imports/exports, cross-references, types, patch review, Python API automation, and optional Binary Ninja MCP or localhost HTTP integration.

browser-automation

|

browser-extension-reverse

Use for authorized reverse engineering of browser extensions (Chrome/Firefox) including manifest analysis, background workers, and extension-based credential or traffic logic recovery.

case-review

Reviews a reverse-skill case package for scope readiness, Evidence to Finding to Path traceability, work item coverage, timeline references, and optional artifact hash integrity before report handoff.

cloud-k8s

Use for authorized cloud, container, and Kubernetes security assessment including metadata SSRF, IAM misconfig, container escape paths, and cluster RBAC review.

code-audit

Use for authorized source-code security review and SAST workflows including Semgrep, CodeQL patterns, dangerous API hunting, and fix verification.

ctf-sandbox

Thin PRIMARY for CTF / AWD / 靶场 multi-type orchestration. Hands off to the sidecar CTF-Sandbox-Orchestrator. Use when the user says CTF, AWD, 靶场, or 比赛题 and no more specific pwn/APK/IDA route already won.

database-security

Use for authorized database security assessment covering PostgreSQL/MySQL/MSSQL/Mongo/Redis exposure, authz, UDF/command paths, and misconfiguration review.

digital-forensics

Use for authorized digital forensics including memory dumps, disk timelines, PCAP investigation, artifact triage, and IR evidence preservation.

docs-generator

|

dotnet-reverse

.NET / C# 二进制逆向。当目标是 .NET assembly(PE 头含 CLR、.exe/.dll 托管程序)、C# 编译产物(含 NativeAOT)、红队 Sharp* 工具(Rubeus / SharpHound / SharpHound 等)、.NET 混淆程序(ConfuserEx / SmartAssembly / Babel / Eazfuscator)、.NET loader / info-stealer / 套壳 malware 时使用。优先用 dnSpyEx + de4dot,需要 AI 直接操作时联动 dnSpy MCP。不用于纯 native 二进制(走 reverse-engineering / ida-reverse)。

edr-bypass-re

|

email-security

Use for authorized email security review including phishing analysis, header authentication (SPF/DKIM/DMARC), BEC patterns, and mailbox token abuse research.

firmware-pentest

|

ghidra-reverse

Use for free/open reverse engineering with Ghidra (headless or GUI), including decompile, cross-refs, and optional Ghidra MCP workflows when IDA is unavailable.

go-rust-reverse

Use for reverse engineering stripped Go and Rust binaries including runtime recognition, pclntab/moduel data recovery, panic strings, and idiomatic decompilation recovery.

相关技能