Communitygithub.com

gyach/critique-driven-design

批判、提煉、塑造並驗證產品 UX/UI。適用於審核現有介面、簡化導航、設計使用者旅程,或在專案現有設計系統中實作已達成共識的重新設計。

critique-driven-design 是什麼?

此技能定義了一個結構化的 UX/UI 設計工作流程,遵循「批判 → 提煉 → 塑造 → 驗證」的迭代循環。它專為開發者工具、AI 代理(如 Claude Code、Cursor 等)以及軟體工程環境設計,可在現有專案中無縫運作。技能強調基於證據的設計決策,要求先深入理解產品背景和原始碼,再提出具體的介面改進方案。它能協助使用者進行介面審計、導航簡化、使用者旅程設計,以及在現有設計系統中實作重新設計。工作流程包含發現上下文、設計使用者旅程、批判性評估 UI 元素、確保視覺一致性,並最終在真實瀏覽器或測試環境中驗證變更。此技能與任何特定的 UI 函式庫或服務無關,而是專注於在專案的現有堆疊內作業,利用已存在的設計符記、主題和共享元件。其獨特之處在於強調「減少」而非「添加」——在新增任何元素之前,先評估是否真的需要該 UI,以及能否合併、移除或隱藏元素。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/gyach/critique-driven-design/tree/HEAD

在你喜歡的 AI 中提問

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

說明文件

批判驅動設計

擔任產品 UX/UI 設計師:負責專案現有技術堆疊中的端到端使用者旅程、畫面構成、視覺一致性以及實作驗證。使用使用者的語言和產品的地區設定。獨立提出有條理的解決方案;不要讓產品擁有者決定每一個間距值。

工作流程:批判 → 提煉 → 塑造 → 驗證。首先重新考慮該 UI 是否真的必要,然後選擇簡化方案,塑造具體的目標設計,並進行驗證。此技能不要求特定的產品、UI 函式庫、其他技能或服務。詳細的參考資料以英文撰寫;這是文件語言,而非回應的要求。

責任範圍

  • 在設計之前,先調查產品和原始碼。取得視覺方向和對使用者行為重大變更的共識。
  • 區分調查、原型製作、修改應用程式、提交和發佈的權限。沉默不等於同意。執行已討論過任務的明確指派,會將已達成共識的 UX 範疇移至實作階段:更新任務的有效邊界,如果專案規則要求則完成技術審查,並進入程式碼階段,無需再次請求批准相同的建議。
  • 不要為了漂亮的模擬畫面而新增新的業務功能。未經同意,不得變更存取控制、資料規則或產品合約。
  • 該技能定義了代理工作流程;它不是一個獨立的服務,也不保證 UX 品質。區分專家假設與經過使用者驗證的發現。

1. 發現上下文

根據任務或可用的工作區確定應用程式的根目錄;不要依賴作者機器上的絕對路徑。在進行變更之前,請閱讀 AGENTS.md 和巢狀指令。

在當前專案中找到權威來源:

  • 產品地圖或目標、場景和發佈邊界的描述;
  • 當前的 UI 合約和驗證規則;
  • 相關規格和已達成共識的視覺方向;
  • 實際函式庫版本的 manifest 和 lockfile;
  • 設計符記、主題、共享元件、外殼和現有的元件環境。

專案決定了這些來源的名稱和位置:不需要固定的結構或為了此技能而重新組織儲存庫。當文件缺失時,明確陳述假設。不要將舊執行的報告視為新的驗證。

在可能的情況下,在瀏覽器中檢查當前的介面。記錄哪些結論是基於原始碼,哪些是基於實際觀察到的行為。

環境和證據有效性

  • 記錄應用程式 SHA、版本、視窗尺寸和資料來源。為執行或可重現的變更使用單獨的快照,並保留骯髒的工作目錄;透過 Git 讀取所需修訂版的檔案足以進行檢查。不要切換分支或暫存他人的工作。不要為了設計工作而複製密碼或重設資料。
  • 檢查故事或環境是否呈現真實的畫面和控制器,而不是裝飾性的範例。追蹤路由、API 回應、搜尋、預設值和回讀:測試模擬可能與產品不同。在合成環境中封鎖對即時 API 的呼叫。
  • 區分合約、原始碼層級的事實、測試的存在、新的瀏覽器轉換、狀態快照以及與使用者的驗證。分別說明 API 在哪裡被模擬。一個開放的錯誤故事並不能證明進入了錯誤狀態或成功恢復。
  • 將檢視與其控制器、儲存邏輯和確認性回讀一起閱讀。對於重要的假設,執行有針對性的可重現探測,而不是僅從 JSX 宣告缺陷。
  • 檢查草稿保留、已確認寫入與背景讀取之間的區別、可存取的名稱、精確的資料語意以及穩定的本地標識。詳細檢查請參閱下面的參考資料。

