Community程式設計與開發github.com

UI-Lab:UX/UI 原型測試

在應用的 UI Lab 中建立可點擊的 UX/UI 設計原型,將每一輪測試記錄於 docs/ux-history,並在業主核准計畫後將所選方案推廣至正式應用。

UI 原型測試 是什麼?

此技能為開發者與 AI 代理提供一套結構化的流程,用於在專屬的 UI Lab 環境中建立、比較與推廣 UX/UI 設計方案。它支援三階段工作流程:第一階段先於分支上建立多個選項(每個選項位於獨立資料夾),讓業主可實際點擊檢視原型並留下意見;第二階段則將該輪測試的所有選項都標記、記錄於 docs/ux-history 並清除 lab 檔案;第三階段則根據業主挑選的方案,將其正式遷移至主應用程式,更新相關邏輯、字串與文件。每個專案的特定設定(如平台、選項資料夾、範例資料等)都記錄在專屬的 `.claude/ui-lab.md` 檔案中,確保流程標準化且可重複執行。該技能已針對與 Claude Code 等 CLI 代理協作進行了最佳化,強調版本控制、按平台指南進行螢幕截圖,以及在推廣前與業主明確溝通計畫。

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

Installed? Explore more 程式設計與開發 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜歡的 AI 中提問

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

說明文件

UI Lab:UX 建議

UX 建議會經歷三個階段:

  1. Mock(原型) — 僅修改 lab 程式碼,範圍以專案 lab 筆記中指定的平台為準。業主可以點擊檢視各個選項。
  2. Close the round(結束該輪測試) — 該輪測試會被標記,並將記錄寫入 docs/ux-history/,同時刪除相應的 lab 檔案。
  3. Promote(推廣) — 業主選定選項並核准計畫後,該選項就會成為正式畫面,並納入其共用邏輯,若應用程式有雙平台,也會一併處理。

專案的 lab 筆記

此技能定義了流程;每個專案的具體細節則存在其 .claude/ui-lab.md 中。請先閱讀該檔案再進行任何操作。它會提供:

  • Platform(平台):此機器上要使用哪個 lab 應用程式(uname -s)、其 ID、lab 程式碼存放位置,以及開啟畫面的指令;
  • Option folders(選項資料夾):每個平台對應的資料夾與套件,以及字串存放位置;
  • Files(檔案):選項畫面所使用的佈景主題或顏色,以及推廣時狀態的移動目標;
  • Sample data(範例資料):選項所需的資料來源;
  • Fakes and edge cases(模擬資料與邊界情況):此應用程式中無法顯示的模擬資料,以及需要檢查的邊界情況;
  • Screenshots(螢幕截圖):如何在各平台進行截圖;
  • Promote(推廣):目標路徑、另一平台的處理方式、需更新的文件以及 release 建置指令;
  • lab 本身的運作方式(文件連結)。

若 .claude/ui-lab.md 的內容與此技能衝突,以筆記為準。若專案沒有 .claude/ui-lab.md,或其中缺少下方所需的任何項目,請詢問業主,不要自行猜測,並將答案補進筆記中。

第一階段:Mock(原型)

從當前分支建立一個 ux/<screen> 分支進行開發,以便其他機器可以拉取該輪測試。若工作目錄中有非你所為的未提交變更,請先詢問再切換。

每個選項一個資料夾

每個選項都位於自己的資料夾中(位置由筆記指定),以便能單獨刪除、恢復或推廣。該資料夾應位於 screens 套件內,這樣推廣時就只是移動檔案。

檔案用途推廣時的操作
<Screen>Option<B>畫面本身:<Screen>Screen<B>(state, actions),須達到正式產品品質(使用應用程式的字串與佈景主題,依筆記規定),且不得包含 lab 專用型別移入應用程式
<Screen>Option<B>State應用程式邏輯尚未產生的狀態,但須按照邏輯未來會產生的方式來設計移至筆記指定的位置
<Screen>Option<B>Lab其範例資料、模擬行為、無實際操作的 actions,以及 LabOption 值(附帶它所模擬的內容說明)刪除
該選項的字串(若應用程式使用字串資源,位置與名稱依筆記規定)該選項新增的文字移入應用程式的字串中
  • 除資料夾(以及無法放入資料夾的字串資源檔案)外,每個選項還需新增一行:在 LabScreens 的畫面清單中加入 <screen>OptionB,。
  • 資料夾內的所有內容均設為 private,除了畫面本身、其狀態以及 LabOption 值(這些名稱需包含選項名稱,以避免衝突)。
  • 若某選項需要修改應用程式的現有元件,則在其資料夾中使用自己的副本。
  • 範例資料來自筆記指定的來源(保持原樣),加上該選項在其 Lab 檔案中新增的內容。若筆記說明資料為真實資料,請勿自行編造文字。

