Community影像github.com

birchloveye/draw-flowchart

繪製流程圖和狀態圖,生成具有紙張風格海報(奶油紙、打字機字體、陰影線、直角連線、紅圈標記問題),並可匯出 HTML、PNG 和 SVG。當使用者要求流程圖、程序或工作流程圖、狀態圖、管線或實驗計畫圖,或希望將 Mermaid 轉換為精美圖片時使用。

draw-flowchart 是什麼?

此技能可將流程、工作流程或狀態圖轉換為具有獨特紙張風格的海報。它由兩個階段組成:首先,您(AI)負責將使用者描述的流程建模為 Mermaid 圖表,包括識別遺漏的分支、規則違反和風險步驟;其次,一個基於 Python 的腳本 `scripts/make_poster.py` 會自動將該 Mermaid 圖表渲染為精美的海報。 該技能支援兩種建模路徑:當 pstack 的 statechart 技能可用時(例如在 Claude Code 或 Cursor 中),它能透過撰寫 TLA+ 規格並執行形式化驗證來發現邏輯錯誤,然後自動將驗證結果轉換為 Mermaid 圖表。若未啟用 pstack,則可直接手動撰寫 Mermaid。最終輸出包括一個可離線運作的 HTML 檔案(內含匯出 PNG/SVG 按鈕)、一個 2x 解析度的 PNG 圖片和一個 SVG 向量圖。 主要優點:流程圖不僅美觀,而且內建了問題偵測機制——違反規則、死路或遺漏分支都會以紅圈標記,並在圖例中對應說明,適合設計審查或臨時報告。該工具適用於 Claude Code、Cursor、Codex 等平台。 最佳使用規模為 15–25 個節點;超過 30 個節點時建議拆分。僅支援由上而下的佈局,不支援複合狀態或子圖。

相容平台✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/birchloveye/draw-flowchart/tree/HEAD/skills/draw-flowchart

Installed? Explore more 影像 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

繪製流程圖海報

這項工作分為兩部分:

  1. 你將流程轉換為 Mermaid。 這部分需要判斷力:狀態是什麼、缺少哪些分支、流程在哪裡可能卡住或違反規則。
  2. scripts/make_poster.py 渲染它。 不涉及模型,因此同樣的輸入總是產生同樣的海報。

<skill> 是指存放此檔案的資料夾。

工作流程

  1. 理解流程。 用一句話重述使用者的目標。列出歧義、缺少的分支(「這一步失敗時會發生什麼?」)以及有風險的步驟。僅針對你自己無法解決的分岔點詢問使用者。

  2. 建立模型。 為圖表建立一個資料夾(每個海報一個資料夾)。

    • 使用 pstack(優先)。 如果 pstack 的 statechart 技能可用(Claude Code: /pstack:statechart;Cursor: /statechart;或其位於磁碟上的 SKILL.md),請使用它:撰寫 TLA+ 規格,並將使用者的規則作為 INVARIANTs,執行它,閱讀 report.md。按 references/pstack-statechart.md 所述撰寫檢視模組,以便圖表能乾淨轉換。然後轉換:
      python3 <skill>/scripts/make_poster.py <folder> --from-statechart <statechart-out>/chart.mmd
      
      它會寫入 <folder>/flow.mmd 並按順序列印問題編號,以及每個問題違反的規則。 如果使用者要求保持 pstack 關閉,請勿開啟它;使用下一種路徑並說明原因。
    • 不使用 pstack。 按照 references/mermaid-rules.md 手動撰寫 <folder>/flow.mmd。將你發現的每個問題(違反規則、死路、缺少分支)標記上 breaks 類別。
    • make_poster.py <folder> --init [--lang zh] 會寫入一個起始的 flow.mmd 和 poster.json 供編輯。
  3. 撰寫 <folder>/poster.json(references/poster-json.md):以使用者的語言填寫標題、副標題、圖例,以及一個卡片,每個 breaks 節點一行,順序與編號相同。

  4. 渲染。

    python3 <skill>/scripts/make_poster.py <folder>
    

    它會先檢查,如果有錯誤則不繪製任何東西。修復所有錯誤;閱讀所有警告。輸出:poster.html(自包含,可離線運作)、poster.png(2x)和 poster.svg。

  5. 檢視 poster.png。 如果你無法檢視圖片,或為了節省成本,可將此步驟交給較便宜的模型或子代理。檢查:

    • 每個紅圈標記的節點都有對應的卡片行,且編號相符;
    • 沒有線條穿過文字或看起來連錯了盒子;
    • 標籤使用使用者的語言,且長度足以閱讀;
    • 沒有任何重要部分過於擁擠。修正方法:縮短標籤、在應斷行處加入空格、將大圖表拆分成兩張海報,或在 poster.json 的 style 中覆寫間距。然後重新渲染。
  6. 回報給使用者:先提供 PNG 路徑,然後每個問題一行(該規則以及流程如何觸及它),最後說明模型遺漏了什麼。提及 poster.html 包含匯出 PNG/SVG 的按鈕。

需求

  • Python 3.8+(標準庫;如有安裝 Pillow 可用於縮小照片)。
  • Chrome、Edge 或 Chromium 用於匯出 PNG/SVG。如果找不到,poster.html 仍會寫入;設定 CHROME 環境變數指向瀏覽器二進位檔即可啟用匯出。
  • 可選:pstack (https://github.com/cursor/plugins/tree/main/pstack) 用於 TLA+ 檢查,需要 Java 11+ 和 TLA+ 工具(請參閱 references/pstack-statechart.md)。
  • 字型為系統字型(macOS: American Typewriter, Baskerville, Songti, Kaiti;Windows 和 Linux 回退到 Courier New / Georgia / SimSun / Noto Serif CJK)。在 Linux 上安裝 CJK 字型,例如用於中文的 Noto Serif CJK。

限制

  • 僅支援由上而下的佈局。
  • 不支援複合狀態、平行區域、註記或子圖。對於狀態圖輸出,請使用扁平檢視(state() 傳回字串)。
  • 最佳使用規模為 15–25 個盒子;超過 30 個盒子時檢查會發出警告。請將較大的流程拆分成多張海報。
  • 自動佈局偶爾會將線條畫在與不相關的盒子附近。這就是為什麼要有步驟 5。

範例

儲存庫中的 examples/paper-submission/:期刊投稿的 TLA+ 模型(statechart/)、轉換後的 flow.mmd、poster.json 和渲染後的海報。examples/paper-submission-zh/ 是相同模型的中文檢視。

相關技能