Communitygithub.com

Kadeka-SI/web-design-base-v1

建構、重新設計或審核任何網站或網頁 UI:登陸頁、作品集、商店、編輯與企業網站、文件、儀表板、工具、HTML/CSS/JS、Tailwind 或 React。每當使用者要求頁面、網站、UI、佈局、英雄區塊、重新設計、『讓它看起來更好/更高級』或設計審查時,請使用此技能。

web-design-base-v1 是什麼?

這是一個專為 AI 代理(如 Claude Code、Cursor)設計的網頁設計技能,旨在創建具備主題導向、高對比度且技術正確的網站或 UI。它強制執行一套嚴格的設計系統,包括具體的視覺概念、計算過的對比度、兩組字型系列(展示字型與內文字型)以及最多一個標誌性動畫。此技能支援五種模式:展示(登陸頁、作品集)、產品 UI(儀表板、工具)、文件、審核(改進現有頁面)和迭代(局部變更)。關鍵在於避免樣板預設值、漸層英雄區塊、通用色板、卡片網格填充內容、佔位文案或隱藏/裁切的標題。此技能要求所有文字/背景組合的對比度至少達到 WCAG AA 標準(內文 ≥ 7:1,標題和次要文字 ≥ 4.5:1),且頁面在無 JavaScript 或減少動畫模式下仍應完整呈現。它特別強調在規劃階段(§3)就建立設計系統,並以實際內容(非假內容或佔位文字)填充每個區塊。此外,技術細節如響應式斷點(375px 起)、字型加載失敗時的後備方案、以及遵守 GDPR 隱私規範(字型自託管)都已被納入考量。它還包含了為德國網站設計的本地化指南,例如使用正確的印刷引號、一致的人稱代詞(Sie/du)以及法律要求的 Impressum 和 Datenschutz 連結。

相容平台~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/Kadeka-SI/web-design-base-v1/tree/HEAD

在你喜歡的 AI 中提問

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

說明文件

web-design-base-v1 是做什麼的?

標準。 每個網站都應針對其主題進行藝術指導,不能讓人誤認為是模板,每一個細節在技術上都必須正確,並以排版作為主要工具。

方法。 閱讀主題,命名一個具體的視覺概念,建立系統,規劃內容,然後編碼。系統存在於第一行程式碼之前,因為編碼時的選擇會逐漸偏向預設值。

0. 如何閱讀此技能

層級含義
閘門在最後檢查。未通過閘門的頁面不算完成。
必須 / 必須不預設法則。僅在使用者要求時偏離;用一句話說明。
應該強烈預設。當主題需要時,可靜默偏離。
可以在符合主題的前提下允許使用。

優先級:閘門 1 和 2(無障礙性)> 使用者的明確要求 > 必須 > 應該 > 可以。如果使用者要求的內容違反了閘門,則建構最接近且能通過的版本,並說明您做了哪些變更。在同一層級內,更具體的規則優先。

範例是示範,而非模板。 下方的每個色板、字型配對、渡輪時刻表和程式碼值都只顯示了格式。將它們原封不動地複製到不相關的主題是此技能最常見的失敗方式。如果您照搬了某個列出的色板或配對,請在計劃中用一個關於該主題的事實來證明其合理性。

1. 五個閘門

  1. 首次繪製與無 JavaScript。 英雄標題在首次幀即應可見:未移位、未裁切(包括 Ä Ö Ü 上的分音符號)、永不動畫化。在禁用 JavaScript 或開啟減少動畫模式時,頁面應完整呈現。
  2. 對比度。 內文 ≥ 7:1,淡化文字和作為文字使用的強調色 ≥ 4.5:1,大標題 ≥ 4.5:1,結構性邊框、焦點環和 UI 元件 ≥ 3:1。針對每個實際使用的文字/表面組合進行計算,而非假設(§6)。
  3. 色板紀律。 背景色、墨色、一個強調色,加上背景/墨色的淡色版本。無漸層、發光、玻璃態或彩色陰影。
  4. 完整性。 每個區塊都有實質內容(§8),每個連結都有明確的目標位置,每個必要的狀態都存在。
  5. 特定性。 如果色板和字型可以原封不動地移動到另一個不同的主題,則工作尚未完成。

2. 選擇模式

