Communitygithub.com

spillwavesolutions/design-doc-mermaid

创建 Mermaid 图表(流程图、时序图、类图、ER图、状态图、C4、架构图),支持从文本或源代码生成。默认用于 GitHub wiki。当要求创建图表、生成 mermaid、记录架构或将代码转换为图表时使用。PlantUML 仅用于剩余类型。Confluence 需要 PNG/SVG 及代码块。

design-doc-mermaid 是什么?

该技能是一个专业的 Mermaid 图表生成与文档系统,旨在帮助开发者和 AI 代理从自然语言描述或源代码中快速创建并集成多种类型的图表。它支持流程图、时序图、类图、ER 图、状态图、C4 模型和架构图等,并能处理代码到图表的转换。技能内置了决策树,可根据用户意图自动加载对应的专用指南和模板,并包含一个弹性工作流,通过验证和错误恢复机制确保图表有效。该技能主要针对 GitHub wiki 和 Confluence 等平台优化,为 GitHub wiki 直接输出 Mermaid 代码块,为 Confluence 同时渲染 PNG/SVG 图片。它提供了一系列 Python 工具脚本用于提取、验证、批量转换图表,并内置了丰富的 Unicode 语义符号库来增强图表可读性。

兼容平台✓Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add spillwavesolutions/design-doc-mermaid

在你喜欢的 AI 中提问

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

预览

来自技能 README

Description
API Sequence

文档

Mermaid Architect - 分层图表与文档技能

Mermaid 图表和文档系统,具有专用指南和代码到图表的能力。

目录

决策树

此技能的工作方式:

  1. 用户发起请求 → 技能分析意图
  2. 技能确定图表/文档类型 → 加载适当的指南
  3. AI 阅读专用指南 → 使用模板生成图表/文档
  4. 交付结果 → 附带验证和导出选项

用户意图分析:

