图像与设计
需要生成或优化流程图、架构图、时序图等可视化时…
把自然语言、笔记、代码片段、schema、表格或已有图表源码转成可编辑的 Mermaid/Graphviz/PlantUML/SVG 图,并按需校验、渲染为文件。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 49/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
需要生成或优化流程图、架构图、时序图等可通用
解决思路
- 执行前先确认当前任务是否命中 diagram-generator 的适用范围。
- 读取 ../tool-index.md,校验工具可用性和实际路径。
- 缺工具时调用 bootstrap,不要猜路径。
- 进入“工作流”第一步并执行,不要停在确认状态。
- 从混乱或结构化输入创建清晰、可编辑的图表。
- 优先输出基于文本的图表源码,使结果可审查、可版本化、可继续改进。
- 仅当用户要求图片/PDF,或可下载产物确实有帮助时,才渲染到文件。
- 识别用户意图、受众和源材料。
- 使用决策表选择图表家族和语言。
- 写图表代码前,先规整实体、关系、标签、状态、分支以及时间/顺序信息。
- 生成简洁、可读的图表源码。
- 在脑内校验语法;创建文件时,运行 scripts/render_diagram.py。
- 返回图表源码,并附简短假设说明;生成文件时,附输出文件链接。
- 不要过度追问澄清;若请求不充分,做合理假设并简要标注。
- 流程流、决策树、简单泳道:优先 Mermaid flowchart;原因:可读且易于粘贴到 Markdown。
- 系统/用户交互时序:优先 Mermaid sequenceDiagram 或 PlantUML sequence;原因:Mermaid 适合文档,PlantUML 适合 UML 形式化。
- 生命周期、状态机、转换:优先 Mermaid stateDiagram-v2 或 PlantUML state;原因:转换语法紧凑。
- 数据库 schema、实体、关系:优先 Mermaid erDiagram;原因:可移植的 ER 记法。
- 类/接口/对象模型:优先 Mermaid classDiagram 或 PlantUML class;原因:Mermaid 适合文档,PlantUML 适合详细 UML。
- 项目排期:优先 Mermaid gantt;原因:时间线语法简洁。
- 层级、想法、笔记:优先 Mermaid mindmap;原因:脑图的好默认。
- 客户/产品旅程:优先 Mermaid journey;原因:内置旅程记法。
- git 历史:优先 Mermaid gitGraph;原因:内置 git 记法。
- 依赖图、包图、大型网络:优先 Graphviz DOT;原因:对密集图有更好的布局引擎。
- 带层次、集群、边界的架构:优先 Mermaid flowchart 配合 subgraphs、Graphviz clusters 或 PlantUML C4-style;原因:按所需保真度选择。
- 带权重流/sankey 类关系:优先 Mermaid sankey-beta(若支持),否则 SVG 或 Graphviz;原因:Mermaid 支持度可能因渲染器而异。
- 源码语言不适配的自定义视觉:优先 SVG;原因:可精确控制布局和样式。
- 始终提供可编辑源码,除非用户明确只要求图片。
- 默认只给一个最佳图表;仅在确实有用时提供备选。
- 优先稳定、简单的语法,而非旧版 Mermaid/PlantUML 可能无法渲染的花哨特性。
- 使用短标签;需要时把长文本拆到图表外的注释中。
- 避免有歧义的节点 ID;使用 ASCII ID 和人类可读标签。
- 保留用户术语,但在同一图表内统一大小写。
- 技术图在隐含时包含边界,如 client、service、database、queue、external API、operator/user。
- 业务流程图在存在时区分 happy path、decision points、failures、retries、manual steps。
- 从不确定文本创建的图表,在代码后包含 `Assumptions` 小节。
- 查阅 references/diagram-patterns.md 获取紧凑模板。
- 以正确的图表指令开头,例如 `flowchart TD`、`sequenceDiagram`、`erDiagram`、`gantt`、`mindmap` 或 `journey`。
- 流程图默认用 `flowchart TD`,除非用户要求从左到右;架构和流水线用 `flowchart LR`。
- 泳道或架构层用 subgraphs;给 subgraphs 起可读标签。
- 保持节点 ID 稳定且仅 ASCII,例如 `ingest_service[Ingest Service]`。
- 给包含可能混淆解析器的标点的标签加引号。
- 分支用决策菱形:`decision{Condition?}`。
- 使用一致的边标签:`-- yes -->`、`-- no -->`、`-. async .->` 或 `== critical ==>`,且仅在有意义时使用。
- 时序图中先声明 participants 再写 messages;人类用 `actor`,系统用 `participant`。
- 对条件、可选、重复、并行流程使用 `alt/else/end`、`opt/end`、`loop/end` 和 `par/and/end` 块。
- 大型、密集或布局敏感的关系图使用 Graphviz。
- 有向关系优先 `digraph G`,无向网络优先 `graph G`。
- 在顶部设置利于布局的 graph 属性:`rankdir=LR`、`nodesep`、`ranksep`,有帮助时用 `splines=true`。
- 用 `subgraph cluster_name` 表示边界和子系统。
- 使用朴素标签和克制样式。
- 仅在边标签增加含义时使用边标签。
- 节点很多时按领域用 clusters 分组,并避免交叉密集的 all-to-all 边。
- 用户要求 UML 或需要正式 UML 记法时使用 PlantUML。
- 用 `@startuml` 和 `@enduml` 包裹图表。
- 在有用时使用 `actor`、`participant`、`database`、`queue`、`collections` 或 `component` 构造型。
- 用 `package`、`rectangle` 或 `node` 表示架构边界。
- 类图只包含重要字段/方法,除非用户要求穷尽细节。
- 活动图使用清晰的 start/end 标记和显式分支标签。
- 仅当文本图表语言无法可靠表达请求的视觉时使用 SVG。
- 保持 SVG 简单、可访问、可编辑。
- 包含 `<title>` 和有意义的文本标签。
- 优先使用矩形、线、箭头和分组,而不是复杂路径。
- 不要嵌入外部字体或远程图片。
- 当用户要求 PNG/SVG/PDF 时,创建源文件并运行:`python "<SKILL_ROOT>/diagram-generator/scripts/render_diagram.py" input.mmd --format svg --out output.svg`
- 当用户要求 PNG/SVG/PDF 时,创建源文件并运行:`python "<SKILL_ROOT>/diagram-generator/scripts/render_diagram.py" input.dot --format png --out output.png`
- 当用户要求 PNG/SVG/PDF 时,创建源文件并运行:`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](仅生成时)。
- 用户用英文请求时用英文回复;用户用中文请求时用中文回复,除非另有要求。
- 需要渲染时了解自动化能力边界: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` 会输出安装提示而不是报错。
- 声称完成前自检:我是否执行了工作流中的每一步(而不是只阅读)?
- 声称完成前自检:我是否基于 `tool-index` 使用了真实工具路径?
- 声称完成前自检:我是否产出了可复现证据(命令/脚本/截图/报告)?
- 声称完成前自检:我是否完成并回写了 RULES 要求的 Checklist 项?
适用边界 · 注意事项
- 当用户只需要最终不可编辑图片且不需要源码/版本化时,不必优先走文本图表源码流程。
- 当 Mermaid/Graphviz/PlantUML 无法可靠表达复杂自定义视觉或精确像素级设计时,不要硬套文本图表语言,改用 SVG 或专用绘图工具。
- 本地缺少对应渲染器且用户未要求 PNG/SVG/PDF 文件时,不要强行渲染,也不要声称已生成图片。