Communitygithub.com

noeigenstate/SkillLens

使用 SkillLens(此儲存庫)將 SKILL.md 檔案轉換為動畫流程圖,並讓技能圖表更清晰。當有人想理解或簡報技能工作流程、檢查自動提取的圖表是否正確、為技能新增 skillflow 區塊、匯出技能的網頁 / 圖片 / 影片,或修改 SkillLens 本身時使用。

SkillLens 是什麼?

SkillLens 是一款專門將 SKILL.md 檔案轉換為動畫泳道流程圖的工具。它會將步驟顯示為卡片、決策顯示為菱形,實線表示前進、虛線表示回溯,而發光小點則沿著線條移動,並高亮顯示當前步驟的卡片。該工具支援中英文雙語介面(可切換),並且可以透過 npm start 啟動本地伺服器,或直接開啟 index.html(但需先掃描技能檔案)。使用者可以撰寫遵循特定結構(例如以 ## Workflow 標題、有序清單或子標題)的 SKILL.md,讓工具自動提取圖表;或使用 ` ```skillflow ` 區塊精確控制圖表內容。此外,SkillLens 提供匯出為 HTML / SVG / PNG 圖片或 MP4 錄影的功能,並支援自動翻譯(透過 Anthropic SDK 或 Claude Code CLI),方便跨語言團隊協作。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/noeigenstate/SkillLens/tree/HEAD/skills/skilllens

在你喜歡的 AI 中提問

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

說明文件

SkillLens:使用與維護

SkillLens 將任何 SKILL.md 轉換為動畫泳道流程圖:卡片代表步驟,菱形代表決策,實線表示前進,虛線表示迴圈,發光小點沿著線條移動,而發光卡片則是當前步驟。UI 和固定的圖表文字提供英文(預設)和中文;右上角的「中 / EN」可切換。

title: SkillLens
subtitle: SKILL.md 輸入 · 自動提取 · 動畫流程圖輸出
hero: SkillLens | 匯入 · 提取 · 調整 · 匯出

trigger start: 想了解某項技能 [當] {bell}
  讀取工作流程
  檢查或簡報

lane L1: 匯入 [匯入] (綠色)
  step open: 開啟 SkillLens [start.bat] {play}
    列出所有本地技能
    每次儲存時重新繪製
  step add: 拖放或貼上 [drop] {upload}
    資料夾、.md 檔案
    或貼上的文字

lane L2: 提取 [提取] (藍色)
  decide has: 有 skillflow 區塊? [skillflow?]
  step auto: 啟發式提取 [auto] {sparkles}
    區段 → 泳道
    步驟 / 決策 / 迴圈
  step check: 對照來源檢查 [review] {scan-eye}
    點選卡片查看其文字
    檢視其連線位置
  step tune: 在結構中調整 [edit] {pencil}
    套用以重新繪製
    複製為程式碼區塊

lane L3: 輸出 [匯出] (紫色)
  step draw: 從區塊繪製 [render] {layers}
    泳道 · 卡片 · 菱形
    小點沿線流動
  step out: 匯出 [export] {download} +end
    HTML / SVG / PNG
    錄製 mp4

flow:
  start -> open -> add -> has
  has -> auto : 否
  has -> draw : 是
  auto -> check -> tune -> draw -> out
  check ~> auto : 修正來源文字

開啟方式

  • 雙擊 start.bat:啟動本地伺服器並開啟瀏覽器。清單中包含儲存庫的 skills/ 和 examples/ 目錄,以及本地 Claude 使用者和外掛技能,並在 SKILL.md 變更後的 2 秒內重新繪製。與 npm start 相同;npm run start:project 則僅列出儲存庫自己的技能。
  • 直接開啟 index.html:無需伺服器,但清單來自 data/skills.js,因此需要先執行 npm run scan。影片錄製和自動翻譯需要伺服器。
  • 額外資料夾:--root 名稱=<路徑>,或在儲存庫根目錄中放置 skillviz.config.json:{"roots":[{"label":"團隊技能","dir":"<路徑>"}]}。

撰寫能良好繪製圖表的技能

提取規則位於 src/extract.js。遵循以下方式撰寫的 SKILL.md 無需 skillflow 區塊即可正確繪製圖表:

  1. 將程序放在 ## 工作流程 / ## 步驟 / ## 程序 等標題下,使用有序清單或帶編號的 ### 子標題;將每個步驟寫成 **短標題**:說明。
  2. 以「如果…」/「是否…」開頭撰寫決策;「如果 X,則執行 Y」會變成帶有「是」出口的菱形。
  3. 將路由器撰寫為兩列表格,左欄標題為「狀態 / 條件 / 如果」,右欄為「動作 / 執行 / 路由」:它會變成一串優先比對的決策。
  4. 將迴圈撰寫為「返回步驟 N,直到…」。
  5. 以開頭的 [如有必要] / [可選] 標記可選步驟;該卡片會獲得虛線邊框。
  6. ## 規則 / ## 注意事項 下的規則會變成琥珀色備註;## 參考資料 下的內容會變成未連線的參考泳道。

skillflow 區塊(精確控制)

當 SKILL.md 包含 ```skillflow 區塊時,SkillLens 僅繪製該區塊。撰寫的最快方式:在「結構」面板中修正自動提取的圖表,按一下「複製為程式碼區塊」並貼上到 SKILL.md 中。語法:

行意義
title: subtitle: hero: 標題 | 副標題 footer: window: cols: 4頁面文字和每列卡片數
trigger id: 標題 [標籤] {圖示}頂部的觸發卡片;縮排的下面幾行是其描述
lane id: 標題 [標籤] (顏色 種類)一個泳道;顏色:綠 / 藍 / 紫 / 青 / 玫瑰 / 琥珀 / 石板灰;種類:flow(預設,鏈接)、ref(參考,未連線)、bare(無框架)
step id: 標題 [標籤] {圖示} +optional +end一個步驟卡片;+end 是結束步驟(實心圖示),+optional 是虛線卡片
decide id: 問題? [副標題]一個決策菱形
note: 文字泳道內的備註
在 flow: 下方:a -> b -> c : 標籤前進線條;~> 為虛線迴圈;a -> "文字" : 是 是指向簡短文字的出口

如果沒有 flow:,非參考泳道的卡片會按順序鏈接。圖示為 Lucide 名稱,列於 src/icons.js 中;若要新增,請從 lucide-static 複製其 SVG 本體。

修改 SkillLens

  • 圖層:markdown.js 解析 → extract.js / dsl.js 建立結構 → layout.js 放置卡片和路由線條 → render.js 繪製 SVG 並播放 → app.js 為 UI。所有 UI 和圖表字串位於 i18n.js 中;每個鍵都需同時新增到 en 和 zh。
  • 頁面必須能透過雙擊開啟,因此使用純 <script> 標籤,不使用 ES 模組。每個腳本都寫成 SV.mod.name = function (SV) {…},以便獨立匯出可用 toString() 內嵌程式碼。
  • 每個影格必須是時間 t 的純函數(無 CSS 動畫、Math.random 或實際時鐘),否則逐幀影片錄製會失效。
  • 主題:Blueprint(預設)、Midnight 和 Glass。圖表顏色在 render.js 的 THEMES 中,UI 顏色在 style.css 頂部的 CSS 變數中;必須同時修改兩者。僅限 Blueprint 的細節(網格、尺規、角落刻線、卡片編號、琥珀色啟用步驟)位於 P.blueprint 後方。
  • 字型:Noto Sans SC(中文)、Inter(拉丁)、JetBrains Mono(標籤和路徑)來自 Google Fonts,離線時回退到系統字型。版面配置使用 canvas 測量文字,因此必須等待字型載入:app.js 在 loadingdone 時清除度量快取並重新繪製,錄製模式和獨立匯出會先呼叫 document.fonts.load 載入圖表文字。請保持 index.html 中的字型連結、layout.js 中的 FONT / MONO 以及獨立範本中的連結同步。
  • 自動翻譯:scripts/lib/translate.mjs(伺服器端,/api/translate)和 src/app.js 中的 useTranslation(決定圖表中哪些字串被翻譯)。僅翻譯圖表文字和開啟的原始文字;標籤、檔案名稱、路徑以及「是」/「否」保留不譯。後端順序:當設定 API 金鑰且已安裝 @anthropic-ai/sdk 時使用 Anthropic SDK,否則使用本地 Claude Code CLI(在 Windows 上直接呼叫 node_modules/@anthropic-ai/claude-code/bin/claude.exe 以避免 .cmd 引號問題)。快取鍵在兩端均為 lang + \u0001 + text。
  • 在無頭瀏覽器中檢查變更:執行 npm run scan,然後執行 node scripts/record.mjs <技能名稱> --seconds 3,或透過 scripts/lib/cdp.mjs 截圖。若要進行迴歸測試,請將每個技能送入 SV.extract → SV.layout → SV.render.toSVG,確保沒有擲出錯誤且沒有文字溢出卡片。
  • 錄製需要本地 Chrome / Edge 和 ffmpeg;如果找不到,請設定 SV_CHROME / SV_FFMPEG。
  • README 主圖媒體:docs/promo.webp(內嵌顯示的動畫)連結到原始 docs/promo.mp4(含聲音的完整影片)。GitHub 永遠不會播放儲存庫的 MP4:無論檔案大小為何,都無法在 README 中內嵌播放或檔案檢視中播放,因此原始連結會直接下載;若要內嵌播放器,必須透過 github.com 編輯器上傳影片(使用 user-attachments URL)。請使用動畫 WebP,而非 GIF:在暗色 Blueprint 漸層上,30 秒的 GIF 超過 20 MB,而 WebP 保持在 8 MB 以下且色彩更清晰。從 1080p 主檔案:ffmpeg -i master.mp4 -vf "fps=15,scale=960:-1:flags=lanczos" -c:v libwebp -quality 70 -compression_level 6 -loop 0 -an docs/promo.webp 以及 ffmpeg -i master.mp4 -c:v libx264 -preset slow -crf 23 -pix_fmt yuv420p -c:a aac -b:a 160k -movflags +faststart docs/promo.mp4。

相關技能