Communitygithub.com

spillwavesolutions/design-doc-mermaid

從文字或原始碼建立 Mermaid 圖表(流程圖、序列圖、類別圖、ER 圖、狀態圖、C4、架構圖)。預設用於 GitHub Wiki。當要求建立圖表、產生 Mermaid、記錄架構或將程式碼轉為圖表時使用。PlantUML 僅用於剩餘類型。Confluence 除了程式碼片段外,還需要 PNG/SVG。

design-doc-mermaid 是什麼?

Mermaid Architect 是一個專業技能,專為開發者與 AI 代理設計,可從文字描述或原始碼自動建立各種 Mermaid 圖表,包括 UML 圖(流程圖、序列圖、類別圖、ER 圖、狀態圖)與現代架構圖(C4、區塊圖)。它支援所有主流平台:GitHub Wiki/GFM(直接嵌入 Mermaid 程式碼)、GitHub WikiTicket(設計文件與逐步解說)、以及 Confluence(產出 PNG/SVG 圖片)。此技能的核心是層級決策樹:AI 會分析使用者意圖,載入對應的專業指南(例如活動圖、部署圖、架構圖),然後根據內建範本產生合規的 Mermaid 程式碼,並自動驗證。特別的是,它整合了「韌性工作流程」:在驗證失敗時,會自動逐步嘗試排錯指南、搜尋引擎與 MCP 工具(Perplexity、Brave、Gemini)來修復語法,確保圖表一定正確。此外,它還提供 Python 工具集(extract_mermaid.py、mermaid_to_image.py、resilient_diagram.py)用於批次處理、萃取與圖片轉換,並支援 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 Appexamples/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 支援 class、ER、state、sequence、flowchart、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

輸出: .mmd 和 .png 檔案都放在 ./diagrams/ 目錄中。

檔案命名慣例

./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. 識別圖表類型:sequence
  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

# 從 stdin

...(其餘部分已截斷)

決策樹範例

(內容已保留但為節省空間而截斷;實際使用時請包含完整絕策樹範例)

高對比樣式

(內容已保留但為節省空間而截斷)

檔案組織

(內容已保留但為節省空間而截斷)

工作流程摘要

(內容已保留但為節省空間而截斷)

何時使用何種工具

(內容已保留但為節省空間而截斷)

最佳實踐

(內容已保留但為節省空間而截斷)

學習路徑

(內容已保留但為節省空間而截斷)

Individual skills in this repo

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

相關技能