戰(zhàn)指南)
畫(huà)流程圖這件事說(shuō)簡(jiǎn)單也簡(jiǎn)單說(shuō)麻煩也麻煩。簡(jiǎn)單的是兩三步的流程隨手一畫(huà)就完事麻煩的是一旦流程超過(guò)十幾步或者需要在項(xiàng)目文檔、方案匯報(bào)、代碼注釋里反復(fù)維護(hù)同一張圖手動(dòng)拖框、連箭頭、調(diào)整對(duì)齊真的會(huì)讓人懷疑自己在做什么重復(fù)勞動(dòng)。這兩年 Agent Skill 的概念越來(lái)越火Claude Code、Codex、OpenCode 這些 AI 編程工具都開(kāi)始支持自定義 Skill。相比每次對(duì)話都重復(fù)啰嗦地交代“請(qǐng)用 draw.io 格式畫(huà)一張流程圖”更高效的做法是把流程圖生成能力固化成一個(gè) Skill讓 AI 自動(dòng)按模板輸出可編輯的 Draw.io XML 文件。這樣既保留了 AI 生成草圖的效率又解決了“AI 畫(huà)完圖后沒(méi)法二次編輯”的痛點(diǎn)。本文就把這個(gè) Skill 從設(shè)計(jì)思路到完整代碼拆開(kāi)講清楚。不依賴(lài)某個(gè)特定工具核心是把規(guī)則、模板、示例封裝成標(biāo)準(zhǔn)目錄結(jié)構(gòu)適合后端開(kāi)發(fā)、前端開(kāi)發(fā)、算法工程師和經(jīng)常寫(xiě)方案文檔的同學(xué)直接復(fù)用。1. 手搓流程圖的痛點(diǎn)與 Skill 思路1.1 為什么“手搓”流程圖讓人難受先來(lái)看一個(gè)真實(shí)場(chǎng)景。技術(shù)方案評(píng)審前你需要把訂單超時(shí)關(guān)閉的完整流程畫(huà)出來(lái)用戶下單 - 支付超時(shí) ? - 是: 系統(tǒng)自動(dòng)取消 - 通知用戶 - 結(jié)束 - 否: 等待支付結(jié)果回調(diào) - 更新訂單狀態(tài) - 結(jié)束這個(gè)流程看起來(lái)不難但放到 Draw.io 或 Visio 里實(shí)際操作時(shí)你會(huì)遇到繪制框體、調(diào)整連線和箭頭方向非常耗時(shí)。節(jié)點(diǎn)多了以后布局容易亂自動(dòng)排版效果不穩(wěn)定。后續(xù)需求一變整張圖要重新調(diào)整維護(hù)成本高。文檔、PPT、代碼注釋里出現(xiàn)多張圖時(shí)內(nèi)容往往不完全一致。這些痛點(diǎn)的本質(zhì)是流程圖是“邏輯結(jié)構(gòu)”但手動(dòng)繪制時(shí)我們卻把精力花在了“圖形排版”上。1.2 Agent Skill 能解決什么問(wèn)題Skill 可以理解成給 AI 助手準(zhǔn)備的一套“能力包”。它不是一個(gè)普通提示詞而是一個(gè)包含說(shuō)明文檔、規(guī)則約定、示例模板、輸出格式的文件夾。當(dāng)你在項(xiàng)目里安裝了某個(gè) Skill 后AI 在識(shí)別到相關(guān)任務(wù)時(shí)會(huì)主動(dòng)讀取這個(gè)能力包按照里面定義的規(guī)范完成任務(wù)。拿流程圖場(chǎng)景來(lái)說(shuō)過(guò)去你和 AI 的對(duì)話方式是這樣的你請(qǐng)幫我畫(huà)一個(gè)訂單超時(shí)取消的流程圖用 draw.io 格式。 AI好的以下是 XML 代碼……第一次效果還行第二次、第三次可能就變樣了。每次都要重新描述格式要求、節(jié)點(diǎn)樣式、布局習(xí)慣而且 AI 不一定記得住你上次的偏好。有了 Skill 之后對(duì)話變成這樣你使用 flowchart-master skill 畫(huà)一個(gè)訂單超時(shí)取消的流程圖。 AI已讀取 flowchart-master 規(guī)范正在生成 Draw.io XML 文件。AI 會(huì)自動(dòng)套用你定義好的模塊結(jié)構(gòu)、節(jié)點(diǎn)樣式、文件命名規(guī)則和輸出路徑生成結(jié)果更穩(wěn)定也更容易修改。1.3 需要先區(qū)分此 Skill 非彼 Skill在搜索相關(guān)關(guān)鍵詞時(shí)可能會(huì)看到兩種完全不同的內(nèi)容EDA/CAD 領(lǐng)域的 SKILL 語(yǔ)言比如 Cadence Allegro 里用的 SKILL 腳本這是一種擴(kuò)展工具編程語(yǔ)言。AI Agent Skill指 Anthropic Claude Code 等工具引入的 Agent Skills 機(jī)制用 Markdown 文件定義 AI 的專(zhuān)項(xiàng)能力。本文討論的是后者。如果你在找的是 Cadence SKILL 腳本那本文的側(cè)重點(diǎn)可能不完全匹配。1.4 Skill 與 MCP 的區(qū)別不少同學(xué)會(huì)問(wèn)Skill 和 MCP 不是都能擴(kuò)展 AI 能力嗎兩者到底什么關(guān)系簡(jiǎn)單來(lái)說(shuō)對(duì)比項(xiàng)Agent SkillMCP Server定位能力規(guī)則包告訴 AI“怎么做”工具服務(wù)接口告訴 AI“能調(diào)用什么”是否需要寫(xiě)代碼通常不需要Markdown 模板即可需要實(shí)現(xiàn)服務(wù)端接口典型場(chǎng)景輸出格式約束、代碼規(guī)范、流程模板讀寫(xiě)數(shù)據(jù)庫(kù)、調(diào)用外部 API、文件操作啟動(dòng)成本低高在畫(huà)流程圖這個(gè)場(chǎng)景里其實(shí)不需要 MCP一個(gè) Skill 就夠了。因?yàn)?AI 本身已經(jīng)具備生成 XML 的能力我們只需要通過(guò) Skill 把格式、模板、步驟約束好。2. 方案設(shè)計(jì)把流程圖生成固化為 Skill2.1 目標(biāo)定義我們要做的是一個(gè)叫flowchart-master的 Skill它需要滿足AI 能根據(jù)用戶的流程描述自動(dòng)輸出可編輯的 Draw.io XML 文件。文件結(jié)構(gòu)規(guī)范節(jié)點(diǎn)分組合理配色統(tǒng)一。節(jié)點(diǎn)文字、連線標(biāo)簽清晰便于后續(xù)人工微調(diào)。支持順序流程、分支判斷、并行分支等常見(jiàn)結(jié)構(gòu)。生成的 XML 文件能直接用 draw.io 桌面版或在線版打開(kāi)編輯。2.2 輸出格式選型為什么優(yōu)先選擇 Draw.io XML目前 AI 生成流程圖的常見(jiàn)格式有三種格式優(yōu)點(diǎn)缺點(diǎn)Mermaid文本描述簡(jiǎn)單GitHub 原生支持在文檔工具里原生支持有限復(fù)雜布局難調(diào)整PlantUML文本描述功能豐富中文支持和樣式定制稍弱Draw.io XML可直接用 draw.io 打開(kāi)編輯XML 冗長(zhǎng)手寫(xiě)成本高這里更推薦 Draw.io XML 作為主要產(chǎn)物。原因有三個(gè)第一可編輯性。AI 生成 Mermaid 只能看想調(diào)整布局得回到文本里改。而 Draw.io XML 打開(kāi)就是圖形編輯器拖一拖就能改。第二與開(kāi)發(fā)工作流兼容。Draw.io XML 是純文本文件可以放進(jìn) Git 倉(cāng)庫(kù)做版本管理。需求變化后可以看 diff也可以讓 AI 基于歷史版本繼續(xù)修改。第三AI 生成 XML 并不難。Draw.io XML 的格式比較規(guī)范只要在 Skill 里給出清晰的模板和約束AI 完全能輸出可用的文件。2.3 Skill 目錄結(jié)構(gòu)設(shè)計(jì)參考主流 Agent Skill 的約定推薦目錄結(jié)構(gòu)如下.flowcast/flowchart-master/ ├── SKILL.md ├── assets/ │ ├── templates/ │ │ ├── simple-flow.drawio.xml │ │ ├── branch-flow.drawio.xml │ │ └── parallel-flow.drawio.xml │ └── examples/ │ └── order-cancel-example.png說(shuō)明SKILL.md是核心文件包含技能描述、主體指令和規(guī)則。assets/templates/存放標(biāo)準(zhǔn) XML 模板方便 AI 復(fù)制改寫(xiě)。assets/examples/存放示例圖可選。PROGRESS.md可選用于記錄實(shí)例化過(guò)程中需要追蹤的任務(wù)清單。這個(gè)結(jié)構(gòu)可以讓 AI 在運(yùn)行時(shí)快速定位到模板而不是憑記憶生成 XML降低格式錯(cuò)誤的概率。3. 手寫(xiě) flowchart-master Skill下面進(jìn)入核心環(huán)節(jié)。先把SKILL.md的完整內(nèi)容寫(xiě)出來(lái)再拆解關(guān)鍵部分。3.1 創(chuàng)建目錄與文件mkdir -p .flowcast/flowchart-master/assets/templates mkdir -p .flowcast/flowchart-master/assets/examples3.2 編寫(xiě)基礎(chǔ)模板這里先準(zhǔn)備一個(gè)最基礎(chǔ)的順序流程圖模板AI 后續(xù)生成時(shí)以此為骨架。文件路徑.flowcast/flowchart-master/assets/templates/simple-flow.drawio.xmlmxfile hostapp.diagrams.net modified2025-01-01T00:00:00.000Z agentflowchart-master version24.0.0 diagram idsimple-flow name簡(jiǎn)單流程圖 mxGraphModel dx800 dy600 grid1 gridSize10 guides1 tooltips1 connect1 arrows1 fold1 page1 pageScale1 pageWidth827 pageHeight1169 math0 shadow0 root mxCell id0/ mxCell id1 parent0/ mxCell idstart value開(kāi)始 stylerounded1;whiteSpacewrap;html1;fillColor#d5e8d4;strokeColor#82b366; vertex1 parent1 mxGeometry x320 y40 width120 height40 asgeometry/ /mxCell mxCell idstep1 value步驟 1 stylerounded0;whiteSpacewrap;html1;fillColor#dae8fc;strokeColor#6c8ebf; vertex1 parent1 mxGeometry x320 y140 width120 height60 asgeometry/ /mxCell mxCell idend value結(jié)束 stylerounded1;whiteSpacewrap;html1;fillColor#d5e8d4;strokeColor#82b366; vertex1 parent1 mxGeometry x320 y260 width120 height40 asgeometry/ /mxCell mxCell ide1 styleedgeStyleorthogonalEdgeStyle;rounded0;html1; edge1 parent1 sourcestart targetstep1 mxGeometry relative1 asgeometry/ /mxCell mxCell ide2 styleedgeStyleorthogonalEdgeStyle;rounded0;html1; edge1 parent1 sourcestep1 targetend mxGeometry relative1 asgeometry/ /mxCell /root /mxGraphModel /diagram /mxfile這個(gè)模板中包含幾個(gè)關(guān)鍵點(diǎn)mxCell id0和id1是 Draw.io 默認(rèn)的根節(jié)點(diǎn)結(jié)構(gòu)不能刪除。vertex1表示節(jié)點(diǎn)edge1表示連線。parent1表示節(jié)點(diǎn)歸屬于第 1 層根容器。mxGeometry中的x、y控制坐標(biāo)width、height控制尺寸。連線通過(guò)source和target屬性綁定起始節(jié)點(diǎn)和結(jié)束節(jié)點(diǎn)不需要手動(dòng)繪制。節(jié)點(diǎn)樣式里rounded1表示圓角矩形常用于開(kāi)始和結(jié)束節(jié)點(diǎn)rounded0表示矩形用于普通步驟。有了這個(gè)模板AI 生成新圖時(shí)的基本骨架就有了保證。3.3 編寫(xiě) SKILL.md 主文件文件路徑.flowcast/flowchart-master/SKILL.md--- name: flowchart-master description: 根據(jù)用戶的業(yè)務(wù)描述自動(dòng)生成可編輯的 Draw.io XML 流程圖文件。適用于業(yè)務(wù)流程圖、算法流程圖、系統(tǒng)流程圖、狀態(tài)流轉(zhuǎn)圖等場(chǎng)景。當(dāng)用戶要求“畫(huà)流程圖”“生成流程圖”“畫(huà)一個(gè)流程”“draw a flowchart”時(shí)自動(dòng)啟用本技能。 --- # flowchart-master 你是一個(gè)專(zhuān)業(yè)的流程圖設(shè)計(jì)專(zhuān)家。你擅長(zhǎng)把雜亂無(wú)章的業(yè)務(wù)描述結(jié)構(gòu)化為清晰、美觀、可維護(hù)的流程圖。 ## 工作流程 當(dāng)用戶提出流程圖需求后請(qǐng)嚴(yán)格按照以下步驟執(zhí)行 ### 第 1 步提取流程節(jié)點(diǎn) 通讀用戶的描述提取出所有必要的流程節(jié)點(diǎn)。每個(gè)節(jié)點(diǎn)必須滿足 - 節(jié)點(diǎn)名稱(chēng)在 2 到 10 個(gè)漢字之間。 - 節(jié)點(diǎn)名稱(chēng)必須是一個(gè)完整動(dòng)作例如“創(chuàng)建訂單”“發(fā)送通知”“校驗(yàn)參數(shù)”。 - 忽略無(wú)關(guān)細(xì)節(jié)將與主流程無(wú)關(guān)的背景描述刪除。 ### 第 2 步判斷流程類(lèi)型 根據(jù)節(jié)點(diǎn)之間的邏輯關(guān)系判斷流程屬于哪種類(lèi)型 - 順序流程節(jié)點(diǎn)一個(gè)接一個(gè)執(zhí)行。 - 分支流程存在條件判斷流向不同分支。 - 并行流程多個(gè)任務(wù)同時(shí)執(zhí)行最終匯合。 - 循環(huán)流程某一步滿足條件后回到之前的步驟。 如果流程比較復(fù)雜可以拆分成多個(gè)子圖但每個(gè)子圖必須獨(dú)立完整。 ### 第 3 步生成 Draw.io XML 讀取模板文件 assets/templates/ 下對(duì)應(yīng)的 .drawio.xml 模板在此基礎(chǔ)上生成新 XML。 生成規(guī)則 1. 每個(gè)節(jié)點(diǎn)必須有唯一 id推薦使用英文單詞或小寫(xiě)駝峰命名例如 createOrder、checkStock。 2. 節(jié)點(diǎn)文字放在 value 屬性中。 3. 連線必須使用 edgeStyleorthogonalEdgeStyle;rounded0;html1; 風(fēng)格保證連線自動(dòng)垂直/水平。 4. 默認(rèn)畫(huà)布大小設(shè)置為寬 827 高 1169按需擴(kuò)展。 5. 如果節(jié)點(diǎn)數(shù)量超過(guò) 8 個(gè)優(yōu)先采用縱向布局減少橫向擁擠。 ### 第 4 步輸出文件 - 生成的文件命名規(guī)則{流程名稱(chēng)}.drawio.xml統(tǒng)一使用小寫(xiě)中劃線命名法例如 order-cancel.drawio.xml。 - 文件保存到當(dāng)前工作目錄下的 docs/diagrams/ 文件夾中。 - 輸出前確認(rèn) XML 的根結(jié)構(gòu)完整節(jié)點(diǎn) id 不重復(fù)。 - 輸出后給出簡(jiǎn)要說(shuō)明告訴用戶如何用 draw.io 打開(kāi)文件包括 Web 版和桌面版兩種方式。 ## 樣式規(guī)范 以下顏色為默認(rèn)配色生成時(shí)必須嚴(yán)格遵循 | 元素 | 填充色 | 邊框色 | 說(shuō)明 | | --- | --- | --- | --- | | 開(kāi)始/結(jié)束節(jié)點(diǎn) | #d5e8d4 | #82b366 | 圓角矩形樣式 | | 處理步驟 | #dae8fc | #6c8ebf | 普通矩形樣式 | | 判斷節(jié)點(diǎn) | #fff2cc | #d6b656 | 菱形樣式 | | 外部實(shí)體 | #f8cecc | #b85450 | 普通矩形樣式 | 節(jié)點(diǎn)文字統(tǒng)一使用黑色字體大小 12居中顯示。 ## 輸出格式示例 當(dāng)用戶說(shuō)“畫(huà)一下訂單超時(shí)取消流程”時(shí)你生成的 XML 應(yīng)該符合以下結(jié)構(gòu)預(yù)期 - 開(kāi)始節(jié)點(diǎn)用戶下單 - 判斷節(jié)點(diǎn)是否支付超時(shí) - 處理節(jié)點(diǎn)系統(tǒng)自動(dòng)取消訂單 - 處理節(jié)點(diǎn)發(fā)送取消通知 - 結(jié)束節(jié)點(diǎn)結(jié)束 生成文件后用一句話概括流程圖核心鏈路方便用戶快速核對(duì)。 ## 注意事項(xiàng) 1. 不要生成脫離模板的 XML 結(jié)構(gòu)必須在模板基礎(chǔ)上修改。 2. 如果用戶沒(méi)有明確指定布局方向默認(rèn)從上到下。 3. 如果流程節(jié)點(diǎn)較多先為用戶規(guī)劃分組例如“用戶側(cè)流程”“系統(tǒng)側(cè)流程”“外部系統(tǒng)流程”再生成 XML。 4. 不要輸出 Mermaid 格式除非用戶明確要求。 5. 生成的 XML 中不要包含 HTML 轉(zhuǎn)義錯(cuò)誤 必須寫(xiě)成 amp; 必須寫(xiě)成 lt;。 6. 判斷節(jié)點(diǎn)必須有兩個(gè)出口連線一個(gè)標(biāo)記“是”一個(gè)標(biāo)記“否”。 7. 連線標(biāo)簽使用 value 屬性放在 mxCell 的 value 中例如 value是。3.4 SKILL.md 關(guān)鍵設(shè)計(jì)解釋這個(gè)SKILL.md表面上是給 AI 看的提示詞但它和普通提示詞有本質(zhì)區(qū)別。普通提示詞是一段對(duì)話里的臨時(shí)指令而SKILL.md是系統(tǒng)化的能力規(guī)范有幾個(gè)關(guān)鍵設(shè)計(jì)第一把判斷標(biāo)準(zhǔn)寫(xiě)清楚?!肮?jié)點(diǎn)名稱(chēng)在 2 到 10 個(gè)漢字之間”“節(jié)點(diǎn)名稱(chēng)必須是一個(gè)完整動(dòng)作”這種約束直接減少了 AI 生成無(wú)意義節(jié)點(diǎn)的問(wèn)題。第二把流程類(lèi)型拆開(kāi)。AI 只有先判斷流程類(lèi)型才能選擇正確的模板和布局方式否則容易把帶分支的流程圖畫(huà)成一條直線。第三把顏色和樣式固化成表格。AI 對(duì)顏色的理解是模糊的但表格里的十六進(jìn)制色值是精確的。這樣生成的多張圖風(fēng)格才能保持一致。第四把常見(jiàn)錯(cuò)誤寫(xiě)進(jìn)注意事項(xiàng)。比如判斷節(jié)點(diǎn)必須有“是”“否”兩個(gè)出口這個(gè)約束在日常流程圖中非常實(shí)用。如果不寫(xiě)AI 生成的菱形節(jié)點(diǎn)很可能只連了一條線。4. 安裝到 AI 編程工具并驗(yàn)證4.1 安裝到 Claude Code如果你使用的是 Claude Code只需把flowchart-master文件夾放到項(xiàng)目目錄下的.claude/skills/目錄中mkdir -p .claude/skills cp -r .flowcast/flowchart-master .claude/skills/安裝完成后在 Claude Code 會(huì)話中直接描述需求即可請(qǐng)使用 flowchart-master 畫(huà)一個(gè)用戶注冊(cè)流程圖4.2 安裝到 Codex / OpenCodeCodex 和 OpenCode 對(duì) Agent Skills 的支持方式略有差異但基本都是把 Skill 文件夾放到項(xiàng)目目錄或全局配置目錄下。以常見(jiàn)方式為例# Codex mkdir -p ~/.codex/skills cp -r .flowcast/flowchart-master ~/.codex/skills/ # OpenCode mkdir -p ~/.config/opencode/skills cp -r .flowcast/flowchart-master ~/.config/opencode/skills/不同版本的配置路徑可能會(huì)有調(diào)整建議優(yōu)先查看工具官方文檔中的“Agent Skills”或“Custom Skills”說(shuō)明。核心思路是把flowchart-master整個(gè)文件夾放到工具約定掃描的 Skills 目錄即可。4.3 實(shí)際生成效果驗(yàn)證下面用一個(gè)具體例子來(lái)驗(yàn)證 Skill 的效果。假設(shè)用戶輸入使用 flowchart-master 畫(huà)一個(gè)訂單支付流程包含以下邏輯 1. 用戶創(chuàng)建訂單 2. 系統(tǒng)校驗(yàn)商品庫(kù)存 3. 庫(kù)存不足則關(guān)閉訂單 4. 庫(kù)存充足則跳轉(zhuǎn)支付 5. 支付成功后更新訂單狀態(tài) 6. 支付失敗則提示重新支付Skill 驅(qū)動(dòng) AI 完成的思考過(guò)程大致是第 1 步提取節(jié)點(diǎn)創(chuàng)建訂單、校驗(yàn)庫(kù)存、關(guān)閉訂單、跳轉(zhuǎn)支付、更新訂單狀態(tài)、提示重新支付。第 2 步判斷類(lèi)型這是一個(gè)典型的“分支 子流程”結(jié)構(gòu)。第 3 步選擇模板分支流程模板。第 4 步生成文件order-payment.drawio.xml保存到docs/diagrams/。最終生成的 XML 核心結(jié)構(gòu)如下簡(jiǎn)化展示mxCell idstart value創(chuàng)建訂單 stylerounded1;whiteSpacewrap;html1;fillColor#d5e8d4;strokeColor#82b366; vertex1 parent1 mxGeometry x320 y40 width120 height40 asgeometry/ /mxCell mxCell idcheckStock value校驗(yàn)庫(kù)存 stylerhombus;whiteSpacewrap;html1;fillColor#fff2cc;strokeColor#d6b656; vertex1 parent1 mxGeometry x310 y140 width140 height80 asgeometry/ /mxCell mxCell idinsufficient value關(guān)閉訂單 stylerounded0;whiteSpacewrap;html1;fillColor#f8cecc;strokeColor#b85450; vertex1 parent1 mxGeometry x80 y280 width120 height60 asgeometry/ /mxCell mxCell idpay value跳轉(zhuǎn)支付 stylerounded0;whiteSpacewrap;html1;fillColor#dae8fc;strokeColor#6c8ebf; vertex1 parent1 mxGeometry x520 y280 width120 height60 asgeometry/ /mxCell這里可以看到菱形判斷節(jié)點(diǎn)使用了rhombus樣式開(kāi)始節(jié)點(diǎn)使用了綠色圓角矩形錯(cuò)誤分支使用了紅色系矩形。AI 不需要用戶額外指定樣式一切按照 Skill 里的規(guī)范自動(dòng)完成。4.4 在 draw.io 中打開(kāi)和驗(yàn)證生成 XML 文件后打開(kāi) app.diagrams.net 選擇“文件 - 打開(kāi)”找到docs/diagrams/order-payment.drawio.xml即可加載。打開(kāi)后檢查以下幾點(diǎn)節(jié)點(diǎn)位置是否有重疊。判斷節(jié)點(diǎn)的“是/否”連線是否正確。是否還有多余的空節(jié)點(diǎn)。整體布局是否縱向居中。如果發(fā)現(xiàn)布局不夠理想只要拖動(dòng)節(jié)點(diǎn)微調(diào)即可不需要重寫(xiě) XML。5. 讓 Skill 更貼合自己習(xí)慣的進(jìn)階配置5.1 增加“泳道圖”支持泳道圖是業(yè)務(wù)流程圖里很常見(jiàn)的形式用來(lái)區(qū)分不同角色或系統(tǒng)的職責(zé)。在SKILL.md中增加一節(jié)### 泳道圖模式 當(dāng)用戶要求“泳道圖”“跨職能流程圖”“帶角色的流程圖”時(shí)切換到泳道圖模式 1. 根據(jù)用戶描述識(shí)別出所有的角色/系統(tǒng)例如“用戶”“前端”“后端”“支付系統(tǒng)”。 2. 為每個(gè)角色創(chuàng)建一個(gè)泳道容器使用 Draw.io 的 swimlane 樣式。 3. XML 結(jié)構(gòu)中泳道容器是一個(gè) mxCell其 vertex1樣式為 swimlane;html1;。 4. 所有屬于該角色的節(jié)點(diǎn)其 parent 屬性指向?qū)?yīng)的泳道容器 id。 5. 泳道背景色統(tǒng)一使用淺灰 #f5f5f5標(biāo)題文字加粗。實(shí)現(xiàn)時(shí)泳道容器的 XML 大致長(zhǎng)這樣mxCell iduserLane value用戶 styleswimlane;html1;fillColor#f5f5f5;strokeColor#666666; vertex1 parent1 mxGeometry x40 y40 width760 height200 asgeometry/ /mxCell泳道模式的價(jià)值在于AI 會(huì)主動(dòng)為節(jié)點(diǎn)分組而不是把所有節(jié)點(diǎn)堆在一個(gè)畫(huà)布上。對(duì)于涉及多個(gè)系統(tǒng)的流程這個(gè)能力非常有用。5.2 增加不同模板文件如果經(jīng)常生成算法流程圖、狀態(tài)機(jī)圖可以為每種類(lèi)型準(zhǔn)備獨(dú)立模板assets/templates/ ├── algorithm-flow.drawio.xml ├── branch-flow.drawio.xml ├── parallel-flow.drawio.xml ├── simple-flow.drawio.xml └── state-machine.drawio.xml在SKILL.md中補(bǔ)充類(lèi)型判斷邏輯### 流程類(lèi)型與模板對(duì)應(yīng)關(guān)系 | 用戶需求 | 使用的模板文件 | | --- | --- | | 簡(jiǎn)單順序流程 | simple-flow.drawio.xml | | 分支判斷流程 | branch-flow.drawio.xml | | 并行任務(wù)流程 | parallel-flow.drawio.xml | | 算法/程序邏輯 | algorithm-flow.drawio.xml | | 狀態(tài)機(jī)/狀態(tài)流轉(zhuǎn) | state-machine.drawio.xml |這樣 AI 在面對(duì)不同類(lèi)型需求時(shí)能夠快速載入對(duì)應(yīng)模板大幅降低生成錯(cuò)誤格式的概率。5.3 加入 PROGRESS.md 追蹤機(jī)制對(duì)于較大的流程圖任務(wù)可以在 Skill 目錄里加入PROGRESS.md讓 AI 分步驟記錄進(jìn)度。例如# 流程圖生成進(jìn)度 任務(wù)訂單退款流程 狀態(tài)進(jìn)行中 - [x] 提取節(jié)點(diǎn) - [x] 判斷流程類(lèi)型 - [ ] 生成 XML - [ ] 保存文件 - [ ] 校驗(yàn)文件是否可被 draw.io 打開(kāi)好處是如果中間 AI 生成了不完整的文件可以根據(jù)進(jìn)度記錄定位到具體失敗環(huán)節(jié)。也可以在一個(gè)任務(wù)里陸續(xù)追加節(jié)點(diǎn)讓 AI 在已有 XML 文件的基礎(chǔ)上修改而不是每次重畫(huà)整張圖。6. 常見(jiàn)問(wèn)題與排查思路在使用流程圖 Skill 的過(guò)程中會(huì)遇到一些比較典型的問(wèn)題。這里整理成一張排查表。問(wèn)題現(xiàn)象常見(jiàn)原因解決思路生成了 XML但 draw.io 打開(kāi)后是空白XML 根節(jié)點(diǎn)結(jié)構(gòu)不完整缺少mxCell id0和mxCell id1檢查模板確認(rèn)根節(jié)點(diǎn)完整節(jié)點(diǎn)都堆在左上角節(jié)點(diǎn)缺少mxGeometry坐標(biāo)或者坐標(biāo)設(shè)置不合理在生成規(guī)范中強(qiáng)調(diào)每個(gè)節(jié)點(diǎn)必須給出坐標(biāo)判斷節(jié)點(diǎn)只有一條出口AI 沒(méi)有理解菱形節(jié)點(diǎn)需要“是/否”兩個(gè)分支在 SKILL.md 注意事項(xiàng)中強(qiáng)制規(guī)定判斷節(jié)點(diǎn)必須兩個(gè)出口生成的 SVG 或 PNG 不是可編輯文件用戶要求了圖片格式或 AI 默認(rèn)輸出了圖片在描述中明確要求“生成 Draw.io XML 可編輯文件”中文字符亂碼XML 文件編碼問(wèn)題保存文件時(shí)使用 UTF-8 編碼AI 沒(méi)識(shí)別到 Skill目錄放錯(cuò)或者 SKILL.md 的 frontmatter 不完整檢查目錄名、name字段、description描述是否清晰多張圖風(fēng)格不統(tǒng)一樣式規(guī)則沒(méi)有寫(xiě)入 SKILL.mdAI 自由發(fā)揮把顏色、字體、連線風(fēng)格固化為表格約束流程復(fù)雜時(shí) XML 太長(zhǎng)沒(méi)有拆分子圖在 SKILL.md 中啟用分組生成策略按業(yè)務(wù)模塊拆分子流程6.1 排查 checklist如果遇到某個(gè)環(huán)節(jié)出錯(cuò)按順序檢查Skill 目錄是否被 AI 工具正確掃描到查看工具的 Skill 列表。SKILL.md的 frontmatter 中name和description是否清晰。模板文件路徑是否和SKILL.md中引用的一致。生成后的 XML 是否包含 Draw.io 默認(rèn)的根節(jié)點(diǎn)結(jié)構(gòu)。打開(kāi) XML 文件時(shí)是否出現(xiàn) XML 解析錯(cuò)誤提示。節(jié)點(diǎn) id 是否有重復(fù)。連線是否通過(guò)source和target正確綁定。7. 最佳實(shí)踐與工程建議7.1 每個(gè) Skill 只干一件事這是 Agent Skill 設(shè)計(jì)里最重要的一條原則。不要試圖寫(xiě)一個(gè)“萬(wàn)能 Skill”既要畫(huà)流程圖又要生成架構(gòu)圖又要寫(xiě) SQL。單個(gè) Skill 只聚焦一個(gè)任務(wù)description寫(xiě)得越精準(zhǔn)AI 越容易在正確時(shí)機(jī)啟用它。7.2 把模板當(dāng)作代碼來(lái)維護(hù)模板文件一旦確定最好納入版本管理。每次修改模板時(shí)在 commit 信息里說(shuō)明“修改了節(jié)點(diǎn)配色”“調(diào)整了畫(huà)布大小”。如果生成結(jié)果出了問(wèn)題可以快速回滾到上一個(gè)可用模板。7.3 先小樣本驗(yàn)證再全量鋪開(kāi)第一次寫(xiě)好 Skill 后不要直接拿一個(gè) 20 步的大流程去測(cè)試。建議先用 3 個(gè)小型案例驗(yàn)證簡(jiǎn)單順序流程。一個(gè)判斷分支流程。一個(gè)并行流程。確認(rèn)三個(gè)案例全部通過(guò)后再處理更復(fù)雜的場(chǎng)景。7.4 用示例沉淀團(tuán)隊(duì)規(guī)范如果團(tuán)隊(duì)里有多個(gè)人都在寫(xiě)流程圖可以約定統(tǒng)一的示例文件。比如團(tuán)隊(duì)規(guī)定“流程圖中的動(dòng)詞統(tǒng)一使用‘創(chuàng)建/更新/刪除/通知/校驗(yàn)’”把這個(gè)寫(xiě)入SKILL.md。這樣不同人產(chǎn)出的流程圖在表達(dá)習(xí)慣上也能保持統(tǒng)一。7.5 善用 AI 的迭代能力Skill 不需要一次做到完美。實(shí)際使用中如果發(fā)現(xiàn) AI 生成的節(jié)點(diǎn)命名不夠統(tǒng)一就回到SKILL.md補(bǔ)充命名規(guī)范如果發(fā)現(xiàn)分支判斷的標(biāo)簽不夠清晰就補(bǔ)充標(biāo)簽規(guī)范。每次迭代都相當(dāng)于給 Skill 打補(bǔ)丁越用越順手。下面是一個(gè)迭代示例## 命名規(guī)范補(bǔ)充版 連接線標(biāo)簽必須使用動(dòng)詞或狀態(tài)短語(yǔ) - 判斷節(jié)點(diǎn)出口必填是/否 - 處理步驟之間可省略標(biāo)簽 - 異常分支必須標(biāo)注失敗/超時(shí)/異常7.6 為每個(gè)流程圖配一段說(shuō)明文字生成 XML 的同時(shí)建議讓 AI 輸出一段簡(jiǎn)明總結(jié)。這段總結(jié)既可以放進(jìn)代碼注釋也可以直接粘貼到需求文檔里。在SKILL.md中約定### 輸出格式 生成文件后必須輸出以下內(nèi)容 1. 流程圖文件名。 2. 核心鏈路一句話概括。 3. 涉及的關(guān)鍵節(jié)點(diǎn)列表。 4. 圖中有哪些分支或異常處理邏輯。這樣文檔和圖形是配套的以后看圖的人不會(huì)只看到一堆框和箭頭不知道業(yè)務(wù)含義。8. 一個(gè)完整示例訂單超時(shí)關(guān)閉流程為了幫助你把上面的內(nèi)容串起來(lái)這里提供一個(gè)完整的示例結(jié)果。假設(shè)用戶輸入用 flowchart-master 畫(huà)一個(gè)訂單超時(shí)未支付自動(dòng)關(guān)閉的流程Skill 驅(qū)動(dòng) AI 生成的order-timeout-close.drawio.xml文件核心內(nèi)容如下簡(jiǎn)化節(jié)選mxfile hostapp.diagrams.net agentflowchart-master version24.0.0 diagram idorder-timeout-close name訂單超時(shí)關(guān)閉 mxGraphModel dx800 dy600 grid1 gridSize10 guides1 tooltips1 connect1 arrows1 fold1 page1 pageScale1 pageWidth827 pageHeight1169 math0 shadow0 root mxCell id0/ mxCell id1 parent0/ mxCell idstart value用戶下單 stylerounded1;whiteSpacewrap;html1;fillColor#d5e8d4;strokeColor#82b366; vertex1 parent1 mxGeometry x320 y40 width120 height40 asgeometry/ /mxCell mxCell idjudgeTimeout value是否超時(shí)未支付 stylerhombus;whiteSpacewrap;html1;fillColor#fff2cc;strokeColor#d6b656; vertex1 parent1 mxGeometry x300 y140 width160 height80 asgeometry/ /mxCell mxCell idcancelOrder value系統(tǒng)自動(dòng)取消訂單 stylerounded0;whiteSpacewrap;html1;fillColor#dae8fc;strokeColor#6c8ebf; vertex1 parent1 mxGeometry x310 y280 width140 height60 asgeometry/ /mxCell mxCell idsendNotify value發(fā)送取消通知 stylerounded0;whiteSpacewrap;html1;fillColor#dae8fc;strokeColor#6c8ebf; vertex1 parent1 mxGeometry x310 y400 width140 height60 asgeometry/ /mxCell mxCell idend value結(jié)束 stylerounded1;whiteSpacewrap;html1;fillColor#d5e8d4;strokeColor#82b366; vertex1 parent1 mxGeometry x320 y520 width120 height40 asgeometry/ /mxCell mxCell ide1 styleedgeStyleorthogonalEdgeStyle;rounded0;html1; edge1 parent1 sourcestart targetjudgeTimeout mxGeometry relative1 asgeometry/ /mxCell mxCell ide2 value是 styleedgeStyleorthogonalEdgeStyle;rounded0;html1; edge1 parent1 sourcejudgeTimeout targetcancelOrder mxGeometry relative1 asgeometry/ /mxCell mxCell ide3 styleedgeStyleorthogonalEdgeStyle;rounded0;html1; edge1 parent1 sourcecancelOrder targetsendNotify mxGeometry relative1 asgeometry/ /mxCell mxCell ide4 styleedgeStyleorthogonalEdgeStyle;rounded0;html1; edge1 parent1 sourcesendNotify targetend mxGeometry relative1 asgeometry/ /mxCell /root /mxGraphModel /diagram /mxfile關(guān)鍵檢查點(diǎn)開(kāi)始節(jié)點(diǎn)使用綠色圓角矩形。判斷節(jié)點(diǎn)使用菱形出口帶“是”標(biāo)簽。處理節(jié)點(diǎn)使用藍(lán)色普通矩形。節(jié)點(diǎn)之間的連線使用正交連線樣式保持橫平豎直。整個(gè)圖從用戶下單到結(jié)束縱向排列沒(méi)有交叉連線。如果業(yè)務(wù)中還需要處理“未超時(shí)”的情況就需要增加第二條出口連線標(biāo)注“否”指向另一個(gè)分支節(jié)點(diǎn)。判斷節(jié)點(diǎn)的英文judgeTimeout也方便后續(xù)在代碼注釋里引用。9. 后續(xù)還能怎么玩到目前為止我們的flowchart-masterSkill 已經(jīng)可以穩(wěn)定輸出 Draw.io XML 文件了。如果你愿意再進(jìn)一步可以給 Skill 添加更強(qiáng)大的能力。一個(gè)方向是自動(dòng)生成流程圖的同時(shí)生成配套的文字說(shuō)明。讓 AI 把流程拆成幾個(gè)階段每個(gè)階段用一段話描述再把這段描述寫(xiě)入同一個(gè) Markdown 文檔。這樣技術(shù)方案文檔里的“流程圖 流程說(shuō)明”兩個(gè)部分一次就能完成。另一個(gè)方向是讓 Skill 自動(dòng)對(duì)比新舊版本。當(dāng)需求變更時(shí)把舊 XML 文件內(nèi)容貼給 AI讓它基于舊文件修改節(jié)點(diǎn)而不是重畫(huà)。這需要把“基于已有 XML 修改”的規(guī)則明確寫(xiě)入SKILL.md。還有團(tuán)隊(duì)會(huì)為 Skill 增加術(shù)語(yǔ)表和縮寫(xiě)表比如“支付成功回調(diào)”統(tǒng)一簡(jiǎn)寫(xiě)為“支付回調(diào)”避免同一張圖里出現(xiàn)多種說(shuō)法。如果你此前一直被流程圖的手工排版折磨可以試試這個(gè)思路。把SKILL.md和模板放進(jìn)項(xiàng)目倉(cāng)庫(kù)下次畫(huà)流程圖時(shí)讓 AI 先出第一版你只需要拖拽微調(diào)。這套方法不僅適用于流程圖遷移到架構(gòu)圖、時(shí)序圖、狀態(tài)圖原理完全一致。