SSkilltecabyclaudinhocode
Enviar skill
← Voltar para o catálogo

web-design

Design e Frontend

Skill de design visual web que gera código web completo (UI/UX, visual, animação, responsivo) a partir de PRDs, URLs, capturas de tela ou palavras-chave, após a aprovação de uma especificação DESIGN.md. Especializa-se em Landing Pages, Portfólios e blogs, não sendo utilizada para backend ou correção de bugs lógicos.

383estrelas
Ver no GitHub ↗Autor: KAOPU-XiaoPuLicença: MIT

Web Design

Web 端视觉设计 SKILL。两阶段工作流:先出规范(DESIGN.md),再出代码。

DESIGN.md 是显式文件产物,保存到项目目录,可跨项目复用、可手动修改、可给其他工具消费。

核心流程

Phase A  理解需求(灵活输入)──→  Phase B  输出 DESIGN.md(用户确认)──→  Phase C  生成项目代码

启动时先检测(按优先级):

  1. 项目里已经有 DESIGN.md 了吗?→ 有则沿用/修改/重建
  2. 项目里有 PRD.md 吗?→ 有则进入 A4(PRD 驱动流程)
  3. 都没有 → 正常走 Phase A

Phase A: 理解需求

输入是灵活的,以下任意组合都行,不要强制用户走固定路径:

输入处理方式
参考 URL抓取 HTML+CSS,提取 Token,motion audit
截图 / 设计稿从视觉提取气质、色温、密度、字体风格
关键词 / 描述"暗色克制衬线风格" → 从 style-seeds 匹配 Token
品牌名"做成类似 Linear 的" → 先查 references/design-systems/,有则直接读取;无则抓取该网站
混合"参考这个 URL 但配色要暖一些" → 提取 + 覆盖
PRD 文档读取 PRD.md 的产品定位、页面结构、设计交接区 → 分析竞品风格 → 推导设计方向

A1. URL 分析(有参考 URL 时)

意图判断:参考(提取设计语言,做独立新页面)vs 复刻(用户明确说"复刻/clone")。

抓取流程(按优先级尝试):

  1. 首选:Playwright 爬虫(真实浏览器,能绕反爬、渲染 SPA、模拟滚动)

    python3 scripts/crawl_website.py --url [URL] --output ./crawl-output --scroll-delay 600
    

    输出:每屏视口截图 + tokens.json + structure.json + styles.css

  2. 备选:Token 提取脚本(轻量,适合简单静态站)

    python3 scripts/extract_design_tokens.py --url [URL] --format json
    
  3. 降级:手动 curl(脚本都不可用时)

    curl -Ls [URL]
    

综合三类输入判断:实际体验(氛围节奏)> 截图(局部气质)> Token 数值(精确参数)。Playwright 爬虫的视口截图可直接作为"体验"和"截图"两类输入。

Motion Audit(参考站有滚动联动动效时必做):

  • 触发信号:动效跟随滚动连续变化 / 模块间有 stagger-pin-parallax / 引用 GSAP-Lenis 等
  • 记录每个动效区块的 trigger、driver、elements、effect、timing

降级链路

  • Playwright 爬虫失败 → 查 references/design-systems/ 有无该品牌预置文件(58 个品牌)
  • 预置文件也无 → extract_design_tokens.py 尝试静态提取
  • 静态提取也失败 → 手动 curl CSS
  • 全部失败 → 要求用户提供截图,从视觉手动建 Token

A2. 对话引导(无参考物时)

快速锁定风格方向,不要机械走问答清单:

核心问题(按需选问,不全问):

  • 亮色 vs 暗色?
  • 衬线 vs 无衬线?
  • 克制留白 vs 丰富饱满?
  • 强调色偏好?
  • 有没有喜欢的网站或风格参考?

references/style-seeds.md 匹配最近似的种子(10 种预设方向),展示给用户确认或混搭。

用户提到具体品牌时,查阅 references/design-systems/INDEX.md 按类别检索,按需读取对应品牌文件(58 个真实网站设计规范,每个 ~300 行)。品牌文件只含静态设计系统,动效仍需按交互档位补充。

A3. 交互档位确认(不可跳过)

档位体验感
L1 精致静态优雅 hover + 柔和入场
L2 流畅交互滚动 reveal、视差、导航变化
L3 沉浸体验滚动驱动时间线、pin、光标跟随、转场

L2 追问:reveal 风格(fadeInUp/scaleIn)、视差、导航变化 L3 追问:section pin、光标效果、转场、是否允许 GSAP/ScrollTrigger/Lenis

查阅 references/interaction-patterns.md 获取对应档位的完整代码。

A4. PRD 驱动(检测到项目级规范文件时)

启动时自动扫描项目根目录,按优先级:

  1. PRD.md / prd.md
  2. SPEC.md / spec.md
  3. README.md 或任何 .md — 若含「产品定位 / Target Users / Pages / 核心页面」等关键字段

不绑定特定工具或模板。只要能从文档里抽到下列字段,就足以作为设计输入:

字段(中/英别名)用途
产品名称 / Product / NameHero 文案
一句话定位 / Tagline / PitchHero 副标题、定调
目标用户 / Target Users / Audience色彩温度、字体风格决策
核心页面 / Pages / ScreensPhase C 生成清单
竞品 / Competitors / ReferencesPhase A 风格参考起点
技术栈 / Tech StackPhase C 代码生成方案
设计交接 / Design Notes / 调性直接继承的硬约束

竞品风格分析

  • PRD 提到竞品 → 优先查 references/design-systems/ 是否已有预置
  • 有预置 → 读取该品牌规范作为起点
  • 无预置 → 调用 scripts/crawl_website.py 抓取提取
  • PRD 没提 → 按产品类型 + 调性从 references/style-seeds.md 匹配最近种子

提取不到关键字段时:不要瞎猜,回到对话引导(A2)补齐。

与用户确认(示例):

我从 {文件名} 读到了:

  • 产品:{名称} — {一句话定位}
  • 目标用户:{画像}
  • 参考竞品:{列表 或 "无"}
  • 建议的风格方向:{1-2 个候选,各附一句理由}

这个方向对吗?

确认后进入 A3(交互档位),然后 Phase B。


Phase B: 输出 DESIGN.md(必走)

必须生成 DESIGN.md 文件。references/design-md-template.md 模板输出 9 个章节:

  1. Visual Theme & Atmosphere — 设计哲学、氛围关键词、一句话定调
  2. Color Palette & Roles — 完整 CSS 变量定义(含 RGB 辅助值)
  3. Typography Rules — 字体族、Google Fonts URL、字号层级表、禁止字体
  4. Component Stylings — 按钮/卡片/导航/链接/标签等完整 CSS(含所有状态)
  5. Layout Principles — 网格、间距梯度、容器宽度
  6. Depth & Elevation — 阴影体系
  7. Animation & Interaction — 动效档位、入场/滚动/悬停/特效的完整代码
  8. Do's and Don'ts — 设计护栏、Anti-Patterns(至少 8 条)
  9. Responsive Behavior — 断点、触摸目标、折叠策略

文字装饰规则:生成 Color Palette 和 Typography 后,按 references/text-decoration-rules.md 决策表对标题逐级判断是否添加渐变/投影。

展示摘要给用户确认,确认后保存 DESIGN.md 到项目目录,再进入 Phase C。


Phase C: 生成项目代码(必走)

C1. 确认场景 + 收集内容

问用户做什么页面,收集具体内容。查阅 references/scene-defaults.md 获取该场景的布局和组件基线。

常见场景的内容需求

场景需要收集
Landing Page标题、副标题、Feature 列表、CTA、Social proof
个人站 / Portfolio名字、头衔、项目列表、关于、联系方式、博客列表
Blog名称、文章列表/内容、作者信息、分类标签
产品页产品名、卖点、功能截图、定价、FAQ

用户信息不全时主动问;用户说"你先做,内容我后面填"则用合理的占位内容。

