Communitygithub.com

CoderMoray/SkillFlowChart

技能決策流程圖產生器 — AI 提取語義,腳本計算幾何

SkillFlowChart 是什麼?

此技能專為需要將自然語言描述的流程自動化轉換為視覺化流程圖的開發者及 AI 代理設計。其核心分工明確:AI 負責理解 SKILL.md 中的非結構化語義,並將其結構化為 nodes.json 格式;後續的座標計算、佈局與 HTML 生成則完全交由 Python 腳本處理,確保結果的確定性與可重複性。支援的主題包括流程起點、決策點、處理步驟、輸出及終止節點,並透過 side 欄位明確標示分支方向(左、右、下),解決了純腳本無法辨識語義分支的難題。此技能可應用於 Claude Code、Cursor、Codex 等支援自訂技能的平台,透過明確的分工避免 AI 猜測幾何佈局,從而產生清晰、對齊精確的流程圖 HTML 檔案。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add CoderMoray/SkillFlowChart

在你喜歡的 AI 中提問

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

說明文件

Skill 決策流程圖產生器

讀取一份 SKILL.md,提取結構化資料 nodes.json,腳本確定性生成流程圖 HTML。

分工

階段誰幹為什麼
SKILL.md → nodes.jsonAISKILL.md 是自然語言,語義不穩定,靠 AI 理解上下文
nodes.json → HTML腳本座標計算要確定性、可重現、對齊像素

AI 只輸出結構化資料,絕不輸出座標或 SVG;腳本只做幾何,絕不猜語義。

執行步驟

1. 讀取 SKILL.md

讀取使用者指定的 SKILL.md。若未找到,詢問使用者輸入路徑。

2. AI 提取 nodes.json

依以下 schema 輸出 JSON。每條出邊必須顯式標註 side 欄位——這是 AI 的語義判斷,腳本不會猜。

頂層結構

{
  "title": "技能名稱",
  "subtitle": "可選描述",
  "nodes": [ ... ],
  "edges": [ ... ],
  "loops": [ ... ],
  "legend": [ ... ]
}
  • nodes:必填,節點陣列
  • edges:必填,有向邊陣列
  • loops:可選,迴環虛線(見下文)
  • legend:通常留空 [],使用預設圖例

節點 type

type含義形狀
entry流程起點圓角矩形
decision決策點(是/否、有/無)菱形
process處理步驟圓角矩形
output報告/檔案輸出圓角矩形
terminal終止/報錯退出圓角矩形

節點 role(配色)

role含義fill / stroke
aiAI 推理 / LLM 呼叫#E6F1FB / #185FA5
output報告 / 檔案輸出#EEEDFE / #534AB7
decision決策點#FAEEDA / #854F0B
script腳本執行#E1F5EE / #0F6E56
terminal終止 / 報錯#FCEBEB / #A32D2D

一個節點只能有一個 role。 如果一個步驟涉及多種不同性質的工作(對應不同 role),必須拆成多個節點串聯。例如「腳本取基線 + AI 補充分析」不能合併為一個 role=ai 的節點,必須拆成 role=script 和 role=ai 兩個節點。

邊 side(關鍵!)

side含義佈局行為
bottom主流程向下target 在 from 下一層,cx 繼承 from
left決策左分支 / 分叉左決策→同層水平連;普通→下一層正交折線
right決策右分支 / 分叉右同上,方向相反

side 的語義判斷由 AI 完成:

  • 決策菱形(type=decision)的 left/right → 與決策同層,水平連線
  • 普通矩形(type=process/output)的 left/right → 下一層,正交折線(垂直→水平→垂直,無斜線)

loops(迴環,可選,虛線)

當流程中存在「回到先前步驟」的邏輯時使用,例如:

  • 修復後重新審查(apply_fix → entry)
  • 重試(retry → checkpoint)
  • 循環直到滿足條件(recheck → validate)
{ "from": "apply_fix", "to": "entry", "label": "修復後重新審查", "path": "left_edge" }

欄位說明:

  • from:迴環起點節點 id(通常是最後一步)
  • to:迴環終點節點 id(通常是流程起點或某個檢查點)
  • label:迴環標籤,顯示在虛線旁
  • path:固定為 "left_edge"(沿圖左邊緣路由)

注意:

  • 迴環起點到終點之間不要在 edges 裡重複畫邊,否則會重複渲染
  • loops 裡的 from/to 節點不參與 depth 計算

legend

通常留空 [],腳本會使用預設 5 色圖例。如需自訂:

[
  { "label": "AI 執行",   "fill": "#E6F1FB", "stroke": "#185FA5" },
  { "label": "輸出/報告", "fill": "#EEEDFE", "stroke": "#534AB7" },
  { "label": "決策點",    "fill": "#FAEEDA", "stroke": "#854F0B" },
  { "label": "腳本",      "fill": "#E1F5EE", "stroke": "#0F6E56" },
  { "label": "終止",      "fill": "#FCEBEB", "stroke": "#A32D2D" }
]

3. 呼叫腳本生成 HTML

python3 <skill_dir>/scripts/flowchart.py <nodes.json> --out docs/decision-flowchart.html

腳本會:

  • 校驗 id 唯一性、side/type/role 合法性、from/to 引用合法性
  • 自動計算層級(決策側支同層 / 普通分叉下層 / 匯合點 = max(入邊)+1)
  • 自動計算 x(side 決定)和 y(按層級 + 節點高度)
  • 渲染連線(水平側支 / 正交折線 / 垂直主流程 / 匯合三段 / 迴環虛線)
  • 自動 viewBox + 底部圖例
  • 輸出自包含 HTML

nodes.json 範例

  • docs/halucatch-v2-nodes.json — 完整範例(含 loop 迴環、三叉分支、匯合點)
  • docs/halucatch-nodes.json — 基礎範例
  • docs/security-review-nodes.json — 多決策點範例
  • docs/self-nodes.json — 最小範例(9 節點)

自檢清單

  • 入口節點 type=entry 在最頂部
  • 每條邊都有 side 欄位(bottom/left/right)
  • 決策菱形的 side=left/right 是側支(同層水平連線)
  • 普通矩形的 side=left/right 是分叉(下層正交折線)
  • 一節點一 role,混合步驟已拆分
  • 匯合點(多條入邊到同一節點)不需要特殊處理,腳本自動識別
  • 迴環用 loops 欄位,不在 edges 裡重複
  • 所有節點 id 在 edges 的 from/to 中都被引用(無孤立節點)
  • 圖例留空 []

常見問題

Q: 節點重疊了怎麼辦? 檢查是否缺少 side 欄位。決策分支必須有 side(left/right/bottom),否則兩個目標節點會繼承同一位置。

Q: 迴環虛線沒有畫出來? 迴環用 loops 陣列宣告(不是 edges),且 from/to 不要在 edges 裡重複。path 固定為 "left_edge"。

Q: 腳本報 JSON 格式錯誤? JSON 不支援註解和單引號。常見問題:缺少逗號、多餘逗號(陣列末尾)、單引號。

更多問題參見 docs/FAQ.md。

相關技能