模式適用場合適用的規則
展示登陸頁、作品集、商店前台、編輯、活動、企業除了 §12 以外的所有規則
產品 UI儀表板、管理後台、工具、應用程式、表單密集型流程§1–§6、§10、§11、§12;跳過英雄原型和區塊池
文件文件、手冊、模型卡展示模式的排版和顏色,產品 UI 的結構(目錄、程式碼、狀態)
審核"審查/改進我的頁面"列出發現的問題,僅修復有問題的部分,保留現有品牌識別
迭代"改變 X"僅更改指定的記號或規則及其直接依賴項;不做靜默重構

當使用者提供品牌(顏色、標誌、字型)時,該品牌即為色板和字型。計算其對比度。如果品牌強調色作為文字使用時未達到 4.5:1 的標準,則僅將其用於大尺寸或非文字元素,並添加相同色相但更深色的文字變體。

3. 建構方法

在編碼前撰寫計劃:12–16 行使用者的語言(迭代模式:3 行的差異)。

3.1 閱讀主題。 訪客必須做什麼或理解什麼?該主題在其真實場景(港口、鑄造廠、實驗室、廚房、法庭、檔案館)中看起來、聽起來和感覺起來是什麼樣子?他們必須記住的一件事是什麼?

3.2 命名視覺概念。 用一句話命名一個來自該主題的具體物體、材料或慣例。例如渡輪航線:"一張印製的出發時刻表:粗體壓縮數字、帶有標線的行列、將告示板作為英雄區塊。" 抽象形容詞("現代、乾淨、大膽")和顏色列表不算是概念。 原創性測試:說出此類別中通用網站擁有的三件事,並確認此設計沒有其中任何一件。

3.3 在計劃中以表格形式建立系統:

欄位值
色板bg(背景)、ink(墨色)、accent(強調色,十六進位碼)、其命名的素材、每個使用配對的計算對比度
字型展示字型 + 內文字型、與主題相關的理由、最長的單字及其行動版尺寸
英雄區塊原型(§7.1)+ 一行字的理由
佈局基礎邏輯(§7.2)以及各區塊如何變化
動畫一個標誌性模式 + 可選的支援模式
區塊依序排列,每個區塊都有其功能和形式
標誌性時刻訪客會記住的一件事

3.4 規劃內容。 列出每個區塊,附帶具體的事實、步驟、名稱、數字、日期、價格。如果內部一致且已標記(§8.3),則允許虛構內容。

4. 基礎

4.1 Head 是設計的一部分

<!doctype html>
<html lang="de">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Fähre Norddeich: Abfahrten und Frachtraten</title>
  <meta name="description" content="Abfahrtsplan, Frachtraten und Kontakt der Fährlinie Norddeich–Borkum.">
  <meta name="theme-color" content="#F6F1E6">
  <meta property="og:title" content="Fähre Norddeich: Abfahrten und Frachtraten">
  <meta property="og:description" content="Abfahrtsplan, Frachtraten und Kontakt.">
  <meta property="og:locale" content="de_DE">
  <link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect width='32' height='32' fill='%23C0430B'/%3E%3C/svg%3E">
  <link rel="preconnect" href="https://fonts.googleapis.com">
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Big+Shoulders+Display:wght@700;800&family=Public+Sans:wght@400;500;600&display=swap">
  <script>
    /* Motion gate: hidden start states exist only if this class is set (§9) */
    if (!matchMedia("(prefers-reduced-motion: reduce)").matches && "IntersectionObserver" in window)
      document.documentElement.classList.add("js-motion");
  </script>
  <style>/* §4.2 base, §4.3 tokens, then components */</style>
</head>
  • 必須:lang 與內容匹配,title 和 description 是具體的,字型 URL 與 §5 中選擇的字體家族相符並以 display=swap 結尾,存在 favicon(以避免 404 且看起來完成度高)。
  • 必須不:空的 head,在德語內容上使用 lang="en",字型未使用 display=swap。
  • 隱私(歐盟/德國)。 從 Google 伺服器載入 Google Fonts 會傳輸訪客的 IP 地址;德國法院已將其視為 GDPR 問題。對於原型來說是可以接受的。對於生產環境,請在報告中說明字型應自行託管(woff2 檔案,@font-face)。如果環境封鎖外部字型,則後備字型堆疊(§4.5)仍必須看起來是經過設計的。