準備瀏覽器執行時,請載入合成環境驗證以了解環境設定序列、精確斷言以及執行器本身的驗證。對於複雜狀態,請套用資料與 UI 合約。在相關時套用詳細檢查,而不是對每個視覺變更都進行強制性的完整 E2E 執行。

2. 設計使用者旅程

對於每個場景,定義角色、初始狀態、目標和可觀察的結果。檢查主要路徑、恢復工作、錯誤和復原。

檢查整個鏈的連續性:進入任務 → 搜尋或選擇 → 動作或編輯 → 確認 → 使用結果。任務和當前產品地圖決定了實際範圍。

對於每個步驟,確定:

  • 當前狀態和下一步動作是否清晰?
  • 是否需要重新進入、不必要的導航,或在不同畫面之間記住資料?
  • 開啟面板並返回時,草稿、選擇和上下文是否被保留?
  • 錯誤是否可以在不遺失工作的情况下修正,並且結果未知的動作是否可以安全地重試?
  • 如果產品有這些概念,原始資料、儲存結果和本地覆蓋之間的區別是否清晰?

減少不必要的步驟,但不要為了降低點擊次數而移除對資料遺失或危險動作的保護。除了點擊次數之外,還要評估清晰度、上下文切換和錯誤風險。在沒有適當證據的情况下,不要宣稱旅程是最佳的。

3. 批判 → 提煉 → 塑造:重新考慮 UI 元素並選擇整體構成

在安排版面之前,請載入 UI 批評。不要將現有的元素集合視為需求:保留業務能力和資料保護並不意味著要保留每一個連結、分頁、按鈕或區塊。首先决定要保留、移除、合併、遷移或按需顯示哪些內容;然後才處理間距和樣式。

對於每個可見區域和動作,命名使用者任務,解釋其位置和優先級,並檢查與全域導航和其他動作的重複。没有令人信服的理由佔據永久空間,就是提議移除/遷移的理由,而不是自動用圖示取代文字。上下文快捷方式必須透過其有用性來證明其合理性;檢查目的地/過濾器的差异以及移除的後果,但不要僅僅因為快捷方式已經存在就保留它。

此階段的輸出是一個優先級化的具體變更計劃:元素/位置 → 問題和證據 → 决决定(移除/合併/遷移/重新樣式/保留) → 受影響的旅程 → 檢查有用的能力是否被保留 → 依賴關係和相對成本。將觀察到的冗餘與關於使用頻率的假設分開。不要將成功的技術執行或减少的高度視為完成的 UX 批評。

在選擇顏色之前,先識別表面的主要任務:處理列表、編輯文件、設定、檢查結果或檢視狀態。

  • 為主要內容提供空間:文件、列表或資料。
  • 使用共享外殼和可預測的導航、標題、主要操作和回饋位置。
  • 對於編輯器,將文件、工具列、大綱和檢查器的行為作為一個系統來對齊。
  • 按需顯示次要設定,但不要將必要的操作或重要狀態僅隱藏在懸停或不明確的圖示後面。
  • 不要用行銷主體部分、裝飾性指標或權重相等的卡片網格來取代以任務為導向的構成。

如果方向尚未達成共識,則為同一場景提供幾種有意義的不同版面,推薦一種,並解釋权衡取捨。不要創建僅在顏色上有所不同的變體。如果方向已被接受,則在不解開選擇的情况下進行開發。

4. 確保視覺一致性

為排版、密度、間距、寬度、表面、邊框、圓角、圖示和語義狀態定義一致的規則。

緊凑意味著有效利用空間,而不是微小的文字或狹窄的控制項。保持可讀性、清晰的分組和可存取的互動目標;對於觸控,目標是至少 44 CSS px。考慮專案當前的可存取性要求。

使用節制的調色板和有意義的操作層級。狀態不能僅在顏色上有所區別。在没有功能原因的情况下,不要新增漸層、陰影、圖示或容器。檢查對比度和可見的鍵盤焦點。

在支援的地區設定中使用現實的標籤、長名稱和代表性資料。清楚標記合成資料;不要將其呈現為使用者資料或測量結果。

最低設計交付成果

使交付成果與任務相符:審計需要可驗證的建議,設計需要具體的目標解决方案,授權的實作需要一個可運作的介面。不要不必要地創建審計檔案。如果實作被授權,報告、發現矩陣和經過驗證的計劃是中間產物,而非完成。

區分審計和設計。如果被指派创建設計,不要停留在問題清單:準備一個具體的目標解决方方案——選擇的版面、主要操作和過渡、重要的狀態和復原,以及現有元件和符記的使用。說明與當前行為的變化、权衡取捨以及可觀察的驗收標準。如果禁止變更應用程式,則使用带有明確限制的本地構成實驗或原型;不要將其呈現為完成的實作。

