Communitygithub.com

KrostyMall/Landing-SENSORITY

為此 TanStack Start + React + Tailwind v4 + shadcn/Radix 應用程式設計與打造精緻且非模板化的使用者介面。適用於建立或重新設計任何介面表面,包含頁面、登陸頁、儀表板、表單、彈窗、導航列以及遊戲覆蓋層(開始畫面、HUD、選單)。涵蓋設計代碼、佈局、字體、色彩、間距、動畫,以及避免輸出顯得太過「AI 罐頭」的反模板規則。當提到「設計」、「UI」、「弄好看一點」、「打磨」、「登陸頁」、「主題」、「樣式」、「重新設計」、「很醜」、「清理」時會觸發。

Landing-SENSORITY 是什麼?

這個技能專注於為 TanStack Start + React + Tailwind v4 + shadcn/Radix 應用程式打造高品質、非模板化的使用者介面設計。它提供了一套完整的設計系統指南,包含顏色、字體、間距、陰影與動畫的標記化設定,要求開發者在 CSS 中透過 `@theme` 定義設計代碼,並嚴格避免在 JSX 中直接使用任意值。技能中強調的「量化評分表」能有效預防常見的設計缺失,例如限制使用最多 3–5 種顏色、最多 2 種字體,以及確保對比度與行動裝置優先。更重要的是,它列出了專屬的「反 AI 罐頭」規則,禁止使用漸層色塊、表情符號圖示、手繪 SVG 或佔位圖片,確保輸出不會顯得「模板化」。此技能適用於 Cursor 與其他支援基於 Markdown 技能定義的 AI 輔助開發環境,能有效提升任何 DOM 介面的一致專業感。

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

在你喜歡的 AI 中提問

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

說明文件

設計與使用者介面

打造看起來刻意且高級、而非模板化的介面。這是應用程式建構器中最重要的品質槓桿。將其應用於 DOM / 覆蓋層 UI — 頁面、瀏覽器 chrome、HUD、選單、表單。(對於 3D 遊戲的遊戲畫布,請參見 building-games 技能;此技能管理疊加在其上的 DOM UI。)

深入閱讀請參考 references/(按需載入 — 不要全部內聯):

  • references/refined-ui.md — 完整的產品 chrome/覆蓋層設計系統。
  • references/typography.md — 字型尺度、配對、節奏。
  • references/surfaces.md — 高程、邊框、陰影、分層。
  • references/animations.md — 動畫、緩動、過渡。
  • references/performance.md — 保持 UI 流暢(60fps,無卡頓)。

1. 設計系統優先(在進行任何樣式設定前先做這個)

先定義系統,然後從中組合。絕不隨意使用臨時數值。

  • **CSS 中的標記(Tailwind v4 是 CSS 優先)。**將色板、圓角和字型放在 src/styles.css 的 @theme 區塊中,作為 CSS 變數;透過 Tailwind 工具類別來使用它們。單一事實來源。
    @import "tailwindcss";
    @theme {
      --color-bg: #0b0b0f;      --color-surface: #16161d;
      --color-fg: #e7e7ea;      --color-muted: #a0a0ab;
      --color-primary: #14b8a6; --color-border: #26262f;
      --radius: 0.75rem;        --font-sans: "Inter", system-ui, sans-serif;
    }
    
  • 使用 shadcn/ui 元件(Radix 基礎 + cva 變體 + tailwind-merge)來處理按鈕、對話框、下拉選單、輸入框等。它們具有可及性且一致性。將它們產生到 src/components/ui;透過標記來設定樣式,不要使用內聯的十六進位碼。
  • **Tailwind v4 基礎修正 — 按鈕需要指針游標。**v4 的 Preflight 讓 <button> 使用 cursor: default,感覺像壞了一樣。在 src/styles.css 中加入這一行,讓按鈕/可點擊角色顯示指針:
    @layer base {
      button:not(:disabled),
      [role="button"]:not(:disabled) { cursor: pointer; }
    }
    
  • 禁止隨意樣式: JSX 中不能有原始十六進位碼、不能有像 text-white/bg-black 這樣的文字、不能有像 p-[16px] 或 text-[13px] 這樣的任意值。如果你需要某個值,它必須變成一個標記或標度台階。

2. 量化評分表(避免「醜」的簡單規則)

  • 最多使用 3–5 種顏色(一個主色 + 中性色 + 最多一個強調色)。不要隨機加入額外色調。除非要求,否則不要預設使用紫色。
  • 最多使用 2 種字體家族(通常一種)。將一個顯示/標題字體與一個正文字體配對,或只使用一種。
  • 行高 1.4–1.6 用於正文;大標題使用較窄的行高。
  • 當你覆寫背景顏色時,也要同時覆寫前景/文字顏色(必須保持對比度 — 在淺色和深色模式下都檢查)。
  • 行動裝置優先:先設計約 390px 的版面,然後再放大。沒有水平溢出;觸控目標 ≥ 44px。
  • 一致的間距標度(基於 4/8)。充裕的空白勝過塞滿內容。
  • 一個強調色,節制使用於主要操作 — 不是到處都用。

