Communitygithub.com

nedeadinside/likec4-skill

Agent 技能,可從描述或程式碼庫編寫 LikeC4 DSL 格式的 C4 圖表,並在交付前執行 LikeC4 CLI 進行驗證。適用於 Claude Code、Codex、Cursor 和 OpenCode。

likec4-skill 是什麼?

這個技能讓 AI Agent 能夠產出結構嚴謹的 C4 圖表,使用 LikeC4 DSL 語法,並確保語法正確、風格一致。技能會先設定正確的 LikeC4 CLI 版本(固定使用 1.59.2),然後根據任務範圍(系統上下文、容器、元件、部署或流程圖)引導 Agent 閱讀對應的參考文件以正確使用 DSL。它支援小型專案(使用 minimal 模板)與真實系統(使用 full 模板),並強制執行兩條鐵則:一定以 `likec4 validate` 驗證且僅在 exit 0 時交付,且絕不猜測 DSL 語法。適用於 Claude Code、Codex、Cursor 與 OpenCode 等 Agent 平台,透過 npx 執行 CLI,不需要全域安裝,只需 Node 22+ 與網路連線。

相容平台✓Claude Code✓Codex CLI✓Cursor✓OpenCode
npx skills add nedeadinside/likec4-skill

在你喜歡的 AI 中提問

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

說明文件

LikeC4 C4 圖表

從口頭描述或程式碼庫產出符合 LikeC4 DSL 語法的有效 C4 圖表,並在交付前使用 CLI 驗證。參考文件按關注點拆分 — 只讀取任務需要的部分,在撰寫該部分之前讀取;不要猜測語法。

此處所有內容均針對 likec4 1.59.2 驗證(固定版本與升級程序請見 references/setup-and-validation.md)。

嚴格規則(只有兩條)

  1. 交付前務必驗證。 在專案上執行 likec4 validate,僅在 exit 0 時交付。完全沒有 CLI 可用 → 執行文件中說明的自我檢查並揭露此情況。程序:references/setup-and-validation.md。
  2. 絕不發明 DSL 語法。 如果不確定,開啟相關參考文件;若仍不確定,請查閱 https://likec4.dev/dsl/。

設定(第一件事,每次對話一次)

LC4="npx -y [email protected]"
v="$(likec4 --version 2>/dev/null | grep -oE '^[0-9]+\.[0-9]+\.[0-9]+' | tail -1)"
[ -n "$v" ] && [ "$(printf '%s\n1.53.0\n' "$v" | sort -V | head -1)" = "1.53.0" ] && LC4=likec4

只有在已安裝的 CLI 版本 >= 1.53.0 時才使用它 — 較舊版本沒有 format 指令,且 1.52.0 對無效模型也會回傳 exit 0,因此下方兩個門檻都會無聲通過。不需要全域安裝 — npx -y [email protected] 可在任何有 Node 22+ 和網路的環境中運作(首次執行下載,之後快取)。對於使用者想要保留的專案,建議執行 npm install --save-dev [email protected]。詳細資訊、版本下限、離線備援方案與錯誤目錄:references/setup-and-validation.md。

任務 → 應閱讀的內容

面前的任務閱讀
系統上下文 / Landscape(「誰在使用它,它與誰通訊」)references/levels/l1-context.md
容器(「內部執行什麼」,技術選擇)references/levels/l2-container.md
元件(一個容器內部)references/levels/l3-component.md
程式碼層級 — 一個元件的類別/介面references/levels/l4-code.md
資料流 / 情境 / 序列(登入、結帳、管道)references/levels/flows-dynamic.md
基礎設施 /「它在哪裡執行」references/levels/deployment.md
任何跨領域的 DSL 問題(spec、model、FQN、extend、predicates)references/syntax-core.md
顏色、形狀、圖示、圖例、佈局references/styling.md
給定儲存庫 / 原始碼references/code-to-diagram.md
安裝、驗證、格式化、錯誤、預覽/匯出/CIreferences/setup-and-validation.md

根據任務擴展結構

  • 小需求(一個系統,快速上下文/容器概覽):從 templates/minimal/ 開始 — 3 個檔案(spec.c4、model.c4、views.c4)。不要為此建立多資料夾專案。
  • 真實系統(2 個以上層級、多個系統、部署、流程):使用 templates/full/ 佈局 — 複製檔案並重新命名內容:
architecture/
├── spec.c4                 # 唯一的 specification 區塊:所有 kinds
├── model/
│   ├── landscape.c4        # 頂層系統 + 角色
│   ├── <system>.c4         # 每個系統一個檔案,透過 extend <system> { … }
│   └── externals.c4        # externalSystem 元素
├── deployment/prod.c4      # nodes + instanceOf(kinds 留在 spec.c4)
└── views/
    ├── context.c4          # 第 1 層(檢視索引)
    ├── <system>-views.c4   # 第 2/3 層檢視,含向下鑽研
    └── dynamic-flows.c4    # 動態 + 部署檢視

透過新增檔案來擴充(新系統 → 新增 model/<s>.c4),保持 model 與 views 分離,並將 specification 集中在一個檔案中。該資料夾下的所有 .c4 檔案會自動合併為一個 model。

範本僅使用內建主題顏色(範圍內 = primary,外部 = 透過 externalSystem kind 的 gray,角色 = indigo)— 無自訂顏色,無標籤。這保持了 C4 慣例並能適應淺色/深色主題。

工作流程

  1. 界定範圍 — 識別系統、角色、外部元素;選擇層級。預設值:上下文 + 容器;只有對於非平凡的容器才使用元件;為每個關鍵情境建議一個動態檢視;當基礎設施重要時才使用部署;僅在明確要求或有充分理由時才使用第 4 層(references/levels/l4-code.md — 預設替代方案是原始碼連結)。如果輸入是儲存庫 → references/code-to-diagram.md。如果範圍確實不明確 → 問一個問題;否則直接進行並說明假設。
  2. 設定 — 複製匹配的範本,執行上述的 LC4 行。
  3. 先 Model,再 Views — 撰寫 model 檔案,然後撰寫含向下鑽研的 views(view of、navigateTo),為你產出的每個圖表閱讀對應的層級檔案。
  4. 先驗證,再格式化 — $LC4 validate <dir>;修正 Line N: 錯誤(目錄在 setup-and-validation.md 中),直到 exit 0。然後執行 $LC4 format <dir> 並重新驗證,確保檔案符合使用者自己工具所產生的 canonical 風格。
  5. 交付 — 顯示檔案樹、驗證結果,以及如何檢視圖表($LC4 start <dir>;匯出/CI 選項在 setup-and-validation.md 中)。

品質檢查清單(交付前確認)

  • likec4 validate exit 0(或揭露的自我檢查),stderr 乾淨。
  • likec4 format <dir> --check exit 0 — 檔案為 canonical 格式。
  • 每個元素都有描述;每個容器/元件都有 technology;每個關聯都有有方向的標籤(什麼 + 如何)。
  • 每個檢視都有 title;每個檢視 ≤ ~20 個元素 — 擁擠的檢視請拆分。
  • 各層級相連:上下文 → 容器 → 元件透過 view of / navigateTo。

相關技能