Communitygithub.com

91-5/opencode

適用於登陸頁面、作品集和重新設計的反「AI 味」前端技能。代理程式會閱讀需求摘要,推斷出正確的設計方向,並交付看起來不像套版的使用者介面。在適用時使用真實設計系統,在重新設計時以審計為優先,並進行嚴格的預先檢查。

opencode 是什麼?

此技能旨在解決大型語言模型在 UI 設計中常見的「AI 味」與套版感問題。它建立一個結構化的設計推理流程,要求 AI 代理在產生任何程式碼之前,先分析使用者需求摘要中的頁面類型、氛圍、目標受眾與品牌資產等訊號,並明確宣告其設計解讀。接著透過「設計變異度」、「動畫強度」與「視覺密度」三個核心旋鈕,將設計方向量化,引導後續所有佈局、動畫與內容密度的決策。技能要求代理依據需求分析結果,選擇正確的技術基礎,例如為符合特定設計語言的專案安裝官方 Fluent UI 或 Carbon 等設計系統套件,而對於純粹的美學風格(如玻璃擬態或野獸派),則明確指示應使用原生 CSS 與 Tailwind 結合維護良好的元件庫來實作。整體而言,此技能適用於開發登陸頁面、作品集與網站重新設計,主要支援 React 與 Next.js 技術棧,並預設使用 Tailwind CSS v4 與 Motion 動畫庫,不僅提供設計指引,也確立了一套嚴格的程式碼慣例與反模式清單,以提升最終產出的品質與獨特性。

相容平台~Claude Code✓Codex CLI✓Cursor✓OpenCode
npx skills add https://github.com/91-5/opencode/tree/HEAD/skills/superpowers/design-taste-frontend

在你喜歡的 AI 中提問

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

說明文件

tasteskill: 反「AI 味」前端技能

登陸頁面、作品集和重新設計。不是儀表板、不是資料表格、不是多步驟產品 UI。 以下每一條規則都是視情況而定的。沒有一條會自動觸發。先閱讀需求摘要,然後只提取適用的部分。


0. 需求推斷(在開始任何事情之前,先觀察環境)

在碰觸程式碼或調整設定之前,推斷使用者真正想要的是什麼。大多數 LLM 設計輸出之所以糟糕,是因為模型跳轉到預設的美學,而不是觀察環境。

0.A 首先讀取以下訊號

  1. 頁面類型 - 登陸頁面(SaaS / 消費者 / 代理商 / 活動)、作品集(開發者 / 設計師 / 創意工作室)、重新設計(保留 vs. 全面翻新)、編輯 / 部落格。
  2. 使用者使用的氛圍詞 - "極簡主義"、"平靜"、"Linear 風格"、"Awwwards"、"野獸派"、"高級消費品"、"蘋果風格"、"俏皮"、"嚴肅 B2B"、"編輯風格"、"代理商風格"、"玻璃質感"、"黑暗科技風"。
  3. 參考訊號 - 他們連結的 URL、貼上的螢幕截圖、提到的產品、競爭的品牌。
  4. 目標受眾 - B2B 採購小組 vs. 注重設計的消費者 vs. 瀏覽作品集的招聘人員。受眾決定美學,而不是你的品味。
  5. 已存在的品牌資產 - 標誌、色彩、字體、攝影作品。對於重新設計,這些是起點材料,不是可選輸入(參見第 11 節)。
  6. 隱性限制 - 無障礙優先的受眾、公共部門、受監管行業、信任優先的商業、兒童產品。這些限制凌駕於美學偏好之上。

0.B 在生成之前,輸出一行「設計解讀」

在任何程式碼之前,用一句話陳述:「我將其解讀為:<頁面類型>,目標受眾為<受眾>,帶有<氛圍>語言,方向偏向<設計系統或美學家族>。」

範例解讀:

  • 「我將其解讀為:面向技術採購者的 B2B SaaS 登陸頁面,帶有 Linear 風格的極簡語言,方向偏向 Tailwind 工具類 + Geist + 克制動畫。」
  • 「我將其解讀為:面向招聘經理的作品集,帶有編輯 / 動態文字語言,方向偏向原生 CSS + 滾動驅動動畫 + 客製字體排印。」
  • 「我將其解讀為:公共服務網站的重新設計,帶有信任優先語言,方向偏向 GOV.UK Frontend 或 USWDS。」