步驟

  1. 在 lab 中開啟該畫面,檢視 current(應用程式目前的畫面)。
  2. 撰寫 2 到 3 個不同的方向作為選項 a、b、c(排在 current 之後),每個選項附上一行說明其變更內容。
  3. 在每個 LabOption 值上方,列出該選項模擬了什麼:應用程式邏輯尚缺的資料、未建置的行為,以及無法顯示的模擬資料(筆記會列出此應用程式的常見項目)。
  4. 檢查筆記所列的邊界情況,以及該畫面可能出現的特殊情況。會影響設計的情況應自成一個選項(例如 a-rtl、a-dark)。
  5. 建置後,開啟每個選項並檢視螢幕截圖(指令在筆記中;Android 裝置的相關事項請參考 android-emulator 技能)。從手機傳回的全黑螢幕截圖表示手機已鎖定:請業主解鎖。
  6. 在分支上提交,並告知業主選項 ID(<screen> <option>)、每個選項模擬了什麼,以及所使用的裝置。

若業主要求修改某個選項,修改內容應成為新資料夾中的新選項(例如 b2 與 b 並列)。業主否決的選項在該輪測試結束前仍應保留,以便該輪的標籤能包含所有選項。

第二階段:Close the round(結束該輪測試)

業主已選定某選項或否決所有選項後:

  1. 在該輪測試的最後一次提交上打標籤(此時所有選項都還在),並推送標籤: git tag ux/<screen>/<yyyy-mm-dd> && git push origin ux/<screen>/<yyyy-mm-dd>。標籤可確保分支刪除後程式碼仍可存取;同一天的第二輪測試則使用 -2。
  2. 按照下方格式撰寫 docs/ux-history/<screen>/<yyyy-mm-dd>-<topic>.md,並依照筆記規定將它連結到應在的位置(例如畫面的文件)。
  3. 刪除其他選項的資料夾、字串檔案以及 LabScreens 中的行;被選中的選項則保留至第三階段。
  4. 提交。若所有選項都被否決,該輪到此結束:合併分支(歷史檔案是其唯一的永久變更)或刪除分支,依業主喜好選擇。
# <Screen> — <topic>(<yyyy-mm-dd>,<platform>)

Tag:`ux/<screen>/<yyyy-mm-dd>`

## 選項
- **a — <name>**:<變更內容>。*已選取*,在 <commit> 中推廣。
- **b — <name>**:<變更內容>。*已否決*:<業主的原因(若有提供)>。

## 模擬的內容
- b:<原型所展示但應用程式尚無法做到的功能>。

## 恢復選項
    git checkout ux/<screen>/<yyyy-mm-dd> -- <option folder> <strings files>
然後在 `LabScreens` 中加入 `<screen>Option<B>,`。
建立在該標籤當時所使用的 <components 與 sample data> 之上。恢復後若有編譯錯誤,表示問題出在選項的副本與範例資料中;請在該處修正。

恢復

若業主要求使用較早的選項,請遵循其歷史檔案:從標籤中將路徑 checkout 到 ux/<screen> 分支,加入 LabScreens 行,修正選項資料夾內無法編譯的部分,然後開啟它。該選項即成為新一輪測試中的有效選項。

第三階段:Promote(推廣)

該輪測試結束並有選定選項後,進入計畫模式(EnterPlanMode),並使用 ExitPlanMode 呈現計畫;業主會透過按鈕核准。計畫應涵蓋:

  • 要移動的檔案以及它們要取代的畫面;
  • 每個模擬項目背後的邏輯工作:提議的狀態、ViewModel 或 Controller 變更,及其測試;
  • 若應用程式有雙平台,另一平台的處理方式(依筆記規定);
  • 筆記規定需要更新的文件。

業主核准後,在同一個分支上:

  1. 使用 git mv 將選項的畫面檔案移入應用程式(目標位置依筆記規定),取代舊畫面,並將函式或 View 命名為該畫面的名稱。
  2. 將它的字串移入應用程式的字串中,移除選項前綴或 table。
  3. 將其狀態移至筆記指定的位置,讓應用程式的邏輯能透過測試產生該狀態,並連接 actions。
  4. 將其複製的元件合併回原始元件,然後刪除其資料夾的其餘部分及 LabScreens 中的行;將 LabScreens 中該畫面的 current 指向已推廣的畫面。
  5. 使用筆記的指令進行 release 建置,此時任何對 lab 程式碼的引用都應導致編譯失敗。
  6. 完成計畫中關於另一平台與文件的部分,並將推廣的提交記錄到該輪的歷史檔案中。

分支的合併由業主決定。

Individual skills in this repo

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

相關技能