C2. 设计框架 + 生成代码

  1. 检查项目环境:框架、路由、样式方案、现有组件和 assets
  2. 框架决策:有项目 → 沿用;无项目 → 最小可行方案
  3. 严格按 DESIGN.md 生成
    • 所有颜色通过 CSS 变量引用
    • 字体按 DESIGN.md 定义使用
    • 交互按 DESIGN.md 指定档位实现
    • 不违反 Do's and Don'ts
  4. 图片策略:用户素材 > 项目 assets > 参考站 URL 占位 > Unsplash
  5. 图标策略:项目现有库 > lucide-react > 内联 SVG(参考 references/icon-library.md

C3. 审计

  • DESIGN.md 合规检查:代码是否严格遵循规范
  • 参考物差异审计(有参考时):Token / 版式 / 字体 / 交互 / 素材逐项比对
  • 响应式验证:至少移动端 + 桌面端
  • 质量清单:读 references/quality-checklist.md 逐项自检

首页爆点原则(Landing Page 专属)

一个 Web 平台最重要的是落地页(首页)。其他页面保持规范、风格统一即可,唯有首页必须满足下面两条硬性原则,不可妥协。

原则一:3 个「卧槽」爆点 + 1 个巧思

爆点位置固定,每个位置必须有一个让用户"卧槽"的视觉冲击:

#位置要求典型招式
1首屏 / Hero加载瞬间就被动态/3D/巨型渐变震住卡片星座爆发、WebGL 3D 物体、巨型标题 mask reveal、鼠标跟随光斑、3D 卡片堆
2首次滑动离开首屏的第一个 section 必须有"钩子"继续吸引宣言横滚带(大字 marquee)、数字爆发、分屏切割、卡片汇聚转场、全屏视频
3列表 / 阵列 / 枚举 / 展示区不能是普通等大 gridBento 不等大布局、SpotlightCard hover 跟踪光、3D 倾斜卡片、抽象艺术顶

1 个巧思设计点:一处"不注意就错过、一注意到就笑"的细节。候选:

  • 交互反馈微动画(复制后的 sparkle + tooltip)
  • 彩蛋(Konami / Ctrl+K 命令面板)
  • Meta 梗(关键词 hover 弹 "这就是本页用到的规范 →")
  • 滚动到底的小惊喜(如"你看到这里了,谢谢")

原则二:流畅 · 滑动无阻(不可破)

以下是性能红线,与爆点设计同等优先级。爆点炸裂但卡顿 = 零分。

  • 3D / WebGL:全页最多 1 处,且必须 IntersectionObserver 不可见时暂停
  • filter: blur() on moving elements:禁止。用 opacity + scale 做景深代替
  • backdrop-filter: blur():值 ≤ 14px,且不覆盖大面积滚动区
  • Lenis / scroll-jacking:仅当 pin-scrub 真正必要时启用;普通页面用原生 scroll-behavior: smooth
  • ScrollTrigger pin:单页 ≤ 2 处(doubao 级叙事才解锁)
  • pointermove 监听:必须 rAF 节流
  • Custom cursor 全局替换:仅在气质强烈的设计类/工具类站点用,普通 SaaS 禁用

实现建议(性能友好的爆点配方)

这些组合实测在中等配置设备可达 60fps:

爆点实现性能成本
鼠标聚光灯CSS var --mx/--my + radial-gradient(at var(--mx) var(--my))⭐ 极低(单次 repaint)
卡片爆发入场GSAP 一次性 timeline(load 时 stagger 1.5s,结束即释放)⭐⭐ 低(仅 1 次)
宣言横滚带纯 CSS transform: translateX keyframes⭐ 极低
SpotlightCard每张卡 --mx/--my + ::before radial-gradient(rAF 节流)⭐⭐ 低
大字 mask reveal纯 CSS clip-path 一次性动画⭐ 极低
关键字渐变流动background-position 动画⭐ 极低

避免的反面组合:

  • ❌ 12+ 元素同时带 filter: blur() + will-change(GPU 内存爆)
  • ❌ Lenis + 多个 pin-scrub + WebGL(主线程堵死)
  • ❌ Three.js 常驻渲染不暂停(即使离开视窗也吃 FPS)

100 分质量底线(硬性验收)

DESIGN.md + 生成代码必须同时满足以下全部条件,任何一条不满足都算未完成。完整细项见 references/quality-checklist.md,这里是最核心的红线:

DESIGN.md 红线

  • 9 个章节都有实质内容,不是模板占位
  • 每个组件样式包含 default / hover / active / focus / disabled 全部状态
  • 所有颜色定义为 CSS 变量,含 RGB 辅助值(便于 rgba)
  • 字体有 @import URL + fallback stack
  • 动效档位明确(L1/L2/L3),对应依赖声明完整
  • Do's and Don'ts ≥ 8 条,其中 Don'ts ≥ 5 条
  • L2+ 必须包含 prefers-reduced-motion 降级
  • 响应式至少覆盖 Desktop + Mobile

代码红线

  • 所有颜色通过 CSS 变量引用,零硬编码 hex
  • 字体严格按 DESIGN.md 的 Typography Rules 实现
  • 每个可交互元素有 hover + focus 态
  • 入场动画已实现(至少 L1 级 fadeIn)
  • L2+ 实现滚动 reveal + 导航滚动态 + 视差
  • L3 实现 pin / 光标跟随 / 转场
  • 图片禁用纯色块占位(参考站 URL / Unsplash / 用户素材)
  • 图标用项目库 / lucide-react / 内联 SVG(Playful 调性外禁 Emoji)
  • 未违反 DESIGN.md Do's and Don'ts 中的任何一条
  • 移动端 ≤ 600px 无横向溢出,触摸目标 ≥ 44×44px

签名动效红线(L2+ 强制,L3 加倍)

任何 L2 及以上页面必须包含以下 6 类动效,缺一不可。优先从 vue-bits / reactbits 目录挑(查 references/motion-library.md),能复用源码就不要自己写。

类别数量落点
Text Animation — Hero H1≥ 1大标题入场或持续态(如 SplitText / ShinyText / GradientText)
Text Animation — Section H2≥ 1章节标题滚动触发(如 ScrollFloat / BlurText)
Text Animation — Body / Label≥ 1正文、eyebrow、代码块(如 ScrollReveal / TextType / ScrambleText)
Animation — 元素级≥ 1CTA 磁吸 / 卡片 hover / 光标 / 点击反馈(如 Magnet / GlareHover / ClickSpark)
Component — 交互构件≥ 1卡片栈 / 画廊 / 导航 / 3D 卡片(如 Car

Como adicionar

/plugin marketplace add KAOPU-XiaoPu/web-design

O comando exato pode variar conforme o repositório. Confira o README no GitHub.

Comentários · Nenhum comentário

Entre para comentar. Entrar

  • Ainda não há comentários. Seja o primeiro.