Community影像github.com

Yeshwanthyk/viz

用短短幾行文字在 T3 Code 中或 HTML 頁面中繪製互動式圖表或圖形:流程圖、DAG、循序圖、狀態機、呼叫樹或呼叫差異;競賽時序、延遲根源的甘特圖、延遲直方圖、重試退避、流量分割的桑基圖、事故原因的魚骨圖、死結的等待圖、工作項目的看板、佇列隨時間變化的庫存流量圖。用於 viz、visualize、graph、chart 或任何圖表。

viz 是什麼?

Viz 是一個高效率的 AI 助手技能,專為 Claude Code、T3 Code 等工具設計,讓開發者能以純文字(文法)描述資料,並自動渲染成互動式圖形。其核心優勢在於「寫資料,而非 HTML」——代理僅需依循一套簡潔的文法規則定義節點、路徑與視圖類型,即可產生流程圖、循序圖、甘特圖、桑基圖、魚骨圖、看板等近二十種圖表,大幅降低 token 消耗。此技能支援 T3 Code 的內聯預覽與 html_render 管線,或對外生成獨立 HTML 檔案(內含渲染引擎),亦可用於靜態頁面甚至成為長青設計文件的一部分。Viz 要求所有數據皆來源於真實軌跡、日誌或程式碼,未經測量或驗證的數據須以 ? 標記,確保圖表可作為可靠的分析依據。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Yeshwanthyk/agent-skills/tree/HEAD/skills/viz

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

在你喜歡的 AI 中提問

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

說明文件

viz 是做什麼的?

一個固定的渲染器 assets/viz.js 負責繪製所有視覺元素。Agent 只需依照文法撰寫資料,因此一個視覺元素的 token 成本約等於它所取代的 ASCII 樹狀圖。作為交換,它可獲得步驟重播、節點檢視器、邊緣追蹤、篩選及路徑複製功能。

選擇視圖

撰寫資料,而非 HTML:一個 == graph 區段(節點、路徑及 view:)或一個圖表區段。根據讀者提出的問題選擇視圖,然後僅閱讀所需的文法:grammar(適用於圖形、樹狀圖與差異圖),charts(適用於 == timing、gantt、hist、retries、causes、board、stock 及 waits)。

流程如何運作?

  • 元件間的資料移動(分支、後備、非同步跳躍、失敗出口)→ view: flow,為預設值。「Walk me through」會附加敘述尾(見下方)。為每條邊標記傳遞的內容,並按照發生順序宣告邊緣;數字會自動跟隨。
  • 誰執行動作、傳送了什麼、經過了什麼過濾、產生了什麼結果 → ranks: 欄位,每個觸發一條路徑,成功抵達時以 => result 結尾,被過濾掉時以 =| result 結尾。團隊或服務作為帶狀區域 → 加上 lane:。
  • 服務間的請求隨時間變化 → view: seq,搭配 at: 時間(當等待時間很重要時)。當呼叫順序及之間等待時間是重點時選擇 seq 而非 flow;當分支是重點時則選擇 flow。每個服務在每次訊息後的狀態 → 在邊緣下加上 sets: id=*charging,在節點下加上 state:。
  • 某個欄位或任務的生命週期 → view: states,每個故事一條路徑(!giveup: running > blocked => dead)。使用者導向流程加上起始點([*] -> form)、語氣標示及 group 框(views)。
  • 誰呼叫誰 → == tree。某個時刻的呼叫堆疊,包含出錯的值 → view: stack 及 locals:。

何時發生,持續多久?

  • 同時執行的內容:競賽、重疊的工作 → == timing,每個工作者一條通道,加上 !window 標記重疊範圍。
  • 為何重試堆積:退避、抖動、放棄點、多個客戶端同時請求 → == retries,加上 policy:。
  • 請求的延遲分佈在哪裡,以及哪個鏈結限制了它(關鍵路徑、閒置時間)→ == gantt,使用 after 鏈結長條;budget: 繪製限制線,was 140ms 在已修改的行上繪製舊的執行結果於其下方。

數量多少?

  • 流量如何分割:流量拆分、漏斗、請求在哪裡流失 → view: sankey,每條路徑下加上 weight:,流失的路徑以 =| <exit node> 結尾。當流量數量是重點時,使用 sankey 而非 ranks:。
  • 是尾端還是全部(p50 vs p99、延遲迴歸)→ == hist,加上 was: 表示舊的分佈。
  • 隨時間變化的單一數量(對照閾值):佇列深度、延遲、使用中的資源池),以庫存流量圖呈現 → == stock,加上 meter: 頻帶。對於重複的模式,繪製一個典型的時間窗口並說明是哪一個。