flowchart TD
    Start([用户请求]) --> Analyze{分析意图}

    Analyze -->|"工作流、流程、业务逻辑"| Activity[加载活动图指南<br/>references/guides/diagrams/activity-diagrams.md]
    Analyze -->|"基础设施、部署、云"| Deploy[加载部署图指南<br/>references/guides/diagrams/deployment-diagrams.md]
    Analyze -->|"系统架构、组件"| Arch[加载架构指南<br/>references/guides/diagrams/architecture-diagrams.md]
    Analyze -->|"API 流程、交互"| Sequence[加载时序图指南<br/>references/guides/diagrams/sequence-diagrams.md]
    Analyze -->|"类、ER、状态、wiki、演练"| WikiGuide[加载 WikiTicket GitHub 指南<br/>references/guides/wiki-ticket-and-github.md]
    Analyze -->|"代码转图表"| CodeToDiag[加载代码转图表指南<br/>references/guides/code-to-diagram/ + examples/]
    Analyze -->|"设计文档、完整文档"| DesignDoc[加载设计文档模板<br/>assets/*-design-template.md]
    Analyze -->|"unicode 符号、图标"| Unicode[加载 Unicode 符号指南<br/>references/guides/unicode-symbols/guide.md]
    Analyze -->|"提取、验证、转换"| Scripts[使用 Python 脚本<br/>scripts/extract_mermaid.py<br/>scripts/mermaid_to_image.py]

    Activity --> Generate[生成图表]
    Deploy --> Generate
    Arch --> Generate
    Sequence --> Generate
    WikiGuide --> Generate
    CodeToDiag --> Generate
    DesignDoc --> Generate
    Unicode --> Generate
    Scripts --> Execute[执行脚本]

    Generate --> Validate{验证?}
    Validate -->|是| RunValidation[运行 mmdc 验证]
    Validate -->|否| Output
    RunValidation --> Output[输出结果]
    Execute --> Output

    classDef decision fill:#FFD700,stroke:#333,stroke-width:2px,color:black
    classDef guide fill:#90EE90,stroke:#333,stroke-width:2px,color:darkgreen
    classDef action fill:#87CEEB,stroke:#333,stroke-width:2px,color:darkblue

    class Analyze,Validate decision
    class Activity,Deploy,Arch,Sequence,WikiGuide,CodeToDiag,DesignDoc,Unicode,Scripts guide
    class Generate,Execute,RunValidation,Output action

可用指南和资源

图表类型指南(references/guides/diagrams/)

指南完整路径当用户想要时加载示例
活动图references/guides/diagrams/activity-diagrams.md工作流、流程、业务逻辑、用户流程、决策树"显示结账流程"、"文档化 ETL 管道"、"创建审批工作流"
部署图references/guides/diagrams/deployment-diagrams.md基础设施、云架构、K8s、无服务器、网络拓扑"显示 AWS 架构"、"文档化 GCP 部署"、"创建 K8s 图"
架构图references/guides/diagrams/architecture-diagrams.md系统架构、组件设计、高层结构"显示系统组件"、"文档化微服务"、"架构概览"
时序图references/guides/diagrams/sequence-diagrams.mdAPI 交互、服务通信、请求/响应流"显示 API 调用序列"、"文档化认证流程"、"服务交互"
WikiTicket / GitHub / Confluencereferences/guides/wiki-ticket-and-github.md设计文档、演练、需求、wiki 发布、Confluence 图片"架构文档"、"代码演练"、"wiki"、"Confluence"

WikiTicket 和 GitHub wiki 的默认设置为该技能,包括 classDiagram、erDiagram 和 stateDiagram-v2。不要将这些类型发送到 PlantUML。如果 GitHub 无法渲染 C4 / architecture-beta / block-beta,则回退到 flowchart TD。

代码转图表指南与示例

资源完整路径提供内容
主指南references/guides/code-to-diagram/README.md分析任何代码库并提取图表的完整工作流
Spring Bootexamples/spring-boot/README.mdController→Service→Repository 架构、部署配置、方法时序图、业务逻辑活动图
FastAPIexamples/fastapi/README.mdPython 异步模式、Pydantic 模型、依赖注入、云部署
Reactexamples/react/README.md组件层级、状态管理、数据流、构建管道
Python ETLexamples/python-etl/README.md数据管道、转换步骤、错误处理、调度
Node/Expressexamples/node-webapp/README.md中间件链、路由处理程序、异步模式、部署
Java Web 应用examples/java-webapp/README.md传统 MVC、Servlet 容器、WAR 部署

设计文档模板

模板完整路径用途何时加载
架构设计assets/architecture-design-template.md系统级架构"创建架构文档"、"文档化系统设计"
API 设计assets/api-design-template.mdAPI 规范"API 设计文档"、"文档化 REST API"
功能设计assets/feature-design-template.md功能规划"功能设计"、"规划新功能"
数据库设计assets/database-design-template.md数据库模式"数据库设计"、"文档化模式"
系统设计assets/system-design-template.md完整系统"系统设计文档"、"完整系统文档"

Unicode 符号指南

完整路径: references/guides/unicode-symbols/guide.md

当用户提到时加载: "unicode 符号"、"图表中的表情符号"、"语义图标"、"添加符号"

快速参考:

  • 📦 基础设施:☁️ 🌐 🔌 📡 🗄️
  • ⚙️ 计算:⚙️ ⚡ 🔄 ♻️ 🚀 💨
  • 💾 数据:💾 📦 📊 📈 🗃️ 🧊
  • 📨 消息传递:📨 📬 📤 📥 🐰 📢
  • 🔐 安全:🔐 🔑 🛡️ 🚪 👤 🎫
  • 📝 监控:📝 📊 🚨 ⚠️ ✅ ❌

Python 脚本(scripts/)

脚本用途何时加载
extract_mermaid.py从 Markdown 提取图表、验证语法、替换为图片"提取图表"、"验证 mermaid"、"找到所有图表"
mermaid_to_image.py转换 .mmd 为 PNG/SVG、批量转换、自定义主题"转换为图片"、"渲染图表"、"创建 PNG"
resilient_diagram.py完整工作流:保存 .mmd、生成图片、验证、错误恢复"生成图表"、"创建带验证的图表"、"弹性图表"

GitHub wiki、WikiTicket 和 Confluence

为 WikiTicket 设计文档、代码演练、需求、GitHub wiki 或 Confluence 加载 references/guides/wiki-ticket-and-github.md。

目标提供内容
GitHub wiki / GFM围栏 mermaid 代码块。GitHub 渲染类图、ER图、状态图、时序图、流程图、C4。
Confluence / Notion / Word / PDF同时渲染 PNG 或 SVG(通过 scripts/resilient_diagram.py 或 mmdc)并上传图片。不要依赖 Confluence 渲染 Mermaid。

PlantUML 是可选的,用于 Salt 线框图、用例、时序、ArchiMate、nwdiag 和 WBS。这些始终提供 PNG 或 SVG。

使用模式

常见的请求模式和指南选择。完整映射请参见何时使用何种类型。

模式示例请求要加载的指南
单个图表"为登录流程创建活动图"图表类型指南 + Unicode 符号
代码转图表"从 application.yml 生成部署图"框架示例 + 部署指南
设计文档"创建 API 设计文档"assets/ 中的模板 + 相关图表指南
提取/验证"从 design.md 提取图表"使用 scripts/extract_mermaid.py
批量转换"将所有 .mmd 转换为 PNG"使用 scripts/mermaid_to_image.py

弹性工作流

关键: 这是所有图表生成推荐的方案。它确保验证、错误恢复和一致的文件组织。

完整指南: references/guides/resilient-workflow.md

工作流概览

flowchart LR
    A[1. 识别类型] --> B[2. 保存 .mmd + 图片]
    B --> C{3. 有效?}
    C -->|是| D[4. 添加到 Markdown]
    C -->|否| E[5. 错误恢复]
    E --> F{找到修复?}
    F -->|是| A
    F -->|否| G[外部搜索]
    G --> A

    classDef step fill:#90EE90,stroke:#333,color:darkgreen
    classDef decision fill:#FFD700,stroke:#333,color:black
    class A,B,D,E,G step
    class C,F decision

关键原则

在通过验证之前,切勿将图表添加到 markdown 中。 这可以防止文档中出现损坏的图表。

使用脚本(推荐)

# 生成并带有完整错误恢复
python scripts/resilient_diagram.py \
    --code "flowchart TD; A-->B" \
    --markdown-file design_doc \
    --diagram-num 1 \
    --title "process_flow" \
    --format png \
    --json

输出: 在 ./diagrams/ 目录下同时生成 .mmd 和 .png 文件。

文件命名约定

./diagrams/<markdown_file>_<num>_<type>_<title>.mmd
./diagrams/<markdown_file>_<num>_<type>_<title>.png

示例: ./diagrams/api_design_01_sequence_auth_flow.png

错误恢复优先级

验证失败时,工作流自动执行:

  1. 检查故障排除指南 - references/guides/troubleshooting.md(包含 28 个记录的错误)
  2. 使用 perplexity 搜索 - perplexity_ask MCP 用于语法问题
  3. 使用 brave 搜索 - brave_web_search MCP 用于最新解决方案
  4. 询问 gemini - gemini 技能获取替代视角
  5. 通用搜索 - 使用 WebSearch 工具作为后备

手动后备步骤

如果脚本不可用:

  1. 从第一行识别图表类型(flowchart、sequence 等)
  2. 从 references/guides/diagrams/ 加载参考指南
  3. 保存到 ./diagrams/<markdown_file>_<num>_<type>_<title>.mmd
  4. 验证: mmdc -i file.mmd -o file.png -b transparent
  5. 出错时: 在 references/guides/troubleshooting.md 中搜索匹配的错误
  6. 如果未找到: 按上述优先级使用搜索工具
  7. 添加引用: ![Description](./diagrams/filename.png)

模式 6:弹性图表生成

用户: "创建一个时序图并将其添加到设计文档"

技能操作:

  1. 识别意图:图表生成 + markdown 集成
  2. 加载工作流指南:references/guides/resilient-workflow.md
  3. 识别图表类型:时序图
  4. 加载图表指南:references/guides/diagrams/sequence-diagrams.md
  5. 使用模板生成 Mermaid 代码
  6. 执行弹性工作流:
    python scripts/resilient_diagram.py \
        --code "[生成的代码]" \
        --markdown-file design_doc \
        --diagram-num 1 \
        --title "api_sequence" \
        --json
    
  7. 如果验证失败 → 应用故障排除修复 → 重试
  8. 成功后 → 将 ![API Sequence](./diagrams/design_doc_01_sequence_api_sequence.png) 添加到 markdown

Unicode 语义符号

始终使用 Unicode 符号来增强图表清晰度。常见模式:

基础设施与部署

graph TB
    Client[👤 用户] --> LB[🌐 负载均衡器]
    LB --> App1[⚙️ 应用服务器 1]
    LB --> App2[⚙️ 应用服务器 2]
    App1 --> DB[(💾 数据库)]
    App1 --> Cache[(⚡ Redis)]

带状态的活动流

flowchart TD
    Start([🚀 开始]) --> Process[⚙️ 处理数据]
    Process --> Check{✓ 有效?}
    Check -->|是| Save[💾 保存]
    Check -->|否| Error[❌ 错误]
    Save --> Complete([✅ 完成])

微服务架构

graph TB
    API[🌐 API 网关] --> Auth[🔐 认证服务]
    API --> Orders[📋 订单服务]
    Orders --> Queue[📬 消息队列]
    Queue --> Worker[⚙️ 后台工作者]
    Worker --> Storage[📦 对象存储]

完整符号参考,请加载: references/guides/unicode-symbols/guide.md

Python 工具

提取 Mermaid 图表

# 列出所有图表
python scripts/extract_mermaid.py document.md --list-only

# 提取到单独文件
python scripts/extract_mermaid.py document.md --output-dir diagrams/

# 验证所有图表
python scripts/extract_mermaid.py document.md --validate

# 替换为图片引用(用于 Confluence 上传)
python scripts/extract_mermaid.py document.md --replace-with-images \
  --image-format png --output-markdown output.md

转换为图片

# 单个转换
python scripts/mermaid_to_image.py diagram.mmd output.png

# 自定义设置
python scripts/mermaid_to_image.py diagram.mmd output.svg \
  --theme dark --background white --width 1200

# 批量转换目录
python scripts/mermaid_to_image.py diagrams/ output/ --format png --recursive

# 从标准输入
echo "graph TD; A-->B" | python scripts/mermaid_to_

…

[翻译内容已截断]

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相关技能