Communitygithub.com

Dhodraj/ui-design

設計或重新設計產品介面,從設計系統開始。適用於構建、重新設計或現代化 SaaS 畫面、儀表板、數據平台、登陸頁面、引導流程或任何客戶面向的介面,以及當用戶說產品看起來過時、普通或像 AI 生成時。當專案沒有設計系統時,會撰寫一份 DESIGN.md 設計系統,提出視覺方向並讓用戶挑選一個,在用戶要求時構建模型以待批准,然後構建真實產品並在瀏覽器中驗證。協同技能:ui-find, ui-review。

ui-design 是什麼?

這項 Dhodraj/ui-design 技能的核心是將 AI 代理的介面開發能力從單純的畫面編寫,擴展到更完整的設計流程:決定介面的目的與外觀,再到驗證最終成果是否達成目標。它遵循兩大鐵律:在建立任何檔案之前,先明確客戶的成果;在聲稱產品能運作之前,先實際運行產品。這項技能在 Claude Code、Cursor 等 AI 代理工具上運作,並提供了一套完整的階段化流程,讓開發者能根據變更規模選擇合適的深度。流程從閱讀專案現有設計系統 (DESIGN.md) 開始,定義設計系統、客戶成果,然後提出三個視覺方向讓用戶選擇。之後會列出畫面所有狀態(空白、載入、錯誤等),並使用 ui-find 尋找現有元件。技能同時支援 Mock(模型)與 Direct(直接構建)兩種路線,並要求使用真實設計 Token 和元件進行構建。最終透過 ui-review 驗證、進行回歸測試,並提交詳細報告。它強調誠信原則——不報告未實際執行或測量的結果,也不虛構任何數據或指標——這使其成為一個重視品質與透明度的強大設計工具。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Dhodraj/ui-skills/tree/HEAD/.claude/skills/ui-design

在你喜歡的 AI 中提問

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

說明文件

UI 設計

一個被要求編寫畫面的代理,寫出畫面。這項技能彌補了這前後的缺口。首先,決定這個介面的目的及其應有的外觀。然後,確認所構建的內容是否達成任務。

以下所有內容都受兩條規則約束。在建立第一個檔案之前,先指出客戶的成果。在說它運作之前,先實際驅動產品。

先選擇深度

變更類型階段
複製、一個顏色、一個屬性1, 7,然後查看結果
一個元件、一個狀態1, 4, 6, 7, 9
一個畫面、一個表單、一個流程0 到 10,簡要
一個新介面,或「讓它變現代」0 到 10 完整,且階段 3 需在階段 7 前獲批准
「審計這個」使用 ui-review。不要開始編輯
「幫我找一個……的元件」使用 ui-find

在開始前,用一行話說出你選擇的深度。只有在變更完全無法觸及某個階段所保護的面向時,才能跳過該階段。

0. 飛行前檢查:在問任何問題前先閱讀專案

按此順序閱讀,並在能找到答案的第一個項目停止:

  1. 專案根目錄的 DESIGN.md。已存在的設計系統優先於此技能的所有預設設定和您個人的品味。 遵循它。若工作需要該檔案未涵蓋的內容,請將其加入檔案,而不是在樣式表中憑空發明。
  2. PRODUCT.md、README.md、.claude/、任何現有的簡報。
  3. 正在使用的技術棧、樣式系統和元件庫。
  4. 最接近的現有畫面,以及涵蓋它的測試。

一個與產品自身系統矛盾的畫面,是一個發現,而不是開始第三個系統的許可。

1. 設計系統

references/design-system.md 包含其格式和兩種進入方式。

專案有執行方式
一份 DESIGN.md閱讀它,遵循它,並用一行話說明
程式碼中真實的設計系統:Token、主題檔案、Tailwind 設定通過從程式碼中讀取值(絕不猜測),將其編撰至 DESIGN.md
一個沒有書面系統的現有產品或品牌從真實事物編撰:渲染它,讀取計算後的值,記錄下來
什麼都沒有在階段 3,根據用戶選擇的方向撰寫一份

切勿撰寫一份聲明產品未使用之值的 DESIGN.md。一個被編撰的系統是對現有內容的記錄。一個新系統是一個提案,在用戶選定之前,應被標記為提案。

在根據該檔案進行構建之前,對其進行門控檢查:

pnpm dlx @google/design.md lint DESIGN.md

這是一個真實的已發布套件。它會捕捉中斷的 Token 引用、遺失的 primary、從未定義的排版,以及任何低於 4.5:1 對比度下限的元件顏色組合。在階段 7 之前修復它所報告的所有問題。

2. 客戶成果

references/product-thinking.md 包含方法。業務成果、客戶及其工作,以及最小可用版本。每個項目兩行話。

將成果寫成可觀察的結果:

一個有 40 個進行中任務的調度員,可以看到哪個任務延遲,並在不離開列表的情況下重新分配它。

然後是可以在瀏覽器中獨立驗證的接受標準。「看起來不錯」不是一個標準。「在 375px 寬度下,每個任務的狀態及其重新分配控制項都可以在不需要水平滾動的情況下觸及到」才是。