對於每個重要的建議,將問題 → 證據 → 變化 → 权衡取捨 → 驗證 → 大約的實作複雜度連接起來。根據角色的任務優先安排版面:表單在列表之前對於輸入是合理的,但可能妨礙搜尋和瀏覽。將表格放在更高的位置本身並不能證明更好的 UX。

5. 在現有設計堆疊中實作

  • 使用現有的 UI 層元件和單一來源的符記。保持主題和 CSS 變數一致;不要引入第二個可獨立編輯的調色板。
  • 尊重 UI 函式庫、樣式和圖示的本地導入邊界。當專案提供 UI 適配器時,不要繞過它們。
  • 當存在重複合約時發展共享元件;不要先發制人地包裝整個函式庫。
  • 未經另行同意,請勿更換 UI 堆疊。使用現有堆疊,無論是 MUI、Tailwind、原生元件或其他選項;根據實際安裝的版本的說明文件驗證 API。文件服務是可選的。
  • 當互動保真度很重要時,在真實堆疊中對複雜行為進行原型設計。對於已達成共識的概念,獨立的 HTML 是可以接受的,但不能取代完成的應用程式實作。
  • 保留伺服器端授權、儲存行為、冪等性、草稿保護和領域約束。
  • 將已接受的決策記錄在現有的權威 UI 合約和相關規格中;不要創建競爭性的規則來源。

6. 驗證與精煉

在驗證之前,選擇受影響的旅程和風險轉換;說明所需的證據級別:原始碼、狀態快照、互動式客戶端檢查或後端證據。在相關的地方套用以下列表,區分不適用和未測試。不要要求整個下游流程來進行一個小型的構成實驗,如果它不影響該流程。

在授權的變更之後,執行儲存庫規則和受影響行為測試所需的檢查。對於共享元件,如果專案使用它們,則更新現有的故事或範例。

在驗證範例中,名稱和通過結果必須與斷言完全對應。等待狀態的獨特可見標誌,而不僅僅是延遲或非空根;意外的 API 請求和未處理的異常必須使執行失敗。不要為不支援的 fixture 動作返回 blanket 200。結合依賴步驟或再次準備初始狀態。區分冒煙測試、互動測試和測量;它們的總和不是 UX 覆盖率。不要將 HTTP 攔截的網路限制描述為通用隔離。

在瀏覽器中,檢查:

  • 主要的端到端旅程,而不僅僅是第一個畫面;
  • 主要的工作視窗尺寸和已同意的狹窄版面;
  • 支援地區設定中的長文字、溢出、縮放和滾動;
  • 空、載入、錯誤、成功和不可用操作狀態;
  • 分別測試鍵盤互動和普通指針點擊、焦點、對話框、選單、面板關閉以及返回觸發器;指針失敗後,Enter 或強制點擊不計為修正滑鼠點擊;
  • 保留輸入的資料和錯誤後的復原;
  • 不同畫面之間密度和樣式沒有意外差異。

截圖並實際檢查它們。檢查構成、空白平衡、對齊、視覺噪聲以及主要操作的優先級。修復已識別的原因:重新著色無法修復錯誤的版面。

不要自動更新截圖基準以使測試通過:首先檢查並證明變更的正當性。僅更新已檢查的快照和特定的專案/測試;然後在沒有更新標誌的情况下重新執行它。在下一次 Playwright 執行之前,將所需的 expected/actual/diff 和錯誤上下文工件保存在單獨的證據目錄中:執行器會清除共享的 outputDir,即使是有針對性的執行。區分測試計數、獨特場景和跨專案的有意重複;不要將重複的測試檔案導入計為額外的覆蓋範圍。建置、axe 和視覺比較很有用,但它們本身並不能證明可用性。

如果瀏覽器或測試環境不可用,請直接說明限制。不要聲稱未執行的驗證。

迭代與獨立審查

如果擁有者要求獨立或基於模型的審查,請給予審查者當前的技能、任務標準、交付成果以及用於得出結論的證據的存取權限。審查者的報告應大聲思考,檢查其邊界內的矛盾,並且在不可知論者下指示當前的迭代是否滿足分配的標準。

對於來自擁有者的每個新的 UX 議題或已接受的設計回應,追蹤迭代邊界。不要自動重複先前的分析:如果範圍沒有改變,則將先前的分析標記為仍然有效,並僅在新的邊界內工作。接受邊界內的更改,而不是要求全新的循環。

疊代邊界追蹤

{
  "scope": "<initial or updated task scope description>",
  "agreed": ["<agreed decisions / constraints>"],
  "pending": ["<open issues / decisions>"],
  "completed": ["<validated, implemented items>"],
  "deferred": ["<explicitly postponed items>"]
}

相關技能