3. 反 AI 罐頭(讓輸出看起來模板化的跡象 — 避免)

  • 沒有漸層色塊填充,沒有巨大的英雄區漸層作為內容的替代品。
  • 不使用表情符號作為圖示 — 使用真正的圖示集(lucide-react)。
  • 沒有手繪 SVG 插圖/地圖/圖表 — 使用真正的函式庫(圖表使用 recharts)或真實產生的圖片。
  • 最終產品中沒有佔位圖片 / 灰色的填色方塊 — 產生真實圖片或使用真實內容;在 canvas 圖片上設定 crossOrigin="anonymous"。
  • 避免過度使用的字型外觀(僅預設系統字型,或類似 Comic Sans 等級的選擇)。
  • 每個元素都要證明其存在價值。 刪除裝飾性噪音。建立系統,然後有目的地變化 — 而不是隨機。
  • 在編輯現有應用程式時,要符合現有用戶介面;不要引入第二種視覺語言。

4. 佈局與層級

  • 清晰的視覺層級:每個視圖一個主要操作;大小/粗細/顏色表達重要性。請參閱 references/typography.md 和 references/surfaces.md。
  • 使用真正的佈局結構(grid/flex、容器最大寬度),而不是絕對定位的技巧。對齊到一致網格。
  • 空白狀態、載入狀態和錯誤狀態是設計的一部分 — 不要出貨空白/卡頓的中間狀態。

5. 動畫(微妙、有目的)

  • 短暫、平滑的過渡(150–250ms)在懸停/按下/進入時;尊重 prefers-reduced-motion。詳情請見 references/animations.md。
  • 決不以導致卡頓的方式動畫佈局;優先使用 transform/opacity。

6. 遊戲覆蓋層(當此技能與 building-games 搭配使用時)

遊戲畫布由 building-games 管理。此技能負責設定 DOM 覆蓋層的樣式:開始/「點擊開始遊戲」畫面、HUD、分數、選單、暫停、行動控制。保持覆蓋層在畫布上可讀(背景、對比度),並將其排除在指針鎖定/遊戲輸入路徑之外。


完成檢查清單(在您認為 UI 完成之前)

  • 標記已在 @theme 中定義;JSX 中沒有臨時的十六進位碼/任意值。
  • ≤ 5 種顏色,≤ 2 種字型,一致的間距標度。
  • 對比度成立;所有覆寫背景的地方也同時覆寫了前景。
  • 行動裝置(約 390px)沒有溢出;觸控目標 ≥ 44px。
  • 真實的圖示/圖片/圖表 — 沒有任何反罐頭跡象。
  • 已處理載入/空白/錯誤狀態;動畫微妙且支援減少動畫。
  • 已在瀏覽器中渲染並目視檢查(請參閱 AGENTS.md 驗證),而不僅僅是透過 curl 檢查。

Individual skills in this repo

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

KrostyMall/Landing-SENSORITY

Add user accounts and sign-in to this TanStack Start app. Use when the app needs authentication, sign-in, user accounts, protected routes, or per-user data. Triggers on "auth", "login", "log in", "sign in", "sign up", "account", "users", "authentication", "protected", "who is logged in", "current user", "per-user".

KrostyMall/Landing-SENSORITY

Build browser games and interactive/canvas/3D experiences in this TanStack Start + React app. Use for any game, simulation, or WebGL/Canvas experience — 2D or 3D, single-player. Covers the game loop & timing, 3D orientation/camera conventions, collision, performance, assets, audio, save, game feel, and per-genre playbooks. For WASD / vehicle / flight **input signs and inverted A/D**, open the **`controls`** skill — do not rely on this file or racing-kart alone. Triggers on "game", "minecraft", "fps", "platformer", "racing", "tetris", "snake", "shooter", "3d", "three.js", "canvas", "voxel", "physics".

KrostyMall/Landing-SENSORITY

Player-facing input signs for browser games: WASD, vehicles, flight, FPS mouse-look, and the #1 failure mode (inverted A/D). Mandatory control self-tests and a tiny test interface so you can verify A turns left before shipping. Load for ANY game with movement, steering, flying, driving, tanks, boats, mechs, drones, planes, karts, third-person follow cams — not only racing. Triggers on "controls", "WASD", "inverted", "steer", "flight", "airplane", "kart", "vehicle", "yaw", "roll", "pitch", "mouse look", "A/D".

KrostyMall/Landing-SENSORITY

Deep guide for game ANIMATION assets: motion cycles, action keyframes, effect sequences, and animation sprite sheets — built around a video-first pipeline. In this app-builder sandbox, execute via the video2dsprite / generate2dsprite skills (magenta + scripts), not ad-hoc ffmpeg. Use whenever generating anything that moves: walk/run cycles, attacks, idles, FX, flags, fire, animation sheets. Complements game-asset-core.

相關技能