在沒有證據的地方,寫下假設並標記它。切勿撰寫任何非真實人物產生的角色、引言或轉換數據。

3. 方向,與用戶的選擇

references/directions.md 包含方法和詞彙。

提出三個方向,而不是一個。單一提案只是模型的美學默認搭配上一套理由。每個方向都應包含:名稱、錨色調、字型搭配、密度以及一個令人難忘的重點,共四行。

然後停下來,使用互動式提問工具將其呈現給用戶。這是一個批准關卡:不要基於假設就繞過它進行構建。如果用戶說「你來選」,就選一個,用一行話說明選了哪個以及原因,然後繼續進行。

一旦獲得批准,就用所選方向的真實值撰寫或更新 DESIGN.md,並對其進行 lint 檢查。

4. 旅程及其狀態

references/journey-and-states.md。

列出這個介面實際上會有的狀態:空白、一個項目、多個項目、最密集的真實案例、載入中、部分失敗、錯誤、無權限。基於一個固定樣本構建的畫面會隱藏所有其他狀態,而這正是完成的畫面在接觸客戶時失敗的最常見原因。

5. 在撰寫元件前先尋找它們

執行 ui-find,或直接執行其腳本:

node .claude/skills/ui-design/scripts/find-components.js <搜尋詞> --limit 15

首先搜尋專案自己的元件。產品已有的元件被二次實現是一個缺陷。只有在說出已讀取過的候選元件以及每個元件為何不合適後,才能從頭開始撰寫元件。

6. 模型,或真實產品

用一行話詢問選擇哪種路線,除非用戶已經說過。兩種路線都建立真實的 HTML 和 CSS;區別在於檔案放置的位置及其連接的對象。

路線時機檔案位置
模型 (Mock)新介面、重新設計、需要說服利益相關者,或用戶要求在 mock/ 下的獨立頁面,使用真實設計 Token 和範例資料,並明確說明是範例
直接 (Direct)在現有產品內部的變更,或用戶說直接構建產品自己的檔案

模型獲批准後,再用產品的元件重建。在構建之前就說明這點,這樣就不會有人期望模型檔案被發佈。

7. 構建

構建階段 4 中的狀態,而不僅僅是快樂路徑。使用產品自己的 Token 和元件。

在每次 UI 編輯之前,即使是小編輯,都要立即閱讀 references/gates.md 和 references/craft.md。

gates.md 是基礎:每個模型都會落入的預設陷阱,以及應該怎麼做。craft.md 是更上一層的工藝。陰影要深度而非邊框。同心圓角。ease-out 曲線在 300ms 以下。只在首次出現且不重複響應的入場動畫。等寬數字。將畫面的兩個部分連接起來,讓客戶覺得它們是一體的。

先單獨構建最重要的畫面,或英雄區塊。 在構建其餘部分之前,用全新的視角審查它:一個對先前決策毫無記憶的子代理能抓住你遺漏的問題。然後再構建其餘部分。

8. 運行它並觀察它

這不是程式碼審查。啟動應用程式,在瀏覽器中打開它,並像客戶一樣從真實的入口點使用它。

references/playwright.md 包含操作細節以及應用程式無法在此啟動時的應對方法。

查看截圖。讀取檔案列表不等於查看。

9. 審查與修復

對你構建的內容執行 ui-review。它會測量即時渲染,走查旅程,檢查結果是否符合 DESIGN.md,並按危害程度對發現進行排序。

按嚴重性順序修復。一個你無法根據階段 2 的成果來證明的變更,就是沒有人要求的範圍蔓延。說出你保留了什麼以及原因。

然後 references/regression.md:識別在修改程式碼之前就已經能正常運作的旅程,並區分你的變更導致的失敗和原本就存在的失敗。

10. 報告

  • 客戶成果,以及是否達成。
  • 選擇的方向,以及由誰選擇。
  • 構建或更改了什麼,按檔案列出。
  • 驗證了什麼,透過何種方式,在哪些寬度下,在哪些狀態下。
  • 未驗證什麼,以及原因。
  • 已修復的發現,以及未修復的發現及其原因。
  • 仍然是假設的假設。

誠信,其優先級高於以上所有階段

  • 絕不報告你未執行的測量或未渲染的畫面。
  • 指出每個替代品。用固定樣本代替即時資料,用靜態頁面代替應用程式,用本地字型代替品牌字型。
  • 當應用程式無法啟動或訪問時,要說明情況,並將所有關於旅程的主張標記為未驗證。不要描述程式碼就好像你親眼看到它運行一樣。
  • 絕不虛構指標、推薦信、標誌牆或客戶數量。當真實數據缺失時,留下一個標記好的空位並說明是空的。
  • 一個背後沒有實際功能表單,要在其表面說清楚。一個顯示「已發送」但實際並未發送的頁面是一個缺陷,而不是佔位符。
  • 親自走查旅程能發現摩擦點。但它不能衡量客戶的真實行為。

此技能借鑒了什麼,以及從何處借鑒

NOTICE 記錄了相關資訊。元件來源及其許可證記錄在 sources.json;scripts/check-sources.js 用於驗證該檔案,tests/run.sh 用於測試腳本。

相關技能