為何中斷,卡在哪裡?

  • 誰持有哪個鎖,以及誰在等待它(死結)→ == waits;它會自動找出循環。
  • 事故的疑似原因,已確認或排除 → == causes,魚骨圖。
  • 跨階段的工作項目(後台填充中的分片、管線中的任務),含 WIP 限制及哪些被阻塞 → == board,看板。
  • 某個檢查讀取了哪些輸入,以及哪些觸發會使其保持新鮮 → 在圖形之後加上 == cover;一個寫入者 × 欄位矩陣 → columns: <rank>。

有什麼改變?

  • 對單一佈局的變更 → 在節點及路徑上使用 + 和 -;讀者可以切換 before | both | after。
  • 變更對呼叫樹造成的影響 → == diff,應由轉換器產生而非手動撰寫。<viz> 是此技能的目錄;前兩個參數是基礎版本與目標版本(例如 PR 的基礎分支及 HEAD);<paths> 限制掃描範圍:
python3 <viz>/scripts/viz.py calldiff main HEAD --max-depth 4 <paths>   # 輸出基礎內容 + == diff,未變更的子樹會被折疊
python3 <viz>/scripts/viz.py calltree --entry submitForm

根據需要附加到任何視圖上:

  • 每個步驟的原因 → 在路徑上加上 | payload | narration 尾綴;每個步驟都會成為重播步驟。
  • 一個逐步引導場景的設計文件 → theme drawing,在步驟下加上 shows: id = text,以及當某個數字決定結果時加上 meter:(drawing)。
  • 一個將被儲存、列印或分享的頁面 → theme paper。它會自行繪製頁面,因此內嵌於 T3 的渲染保留預設主題。

所有內容都要有證據支持。每個節點應有一個 @path:line 以及關於讀取、寫入和失敗行為的詳細行。每個數字(持續時間、權重、層級)都應來自追蹤紀錄、日誌、查詢或程式碼。對於任何你尚未閱讀或測量的內容,請以 ? 標記:在節點、路徑、長條或區段前加上 ? 前綴,並在庫存點上加上 # estimate 備註。

顯示它

T3 Code(工具列表中包含 html_render):直接將頁面寫入 html_preview,檢查其主控台是否有 viz: 解析錯誤,然後將同一頁面傳遞給 html_render。請勿貼上 viz.js。

<!doctype html><script src="https://cdn.jsdelivr.net/gh/Yeshwanthyk/agent-skills@efe8911d3765b764d7f0bf775e395d5201e29b16/skills/viz/assets/viz.js"></script>
<script type="text/viz">
…
</script>

如果預覽主控台顯示腳本載入失敗,請回退到以下頁面(其他任何地方)並將路徑提供給使用者。切勿將 viz.js 內嵌到 T3 渲染中:它每次呼叫約佔 55k tokens。

其他任何地方:將資料儲存到 /tmp/viz/<name>.viz,然後執行 python3 <viz>/scripts/viz.py html /tmp/viz/<name>.viz --open。它會回報解析錯誤,將 /tmp/viz/<name>.html 與渲染器一起內嵌,並在瀏覽器中開啟。在已安裝 glimpse 的 pi 上,改為在該處開啟檔案(pi)。回報路徑。

在需要保持自包含的已儲存頁面中(使用者保留或分享的頁面):在視圖所屬位置撰寫 text/viz 區塊,在 body 結尾處加上 <script data-viz></script>,然後執行 viz.py inline page.html。更新 viz.js 後重新執行它。為故事說明文字、表格列或字彙條目加上 data-viz-id="<node id or path name>",滑鼠懸停時會點亮頁面上每個圖形中的該部分,無需頁面腳本。

回覆

視覺元素承載結構。回覆僅加入視覺元素無法顯示的內容:你未曾驗證的事項,以及應首先檢視的一件事。

完成條件

當視覺元素渲染完成且無 viz: 錯誤,每個節點和數字都有依據或標記為 ?,並且你已在讀者會查看的地方(T3 內聯,或已開啟頁面的螢幕截圖)看過它時,即為完成。無頭載入、curl 或乾淨的主控台不等同於看到它;當你無法查看時,請如實說明,而非聲稱已渲染完成。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相關技能