0.C 如果需求不明確,問一個問題,不要猜測

只問一個澄清問題——絕不要傾倒多個問題——並且僅在設計解讀真正出現分歧時。範例:「你希望它感覺更接近 Linear 的簡潔,還是 Awwwards 的實驗性?」

如果你能從上下文自信地推斷,就不要問。直接宣告設計解讀並繼續進行。

0.D 反預設紀律

不要預設使用:AI 紫色漸層、位於深色網格上的居中主視覺、三個等寬功能卡片、到處都是通用玻璃擬態效果、無處不在的無限循環微動畫、Inter + slate-900。這些是 LLM 的預設值。根據設計解讀,有目的地超越它們。


1. 三個旋鈕(核心配置)

在設計解讀之後,設定三個旋鈕。以下所有的佈局、動畫和密度決策都由這些旋鈕決定。

  • DESIGN_VARIANCE: 8 - 1 = 完美對稱,10 = 藝術混沌
  • MOTION_INTENSITY: 6 - 1 = 靜態,10 = 電影級 / 物理模擬
  • VISUAL_DENSITY: 4 - 1 = 藝術畫廊 / 通透,10 = 駕駛艙 / 資料密集

基線: 8 / 6 / 4。除非設計解讀覆寫它們,否則使用這些值。不要要求使用者編輯此檔案——覆寫透過對話進行。

1.A 旋鈕推斷(設計解讀 → 旋鈕數值)

訊號VARIANCEMOTIONDENSITY
"極簡 / 乾淨 / 平靜 / 編輯風格 / Linear 風格"5-63-42-3
"高級消費品 / 蘋果風格 / 奢華 / 品牌"7-85-73-4
"俏皮 / 狂野 / Dribbble / Awwwards / 實驗性 / 代理商風格"9-108-103-4
"登陸頁 / 作品集 / 行銷網站(預設)"7-96-83-5
"信任優先 / 公共部門 / 受監管 / 無障礙關鍵"3-42-34-5
"重新設計 - 保留"比對現有+1比對現有
"重新設計 - 全面翻新"+2+2比對現有

1.B 使用案例預設

使用案例VARIANCEMOTIONDENSITY
登陸頁(SaaS,主流)764
登陸頁(代理商 / 創意)983
登陸頁(高級消費者)763
作品集(設計師 / 工作室)873
作品集(開發者)654
編輯 / 部落格643
公共服務網站325
重新設計 - 保留比對現有比對現有+1比對現有
重新設計 - 全面翻新+2+2比對現有

1.C 旋鈕如何驅動輸出

將這些(或使用者覆寫的值)用作全域變數。本文檔中的交叉引用均指向這些確切的變數名稱——絕不要創造像 LAYOUT_VARIANCE 或 ANIM_LEVEL 這樣的別名。


2. 需求 → 設計系統對應

一旦你有了設計解讀(第 0 節)和旋鈕(第 1 節),選擇正確的基礎。不要為那些有官方套件的東西發明 CSS。不要假裝一個美學趨勢就是一個官方系統。

2.A 何時使用真實的設計系統(使用官方套件)

