tasteskill: 反粗制滥造前端 Skill
落地页、作品集和重新设计。不适用于仪表盘、数据表或多步骤产品 UI。
以下每条规则都取决于具体情境。没有任何规则会自动触发。先阅读需求说明,然后只采用适用的内容。
---
0. 需求简报推断(先读懂情境,再做其他事)
在接触代码或调整旋钮之前,先推断用户真正想要什么。大多数 LLM 设计输出之所以糟糕,是因为模型没有判断具体情境,而是直接套用默认审美。
0.A 先读取这些信号
- 页面类型 - 落地页(SaaS / 面向消费者 / 机构 / 活动)、作品集(开发者 / 设计师 / 创意工作室)、重新设计(保留现状还是全面改造)、编辑型页面 / 博客。
- 用户使用的氛围词 - "极简"、"平静"、"Linear 风格"、"Awwwards"、"粗野主义"、"高端消费"、"苹果风"、"活泼"、"严肃的 B2B"、"编辑风"、"机构风"、"玻璃质感"、"暗黑科技风"。
- 参考信号 - 用户链接的 URL、粘贴的截图、提到的产品以及与之竞争的品牌。
- 受众 - 是 B2B 采购评审组、注重设计的消费者,还是快速浏览作品集的招聘人员。审美方向由受众决定,而不是由你的个人品味决定。
- 已有的品牌资产 - 标志、颜色、字体和摄影素材。对于重新设计,这些是起点素材,不是可选输入(见第 11 节)。
- 隐性约束 - 以无障碍为首要考量的受众、公共部门、受监管行业、以信任为先的商业场景、儿童产品。这些约束的优先级高于审美偏好。
0.B 生成前输出一行"设计解读"
编写任何代码前,用一行说明:"我将其理解为:\<page kind>,面向 \<audience>,采用 \<vibe> 语言,倾向于 \<design system or aesthetic family>。"
示例解读:
- *"我将其理解为:面向技术买家的 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 旋钮推断(设计解读 → 旋钮值)
| 信号 | VARIANCE | 动效 | 密度 | |---|---|---|---| | "minimalist / clean / calm / editorial / Linear-style" | 5-6 | 3-4 | 2-3 | | "premium consumer / Apple-y / luxury / brand" | 7-8 | 5-7 | 3-4 | | "playful / wild / Dribbble / Awwwards / experimental / agency" | 9-10 | 8-10 | 3-4 | | "landing page / portfolio / marketing site (default)" | 7-9 | 6-8 | 3-5 | | "trust-first / public-sector / regulated / accessibility-critical" | 3-4 | 2-3 | 4-5 | | "重新设计 - 保留现状" | 与现有值一致 | +1 | 与现有值一致 | | "重新设计 - 全面改造" | +2 | +2 | 与现有值一致 |
1.B 使用场景预设
| 使用场景 | VARIANCE | 动效 | 密度 | |---|---|---|---| | Landing (SaaS, mainstream) | 7 | 6 | 4 | | Landing (Agency / creative) | 9 | 8 | 3 | | 落地页(高端消费类) | 7 | 6 | 3 | | Portfolio (Designer / studio) | 8 | 7 | 3 | | 作品集(开发者) | 6 | 5 | 4 | | Editorial / Blog | 6 | 4 | 3 | | 公共部门服务 | 3 | 2 | 5 | | 重新设计 - 保留现状 | 匹配 | match+1 | 匹配 | | 重新设计 - 全面改造 | +2 | +2 | 匹配 |
1.C 旋钮如何驱动输出
将这些值(或用户覆盖后的值)用作全局变量。本文各处的交叉引用均指这些确切的变量名 - 不得自行创建 LAYOUT_VARIANCE 或 ANIM_LEVEL 之类的别名。
---
2. 需求简报 → 设计系统 MAP
确定设计解读(第 0 节)和旋钮值(第 1 节)后,选择合适的基础方案。对于已有官方软件包的内容,不要自行编写 CSS。不要把一种审美趋势冒充为官方系统。
2.A 何时采用真正的设计系统(使用官方软件包)
| 需求说明解读为… | 采用 | 原因 | |---|---|---| | Microsoft / 企业级 SaaS / 仪表盘 | @fluentui/react-components 或 @fluentui/web-components | 官方 Fluent UI、Microsoft 设计令牌,已完成无障碍适配 | | Google 风格的 UI、Material 风格产品 | @material/web + Material 3 设计令牌 | 官方方案,支持通过 Material 主题系统进行主题定制 | | IBM 风格的 B2B / 企业分析 | @carbon/react + @carbon/styles | 官方 Carbon,成熟的数据密度设计模式 | | Shopify 应用界面 | polaris.js 网页组件 / Polaris React | Shopify 管理后台 UI 的强制要求 | | Atlassian / Jira 风格产品 | @atlaskit/* + @atlaskit/tokens | 官方 Atlassian DS | | GitHub 风格的开发工具 / 社区页面 | @primer/css 或 @primer/react-brand | 官方 Primer;面向营销的品牌变体 | | UK 公共部门服务 | govuk-frontend | 法律 / 监管层面要求采用 | | US public-sector / trust-first | uswds | 同上 | | 面向本地企业 / 代理机构的快速 MVP | Bootstrap 5.3 | Boring, fast, works | | 现代化无障碍 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 (Apple-style tile grids) | 使用单元格尺寸混合的 CSS 网格。没有任何单一库独占这一模式。 | | 粗野主义 | 原生 CSS、等宽字体、原始边框。无需库。 | | Editorial / magazine | 衬线字体、非对称网格、充足留白。无需库。 | | 暗黑科技 / 黑客风格 | 等宽字体 + 霓虹强调色、终端视觉元素。无需库。 | | 极光 / 网格渐变 | SVG 或分层径向渐变。无需库。 | | 动态排版 | 原生 CSS 动画、滚动驱动动画,滚动劫持使用 GSAP。无需库。 | | Apple 液态玻璃 | Apple 仅为 Apple 平台提供相关文档。不存在官方 liquid-glass.css。网页端实现是使用 backdrop-filter + 分层边框 + 高光构建的近似方案。应明确标注为近似实现。 |
---
3. 默认架构与约定
除非设计解读选择了真正的设计系统(第 2.A 节),否则默认如下:
3.A 技术栈
- 框架:React 或 Next.js。默认使用服务器组件(RSC)。
- RSC 安全性:全局状态仅适用于客户端组件。在 Next.js 中,使用一个
"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 字体。
3.B 状态
- 对于隔离的 UI,使用本地
useState/useReducer。 - 全局状态只能用于避免深层属性逐级传递 - 可使用 Zustand、Jotai 或 React 上下文。
- 禁止使用
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 表情符号策略
默认不建议在代码、标记和可见文本中使用表情符号。请用图标库中的字形替换符号。覆盖规则: 仅当用户明确要求俏皮 / 聊天风格 / 原生社交平台氛围时,才允许使用表情符号;即便如此,也应有目的地少量使用。
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 地址栏引起的移动端布局跳动。 - 网格优先于弹性盒计算: 禁止使用复杂的弹性盒百分比计算(
w-[calc(33%-1rem)])。必须始终使用 CSS 网格(grid grid-cols-1 md:grid-cols-3 gap-6)。
3.F 依赖项验证(强制要求)
在导入任何 3rd 方库之前,请检查 package.json。如果缺少该软件包,请先输出安装命令。禁止假定库已存在。
---
4. 设计工程指令(偏差修正)
大模型往往默认套用陈词滥调。应主动覆盖这些默认倾向。每条规则都有根据上下文调整的覆盖路径。
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。
- 衬线字体规范(强烈不建议作为默认选项):
- 衬线字体非常不建议作为任何项目的默认字体。“有创意感 / 高端感 / 编辑感”并不是选择衬线字体的理由。agent 默认认为“创意类简报 = 衬线字体”的思维模式,是生产测试轮次中最常被验证的 AI 痕迹。
- 仅当以下任一条件明确成立时,才可使用衬线字体:
- 品牌简报明确点名某款衬线字体,或者
- 美学风格确实属于编辑 / 奢华 / 出版物 / 手稿 / 传统 / 复古类型,并且你能说明这款特定衬线字体为何适合这个特定品牌
- 对于其他所有情形(创意机构、设计工作室、现代品牌、高端消费品、作品集、生活方式类),默认使用无衬线展示字体(Geist Display、ABC Diatype、Söhne Breit、Cabinet Grotesk Display、Migra Sans、GT Walsheim、Inter Display、PP Neue Montreal)。无衬线展示字体并不“无聊”;它们成为默认选择的原因,与黑色成为时尚界默认色的原因相同。
- 强调规则(相关):当你想强调标题中的某个词时(例如动态呈现“和
spatial设计”),请使用同一字体的斜体或粗体。不得仅为增加视觉趣味而在无衬线标题中随意插入一个衬线词,反之亦然。混用字体家族来强调内容是业余做法。在同一字体家族中使用斜体或粗体才是正确做法。 - 明确禁止作为默认选项:
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、ITC Galliard。
- 斜体下伸部留白(强制要求):展示字体使用斜体时,如果单词包含带下伸部的字母(
y g j p q),leading-[1]或leading-none会裁切下伸部。至少使用leading-[1.1],并在包裹元素上增加pb-1或mb-1作为预留空间。发布前检查展示标题中的每个斜体词。
4.2 色彩校准
- 强调色最多 1 种。默认饱和度低于 80%。
- LILA 规则: 不建议默认采用“AI 紫色 / 蓝色辉光”美学。不要自动添加紫色按钮辉光,也不要随意使用霓虹渐变。使用中性色基底(锌灰 / 板岩灰 / 石灰色),并搭配单一的高对比度强调色(祖母绿、电光蓝、深玫红、焦橙等)。
- 覆盖规则: 如果品牌或简报明确要求使用紫色 / 紫罗兰色 / 淡紫色,就充分采用。但要有明确意图地落实:使用一致的调色板、协调的中性色和克制的渐变。不要采用千篇一律、粗制滥造的 AI 渐变。
- 每个项目只使用一套调色板。 不得在同一项目中混用暖灰色和冷灰色。
- 颜色一致性锁定(强制要求):为页面选定强调色后,必须在整个页面中使用该颜色。暖灰色网站不应在第 7 个区块中突然出现蓝色 CTA。使用玫瑰色强调色的网站也不应在页脚出现青绿色状态徽章。选定一种强调色后将其锁定,并在发布前检查每个组件。
- 高端消费品配色禁令(强制要求,第二常见的 AI 痕迹):
- 对于高端消费品简报(厨具、健康产品、手工艺品、奢侈品、传统工艺品、DTC 家居用品等),LLM 的默认选择是暖米色/奶油色 + 黄铜色/陶土色/牛血红/赭色 + 浓缩咖啡色/墨色的深色文本。具体而言,以下十六进制色值系列禁止用作默认背景色和强调色:
- 背景色:
#f5f1ea、#f7f5f1、#fbf8f1、#efeae0、#ece6db、#faf7f1、#e8dfcb(均为“暖纸色 / 奶油色 / 粉笔色 / 骨白色”) - 强调色:
#b08947、#b6553a、#9a2436、#9c6e2a、#bc7c3a、#7d5621(均为“黄铜色 / 陶土色 / 牛血红 / 赭色”) - 文本颜色:
#1a1714、#1a1814、#1b1814(均为“浓缩咖啡色 / 暖调近黑色”) - 禁止将这套配色作为高端消费品需求简报的默认选择。你以往交付的每个高端消费品网站都使用了这套完全相同的配色。品牌会因此失去辨识度。
- 默认替代方案(轮换使用,禁止重复使用):
- 冷调奢华:银灰色 + 铬色 + 烟灰色(想想 Tesla 和去掉皮革元素的 Apple Watch Hermes)
- 森林:深绿色 + 骨白色 + 琥珀色强调色(想想 Filson 和 Patagonia 的高端风格)
- 黑色与棕褐色:纯正的近黑色 + 暖棕褐色,对比鲜明,不使用米色
- 钴蓝 + 奶油色:饱和蓝色搭配单一中性色,不使用黄铜色
- 陶土色 + 石板灰:暖锈色搭配冷灰色,不使用黄铜色
- 橄榄色 + 砖红色 + 纸白色:低饱和橄榄色加砖红色强调色
- 纯单色 + 单一高饱和亮点:灰白色 + 近黑色 + 一种明亮强调色(电光蓝、祖母绿、亮粉色等)
- 配色轮换规则:如果你生成的上一个高端消费品项目使用了米色+黄铜色系列,本项目就必须使用不同的配色系列。不得连续两次交付相同的暖调手作配色。
- 例外:仅在以下情况下可接受米色+黄铜色+浓缩咖啡色配色:品牌需求明确指定了这些颜色;或者品牌识别确实属于复古 / 手工艺 / 暖调手作风格,且你能清楚说明这套特定配色为何适合这个特定品牌。禁止仅因“这是厨具需求”就默认采用这套配色。
4.3 布局多样化
- 反居中偏置:当
DESIGN_VARIANCE > 4时,应避免使用居中的首屏 / H1 区块。强制采用“分屏”(50/50)、“内容左对齐 / 素材右对齐”、“非对称留白”或滚动固定结构。 - 例外:对于编辑式 / 宣言式 / 发布公告类需求,如果核心信息本身就是设计,居中的首屏区也可以使用。
4.4 材质感、阴影与卡片
- 仅当卡片的抬升效果能够传达真实的层级关系时才使用卡片。否则,使用
border-t、divide-y或留白进行分组。 - 使用阴影时,应使其带有背景色相。浅色背景上不得使用纯黑色投影。
- 当
VISUAL_DENSITY > 7时,禁止使用通用卡片容器。数据指标应置于简洁布局中,并保留呼吸空间。 - 形状一致性锁定(强制要求):为页面选择一种圆角尺度并始终坚持。选项包括:全直角(圆角半径 0)、全柔和(圆角半径 12-16px)、全胶囊形(交互元素采用完全圆角)。只有存在成文规则(例如“按钮为全胶囊形、卡片为 16px、输入框为 8px”)且处处遵循时,才允许混用体系。方正布局中出现圆角按钮,或胶囊按钮页面中出现直角卡片,都属于有缺陷的设计。
4.5 交互式 UI 状态
大模型往往默认“仅实现静态成功状态”。始终实现完整的状态周期:
- 加载状态:使用形状与最终布局相匹配的骨架式加载器。避免使用通用圆形加载指示器。
- 空状态:精心构图,并说明如何填充内容。
- 错误状态:提示应清晰,并采用行内呈现(表单)或上下文呈现(浮层通知仅用于瞬时错误)。
- 触感反馈:在
:active状态下,使用-translate-y-[1px]或scale-[0.98]模拟实体按压效果。 - 按钮对比度检查(强制要求,无障碍):发布任何按钮前,确认按钮文字在按钮背景上清晰可读。白色按钮 + 白色文字、带有
text-white标签的bg-whiteCTA、无边框且直接置于页面背景上的透明按钮 → 均禁止使用。检查每个 CTA:对比度至少达到 WCAG AA 标准(正文为 4.5:1,大号文本为 3:1,字号 18px 及以上)。同一规则也适用于照片背景上的幽灵按钮(使用背板、遮罩或描边)。 - CTA 按钮换行禁令(强制要求):桌面端按钮文字必须保持单行。如果“查看精选作品”之类的标签换成 2 行或 3 行,说明按钮设计有缺陷。可通过以下任一方式修复:缩短标签(主要 CTA 最多 3 个单词,最好为 1-2 个),或加宽按钮(不得人为限制 CTA 的
max-width)。桌面端出现换行的 CTA 属于预检失败。 - 禁止重复 CTA 意图(强制要求):同一页面上出现两个意图相同的 CTA 即为预检失败。相同意图的示例:“取得联系” + “联系我们” + “聊一聊” + “启动项目” + “开始合作” + “主动联系” = 均属于“联系”意图 → 选择一个标签,并在整个页面(导航、首屏、页脚)统一使用。“免费试用” + “开始使用” + “免费注册”同理(均属于“注册”意图),“查看作品” + “查看精选作品” + “浏览项目”也同理(均属于“作品集”意图)。每种意图只使用一个标签。
- 表单对比度检查(强制要求,无障碍):表单输入框、占位文本、焦点环、辅助文本和错误文本相对于区块背景的对比度均须达到 WCAG AA 标准。近白色表单上的浅色占位文本、白色页面区块中的白色表单,以及对比度低于 4.5:1 的表单标签 → 均禁止使用。发布前检查每个表单。
4.6 数据与表单模式
- 标签置于输入框上方。辅助文本可选,但需保留在标记中。错误文本置于输入框下方。输入块统一使用
gap-2。 - 任何时候都不得将占位符用作标签。
4.7 布局规范(硬性规则。违反其中任何一条都等于交付有缺陷的成果)
- 首屏区必须完整容纳在初始视口内。桌面端标题最多 2 行,副文案最多 20 个词且最多 3-4 行,无需滚动即可看到 CTA。如果文案过长:减小字号或删减文案。如果无法用 20 个词的副文案说明价值主张,问题在于价值主张不清晰,而不是规则过严。禁止让首屏区溢出,迫使用户滚动才能找到 CTA。
- 首屏字号规范。字号和图像尺寸必须*统筹*规划。如果首屏素材较大且标题超过 6 个词,起始字号不得设为
text-7xl/text-8xl。合理的默认范围:大多数首屏区使用text-4xl md:text-5xl lg:text-6xl;只有标题为 3-5 个词时,才使用text-6xl md:text-7xl。首屏标题排成 4 行始终是字号错误,绝不是文案长度问题。 - 首屏顶部内边距上限(强制要求):桌面端首屏顶部内边距最大为
pt-24(≈6rem)。超过此值会使首屏内容悬在视口中部,看起来像布局错误,而非有意留白。如果首屏需要更多呼吸空间,请增大字号或素材尺寸,而不是顶部内边距。 - 首屏堆叠规范(最多 4 个文本元素)。首屏用于呈现单一重点,而不是功能列表。允许使用的文本元素总计最多 4 个:
- 眉题(小号全大写标签)或品牌条,也可以两者都不用 - 只能选择零个或一个
- 标题(最多 2 行,见上文)
- 辅助文案(最多 20 个单词,最多 4 行)
- 行动号召(1 个主要项 + 最多 1 个次要项)
- 首屏中禁止出现:CTA 下方的小号标语(“支持 GitHub、GitLab 和自托管 Git”)、信任背书微型条(“以下工程团队正在使用……”)、价格预告(“个人用户免费,团队版每位用户 $10”)、功能项目符号列表、社会认同头像行。这些内容都应移至首屏正下方各自的专属区块。
- 如果同一首屏区中既有眉题,又有行动号召下方的标语,就删掉标语。如果既有品牌条,又有标语,也删掉标语。每个首屏区最多只能有一个小型文本元素。
- “由以下企业使用” / “受以下企业信赖”徽标墙应放在首屏下方,绝不能置于首屏内。首屏用于呈现价值主张和主要 CTA。徽标墙是紧接其下的独立区块。不要把信任徽标硬塞进首屏文案所在的同一行弹性布局中。
- 桌面端导航栏必须以单行呈现。如果导航项在
lg(1024px)下无法全部容纳,应缩短标签、移除次要项,或改用汉堡菜单。桌面端出现两行导航即属于设计缺陷。 - 导航栏高度上限:桌面端最高 80px,默认为 64-72px。不得使用占据视口 15% 的超大“创意机构”式导航栏。
- 便当式网格必须富有节奏变化,而不能单侧重复。不得连续堆叠 6 个左图 / 右文布局行。应使构图多样化:穿插全宽功能行,使用非对称图块尺寸和纵向分隔。
- Bento 单元格数量规则(强制要求):Bento 网格的单元格数量必须与内容数量完全一致。3 个项目 → 3 个单元格(按 1+2、2+1 或非对称三格拆分)。5 个项目 → 5 个单元格(2+3、3+2、首屏+4 等)。如果网格中间或末尾有空单元格,说明规划有误。请重新调整网格结构,不要放入空白图块。
- 分区布局重复禁令。某个分区一旦使用一种布局类型(例如 3 列图片卡片、全宽引言、图文分栏),该类型在整个页面中最多只能出现一次。“精选委托作品”的布局不得与“我们的服务”雷同。包含 8 个分区的落地页必须使用至少 4 种不同的布局类型。
- 之字形交替布局上限(强制要求)。先“左图 + 右文”、再“左文 + 右图”的之字形交替布局很俗套。采用这种图文拆分模式的连续区块最多为 2 个。连续图文拆分中的 3rd 区块会导致预检失败。可用全宽区块、垂直堆叠区块、Bento 网格、跑马灯或其他布局类型来打破这种模式。
- 眉题标签克制(强制要求,生产测试中被违反次数排名第 1 的规则)。 “眉题标签”是位于分区标题上方的小号大写宽字距标签(例如
FOUR COLORWAYS、SELECTED WORK、THE HARDWARE、Git-native task management)。典型的 CSS 特征为:text-[11px] uppercase tracking-[0.18em]、font-mono text-[10.5px] uppercase tracking-[0.22em]。每个由 AI 构建的网站都会在每个分区标题上方放置眉题标签,形成千篇一律的模板化节奏。硬性规则: - 每 3 个区块最多使用 1 个眉题。首屏区块计为 1 个区块。因此,有 9 个区块的页面最多可使用 3 个眉题。
- 如果区块 A 使用了眉题,接下来的 2 个区块均不得使用眉题。
- 预检是机械式检查:统计所有区块组件中
uppercase tracking的出现次数(或标题上方类似的小型大写等宽字体标签)。如果数量 > ceil(sectionCount / 3),则输出不合格。 - 眉题的替代做法:将其完全删除。仅使用标题就足够。如果需要对区块分类,该区块在页面上的位置本身已起到分类作用,无需标签。
- 拆分式标题禁令(强制要求)。 将“左侧大标题 + 右侧小段说明文字”用作分区标题的模式(左侧跨 7 或 8 列,右侧跨 4 或 5 列,并在右栏悬置一小段正文)默认禁止使用。每个分区应仅传达一条聚焦的信息。如果确实同时需要标题和说明段落,请将二者垂直堆叠(标题在上,正文在下,最大宽度为 65ch)。仅当存在真正的构图理由时才采用拆分式标题模式(例如右栏承载视觉或交互元素,而不只是填充文字)。
- 便当盒式网格背景多样性(强制要求)。便当盒式网格和功能网格区块不得是 6 张置于白色背景上、内部仅有文字的白色卡片。任何多单元格网格中,至少需要有 2-3 个单元格具备真正的视觉变化:真实图像、适合品牌的渐变(而非 AI 紫色)、图案或带色调的背景。即使页面其余部分表现出色,奶油色背景上的奶油色便当盒式网格若内部仅有文字排版,也会显得是乏味的 AI 默认样式。
- 必须为每个区块明确指定移动端折叠方式。对于每个多列布局,都必须在同一组件中声明
< 768px的回退布局。不得想当然地认为“它自然会正常工作,Tailwind 会处理好”。
4.8 图像与视觉素材策略
落地页和作品集是视觉产品。仅含文本并用 div 制作伪截图的页面粗制滥造。
视觉素材的优先顺序:
- 优先使用图像生成工具。只要环境中有任何图像生成工具可用(
generate_image、MCP 图像工具、集成于 IDE 的生成工具、OpenAI 图像工具等),就必须使用它为各区块创建专用素材:首屏摄影图、产品照片、纹理背景和氛围图。按适合该区块的宽高比生成。不得因为手写 CSS 看起来更快而跳过此步骤。 - 其次使用真实网络图片。没有生成工具可用时,使用真实摄影图片来源。可接受的默认选项:
- 将
https://picsum.photos/seed/{descriptive-seed}/{w}/{h}用作摄影占位图(seed 应描述对应区块,例如marrow-cookware-kitchen) - 简要说明中提供的真实图库图片或品牌 URL
- 若明确允许,可使用开放许可来源(通过直接 URL 使用 Unsplash,或使用 Pexels)
- 最后的办法:告知用户。 如果两种方式都不可行,不得使用手工制作的 SVG 插图或基于 div 的“虚假截图”来填满页面。应改为留下标签清晰的占位区(
<!-- TODO: hero product photo, 1600x1200 -->),并在回复末尾写明:*“此页面的以下位置需要真实图片:\[位置列表\]。请生成或提供这些图片。”*
即使是极简主义网站也需要真实图片。 纯文本页面不是极简主义,而是未完成的作品。即使是编辑风格的 Linear 式网站,也至少需要 2-3 张真实图片(首屏主视觉、一张产品/生活方式照片和一张辅助图片)。如果简要说明要求克制的风格,请生成黑白极简摄影图片;不要仅因档位较低就完全省略图片。
使用真实公司徽标提供信任背书。 当简要说明要求加入“受……信赖 / 已被……采用 / 客户”徽标墙时,不得默认使用纯文本字标(将 <span>Acme Co</span> 排成一行)。请使用真实的 SVG 徽标:
- 来源:Simple Icons(
https://cdn.simpleicons.org/{slug}/ffffff可用于任意颜色,也可使用simple-iconsnpm 包)。覆盖大多数知名品牌。 - 备选:devicon,用于技术栈徽标(
@svgr/cli或 CDN)。 - 虚构了品牌名称?那也要设计一个 SVG 标志。 生成一个与页面风格匹配的简单字母组合标志(圆圈中的单个字母、双字母连字或抽象字形),并以内联
<svg>的形式呈现。为虚构品牌名称使用纯文本字标会显得普通。 - 始终确保徽标在浅色和深色模式下均能正确呈现(深色底白色、浅色底黑色,或使用单色主题变量)。
- 仅徽标规则(强制要求): 徽标墙 = 只有徽标,不含其他内容。不得在每个徽标下方显示行业 / 类别标签(例如不得在
Vercel下方添加hosting,不得在Stripe下方添加payments,也不得在Cloudflare下方添加infra)。徽标本身就是可信度的体现,标签并不会提供用户尚不了解的信息。可选项:将品牌名称作为供屏幕阅读器使用的替代文本,也可添加指向品牌网站的链接。仅此而已。
手工制作的插图:
- 库中的 SVG 图标:可以使用(参见第 3.C 节)。
- 手工制作的装饰性 SVG(自定义插图、徽标、标志):强烈不建议使用,且不得作为默认选择。仅在以下情况下可以接受:
- 简要说明明确提出这一要求(“为我绘制一个 SVG 徽标”)
- 它是一个单一、简单的几何标志(正方形、圆形或使用展示字体的字标)
- 你对输出质量有信心
禁止使用基于 div 的虚假截图。 使用 <div> 矩形、虚假任务列表、虚假仪表板和虚假终端窗口渲染的“手工搭建产品预览”是明显的 AI 痕迹。如果需要展示产品:
- 如果有真实截图的 URL,则使用它
- 使用图片工具生成一张
- 使用真实的组件预览(页面内实际 UI 的微型版本)
- 或者完全省略预览,改用编辑风格的摄影图片
Hero 区域需要真实的视觉素材。 文本 + 渐变色块并不能构成 Hero,它只是占位内容。
4.9 内容密度
落地页靠第一印象取胜,而不是靠用户通篇阅读。大刀阔斧地删减。
- 每个区块的默认内容结构: 简短标题(≤ 8 个词)+ 简短副段落(≤ 25 个词)+ 一项视觉素材或一个 CTA。如需增加内容,必须根据该区块的职责说明其必要性。
- 不要设置堆砌数据的区块。 一张 20 行的出版物表格、一份 30 行的奖项列表,或营销页面上的巨型定价矩阵,都是错误的布局。请改用:
- 最重要的 3-5 项内容 + “查看完整列表”链接
- 使用跑马灯 / 轮播展示更多内容
- 如果数据本身就是产品,则应使用完全独立的页面
- 长列表需要改用其他 UI 组件,而不是单纯加长列表。 默认采用带项目符号的
<ul>/divide-y行,是偷懒的选择。如果项目数 > 5,请改用以下方案之一: - 将项目分组后采用 2 列布局
- 卡片网格,每个项目包含图片 + 标签
- 如果项目可分类,则使用标签页 / 折叠面板
- 支持水平滚动吸附的胶囊项
- 对于需要展现广度的列表(客户评价、徽标、能力项),使用轮播
- 用跑马灯展示“大量无需逐项关注的内容”
- 规格表尤其如此(Marrow 炊具模式)。 对于炊具 / 硬件 / 服装 / 手工制品类需求,逐行使用
border-b的冗长产品规格表是 AI 默认套路。禁止使用。具体替代方案如下: - 2 列卡片网格: 每项规格单独使用一张卡片,包含规格名称、规格值(以大号数字展示),以及一行阐明“为何重要”的正文。桌面端按 2 列排列,移动端按 1 列排列。
- 支持滚动吸附的水平胶囊项: 每项规格对应一个胶囊项,用户可以轻扫浏览。
- 分组区块: 将 10 项规格分为 3 个逻辑组(例如“材质”“烹饪”“保修”),每组只使用一条柔和的分隔线和一个分组标题。
- 重点项与其余项: 将 3-4 项主打规格以大型展示磁贴呈现,其余规格收起到“查看完整规格”的可展开区域中。
一份包含 10 行且每行下方都有细分隔线的规格表,是最糟糕的默认方案。可将各行归入 2-3 个分组并只使用少量分隔线,或者改用每项规格一张卡片的布局。
- 交付前文案自查(强制要求): 在宣布任何任务完成之前,重新检查页面上的每一个可见字符串(标题、副标题、眉题标签、按钮标签、正文文案、说明文字、替代文本、页脚文本、错误消息)。标记所有存在以下问题的字符串:
- 语法不通(“在它的过去免费”、“两个方案,但其中一个是诚实的”,以及脱离语境的“把它摆到桌面上”)
- 指代不清(缺少前文语境却写“我们计划继续保持这样”)
- 听起来像 AI 幻觉(讨巧但错误的文字游戏、牵强且无法成立的比喻、“优雅的虚无”之类的措辞)
- 读起来像是 LLM 在刻意显得深思熟虑(隐含攻击性的谦逊、伪工匠式标签、故作诗意的微型元信息)
- 伪精确数字会被标记。 诸如
92%、4.1×、48k、5.8 mm、13.4 lb这类数字,要么: - 来自真实数据(需求简述、品牌指南、公开指标)- 可以接受
- 被明确标注为模拟内容(
<!-- mock -->、“示例”、“样例数据”)- 可以接受 - 是 AI 为营造美感而杜撰的规格 - 禁止。不得伪造品牌未宣称的工程精度。
- 每个页面只使用一种文案语体。 除非品牌语气明确要求,否则不要在同一构图中混用技术型等宽文本(“47 个任务 · 每天 0.6 次上下文切换”)、编辑风格的叙述文案和有冲击力的营销文案。
重写每个被标记的字符串。如果不确定某个字符串是否表意清楚,就将其替换为直白、实用的句子。由 AI 生成的俏皮文案比平淡文案更糟糕。
4.10 引语与客户评价
- 引语正文最多 3 行。严禁达到 6 行。如果原始引语更长 → 将其删减。落地页中的引语是摘录,不是完整评价。
- 对于字号很小的文本(如页脚样式的客户评价),行数上限可以略微放宽。原则是:“一眼就能看完。”
- 不得在引语文本中使用长破折号作为设计修饰(长停顿、动态长破折号、长破折号项目符号)。参见第 9.G 节 - 完全禁止使用长破折号。
- 署名:姓名 + 职位 +(可选)公司。不得只写姓名(“- Sarah”)。
- 引号:使用真正的排版引号( " " ),或者完全不使用。不得使用直式 ASCII 引号( " )。
4.11 页面主题锁定(浅色/深色模式一致性)
整个页面只能采用一种主题。各区段不得反转主题。
- 如果页面采用深色模式,所有区段都必须采用深色模式。不得在深色区段之间夹入采用暖纸色的浅色模式区段(反之亦然)。不得让用户在滚动到页面中途时感觉进入了另一个网站。
- 例外情况:如果需求简述明确要求采用“色块叙事”或“滚动时切换主题”手法,并且这是有意为之的构图(仅进行一次带有强烈过渡效果的完整主题切换,而非随机交替),则每个页面可以使用一次。
- 默认行为:在页面级别选择浅色、深色或自动模式(
prefers-color-scheme),并将其锁定。同一主题色系内,区段级背景使用不同深浅没有问题(bg-zinc-950与bg-zinc-900相邻);但在采用bg-zinc-950的页面中途改用bg-amber-50,就是设计错误。 - 使用内置主题功能的设计系统时(Radix Themes、搭配
<Theme>的 shadcn/ui),只在layout.tsx或页面根节点设置一次主题。不得让各个区段单独覆盖主题。
---
5. 基于上下文的主动应用
这些是工具,而不是默认设置。仅在设计判断要求使用时采用。这些都不会自动触发。
- 液态玻璃 / 玻璃拟态:适用于高端消费品、接近 Apple 设计语言、奢侈品牌或媒体叠加的氛围。不适用于仪表盘、公共部门或“乏味的 B2B”场景。使用时,不应只使用
backdrop-blur:添加一条 1px 的内边框(border-white/10)和细微的内阴影(shadow-[inset_0_1px_0_rgba(255,255,255,0.1)]),以营造实体边缘的折射效果。在prefers-reduced-transparency条件下提供纯色填充回退方案。 - 磁性微物理效果: 当
MOTION_INTENSITY > 5且简报呈现高端 / 趣味 / 设计机构风格时使用。只能在 React 渲染周期之外使用 Motion 的useMotionValue/useTransform实现。禁止使用useState。参见第 3.B 节。 - 持续微交互(脉冲、打字机、漂浮、流光、轮播):在
MOTION_INTENSITY > 5且动效确实有助于该区段时使用(状态指示器、实时信息流、AI 感)。并非每张卡片都需要无限循环。如果区段仅用于传达信息,就保持静态。应用弹簧物理效果(type: "spring", stiffness: 100, damping: 20),不得使用线性缓动。 - “声称有动效,就要展示动效。”如果
MOTION_INTENSITY > 4,页面必须真正呈现动效:至少包括首屏主视觉的入场过渡、关键区段的滚动显现,以及行动号召按钮的悬停物理效果。声称采用MOTION_INTENSITY: 7的静态页面是有缺陷的。反之,如果无法在现有工作范围内交付可正常运行的动效,就将档位降至 3,并交付一个干净利落的静态页面。不得只做一半而留下会出错的动效(被截断的 ScrollTriggers、跳动的入场动画、缺少清理函数)。 - 动画必须有明确动机(强制要求)。 添加任何动画前,先问:“这个动画传达了什么?”有效答案包括:层级(将注意力引向正确的对象)、叙事(按符合叙事逻辑的顺序呈现内容)、反馈(响应用户操作)、状态过渡(表明某些内容发生了变化)。无效答案:“看起来很酷”。仅仅因为 GSAP 可用就到处使用 GSAP,是业余做法。每个 ScrollTrigger、每个跑马灯、每个固定分区都需要理由。如果无法用一句话说明理由,就删掉该动画。
- 每页最多一个跑马灯(强制要求)。 横向滚动文字跑马灯(“徽标无尽滚动”“宣言横向滚动”“动态文字带”)每页最多只能使用一次。同一页面使用两个或更多跑马灯,会显得像偷懒的填充内容。选择一个跑马灯确实能为内容服务的分区;其他分区应采用不同布局。
- GSAP 粘性堆叠模式(使用滚动堆叠时)。 “滚动卡片堆叠”必须是真正的粘性堆叠,而不是依次显现的列表。标准代码骨架见下文第 5.A 节。常见故障:触发器在滚动到一半时触发,而不是在视口顶部固定。修复方法:使用
start: "top top",而不是start: "top center"或"top 80%"。 - GSAP 横向平移模式(使用横向滚动劫持时)。参见下文第 5.B 节的规范骨架。常见错误:动画在该区段固定之前就开始,因此用户会看到一张只显示了一半的幻灯片。修复方法相同:使用
start: "top top",固定外层容器,并让内层轨道与滚动进度同步。
5.A 粘性堆叠 - 规范骨架
"use client";
import { useRef, useEffect } from "react";
import { gsap } from "gsap";
import { ScrollTrigger } from "gsap/ScrollTrigger";
import { useReducedMotion } from "motion/react";
gsap.registerPlugin(ScrollTrigger);
export function StickyStack({ cards }: { cards: React.ReactNode[] }) {
const ref = useRef<HTMLDivElement>(null);
const reduce = useReducedMotion();
useEffect(() => {
if (reduce || !ref.current) return;
const ctx = gsap.context(() => {
const cardEls = gsap.utils.toArray<HTMLElement>(".stack-card");
cardEls.forEach((card, i) => {
if (i === cardEls.length - 1) return;
ScrollTrigger.create({
trigger: card,
start: "top top", // pin at viewport top
endTrigger: cardEls[cardEls.length - 1],
end: "top top",
pin: true,
pinSpacing: false,
});
gsap.to(card, {
scale: 0.92,
opacity: 0.55,
ease: "none",
scrollTrigger: {
trigger: cardEls[i + 1],
start: "top bottom",
end: "top top",
scrub: true,
},
});
});
}, ref);
return () => ctx.revert();
}, [reduce]);
return (
<div ref={ref} className="relative">
{cards.map((card, i) => (
<div
key={i}
className="stack-card sticky top-0 min-h-[100dvh] flex items-center justify-center"
>
{card}
</div>
))}
</div>
);
}
关键点:start: "top top"、pin: true;除最后一张卡片外,每张卡片都被固定;缩放 / 不透明度变换由下一张卡片的滚动触发器驱动(因此下一张卡片进入时,前一张卡片会缩小)。
5.B 横向平移 - 规范骨架
"use client";
import { useRef, useEffect } from "react";
import { gsap } from "gsap";
import { ScrollTrigger } from "gsap/ScrollTrigger";
import { useReducedMotion } from "motion/react";
gsap.registerPlugin(ScrollTrigger);
export function HorizontalPan({ children }: { children: React.ReactNode }) {
const wrap = useRef<HTMLDivElement>(null);
const track = useRef<HTMLDivElement>(null);
const reduce = useReducedMotion();
useEffect(() => {
if (reduce || !wrap.current || !track.current) return;
const ctx = gsap.context(() => {
const distance = track.current!.scrollWidth - window.innerWidth;
gsap.to(track.current, {
x: -distance,
ease: "none",
scrollTrigger: {
trigger: wrap.current,
start: "top top", // pin starts when section top hits viewport top
end: () => `+=${distance}`, // scroll distance = track width minus viewport
pin: true,
scrub: 1,
invalidateOnRefresh: true,
},
});
}, wrap);
return () => ctx.revert();
}, [reduce]);
return (
<section ref={wrap} className="relative overflow-hidden">
<div ref={track} className="flex h-[100dvh] items-center">
{children}
</div>
</section>
);
}
关键点:start: "top top"、pin: true、end: "+=${distance}"(滚动长度 = 所需的横向移动距离)、scrub: 1。外层容器会被固定,用户纵向滚动时,内层轨道会横向滑动。
5.C 滚动显现交错 - 规范骨架(更轻量的替代方案)
对于简单的“元素进入视口时出现”效果(无需固定),优先使用 Motion 的 whileInView 而不是 GSAP,前者更轻量,也不需要 ScrollTrigger:
"use client";
import { motion, useReducedMotion } from "motion/react";
export function RevealStagger({ items }: { items: string[] }) {
const reduce = useReducedMotion();
return (
<ul className="grid gap-6">
{items.map((item, i) => (
<motion.li
key={item}
initial={reduce ? false : { opacity: 0, y: 24 }}
whileInView={{ opacity: 1, y: 0 }}
viewport={{ once: true, amount: 0.3 }}
transition={{
duration: 0.6,
delay: i * 0.06,
ease: [0.16, 1, 0.3, 1],
}}
>
{item}
</motion.li>
))}
</ul>
);
}
将其用于:功能列表、用户评价网格、徽标墙,以及任何只需“滚动进入视口时显示”的内容。将 GSAP 留给实际的固定/滚动同步工作。
5.D 禁止的动画模式
- 禁止使用
window.addEventListener("scroll", ...)。该代码会在每个滚动帧运行,容易出现卡顿,且不支持批处理。改用 Motion 的useScroll()、GSAP 的ScrollTrigger、IntersectionObserver,或 CSS 的scroll-driven animations(animation-timeline: view())。 - 在 React 状态中使用
window.scrollY自定义计算滚动进度。原因相同。每帧都会重新渲染。 - 会修改 React 状态的
requestAnimationFrame循环。 改用运动值(useMotionValue+useTransform)。 - 布局过渡: 对于可见状态变化(重新排序列表、展开模态框、路由之间的共享元素),使用 Motion 的
layout和layoutId属性。不要为了“保险起见”给静态内容套用layout属性,这会增加测量工作量。 - 交错编排: 对于顺序至关重要的内容揭示,使用
staggerChildren(Motion)或 CSS 级联(animation-delay: calc(var(--index) * 100ms))。使用staggerChildren时,父级(variants)和子级必须处于同一个客户端组件树中。
---
6. 性能与可访问性防护规则
6.A 硬件加速
- 只能为
transform和opacity添加动画。禁止为top、left、width、height添加动画。 - 谨慎使用
will-change: transform,且仅用于实际会执行动画的元素。
6.B 减少动态效果(强制要求)
- 当
MOTION_INTENSITY > 3时,任何动态效果都必须遵循prefers-reduced-motion。 这一要求不容妥协。 - 在 Motion 中:使用
useReducedMotion()进行封装,并降级为静态效果。 - 在 CSS 中:仅在
@media (prefers-reduced-motion: no-preference)条件下启用动画,或在@media (prefers-reduced-motion: reduce)中提供禁用动画的覆盖代码块。 - 在减少动态效果模式下,无限循环、视差、滚动劫持和磁性物理效果必须降级为静态/即时效果。
6.C 暗色模式(任何面向消费者的页面均强制要求)
- 设计时应从一开始就兼顾两种模式。未经用户明确指示,禁止交付仅支持浅色或仅支持暗色的版本。
- 使用 Tailwind 的
dark:变体或 CSS 变量来定义令牌。每个项目只选择一种策略。 - 不要在此规定具体的暗色模式配色。 由需求说明决定。在两种模式下保持视觉层级和品牌识别度,并确保对比度达到 WCAG AA(正文达到 AAA)。
- 遵循
prefers-color-scheme: dark。除非品牌方坚持采用单一模式,否则默认遵循系统偏好。
6.D 核心 Web 指标目标
- LCP < 2.5s。首屏主视觉图像必须使用
next/image priority或进行预加载。 - INP < 200ms。将繁重任务移出主线程。
- CLS < 0.1。为图像、字体和嵌入内容预留空间。
- 在宣布页面完成前运行 Lighthouse。
6.E DOM 开销
- 颗粒 / 噪点滤镜只能应用于固定定位且设置了
pointer-events-none的伪元素(例如fixed inset-0 z-[60] pointer-events-none)。严禁应用于滚动容器;持续的 GPU 重绘会严重损害移动端 FPS。 - 注意打包体积。Motion 的体积并不小。Three.js 的体积很大。对所有非首屏内容进行懒加载。
6.F z-index 使用约束
严禁随意滥用 z-50 或 z-10。仅将 z-index 用于系统级层级上下文(粘性导航栏、模态框、覆盖层、颗粒效果层)。在项目常量文件中记录 z-index 层级体系。
---
7. 参数档位定义(技术参考)
DESIGN_VARIANCE(级别 1-10)
- 1-3(可预测): 对称的 CSS 网格(12 列、相等的 fr 单元)、一致的内边距和居中对齐。
- 4-7(偏移): 通过
margin-top: -2rem形成重叠、采用不同的图像宽高比(4:3 与 16:9 相邻),并在居中对齐的数据上方使用左对齐标题。 - 8-10(非对称): 瀑布流布局、采用分数单位的 CSS 网格(
grid-template-columns: 2fr 1fr 1fr)、大面积空白区域(padding-left: 20vw)。 - 移动端覆盖规则: 对于 4-10 级,在
md:及以上断点启用的非对称布局,在视口宽度为< 768px时必须折叠为严格的单列布局(w-full、px-4、py-8)。
MOTION_INTENSITY(级别 1-10)
- 1-3(静态): 不使用自动动画。仅使用 CSS 的
:hover和:active状态。prefers-reduced-motion本来就是默认模式。 - 4-7(流畅的 CSS):
transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1)。载入动画采用animation-delay级联。重点使用transform和opacity。 - 8-10(高级动画编排): 复杂的滚动触发式显现动画、视差效果和滚动驱动动画(CSS
animation-timeline或 GSAP ScrollTrigger)。使用 Motion 钩子。严禁使用window.addEventListener('scroll'),这是硬性禁令,并非“建议避免”。有关允许的替代方案,请参阅第 5.D 节。
VISUAL_DENSITY(级别 1-10)
- 1-3(艺术画廊): 大量留白。区块间距巨大(
py-32到py-48)。高端、简洁。 - 4-7(日常应用): 标准 Web 应用间距(
py-16到py-24)。 - 8-10(驾驶舱): 内边距紧凑。不使用卡片框;通过 1px 线条分隔数据。强制要求:所有数字均使用
font-mono。
---
8. 深色模式协议
默认采用双模式。除非需求是模拟印刷品的编辑类设计,否则不得假定只需浅色模式。
8.A 令牌策略(选择一种并坚持使用)
- Tailwind
dark:变体(工具类优先项目的默认选择):每个颜色工具类均与对应的深色变体配对(bg-white dark:bg-zinc-950、text-gray-900 dark:text-gray-100)。 - CSS 变量(适用于 shadcn/ui、Radix Themes 或支持主题配置的组件库):定义语义令牌(
--surface、--surface-elevated、--text-primary、--accent),并在[data-theme="dark"]或@media (prefers-color-scheme: dark)下切换值。
8.B 此处不指定具体颜色
由需求简述和品牌决定。此 skill 仅强制执行以下内容:
- 对比度 - 正文文本最低达到 WCAG AA,首屏文案以 AAA 为目标。
- 层级一致性 - 浅色模式下有效的视觉层级在深色模式下也必须有效。如果 CTA 在浅色模式下醒目,在深色模式下也必须醒目。
- 品牌保真度 - 主品牌色必须保持可辨识性。不得通过降低品牌色饱和度来适配深色模式。
- 不得使用纯
#000000和纯#ffffff- 使用非纯黑色(zinc-950、近黑色暖灰)和非纯白色。纯色值会破坏层次感。
8.C 默认模式
除非品牌坚持采用特定模式,否则应遵循 prefers-color-scheme。如果任一模式无法保留关键品牌表达,则添加手动切换开关。
8.D 完成前在两种模式下测试
开发期间以两种模式打开页面。不得交付只在一种模式下查看过的页面。
---
9. AI 痕迹(禁止模式)
除非需求简述明确要求,否则应避免这些典型特征。
9.A 视觉与 CSS
- 不得使用霓虹效果 / 外发光作为默认方案。改用内边框或带有细微色调的阴影。
- 不得使用纯黑色(
#000000)。 改用非纯黑色、zinc-950 或炭灰色。 - 不得使用过度饱和的强调色。 降低饱和度,使其与中性色融合。
- 不得过度使用渐变文字来呈现大标题。
- 不得使用自定义鼠标光标。 这种做法已过时,且不利于无障碍和性能。
9.B 字体排印
- 避免将 Inter 作为默认字体。 参见第 4.1 节。另有例外规则。
- 不得使用只会显得喧闹的超大 H1 标题。 应通过字重 + 颜色控制层级,而不是单纯放大尺寸。
- 衬线体限制: 衬线体适用于编辑型 / 奢华 / 出版类设计,不适用于仪表盘。
9.C 布局与间距
- 数学意义上完美的内边距和外边距。不得出现因间距别扭而显得悬空的元素。
- 不得使用 3 列等规格功能卡片。 禁止使用这种通用的“横向排列三个相同卡片”功能行。改用 2 列之字形布局、非对称网格、滚动固定布局或横向滚动方案。
9.D 内容与数据(“无名氏”效应)
- 不得使用通用姓名。 “约翰·多伊”、“莎拉·陈”、“杰克·苏” → 使用富有创意、真实可信且符合当地文化的姓名。
- 不得使用通用头像。 不得使用 SVG “蛋形”头像或 Lucide 用户图标 → 使用可信的照片占位图或有针对性的样式设计。
- 禁止使用虚假完美数字。 避免使用
99.99%、50%、1234567。应使用自然、不规则的数据(47.2%、+1 (312) 847-1928)。 - 禁止使用粗制滥造的初创公司品牌名称。 “Acme”“Nexus”“SmartFlow”“Cloudly” → 应结合具体情境,构思听起来真实且有质感的名称。
- 禁止使用空泛动词。 “提升”“无缝”“释放”“下一代”“彻底变革” → 只使用含义具体的动词。
9.E 外部资源与组件
- 禁止手工绘制 SVG 图标。 使用 Phosphor / HugeIcons / Radix / Tabler。仅当用户明确要求时才可使用 Lucide。
- 强烈不建议默认使用手工绘制的装饰性 SVG(见第 4.8 节)。
- 禁止使用基于 div 的虚假截图。 禁止用
<div>矩形构建虚假的产品 UI 来模拟截图。请使用真实图像、生成图像,或省略预览。 - 禁止使用失效的 Unsplash 链接。 使用
https://picsum.photos/seed/{descriptive-string}/{w}/{h}、生成的照片占位图或实际资源。 - shadcn/ui 自定义: 允许使用,但禁止保持默认状态。应根据项目的美学风格自定义圆角、颜色、阴影和字体排印。
- 生产就绪的整洁度: 代码在视觉上应简洁、令人印象深刻,并经过细致打磨。
9.F 生产测试中的典型破绽(明令禁止)
这些模式源自对 LLM 生成落地页的真实测试。当模型试图让页面“看起来经过设计”时,往往会默认采用这些典型特征。除非简报明确要求其中某种模式,否则必须将其视为硬性禁令。
首屏与页面顶部
- 禁止在首屏区域中使用版本标签。 禁止将
V0.6、v2.0、BETA、INVITE-ONLY PREVIEW、EARLY ACCESS、ALPHA用作默认眉题。只有当简报明确涉及产品发布或预览状态时才可使用。 - 禁止使用“品牌 · 编号 01”这类次级眉题。 省略“Marrow · 编号 01 · 6 夸脱款”这类微型元信息行。
区块编号与微型标签
- 禁止使用带区块编号的眉题。
00 / INDEX、001 · Capabilities、002 · Featured commission、06 · how it works、05 · The honest table均禁止使用。眉题应以直白语言说明主题,而不是编号。 - 禁止在图像或 Bento 磁贴上使用
01 / 4这类分页编号。 如果用户自己能数清,就不需要这种标签。 - 禁止使用
Scroll · 001 Capabilities这类滚动提示。 使用简单箭头或“滚动”即可;不要添加区块编号前缀。 - 禁止将“作品索引,2018 - 2026”这类范围标签用作眉题。只需说明该区块的内容。
分隔符与圆点
- 间隔号(
·)需限量使用。 元数据条带中每行最多使用 1 个。禁止将其作为所有内容的默认分隔符(“foo · bar · baz · qux · quux”)。如需一套分隔方式,优先使用换行、细分隔线或分栏。 - 禁止给每个列表项、导航项或徽章都添加装饰性彩色状态圆点。 默认禁止在“Q4 仅剩一个名额”前、每个导航链接前或每个任务行前放置彩色圆点。仅当圆点传达真实的语义状态(服务器状态、可用性标记)时才可使用,并且应克制使用。
长破折号与排版花饰
- 禁止将长破折号(
—)用作设计元素,也禁止在其他任何位置使用。 完整且不可妥协的禁令参见下文第 9.G 节。禁止在标题、眉题、胶囊元素、正文、引文、署名、说明文字、按钮文本和替代文本中使用长破折号字符。请使用普通连字符(-)。 - 禁止将通过
<br>断行并设为斜体的标题默认用作“设计手法”。 例如“走过三十\<br\>*年。*”这样的拆分。标题首先应自然流畅,只有需求明确要求时才可使用此类巧思。 - 禁止使用垂直旋转文字(将“作品索引,2018 - 2026”旋转 90°)。这是设计机构作品集的陈词滥调。仅当简报明确要求设计机构 / Awwwards / 实验性风格,并且这种做法确有构图作用时才可使用。
- 禁止将十字准线 / 发丝细线网格用作装饰。 禁止仅为让页面“显得经过设计”而绘制纵横线。仅当这些线条用于组织真实内容时才可使用。
虚假产品预览
- 禁止在首屏主视觉区中使用基于 div 构建的虚假产品 UI(由带样式的 div 构建的虚假任务列表、虚假终端或虚假仪表板)。这是排名 #1 的 LLM 设计破绽。请使用真实截图、生成的图像或真实组件预览,也可以完全不使用预览。
- 禁止在虚假截图中添加虚假版本页脚(“v0.6.2-rc.1”“上次同步:4s 前 · main”)。这毫无作用,而且会明显暴露出 AI 痕迹。
营销文案破绽
- 禁止使用“低调地用于” / “低调地受到信赖” 这类社会认同标题。使用自然的表达:“受到信赖”“已在以下企业中使用”“客户包括”;如果徽标本身足以说明问题,也可以完全省略标题。
- 禁止在引文、博客或侧边栏区域使用“来自一线” / “一线笔记” / “目前在工作台上” / “在我们的桌上” / “零散印版”这类诗意标签。 这会显得是在刻意营造工匠腔调。请使用简单实用的标签(“用户评价”“最新文章”“当前工作”),也可以省略标签。
- 禁止在正文中使用“我们尊重法国同行”这类 假装谦逊的行业指涉。故作可爱,而且很有 AI 味。
- 禁止在页眉/页脚中使用天气 / 地域信息条(“LIS 14:23 · 18°C”),除非需求明确涉及某个地点 / 跨时区分布的工作室。
- 禁止在眉题下方添加微型元信息句。 在区域标题下方放置类似 *“其中每一项都是我们今天已经交付的功能,而不是路线图中的承诺。我们会有意让这份列表保持精简。”* 的句子会造成冗余。眉题 + 标题 + 正文就足够了。
- 禁止使用通用步骤标签。 “阶段 1 / 阶段 2 / 阶段 3”“步骤 1 / 步骤 2 / 步骤 3”“阶段 01 / 阶段 02 / 阶段 03”“第一轮 / 第二轮 / 第三轮”。禁止使用。应直接以实际步骤内容作为标签。如果必须体现进度,请直接使用动词/名词(“安装”“配置”“发布”),而不是“阶段 1:安装”。
胶囊元素、标签和版本戳
- 禁止在图像上叠加胶囊、标签或标记。 禁止使用叠加在照片上的
<span>,并在其中放置类似Brand · 02、PLATE · BRAND、Field notes - journal的标签。要么让图像自行传达信息,要么直接在图像下方(图像外)添加说明文字。 - 禁止将摄影署名用作装饰性说明文字。 在图库/picsum 图像下方放置
Field study no. 12 · Ines Caetano、Plate 03 · House archive、Frame XII · 35mm之类的文字显得矫饰。只有在为真实照片的实际摄影师署名(且已获许可)时,才允许使用摄影署名。否则,应省略说明文字,或使用单行功能性说明文字(“鼠尾草绿的 6 夸脱款。”)。 - 禁止在营销页面中使用版本信息页脚。
v1.4.2、Build 0048、last sync 4s ago · main之类的页脚文字是 CLI / 开发工具的固定元素,不是落地页内容。营销页、落地页和作品集页面中禁止使用。 - 禁止将“800 个名额中已预订 412 个”式实时库存计数器用作装饰。 仅当需求说明明确涉及限量发售候补名单,且有真实数据时才允许使用。
装饰性文字条带
- 禁止在 Hero 区域底部放置装饰性文字条带。 将
BRAND. MOTION. SPATIAL.、TYPE / FORM / MOTION、DESIGN · BUILD · SHIP、ESTD. 2018 · LISBON · BRAND. MOTION. SPATIAL.之类的内容作为横跨 Hero 区域底部的小号等宽全大写文字条带,是设计机构作品集的俗套设计。默认禁止使用。只有当该条带包含真实且可导航的链接(吸底导航),或真实的状态信息(Cookie 横幅、文档站点上的构建信息)时才允许使用。 - 禁止在分区标题的右上角放置悬浮辅助文本。 典型模式是:分区有一个大号左对齐标题;在同一分区标题区域的右上角,悬浮着一小段说明文字,与其他任何内容都没有清晰的对齐关系。这种悬浮文本就是典型的 AI 痕迹。要么将辅助文本直接放在标题下方,要么构建简洁的 2 栏式标题区域(左侧:标题,右侧:对齐的正文),不要在角落放置一小段文字。
列表、分隔线和评分
- 禁止在长列表/规格表的每一行同时使用
border-t+border-b。 二选一(各行之间使用下边框,或在整组上方使用上边框),并尽量少用。包含 10 行且每行下方都有细线的规格表,是最偷懒的布局。替代的 UI 组件请参见第 4.9 节。 - 禁止使用带填充背景轨道的评分条/进度条作为对比视觉元素。 如果需要展示“X 与 Y 的比值”对比,请优先使用数字 + 小图标,或不带背景轨道的微型行内条形图。在大面积填充的
bg-zinc-200轨道上再叠加部分填充,是落地页上多余的仪表盘式 UI 元素。
地区信息、时间和滚动提示
- 对于 99% 的需求说明,禁止使用地区/城市名称/时间/天气信息条。 Hero 区域中的“里斯本,与创始人合作”、页脚中的“1200-690 里斯本,葡萄牙”、导航中的“里斯本 14:23 · 18°C”,都是设计机构作品集常见的装饰性 AI 痕迹。仅在以下情况下允许使用:需求说明明确描述了工作涉及多个时区的全球分布式工作室,或以旅行为主题的品牌,或现实中的实体场所。页脚中仅提及一次联系地址没有问题;营造氛围的地区信息条则不允许。
- 禁止使用滚动提示。
Scroll、↓ scroll、Scroll to explore、Scroll to walk through it、动态鼠标滚轮图标均禁止使用。如果用户还没有滚动页面,他们看到的就是 Hero 区域。他们知道如何滚动页面。视口底部无需标签。 - 默认情况下,装饰性状态圆点数量必须为零。 导航项、列表行、徽章或状态标签前的彩色圆点都是典型的 AI 痕迹。仅当用于传达真实语义状态(实际服务器状态的实时指示器、实时可用性标志)时才允许使用,且每个页面分区最多使用一个。
9.G 长破折号禁令(最常被违反的一项识别特征规则)
严禁使用长破折号(—)。 它是 LLM 标志性的文风依赖手段,也是生产测试中排名第 1 的视觉破绽。不存在“有限使用”的例外,不存在“符合自然语言使用频率”的例外,也不存在“正文中可以使用”的例外。一概没有。
- 禁止在标题中使用。 请改用句号或逗号。
- 禁止在眉题 / 标签 / 胶囊 / 按钮文本 / 图片说明 / 导航项中使用。 请改用换行、分栏或细分隔线。
- 禁止在正文中使用。 请重构句子:拆成两个用句号结尾的句子,或使用逗号、括号或冒号。
- 禁止在引语署名中使用。 请使用两侧带空格的普通连字符(
-),或换行后以较细字重显示姓名。 - 以短破折号形式(
–)用作分隔符时也禁止使用。 日期范围(2018-2026)使用连字符。数字范围(€40-80k)使用连字符。
页面上唯一允许使用的横线字符是:
- 普通连字符
-(用于复合词、范围和标记中的分隔线) - 数学中的负号(
-5°C)
只要输出中任何用户可见的位置出现一个 — 或 –,输出就无法通过交付前检查,必须重写。
这条规则必须严格遵守。以往,当长破折号限制被表述为“尽量少用”时,agent 会忽略该限制。此处的措辞是非此即彼的:长破折号数量为零。
---
10. 参考词汇(Agent 应了解的模式名称)
这是词汇表,不是库。agent 应了解这些模式名称,以便讨论这些模式、在设计时将其纳入考虑,并在设计解读需要时采用它们。实现和代码草图位于区块库(第 12 节),该库将迭代补充内容。
首屏范式
- 非对称分屏首屏 - 文本位于一侧,素材位于另一侧,并留出充足的空白。
- 社论宣言式首屏 - 使用大号文字,不使用素材,整体近似海报。
- 视频 / 媒体蒙版首屏 - 文字以镂空蒙版形式叠加在视频背景上。
- 动态排版首屏 - 以动画排版作为主要视觉元素。
- 幕布揭示式首屏 - 滚动时,首屏各部分像幕布一样展开。
- 滚动固定式首屏 - 首屏保持固定,内容从其后方滚动。
导航与菜单
- Mac OS 程序坞放大效果 - 边缘导航,图标在悬停时平滑缩放。
- 磁吸按钮 - 向光标方向吸附。
- 黏性菜单 - 子项像黏稠液体一样分离。
- 灵动岛 - 用于显示状态 / 提醒的可变形胶囊组件。
- 上下文径向菜单 - 在点击位置展开的环形菜单。
- 悬浮快速操作菜单 - FAB 以弹性动画展开成弧形排列的次级操作。
- 大型菜单展现 - 全屏下拉菜单,内容交错淡入。
布局与网格
- Bento 网格 - 非对称图块分组(Apple 控制中心)。
- 瀑布流布局 - 错落排列的网格,无固定行高。
- 色彩网格 - 边框 / 图块带有细微的动态渐变。
- 分屏滚动 - 两个半屏朝相反方向滑动。
- 粘性堆叠区块 - 滚动时固定并堆叠的区块。
卡片与容器
- 视差倾斜卡片 - 跟踪鼠标坐标的 3D 倾斜效果。
- 聚光边框卡片 - 边框在光标下方亮起。
- 玻璃拟态面板 - 带内部折射效果的磨砂玻璃。
- 全息箔卡片 - 悬停时产生虹彩变换。
- Tinder 滑动卡片堆 - 具有实体感的卡片堆,可滑动移除。
- 变形模态框 - 按钮展开成自身对应的对话框。
滚动动画
- 粘性滚动堆叠 - 卡片保持固定并像实体一样堆叠。
- 水平滚动接管 - 垂直滚动 → 水平平移。
- 机车式 / 序列滚动 - 视频 / 3D 序列与滚动条联动。
- 缩放视差 - 中央背景图像随滚动缩放。
- 滚动进度路径 - 随滚动绘制 SVG 线条。
- 液态滑动过渡 - 如黏性液体般的页面过渡。
画廊与媒体
- 穹顶画廊 - 3D 全景画廊。
- 封面流轮播 - 边缘倾斜的 3D 轮播。
- 拖拽平移网格 - 无边界的可拖动画布。
- 手风琴图片滑块 - 狭窄条带在悬停时展开。
- 悬停图片轨迹 - 鼠标移动时留下不断弹出的图片轨迹。
- 故障效果图像 - 悬停时发生 RGB 通道偏移。
排版与文本
- 动态跑马灯 - 随滚动反向移动的无限循环文本带。
- 文本遮罩显现 - 将巨型文字作为透视视频的透明窗口。
- 文本乱序效果 - 加载 / 悬停时进行《黑客帝国》风格的解码。
- 环形文本路径 - 文本沿旋转的圆周弯曲排列。
- 渐变描边动画 - 带有流动渐变的描边文字。
- 动态排版网格 - 字母会避开光标。
微交互与效果
- 粒子爆炸按钮 - 成功时,CTA 碎裂成粒子。
- 液态下拉刷新 - 重新加载指示器如同分离的液滴。
- 骨架屏微光 - 占位区域上掠过移动的反光。
- 感知悬停方向的按钮 - 填充效果从光标进入的准确一侧展开。
- 点击涟漪效果 - 波纹从点击坐标处扩散。
- SVG 线条绘制动画 - 矢量图形实时自行绘制。
- 网格渐变背景 - 有机形态的熔岩灯状色块。
- 镜头模糊景深 - 模糊背景 UI,以突出前景操作。
动画库选型
- Motion (
motion/react) - 是 UI / Bento / 状态变化动画的默认选择。 - GSAP + ScrollTrigger - 用于整页滚动叙事和滚动劫持。将其隔离到专用叶子组件中,并通过
useEffect执行清理。 - Three.js / WebGL - 用于画布背景和 3D 场景。采用相同的隔离规则。
- 禁止在同一组件树中混用 GSAP / Three.js 与 Motion。 它们会争用相同的帧。
---
11. 重设计规范
此 skill 可处理全新构建和重新设计。错误识别模式是导致重新设计输出不佳的最大单一原因。
11.A 检测模式(第一步操作)
- 全新构建 - 没有现有站点,或已批准全面改造。采用第 1 节的档位基线。
- 重新设计 - 保留 - 在不破坏品牌的前提下进行现代化改造。先审计,提取品牌设计变量,再逐步演进。
- 重新设计 - 全面改造 - 基于现有内容采用新的视觉语言。视觉层面按全新构建处理;保留内容和 IA。
如果含义不明确,只问一次:*“此次重新设计应保留现有品牌,还是从视觉上完全重新开始?”*
11.B 动手前先审计
在提出更改建议前,记录当前状态:
- 品牌设计变量 - 主色 / 强调色、字体组合、徽标处理方式、圆角。
- 信息架构——页面树、主导航、关键转化路径。
- 内容区块——有哪些内容、哪些发挥作用、哪些只是填充。
- 需保留的模式——标志性交互、可辨识的首屏、文案语气。
- 需淘汰的模式——AI 粗制内容的痕迹、损坏的布局、失效链接、泛用图库图片、性能陷阱。
- 现有网站的参数判断——推断当前的
DESIGN_VARIANCE/MOTION_INTENSITY/VISUAL_DENSITY。这是起点,并非基线。 - SEO 基线——当前有排名的页面、元标题、结构化数据、OG 卡片。SEO 迁移是重设计的第 1 大风险。
11.C 保留规则
- 除非用户提出要求,禁止改变信息架构。保持页面 slug、锚点 ID、主导航标签稳定,以维护 SEO 和用户的操作习惯。
- 应用第 4.2 节前,先提取品牌色。原本使用紫色的品牌继续使用紫色——应用 LILA 规则的覆盖条件。
- 除非用户要求重写,否则保留文案语气。视觉现代化 ≠ 内容重写。
- 保留现有无障碍成果。禁止让焦点状态、替代文本、键盘导航或对比度退步。
- 尊重现有分析事件。禁止重命名下游追踪所依赖的按钮、表单字段和区块 ID。
11.D 现代化调整手段(按优先级排序)
按顺序应用——需求简报得到满足时即停止:
- 更新字体排印——单位风险下视觉提升最大。
- 间距与节奏——增加区块内边距,修正纵向节奏。
- 重新校准色彩——降低饱和度、统一中性色、保留品牌强调色。
- 动效层——为现有组件添加符合
MOTION_INTENSITY的微交互。 - 重组首屏与关键区块——使用第 10 节的表达方式重构转化漏斗顶部。
- 整体替换区块——仅在现有区块无法挽救时采用。
11.E 决策树:定向演进与全面重设计
- IA、内容和 SEO 均良好 → 定向演进(调整手段 1-4)。以约 40% 的风险获得约 70% 的价值。
- 视觉问题属于结构性问题(IA 损坏、缺少设计系统、移动端损坏)→ 在严格保留内容的前提下全面重设计。
- 品牌本身正在改变 → 从零开始。
11.F 禁止擅自改变的内容
未经用户明确批准,禁止修改:
- URL 结构 / 路由 slug。
- 主导航标签。
- 表单字段名称或顺序(会导致分析统计和自动填充失效)。
- 品牌徽标或文字标识。
- 现有法律 / 同意授权 / Cookie 文案。
---
12. 区块库(约定 - 实现将在此迭代落地)
参考词汇(第 10 节)为模式命名。区块库使用实际属性、实际动效规范和实际代码草图来实现这些模式。
状态: 此处已定义结构规范。区块将迭代添加。不得脱离此结构规范自行创建新区块。
12.A 文件位置
skills/taste-skill/blocks/
hero/
asymmetric-split.md
editorial-manifesto.md
kinetic-type.md
...
feature/
bento-grid.md
sticky-scroll-stack.md
zig-zag.md
...
social-proof/
pricing/
cta/
footer/
navigation/
portfolio/
transition/
12.B 必需的前置元数据
---
name: asymmetric-split-hero
category: hero
dial_compatibility:
variance: [6, 10]
motion: [3, 10]
density: [2, 5]
when_to_use: "Landing pages with one strong asset and one strong message. Default hero for SaaS, agency, premium consumer."
not_for: "Editorial / manifesto launches where the message IS the design."
stack: ["react", "next", "tailwind", "motion"]
---
12.C 必需的正文部分
- 视觉草图 - 简短的 ASCII 或布局描述。
- 属性 API - 组件接口。
- 代码草图 - 最小可运行实现(默认使用服务器组件,动效使用客户端孤岛)。
- 移动端回退方案 - 明确说明适用于
< 768px的折叠规则。 - 动效变体 -
MOTION_INTENSITY的每个区间(1-3、4-7、8-10)各提供一个变体。明确说明减少动态效果时的回退方案。 - 深色模式说明 - 此区块专用的令牌策略。
- 反模式 - 此区块常见的出错方式。
- 参考资料 - 生产环境中真实示例的链接。
12.D 区块库规范
- 每个文件一个区块。不得创建多区块文件。
- 每个区块都必须可独立运行(将其放入页面即可渲染)。
- 每个区块都必须通过交付前检查(第 14 节)。
- 依赖第 2.A 节中设计系统的区块存放在
blocks/<category>/<name>--<system>.md下(例如feature/bento-grid--material.md)。
---
13. 不适用范围
此 skill 不适用于:
- 仪表盘 / 高密度产品 UI / 管理面板(使用第 2.A 节中的 Fluent、Carbon、Atlassian 或 Polaris)。
- 数据表格(使用 TanStack Table 或 AG Grid)。
- 多步骤表单 / 向导(使用表单专用模式;此 skill 并不能改善它们)。
- 代码编辑器(使用 Monaco / CodeMirror 及其官方外观样式)。
- 原生移动应用(直接使用 Apple HIG / Material)。
- 实时协作界面(在线状态、光标、OT 感知 - 属于不同类别的问题)。
如果需求属于上述任一类型,请明确说明,指出合适的工具,并且仅将此 skill 中与营销页面 / 关于页面 / 落地页面相关的部分应用于适用的界面。
---
14. 最终交付前检查
请在输出代码前执行此检查矩阵。这是最后一道检查。
此项并非可选。必须逐一检查所有复选框。任何一项未通过,输出即未完成。
- [ ] 是否已声明需求推断(第 0.B 节中的单行说明)?
- [ ] 旋钮值是否已明确给出并根据需求说明了依据,而非不作说明地使用基准值?
- [ ] 是否已在适用时从第 2 节中选择设计系统,否则是否如实标注了美学风格?
- [ ] 是否已识别重新设计模式并完成审查(如适用,参见第 11 节)?
- [ ] 页面任何位置都禁止出现长破折号(
—)。包括标题、眉题、胶囊标签、正文、引文、署名、说明文字、按钮和替代文本。一处也不允许。(第 9.G 节——必须严格遵守。) - [ ] 页面主题锁定:整个页面是否仅使用一个主题(浅色、深色或自动)?任何区段都不得在页面中途切换为反色模式(第 4.11 节)。
- [ ] 颜色一致性锁定:所有区段是否统一使用同一种强调色(第 4.2 节)?
- [ ] 形状一致性锁定:是否始终采用同一套圆角体系(第 4.4 节)?
- [ ] 按钮对比度检查:每个 CTA 的文字在其背景上是否都清晰可读(不得出现白底白字,达到 WCAG AA 的 4.5:1 对比度)?
- [ ] CTA 按钮换行:桌面端的 CTA 标签是否均未换成 2 行或更多行?
- [ ] 表单对比度检查:相对于区段背景,表单输入框、占位文本、焦点环和标签是否全部符合 WCAG AA 标准?
- [ ] 衬线字体规范:如果使用衬线字体,是否未使用 Fraunces 或 Instrument_Serif(若使用,是否有明确的品牌理由)?是否与上一个项目使用了不同的衬线字体?
- [ ] 高端消费品牌配色检查:如果需求属于高端消费品牌(厨具 / 健康生活 / 手工艺 / 奢侈品),配色是否未采用 AI 默认的米色+黄铜色+牛血红+意式浓缩咖啡色系?是否与上一个高端消费品牌项目采用了不同色系?
- [ ] 斜体下伸部留白:每个包含
y g j p q的斜体单词是否至少使用leading-[1.1],并预留pb-1? - [ ] 首屏适配视口:标题是否不超过 2 行,副文案不超过 20 个词且不超过 4 行,无需滚动即可看到 CTA,字体大小是否结合图像进行了规划?
- [ ] 首屏顶部内边距:桌面端是否最大为
pt-24,且首屏内容未悬在视口中部? - [ ] 首屏堆叠规范:首屏是否最多包含 4 个文本元素(眉题或品牌条、标题、副文案、行动号召按钮)?行动号召按钮下方是否没有微型标语,首屏中是否没有信任背书微型条?
- [ ] 眉题标签计数(机械检查):统计所有组件中分区标题上方使用
uppercase tracking的微型标签实例。数量是否 ≤ ceil(sectionCount / 3)?首屏主视觉区计为 1 个分区。 - [ ] 禁止左右拆分标题:区块标题是否未采用“左侧大标题 + 右侧小段说明”的模式(应改用纵向堆叠)?
- [ ] 之字形交替上限:是否未连续出现 3 个或更多采用相同图文分栏布局的区块?
- [ ] 禁止重复的 CTA 意图:是否不存在意图相同的两个 CTA(页面同时出现“联系我们” + “聊一聊” = 不通过)?
- [ ] 标志墙 = 仅有标志:是否未在标志下方印上行业 / 类别标签?
- [ ] 便当格背景多样性:是否至少有 2-3 个便当格单元具有实际视觉差异(图像、渐变、图案),而非全都是置于白色背景上的纯文字白色卡片?
- [ ] “客户包括 / 深受信赖”徽标墙是否位于首屏主视觉区下方而非其中,使用真实的 SVG 徽标(Simple Icons / devicon)或生成的 SVG 图形标记,而不是纯文本字标?
- [ ] 文案自检:是否重新阅读了每一处可见文字,未交付语法错误或 AI 幻觉产生的短语(如“free on its past”这种)?
- [ ] 动效有明确目的:是否每个动画都能用一句话说明理由(层级 / 叙事 / 反馈 / 状态转换),没有为炫技而使用 GSAP?
- [ ] 每页最多一条跑马灯:同一页面是否未出现两条横向跑马灯?
- [ ] 桌面端导航保持单行,高度 ≤ 80px?
- [ ] 区块布局重复性检查:是否没有两个区块使用相同布局类型(8 个区块中至少有 4 种不同类型)?
- [ ] 便当格兼具节奏与精确单元数(N 个项目 → N 个单元,中间和末尾均无空单元)?
- [ ] 长列表使用正确的 UI 组件(项目数 > 5 时不使用默认的
<ul>配合divide-y——其他方案见第 4.9 节)? - [ ] 使用真实图片(先使用生成工具,再用 Picsum-seed,最后使用明确的占位槽位)——禁止用 div 伪造截图,禁止手写装饰性 SVG,禁止纯文本极简主义?
- [ ] 禁止在图片上叠加胶囊标签或说明标签(禁止
Plate · Brand,禁止Field notes - journal)? - [ ] 禁止用图片署名作为装饰(
Field study no. 12 · Ines Caetano)? - [ ] 营销页面禁止出现版本页脚(
v1.4.2、Build 0048)? - [ ] 禁止在眉题下放微型元说明句(“这些都是我们今天提供的功能……”)?
- [ ] 禁止在首屏底部放装饰性文字条(
BRAND. MOTION. SPATIAL.)? - [ ] 区块标题中禁止出现悬浮在右上角的辅助文字?
- [ ] 比较图形中禁止使用带填充背景轨道的评分条或进度条?
- [ ] 禁止出现地区 / 城市名称 / 时间 / 天气条,除非需求简报确实涉及全球分布或侧重特定地点?
- [ ] 禁止出现滚动提示(
Scroll、↓ scroll、Scroll to explore)? - [ ] 首屏主视觉区中没有版本标签(V0.6、BETA、仅限受邀),除非简报针对产品发布?
- [ ] 无章节编号式眉题(
00 / INDEX、001 · Capabilities、06 · how it works)? - [ ] 无装饰性圆点(默认零个,仅用于真实语义状态)?
- [ ] 未在长列表/规格表的每一行同时使用
border-t+border-b? - [ ] 内容密度合理:没有 20 行数据表,没有缺乏依据的伪精确规格参数,子段落默认不超过 25 个词?
- [ ] 引用正文不超过 3 行,署名规范(不使用长破折号)?
- [ ] 宣称有动效 = 实际呈现动效:如果
MOTION_INTENSITY > 4,页面确实有动画,而不只是声称有动效? - [ ] GSAP 粘性堆叠/水平平移是否按照第 5.A / 5.B 节的规范骨架实现(
start: "top top"、pin: true、正确的滚动同步)? - [ ] 禁止使用
window.addEventListener('scroll')- 仅使用 MotionuseScroll()/ ScrollTrigger / IntersectionObserver / CSS 滚动驱动动画? - [ ] 减弱动效是否覆盖
MOTION_INTENSITY > 3时的所有动效? - [ ] 深色模式令牌已定义,并在明暗两种模式下完成测试?
- [ ] 移动端折叠是否针对高差异度布局明确设置(
w-full、px-4、max-w-7xl mx-auto)? - [ ] 视口稳定性:使用
min-h-[100dvh],且绝不使用h-screen? - [ ]
useEffect动画具有严格的清理函数? - [ ] 空状态 / 加载状态 / 错误状态均已提供?
- [ ] 省略卡片,尽可能改用间距?
- [ ] 图标仅来自允许的库(Phosphor / HugeIcons / Radix / Tabler),且没有手工编写的 SVG 路径?
- [ ] Motion已隔离在客户端叶子组件中,顶部声明了
'use client',并已进行记忆化处理? - [ ] 无第 9 节所列的 AI 痕迹(将 Inter 用作默认字体、AI 紫色、三张等尺寸卡片、Jane Doe、Acme、“已悄然用于”)?
- [ ] 核心网页指标是否可合理达标(LCP < 2.5s,INP < 200ms,CLS < 0.1)?
- [ ] 每个项目仅使用一个设计系统(不混用 Material + shadcn)?
只要有一个复选框无法如实勾选,页面就尚未完成。交付前必须将其修复。
---
附录 - 基于真实来源的参考资料
以下各节是内置的参考内容。它们为 agent 提供第 2 节提到的每个设计系统的真实安装命令、权威文档链接和可实际运行的入门代码片段。请据此让决策建立在生产现实之上,而非训练数据的虚构内容。
附录 A - 各设计系统的安装命令
# Material Web (Material 3)
npm install @material/web
# Fluent UI React (v9)
npm install @fluentui/react-components
# Fluent UI Web Components (framework-free)
npm install @fluentui/web-components @fluentui/tokens
# IBM Carbon
npm install @carbon/react @carbon/styles
# Radix Themes
npm install @radix-ui/themes
# shadcn/ui (open code, owned components)
npx shadcn@latest init
npx shadcn@latest add button card badge separator input
# Primer CSS (GitHub product/devtool UI)
npm install --save @primer/css
# Primer Brand (GitHub marketing UI)
npm install @primer/react-brand
# GOV.UK Frontend
npm install govuk-frontend
# USWDS (US Web Design System)
npm install uswds
# Atlassian Design System (Atlaskit)
yarn add @atlaskit/css-reset @atlaskit/tokens @atlaskit/button @atlaskit/badge @atlaskit/section-message @atlaskit/card
# Bootstrap 5.3
npm install bootstrap
# Shopify Polaris Web Components (Shopify apps only)
# Add this to your app HTML head:
# <meta name="shopify-api-key" content="%SHOPIFY_API_KEY%" />
# <script src="https://cdn.shopify.com/shopifycloud/polaris.js"></script>
附录 B - 权威来源(重新实现前请先阅读)
Material Web
- https://github.com/material-components/material-web
- https://material-web.dev/theming/material-theming/
- https://m3.material.io/develop/web
Fluent UI
- https://fluent2.microsoft.design/get-started/develop
- https://fluent2.microsoft.design/components/web/react/
- https://github.com/microsoft/fluentui
- https://learn.microsoft.com/en-us/fluent-ui/web-components/
Carbon
- https://carbondesignsystem.com/
- https://github.com/carbon-design-system/carbon
- https://carbondesignsystem.com/developing/react-tutorial/overview/
- https://carbondesignsystem.com/developing/web-components-tutorial/overview/
Shopify Polaris
- https://shopify.dev/docs/api/app-home/web-components
- https://github.com/Shopify/polaris-react
- https://polaris-react.shopify.com/components
Atlassian
- https://atlassian.design/get-started/develop
- https://atlassian.design/components/button/examples
- https://atlaskit.atlassian.com/packages/design-system/button/example/disabled
- https://atlassian.design/tokens/design-tokens
Primer
- https://primer.style/
- https://github.com/primer/css
- https://github.com/primer/brand
GOV.UK
- https://design-system.service.gov.uk/components/button/
- https://design-system.service.gov.uk/styles/layout/
- https://github.com/alphagov/govuk-frontend
USWDS
- https://designsystem.digital.gov/documentation/developers/
- https://designsystem.digital.gov/components/button/
- https://designsystem.digital.gov/components/card/
- https://github.com/uswds/uswds
Bootstrap
- https://getbootstrap.com/docs/5.3/layout/grid/
- https://getbootstrap.com/docs/5.3/components/card/
Tailwind
- https://tailwindcss.com/docs/dark-mode
- https://tailwindcss.com/blog/tailwindcss-v4
Radix
- https://www.radix-ui.com/themes/docs/components/theme
- https://www.radix-ui.com/themes/docs/components/card
- https://github.com/radix-ui/themes
shadcn/ui
- https://ui.shadcn.com/docs
- https://ui.shadcn.com/docs/components/card
- https://github.com/shadcn-ui/ui
原生 CSS / W3C 标准
- https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/backdrop-filter
- https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/At-rules/@media/prefers-color-scheme
- https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/At-rules/@media/prefers-reduced-motion
- https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Grid_layout
- https://developer.mozilla.org/en-US/docs/Web/CSS/Guides/Scroll-driven_animations
- https://drafts.csswg.org/scroll-animations-1/
Apple Liquid Glass(仅限 Apple 平台)
- https://developer.apple.com/design/human-interface-guidelines/materials
- https://developer.apple.com/documentation/TechnologyOverviews/liquid-glass
- https://developer.apple.com/documentation/TechnologyOverviews/adopting-liquid-glass
- https://developer.apple.com/documentation/SwiftUI/Material
---
附录 C - Apple Liquid Glass:如实说明的 Web 近似实现
不得将任意 CSS 代码片段视为 Apple 官方的 Liquid Glass。
官方内容
Apple 在面向 Apple 平台的人机界面指南和开发者文档中介绍了 Liquid Glass。它是一种广泛用于 Apple 平台 UI 的动态材质。Apple 的原生实现属于 Apple 平台的 APIs 和系统组件,并非公开的 Web CSS 软件包。
相关官方文档:
- Apple 人机界面指南 → 材质
- Apple 开发者文档 → Liquid Glass
- Apple 开发者文档 → 采用 Liquid Glass
- SwiftUI → Material
非官方内容
Apple 并未为普通网站提供 liquid-glass.css。
Web 近似实现可以使用:
backdrop-filter- 透明背景
- 分层边框
- 高光叠加层
- gradients
- motion
- 高对比度回退方案
但这只是 Web 玻璃拟态 / 毛玻璃近似实现,并非 Apple 官方的 Liquid Glass。请在注释中将其明确标注为近似实现。
更安全的 Web 近似实现骨架
.liquid-glass-web-approx {
position: relative;
isolation: isolate;
overflow: hidden;
border-radius: 999px;
border: 1px solid rgb(255 255 255 / .32);
background:
linear-gradient(135deg, rgb(255 255 255 / .30), rgb(255 255 255 / .08)),
rgb(255 255 255 / .12);
backdrop-filter: blur(24px) saturate(180%) contrast(1.05);
-webkit-backdrop-filter: blur(24px) saturate(180%) contrast(1.05);
box-shadow:
inset 0 1px 0 rgb(255 255 255 / .48),
inset 0 -1px 0 rgb(255 255 255 / .12),
0 18px 60px rgb(0 0 0 / .18);
}
.liquid-glass-web-approx::before {
content: "";
position: absolute;
inset: 0;
z-index: -1;
border-radius: inherit;
background:
radial-gradient(circle at 20% 0%, rgb(255 255 255 / .55), transparent 34%),
linear-gradient(90deg, rgb(255 255 255 / .18), transparent 42%, rgb(255 255 255 / .14));
pointer-events: none;
}
.liquid-glass-web-approx::after {
content: "";
position: absolute;
inset: 1px;
border-radius: inherit;
border: 1px solid rgb(255 255 255 / .14);
pointer-events: none;
}
@media (prefers-color-scheme: dark) {
.liquid-glass-web-approx {
border-color: rgb(255 255 255 / .18);
background:
linear-gradient(135deg, rgb(255 255 255 / .16), rgb(255 255 255 / .04)),
rgb(15 23 42 / .42);
box-shadow:
inset 0 1px 0 rgb(255 255 255 / .22),
0 18px 60px rgb(0 0 0 / .42);
}
}
@media (prefers-reduced-transparency: reduce) {
.liquid-glass-web-approx {
background: rgb(255 255 255 / .96);
backdrop-filter: none;
-webkit-backdrop-filter: none;
}
}
重要: prefers-reduced-transparency 的浏览器支持情况不一致,请进行测试。即使没有模糊效果,也要始终提供足够的对比度。
---
附录结束。 上述安装命令是现实依据。Apple Liquid Glass 骨架是明确标注的近似实现,并非 Apple 发布的软件包。有关各设计系统的权威文档,请查阅对应系统的官方文档(链接见第 2 节和附录 B)。