Communitygithub.com

clanker25/diagram

在文字必須承載結構時使用最小的視覺方式——控制流程、呼叫深度、模組所有權或變更形狀:虛擬碼、呼叫樹、元件/檔案樹、Mermaid 圖表或差異比較。當文字已足夠回答問題時則跳過。

diagram 是什麼?

這個技能提供了一套嚴謹的視覺溝通詞彙,專為開發者與 AI 代理(如 Claude Code、Cursor、Codex)設計。其核心原則是「圖表應承載重量,而非裝飾」,僅在文字迫使讀者同時在心中建構整個結構時才使用。支援的平台包括任何能在對話中渲染純文字區塊或 Mermaid 圖表的環境,且最多只會生成一個單獨的 artifact 檔案。 技能定義了六種視覺形式:虛擬碼(簡化邏輯分支)、呼叫樹(執行時期控制流與所有權)、元件樹(UI 或模組邊界)、檔案樹(責任歸屬)、Mermaid 圖表(互動與狀態轉換),以及差異比較(變更的形狀)。每個形式都有明確的使用時機與範例,例如在 diff 中根據變更主題(元件、檔案佈局、控制流、狀態機)匹配不同的範本。 這項技能對開發者非常有用,因為它強制了視覺紀律:每個視覺元素必須與支援它的 2-3 句話相鄰,只攜帶回答當前問題所需的資訊,且如果真誠的答案能在一句話內完成,就只寫那句話。當文字不足時,它允許生成一個對應的 HTML 檔案(圖表、資訊圖或投影片),使用產品本身的顏色與元件風格,並透過平台開啟器開啟。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/clanker25/oh-my-claudecode/tree/HEAD/skills/diagram

在你喜歡的 AI 中提問

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

說明文件

圖表是承載重量的,不是裝飾。 只有在文字迫使讀者必須一次在心中記住整個形狀時,才使用圖表——然後選擇最小的視圖,讓他們看到形狀,而不是從句子中重建。此處所有內容在對話中都以文字區塊或 Mermaid 圖表呈現;最多只會寫入一個 artifact 檔案。

詞彙

選擇一種視圖;最多兩種。更多即是噪音。

虛擬碼 — 沒有語言干擾的邏輯。將決策簡化為其分支形狀:

on(request)
  if state file locked by another writer
    queue and return pending
  acquire lock
  write
  release

呼叫樹 — 執行時期控制流程。深度顯示誰擁有流程;在有趣的邊緣處加上註解:

acquireStateFileLockSync()
  resolveLockPath()
  openExclusive()
  writePid()

元件樹 — UI 或模組結構,直接註明重要的邊界:

<SettingsPage> (src/routes/settings)
  <SessionList> (owns its fetches)
  <DangerZone>
    <ConfirmButton> (disabled until typed confirmation)

檔案樹 — 責任歸屬;保持淺層,每個目錄一個註解:

src/
├── hooks/        # hook registry + types
├── tools/        # MCP tool handlers
└── workflow/     # registry + projections

Mermaid — 參與者之間的互動、資料流或狀態轉換:

sequenceDiagram
    participant CLI
    participant Hook
    participant State
    CLI->>Hook: PreToolUse
    Hook->>State: read mode
    Hook-->>CLI: allow / deny + facts

差異比較 — 當周圍結構已經存在時,變更的形狀。將 diff 與主題匹配:

一個元件變更:

 <SettingsPage>
   <SessionList />
   <DangerZone>
+    <ConfirmButton />
   </DangerZone>

一個檔案佈局變更:

 src/tools/
-└── state-tools.ts
+└── state-tools/
+   ├── handlers.ts
+   └── schema.ts

一個控制流程變更:

 commit()
   stage()
     hashBlobs()
+  writeObject()
   updateRef()
+    acquireStateFileLock()

一個狀態機變更:

 on(request)
-  write immediately
+  if locked
+    queue and return pending
+  acquire lock
+  write
+  release

完整區塊 — 當省略會隱藏誰擁有什麼或事物運行的順序時,顯示完整的單元一次即可,且可複製:

export function isRegistryEnabled(): boolean {
  const flag = process.env.OMC_WORKFLOW_REGISTRY;
  return flag !== '0' && flag !== 'false';
}

當文字用盡時

UI 佈局、前後對比,或對 Mermaid 而言過於密集的概念:撰寫一個聚焦的 HTML 檔案——圖表、資訊圖或幾張投影片——使用產品本身的顏色、字體和元件風格,填入真實的標籤和資料,在桌面和行動裝置上都能運作。使用平台開啟器(Windows 上用 start,macOS 上用 open,Linux 上用 xdg-open)開啟,然後就此打住:一個 artifact,不是一個畫廊。

紀律

  • 將每個視覺元素直接放置在它所支援的兩三句話旁邊。
  • 只攜帶回答當前問題所需的呼叫、檔案、屬性、狀態和邊界——每個多餘的節點都是對讀者的解碼稅。
  • 如果真誠的答案可以在一句話內完成,就寫那句話。

相關技能