4.2 基礎 CSS

每個頁面都從這個基礎開始。它可以防止移位、裁切和繼承導致的排版錯誤。

*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
html { overflow-x: clip; -webkit-text-size-adjust: 100%; scroll-padding-top: var(--header-h, 0px); }
body {
  background: var(--bg); color: var(--ink);
  font-family: var(--font-text); font-size: 1.0625rem; line-height: 1.6;
  font-synthesis: none;              /* no fake bold/italic if a weight is not loaded */
  text-rendering: optimizeLegibility;
}
h1, h2, h3, h4, h5, h6, p, ul, ol, dl, dd, figure, blockquote, table, form { margin: 0; }
ul, ol { padding-inline-start: 1.25em; }
ul[role="list"], ol[role="list"] { list-style: none; padding: 0; }
img, svg, video, canvas { display: block; max-width: 100%; height: auto; }
button, input, select, textarea { font: inherit; color: inherit; }
button { background: none; border: 0; padding: 0; cursor: pointer; }
a { color: inherit; text-decoration-thickness: 0.08em; text-underline-offset: 0.2em; }  /* links stay recognizable */
nav a, .btn { text-decoration: none; }
:focus-visible { outline: 2px solid var(--focus); outline-offset: 3px; }
[id] { scroll-margin-top: var(--header-h, 0px); }
table { border-collapse: collapse; }
h1, h2, h3 { text-wrap: balance; }
p, li { text-wrap: pretty; }
::selection { background: var(--accent); color: var(--on-accent); }
.container { width: 100%; max-width: 90rem; margin-inline: auto; padding-inline: var(--gutter); }
.measure { max-width: var(--measure); }
.skip-link { position: absolute; inset-inline-start: -9999px; }
.skip-link:focus { inset-inline-start: var(--gutter); inset-block-start: 0.75rem; z-index: 20;
  background: var(--accent); color: var(--on-accent); padding: 0.75rem 1rem; }
  • 必須不:對內容使用 100vw,使用 overflow: hidden 來裁剪類型,在英雄標題上使用負邊距或 transform。接受字型的自然側邊距,而非嘗試光學校正。
  • 必須將所有文字放在 .container 內。英雄標題與內文的左邊緣對齊,除非計劃中指定了偏移佈局。
  • 必須使用 min-height: 100vh; min-height: 100svh; 來設定全高英雄區塊(svh 行在支援的情況下優先,因此行動瀏覽器工具列不會切斷英雄區塊)。
  • 內文使用 rem,切勿使用固定的 px,以便訪客瀏覽器的字型設定仍然有效。

4.3 記號

每個顏色、字型、尺寸和間距值都位於一個區塊中。將範例值替換為您自己的色板(§6)。

:root {
  color-scheme: light;                     /* "dark" for dark palettes: form controls and scrollbars follow */
  --bg: #F6F1E6;  --bg-soft: #ECE3D3;
  --ink: #1C1A17; --ink-muted: #635A4C;    /* muted: labels and captions only */
  --accent: #C0430B; --on-accent: #F6F1E6; /* text on accent fills */
  --line: #857A66;                         /* structural rules: ≥ 3:1 on bg and bg-soft */
  --line-soft: #C9BEA8;                    /* decorative hairlines only */
  --focus: var(--accent);                  /* re-assigned inside inverted bands */
  --font-display: "Big Shoulders Display", "Arial Narrow", sans-serif;
  --font-text: "Public Sans", "Segoe UI", sans-serif;
  --step-hero: clamp(3.25rem, 1rem + 11vw, 13rem);
  --step-h2:   clamp(2.25rem, 1rem + 5vw, 6rem);
  --step-label: 0.8125rem;
  --space-xs: 0.5rem;  --space-s: 1rem;
  --space-m: clamp(1.5rem, 1rem + 2vw, 3rem);
  --space-l: clamp(3rem, 2rem + 4vw, 6.5rem);
  --space-xl: clamp(5rem, 3rem + 8vw, 11rem);
  --gutter: clamp(1.25rem, 0.5rem + 3vw, 4rem);
  --measure: 66ch;
  --header-h: 0px;                         /* set to the sticky header height, else 0 */
  --rule: 1px solid var(--line);
}