需求解讀為…使用原因
Microsoft / 企業 SaaS / 儀表板@fluentui/react-components 或 @fluentui/web-components官方 Fluent UI,Microsoft 標記,內建無障礙
類似 Google 的 UI,Material 風格的產品@material/web + Material 3 標記官方,可透過 Material Theming 設定主題
IBM 風格 B2B / 企業分析@carbon/react + @carbon/styles官方 Carbon,成熟的資料密度模式
Shopify 應用表面polaris.js web 元件 / Polaris ReactShopify 管理 UI 所需
Atlassian / Jira 風格產品@atlaskit/* + @atlaskit/tokens官方 Atlassian DS
GitHub 風格的開發工具 / 社群頁面@primer/css 或 @primer/react-brand官方 Primer;行銷用 Brand 變體
英國公共服務govuk-frontend法律 / 法規上預期
美國公共部門 / 信任優先uswds同上
快速本地商業 / 代理商 MVPBootstrap 5.3樸實、快速、有效
現代無障礙 React 基礎@radix-ui/themes原語 + 精緻主題
現代 SaaS,你擁有元件shadcn/ui (npx shadcn@latest add ...)你擁有程式碼,易於自訂;絕不交付預設狀態
基於 Tailwind 的現代 SaaS / AI 行銷Tailwind v4 工具類 + dark: 變體獨立開發者和小團隊建構的預設值

誠實規則: 如果需求解讀與上述系統之一相符,請安裝並使用官方套件。不要手動重建其 CSS。不要導入系統的標記然後覆寫掉 90%。

每個專案一個系統。 不要在同一棵樹中混合使用 Fluent React 和 Carbon。不要將 shadcn/ui 組件導入 Material 3 應用程式。

2.B 當需求是一種美學,而不是一個系統時

對於這些方向,沒有單一的官方套件。使用原生 CSS + Tailwind + 一個維護良好的元件庫來建構。在程式碼註解中誠實標明哪些是借用靈感,哪些是官方素材。

美學誠實實作
玻璃擬態 / "磨砂玻璃"backdrop-filter,分層邊框,高光疊加層。為 prefers-reduced-transparency 提供實色填充後備方案。
Bento(蘋果風格的瓷磚格線)使用混合單元格大小的 CSS Grid。沒有單一函式庫擁有此實作。
野獸派原生 CSS、等寬字體、原始邊框。沒有函式庫。
編輯 / 雜誌風格襯線字體、不對稱格線、大量留白。沒有函式庫。
黑暗科技 / 駭客風格等寬 + 重點色霓虹燈、終端機風格。沒有函式庫。
極光 / 網格漸層SVG 或分層徑向漸層。沒有函式庫。
動態文字原生 CSS 動畫、滾動驅動動畫、用於進階操控的 GSAP。沒有函式庫。
Apple Liquid GlassApple 僅為 Apple 平台記錄此效果。沒有官方的 liquid-glass.css。 網頁實現是使用 backdrop-filter + 分層邊框 + 高光的近似值。清楚標明為近似值。

3. 預設架構與慣例

除非設計解讀選擇了真實的設計系統(第 2.A 節),否則以下是預設值:

3.A 技術棧

  • 框架: React 或 Next.js。預設使用伺服器元件 (RSC)。
    • RSC 安全: 全域狀態僅在客戶端元件中運作。在 Next.js 中,將 Provider 包裹在一個 "use client" 元件中。
    • 互動隔離: 任何使用 Motion、滾動監聽器或指針物理效果的元件,必須是一個孤立的葉節點,並在頂部加上 'use client'。伺服器元件只渲染靜態佈局。
  • 樣式: Tailwind v4(預設)。只有當現有專案要求時才使用 Tailwind v3。
    • 對於 v4:不要在 postcss.config.js 中使用 tailwindcss 插件。使用 @tailwindcss/postcss 或 Vite 插件。
  • 動畫: Motion(前身為 Framer Motion 的函式庫)。從 motion/react 導入(import { motion } from "motion/react")。framer-motion 套件仍然可以作為舊版別名使用——在新程式碼中偏好使用 motion/react。
  • 字體: 始終使用 next/font(Next.js)或使用 @font-face + font-display: swap 自行託管。永遠不要在生產環境中透過 <link> 連結 Google Fonts。

3.B 狀態管理

  • 使用局部 useState / useReducer 處理隔離的 UI。
  • 僅在需要避免深層 props 傳遞時使用全域狀態 —— 使用 Zustand、Jotai 或 React context。
  • 絕對不要使用 useState 來追蹤由使用者輸入驅動的連續值(滑鼠位置、滾動進度、指針物理效果、磁性懸停)。請使用 Motion 的 useMotionValue / useTransform / useScroll。useState 會使 React 樹在每次變化時重新渲染,並在行動裝置上崩潰。

3.C 圖示

  • 允許的函式庫(優先級順序): @phosphor-icons/react、hugeicons-react、@radix-ui/react-icons、@tabler/icons-react。
  • 不鼓勵使用: lucide-react。僅在使用者明確要求或專案已依賴它時才可接受。
  • 絕對不要手繪 SVG 圖示。 如果缺少某個字形,安裝第二個函式庫或從原語組合而成——不要從頭開始繪製圖示路徑。
  • 每個專案一個圖示家族。 不要在同一組件樹中混合使用 Phosphor 和 Lucide。
  • 全域標準化 strokeWidth(例如 1.5 或 2.0)。

3.D Emoji 政策

預設情況下,不鼓勵在程式碼、標記和可見文字中使用。用圖示庫的字形取代符號。例外: 僅在使用者明確要求俏皮 / 聊天風格 / 社交原生氛圍時才允許使用 emoji——即使如此,也要有目的地、節制地使用。

3.E 響應式設計與佈局機制

  • 標準化斷點(sm 640、md 768、lg 1024、xl 1280、2xl 1536)。
  • 頁面佈局使用 max-w-[1400px] mx-auto 或 max-w-7xl 來約束。
  • 視口穩定性: 絕對不要對全高主視覺區塊使用 h-screen。始終使用 min-h-[100dvh] 以防止在行動裝置上(iOS Safari 網址列)出現佈局跳躍。
  • 格線優先於 Flex 數學: 絕對不要使用複雜的 flexbox 百分比數學(w-[calc(33%-1rem)])。始終使用 CSS Grid(grid grid-cols-1 md:grid-cols-3 gap-6)。

3.F 依賴項驗證(強制)

在導入任何第三方函式庫之前,檢查 package.json。如果缺少套件,先輸出安裝指令。絕不要假設一個函式庫存在。


4. 設計工程指令(偏差修正)

LLM 預設使用陳詞濫調。主動覆寫這些預設。每個規則都有一個考慮上下文的覆寫路徑。

4.1 字體排印

  • 標題 / 大標題: 預設 text-4xl md:text-6xl tracking-tighter leading-none。

  • 內文 / 段落: 預設 text-base text-gray-600 leading-relaxed max-w-[65ch]。

  • 無襯線字體選擇:

    • 不鼓勵作為預設: Inter。優先選擇 Geist、Outfit、Cabinet Grotesk、Satoshi,或品牌適用的襯線字體。
    • 例外: 當使用者明確要求中性 / 標準 / Linear 風格感覺時,或者當需求是針對公共部門 / 無障礙優先的網站時,Inter 是可接受的。
  • 需要知道的字體搭配: Geist + Geist Mono、Satoshi + JetBrains Mono、Cabinet Grotesk + Inter Tight、GT America + IBM Plex Mono。

  • 襯線字體紀律(非常不鼓勵作為預設):

    • 非常不鼓勵將襯線字體作為任何專案的預設字體。"感覺有創意 / 高級 / 編輯風格"並不是使用襯線字體的理由。代理程式預設的"創意需求 = 襯線字體"思維模式是產品測試中單一最常見的 AI 特徵。
    • 僅在以下條件之一明確成立時,才可接受使用襯線字體:
      • 品牌需求中明確提到了某個襯線字體名稱,或者
      • 美學家族確實是編輯 / 奢華 / 出版 / 手稿 / 傳統 / 復古風格,並且你能闡述為什麼這個特定的襯線字體適合這個特定的品牌
    • 對於所有其他情況(創意代理商、設計工作室、現代品牌、高級消費品、作品集、生活方式),預設使用無襯線標題字體(Geist Display、ABC Diatype、Söhne Breit、Cabinet Grotesk Display、Migra Sans、GT Walsheim、Inter Display、PP Neue Montreal)。無襯線標題字體不是"無聊"的——它們是預設,就像黑色是時尚界的預設一樣。
    • 重點強調規則(相關): 當你想在標題中強調一個詞彙時(例如"動感與 空間 設計"這種動態文字技巧),請使用同一字體的斜體或粗體。不要僅僅為了增加視覺趣味,就在無襯線標題中插入一個隨機的襯線詞彙(反之亦然)。混合家族的重點強調是業餘的做法。在同一家族中使用斜體/粗體強調才是正確的做法。
    • 特別禁止作為預設的字體: Fraunces 和 Instrument_Serif(兩個 LLM 最喜歡的標題襯線字體)。
    • 如果需要使用襯線字體(根據上述,這很少見),請從這個池子裡輪換選擇,不要在連續的專案中重複使用同一個襯線字體:PP Editorial New、GT Sectra Display、Cardinal Grotesque、Reckless Neue、Tiempos Headline、Recoleta、Cormorant Garamond、Playfair Display、EB Garamond、IvyPresto、Migra、Editorial Old、Saol Display、Söhne Breit Kursiv、Domaine Display、Canela、Schnyder、Tobias、NB Architekt、Instrument Serif(僅在非常特定的、針對性的場景下使用,永遠不作為預設)、Gelatio、Bianco、Fluxisch Else。

相關技能