Communitygithub.com

tinycorn-studio/agent-skills

在修改 UI 程式碼之前,先渲染介面預覽/模型圖 (preview, mockup, 介面預覽, 設計, 草稿, 圖片示範, 設計審查)。當使用者想在實作前查看或核准 UI 設計,或提出 UI 變更時使用 - 離屏渲染為 PNG,開啟以供核准,然後再套用。每當變更觸及檢視/佈局/顏色時,都應使用此技能。

agent-skills 是什麼?

這是一個強制性的 UI 開發工作流程,要求在實際撰寫程式碼之前,先產生並呈現 UI 變更的視覺預覽圖。此技能支援 macOS 原生應用程式(使用 SwiftUI 撰寫離屏渲染腳本)、網頁開發(使用 HTML 模型圖或 Playwright 螢幕截圖)以及 CLI/TUI 工具(使用 ANSI 或彩色文字描述)。其核心原則是「先預覽,後程式碼,經使用者核准才套用」,確保設計在投入實作前獲得明確同意,從而減少重工並加速迭代。此技能會自動建立一個 Swift 腳本,在指定的路徑(例如桌面)渲染出 2x 解析度的 PNG 預覽圖,並在 Finder 中開啟該圖片以供使用者審查。如果有多個設計方案,腳本會並排渲染 2-4 個選項(標記為 A/B/C/D),讓使用者直接選擇。腳本本身會與功能一同提交至版本控制,確保與程式碼庫的變更保持一致。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/tinycorn-studio/agent-skills/tree/HEAD/skills/ui-preview-first

在你喜歡的 AI 中提問

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

說明文件

UI 預覽優先 (TinyCorn Studio 標準)

規則: 所有介面變更都必須在套用到程式碼之前,提供預覽圖供使用者核准。

工作流程

  1. 在 tools/preview_<名稱>.swift 中撰寫離屏渲染腳本 — 無需執行應用程式,直接渲染為 2x PNG。

  2. 執行並為使用者開啟圖片:

    swift tools/preview_<名稱>.swift ~/Desktop/<App>-<名稱>-Preview.png
    open ~/Desktop/<App>-<名稱>-Preview.png
    
  3. 請求核准 — 如果有多個設計方案,並排渲染 2-4 個選項,並請使用者選擇 (A/B/C/D)。

  4. 僅在使用者確認後才套用。 將預覽腳本連同功能一同提交。

  5. 如果使用者要求修改:編輯腳本,重新渲染,重複直到核准為止。

程式碼骨架 (SwiftUI, macOS)

import AppKit
import SwiftUI

struct PreviewRoot: View {
    var body: some View {
        // 使用應用程式實際的元件/顏色建構模擬 UI
        VStack { /* ... */ }
            .frame(width: 900, height: 600)
            .background(Color(nsColor: .windowBackgroundColor))
    }
}

let host = NSHostingView(rootView: PreviewRoot())
host.frame = NSRect(x: 0, y: 0, width: 900, height: 600)
host.layoutSubtreeIfNeeded()

let rep = host.bitmapImageRepForCachingDisplay(in: host.bounds)!
host.cacheDisplay(in: host.bounds, to: rep)

let png = rep.representation(using: .png, properties: [:])!
let out = CommandLine.arguments.count > 1
    ? CommandLine.arguments[1]
    : "preview.png"
try! png.write(to: URL(fileURLWithPath: out))
print("Wrote \(out)")

常見陷阱 (實際遇過)

  • 不要使用與 SwiftUI 修飾符/檢視同名的全域變數 (例如 border) → 會導致多載錯誤。請使用 borderColor。
  • 標頭在多個方法間共用,因此在同一個檔案的其他地方不要重複宣告。
  • 渲染 2x:設定 rep.size,或像上面那樣使用 bitmapImageRepForCachingDisplay + cacheDisplay;在快取之前記得呼叫 layoutSubtreeIfNeeded()。
  • 請勿使用 screencapture/AppleScript 來擷取應用程式 — 機器通常缺乏螢幕錄製權限 (-1743)。離屏渲染是唯一可靠的方法。
  • 深色主題的應用程式:使用相同的 Color(nsColor:) 和應用程式的素材資源,使預覽與實際情況一致。
  • 將圖片儲存到 ~/Desktop/,方便使用者尋找,檔名格式為 <App>-<功能>-Preview.png。

超越 SwiftUI

  • 網頁:在瀏覽器中開啟 HTML 模型圖並截圖,或使用 Playwright 螢幕截圖。
  • CLI/TUI:在終端機中使用 ANSI 渲染,或使用帶有顏色的文字描述。

不變的總體原則:先預覽,後程式碼,經使用者核准才套用。

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

相關技能