必須:規則中的每個值都來自這些記號。必須不:在規則中使用內聯十六進位碼,或框架預設色板(如 gray-500、slate-200)。流體尺寸混合使用 rem 和 vw,以便瀏覽器縮放和字型設定仍然可以縮放它們(純 vw 會忽略縮放)。

4.4 語言和區域

  • 內容使用請求的語言。lang 屬性與之匹配。Sie/du 的使用保持一致。
  • 德語:在窄欄上使用 hyphens: auto(需要正確的 lang);字型子集必須涵蓋 äöüß 以及 „ “ ‚ ‘ –。使用印刷引號(„…“),在德語頁面上不要使用英語行銷詞語,在數字和單位之間使用 &nbsp;(如 12&nbsp;kg、9:30&nbsp;Uhr),日期格式為 1. November 2026。
  • 德國企業網站需要在頁尾包含 Impressum 和 Datenschutz 連結(對於原型來說,頁內示範區塊是允許的)。自 2025 年起,BFSG 使無障礙性成為許多面向消費者的電子商務服務的法律義務;WCAG 2.1 AA 是基本要求,而此技能的閘門已經超過了這個標準。

4.5 能在網路故障時倖存下來的字型

選擇相同類別的後備字型(壓縮字型 → "Arial Narrow";襯線字型 → Georgia;無襯線字型 → system-ui)。兩個後備字型必須保持明顯的視覺差異,以便在字型載入失敗時頁面仍能保持其層級結構。僅載入您使用的字重。展示字型使用的字重必須存在於已載入的字型家族中(參見 §5)。

4.6 斷點與 375 像素

行動優先。斷點:480、760、1024、1320 像素。在 375 像素寬度下:無水平滾動,英雄標題 ≤ 5 行,最長的單字能容納,觸控目標 ≥ 44 × 44 像素,黏性頁首不會覆蓋錨點(--header-h),每個雙欄佈局都有針對行動版設計的形式。

最長單字規則。 可用寬度 ≈ 375 − 2 × 19 ≈ 335 像素。最大英雄字型尺寸(像素)≈ 335 ÷(最長單字的字數 × 寬度因子)。寬度因子:壓縮字型 0.42、襯線字型 0.52、無襯線字型 0.58、擴展字型 0.68。將 clamp() 的最小值設定為該值。"Frachtabfertigung"(17 個字母)使用壓縮字型,允許約 47 像素,因此上述的 52 像素最小值會造成溢出:降低最小值或加入軟連字號(Fracht&shy;abfertigung)。切勿讓較長的德語複合詞強制在英雄區塊中使用 overflow-wrap: anywhere。

5. 排版:主要工具

僅使用兩個字型家族:一個展示字型,一個內文字型。

展示字型內文字型適合
Big Shoulders DisplayPublic Sans時刻表、物流、貨運、運動
Barlow CondensedBarlow交通、標誌、俱樂部、活動
FrauncesKarla食品、手工藝、印刷、接待
Instrument Serif(僅 400 字重)Work Sans編輯、時尚、建築
NewsreaderLibre Franklin法律、機構、研究
Familjen GroteskSource Serif 4雜誌、文化、非營利組織
IBM Plex Mono(展示字型)IBM Plex Sans實驗室、工具、資料、文件
Archivo(寬度軸 112–125)Spline Sans港口、工業、產品說明書
Anton(僅 400 字重)Barlow活動、場地、海報
Bodoni ModaKarla奢侈品、畫廊、拍賣會

這些是起點。根據主題選擇;為非物流主題選擇第一行意味著您是按位置而非主題選擇的。檢查字型實際的軸線和字重:Instrument Serif 和 Anton 只有一個字重,因此 "heavy" 不可用,font-synthesis: none 可防止瀏覽器偽造它;Archivo 需要在 URL 中指定 wdth(Archivo:wdth,[email protected],700..900)並在 CSS 中使用 font-stretch。

必須不將 Inter、Roboto、Arial、Poppins、Playfair Display、Lora 或 Merriweather 作為標識配對。必須不的所有字型只用一個家族。將等寬字型用作展示字型是允許的...

[內容已截斷]

相關技能