Community影像github.com

kubai087/kubai-icons

生成一套风格统一的功能图标,可交付悬停时形变的动态版(SVG + JS),也可导出静态 SVG 文件,沿用 Lumno 书签文件夹图标的分层构造与配色推导规则。

kubai-icons 是什麼?

本技能(kubai087/kubai-icons)旨在帮助开发者或 AI 代理快速生成一套风格统一的功能图标集,基于 Lumno 书签文件夹图标的经典构造:后片、内容、前片堆叠,外描边,主色推导所有配色。支持两种交付形式:动态版(SVG + JS,悬停时图标发生形变,包含两组关键帧动画)和静态版(独立的 .svg 文件,无动效,适用于设计工具、原生 App 或 <img> 标签)。本技能提供完整的引擎(`src/engine.js`)、范例图标(`src/icons.js`)、展示页(`index.html`)、自检脚本(`scripts/check.mjs`)和静态导出脚本(`scripts/export.mjs`),确保图标一致性和可维护性。适用于 Raycast、Claude Code、Cursor、Codex 等支持自定义技能或工具的 AI 代理环境,要求 Node 18+ 和 Chrome(无头模式,可通过 `CHROME` 环境变量覆盖浏览器路径)。使用流程包括:读取 `PROMPT.md` 中的设计规则、确定交付形式(动态/静态/两者)、复制或追加工作目录、参考范例编写新图标、更新 `ORDER`、运行自检直至通过、最后按需导出静态 SVG。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/kubai087/kubai-icons/tree/HEAD

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

在你喜歡的 AI 中提問

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

說明文件

Kubai Icons

這個 Skill 自帶完整的實作:引擎、一整套範例圖示、展示頁、自檢腳本和靜態匯出腳本。你的工作是按規則寫新圖示,不是重寫引擎。

包裡有什麼

  • PROMPT.md:全部設計規則,每一條都是硬性要求。動手前完整讀一遍。
  • src/engine.js:引擎。顏色推導、外描邊遮罩、厚度帶漸層、投影和內發光濾鏡、插值動畫、色板都在這裡。直接複用,不要改。
  • src/icons.js:範例圖示。新圖示按同樣的格式追加。
  • src/app.js、index.html:展示頁。ORDER 決定展示哪些圖示、按什麼順序排。
  • scripts/check.mjs:自檢腳本。在無頭 Chrome 裡截出靜止、懸停、懸停過程的中間幀、24px、28px 和所有色板,並讀出每一頁的腳本報錯。暫存檔都放在輸出目錄裡,跑完自動清理。
  • scripts/export.mjs:靜態匯出。把圖示渲染成不依賴腳本和樣式表的獨立 SVG 檔案,可以指定色板、主色和靜止或懸停狀態。

流程

  1. 讀 PROMPT.md。

  2. 確定交付形式。使用者沒說清楚時先問一句:

    • 動態(預設):SVG + JS,懸停時形變,靠 src/engine.js 在頁面裡執行。適合網頁和能跑 JS 的介面。
    • 靜態:獨立的 .svg 檔案,沒有動效,任何地方都能用:設計工具、原生 App、文件、<img>。使用者提到「切圖」「SVG 檔案」「放進 Figma」「App 裡用」等,就是要靜態。
    • 兩者都要:按動態做,最後再匯出一份靜態。
  3. 確定在哪裡做:

    • 新做一套:把本 skill 的 index.html、src/、scripts/ 複製到目標位置(一個新目錄或新倉庫),在那份副本裡工作。保留每個檔案開頭的版權宣告;PROMPT.md 和 SKILL.md 只留在 skill 裡,不要複製進去(見 LICENSE 第 3 條)。
    • 往已有的一套裡加:直接在那份 src/icons.js 裡追加。
    • 往 kubai-icons 倉庫的開源圖示庫裡加:每個圖示在 icons/ 下單獨一個檔案,格式、命名和角標見 docs/authoring.md,自檢用 node tools/check.mjs --only 名字 --with folder,mail,download。規則仍以 PROMPT.md 為準。
    • 只要靜態:同樣複製一份到工作目錄裡畫,最後只把匯出的 SVG 交給使用者。
  4. 讀產品程式碼,列出功能。動態版每個功能寫一句「物體 + 懸停動作」;靜態版只需要確定物體(PROMPT.md 第 1 節)。

  5. 每寫一個圖示之前,先在 src/icons.js 裡找一兩個結構最接近的範例讀一遍(例如翻開的東西看信封和日曆,切出前片的看下載和上傳,會旋轉的看齒輪和星標),照它們的寫法來。

  6. 把名字加進 src/app.js 的 ORDER。用不到的範例,不放進 ORDER 就不會顯示。

  7. 執行自檢,把新圖示和幾個現有圖示放在一起看:

    node scripts/check.mjs --only 新圖示A,新圖示B --with 資料夾,郵件,下載
    

    截圖在 check-out/。逐條對照 PROMPT.md 第 10 節的檢查清單檢查;腳本報出錯誤時先修錯誤。往復類動作看 frames.png;查細縫時加 --scale 3;查淺主色上的標記時加 --accent #F59E0B,把所有圖示換成同一個主色。不加 --only 就檢查整套。靜態版看 rest.png、size-24.png、size-28.png 和 palettes.png 就夠了。

  8. 改到全部通過後,更新 README 裡提到的圖示數量,以及展示頁每個斷點的列數(列數要能整除圖示總數,斷點可以增刪)。

  9. 要靜態時,匯出到使用者指定的目錄,並告訴使用者用的是哪個色板:

    node scripts/export.mjs --only 新圖示A,新圖示B --palette 彩色 --out 目標目錄
    

    --palette 按名字選色板(彩色、藍灰、青瓷、薄荷、薰衣草、杏色、黑色),--accent #hex 把所有圖示換成一個主色,--state hover 匯出懸停結束時的樣子,--size 設定像素尺寸,--pad 給投影留出邊距。每個圖示一個 名字.svg。

環境

  • Node 18 以上,以及 Chrome。瀏覽器路徑可以用環境變數 CHROME 覆蓋。
  • 所有檢查都在無頭模式下進行,不會打開任何可見視窗,也不會動使用者正在用的瀏覽器。

Copyright (c) 2026 Kubai087. Licensed under the Kubai Icons License; see LICENSE.

相關技能