agentsclimarketplace

Generate design

Skill poz110/claude-harness/.claude/skills/generate-design

Executes the Designer workflow: AI Slop detection → competitive research → design system proposal → design spec generation. Produces DESIGN.md and docs/design-spec.md with 80-item audit score.From its SKILL.md

Install
npx -y skills add poz110/claude-harness --skill generate-design

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

17.5 KB, as published. Nobody here has run it

Generate Design — 完整执行流程

Phase 1:AI Slop 检测(必须最先执行)

对照 10 种反模式,评估当前设计方向或已有设计:

## AI Slop 检测报告

| # | 反模式 | 检测结果 | 严重程度 |
|---|--------|---------|---------|
| 1 | 蓝紫渐变背景 hero 区 | 发现/未发现 | 🔴 高危 |
| 2 | 三列等宽图标网格 | 发现/未发现 | 🔴 高危 |
| 3 | 全局统一圆角(无变化) | 发现/未发现 | 🟡 中危 |
| 4 | 漂浮装饰性 blob/形状 | 发现/未发现 | 🔴 高危 |
| 5 | 所有区块文字居中对齐 | 发现/未发现 | 🟡 中危 |
| 6 | 库存风格 hero 图片 | 发现/未发现 | 🟡 中危 |
| 7 | 字体超过 2 种字族 | {实际数量} | 🟡 中危 |
| 8 | 超过 12 种颜色 | {实际数量} | 🔴 高危 |
| 9 | 几乎每个元素都有动效 | 发现/未发现 | 🟡 中危 |
| 10 | 每屏 2+ 个等权重 CTA | {实际数量} | 🔴 高危 |

**高危问题数**:{N}
**评级**:PASS(0个高危)/ WARNING(1-2个)/ FAIL(≥3个高危)

FAIL 时:停止生成 design-spec,先解决高危问题。

Phase 2:竞品设计研究

读取 docs/prd.md,提取产品类型,分析竞品设计语言:

## 竞品设计分析

**产品类型**:{e.g., B2B SaaS 分析工具}

| 竞品 | 字体系统 | 主色 | 颜色数量 | 圆角风格 | 整体感 |
|------|---------|------|---------|---------|-------|
| {竞品 1} | {字体} | {颜色} | {N种} | {px} | {一词描述} |
| {竞品 2} | ... | ... | ... | ... | ... |
| {竞品 3} | ... | ... | ... | ... | ... |

**品类设计规范**(这是"不会出错的安全区"):
- 主流字体选择:{总结}
- 主流颜色范围:{总结}
- 主流风格特征:{总结}

**差异化机会**(在哪里可以打破规范而不显得怪异):
- {机会 1}:{原因}
- {机会 2}:{原因}

Phase 3:设计方向提案

必须同时给出安全选择和创意风险:

## 设计方向提案

### 方案 A:安全选择(符合品类预期)
- 主字体:{字体名} — 原因:{为什么安全,用户期望}
- 主色:{hex 值} — 原因:{品类常见颜色范围内}
- 圆角:{px} — 风格:{classy / friendly / minimal}
- 整体感:{一句话描述}
- 风险等级:低 — 最坏结果:平庸但专业

### 方案 B:创意风险(可能让产品被记住)
- 主字体:{非常规字体} — 理由:{为什么与品类不同,差异化价值}
- 主色:{非常规颜色} — 理由:{打破期望的原因}
- 圆角:{可能更极端的选择} — 效果:{具体的视觉效果}
- 整体感:{一句话描述}
- 风险等级:中/高
  - 如果成功:{正面效果,用户会说什么}
  - 如果失败:{失败原因,风险所在}

**Designer 推荐**:方案 {A/B}
理由:{具体说明,结合产品目标和用户特征}

Phase 4:DESIGN.md 生成

用户选择方案后,输出完整设计系统文档:

# 设计系统 — {项目名}
版本:v1.0 | 建立日期:{date} | 设计方案:{A/B}

---

## 设计原则

(必须是具体可验证的,不是"简洁美观"这类废话)

1. {原则 1}:{具体描述,举例说明怎么做到}
2. {原则 2}:{...}
3. {原则 3}:{...}

---

## 字体系统

### 选型
| 角色 | 字体名 | 引入方式 | 备注 |
|------|--------|---------|------|
| 主字体(标题)| {字体} | Google Fonts | {选择理由} |
| 副字体(正文)| {字体} | System | {选择理由} |
| 等宽字体 | {字体} | Google Fonts | 用于代码、数字 |

### 字阶规范
| 级别 | 大小 | 字重 | 行高 | 字间距 | 用途 |
|------|------|------|------|--------|------|
| display | 48px | 700 | 1.1 | -0.02em | 首屏大标题 |
| h1 | 32px | 600 | 1.2 | -0.01em | 页面标题 |
| h2 | 24px | 600 | 1.3 | 0 | 区块标题 |
| h3 | 18px | 500 | 1.4 | 0 | 子标题 |
| body-lg | 16px | 400 | 1.6 | 0 | 主正文 |
| body | 14px | 400 | 1.5 | 0 | 辅助文字 |
| caption | 12px | 400 | 1.4 | 0.01em | 标注说明 |

---

## 颜色系统

### CSS 变量定义
```css
@theme {
  /* 品牌色 */
  --color-brand:          oklch({L} {C} {H});
  --color-brand-hover:    oklch({L-0.05} {C} {H});
  --color-brand-subtle:   oklch({L+0.3} {C*0.3} {H});

  /* 中性色(6级)*/
  --color-gray-50:   oklch(0.98 0.002 {H});
  --color-gray-100:  oklch(0.95 0.003 {H});
  --color-gray-200:  oklch(0.90 0.005 {H});
  --color-gray-400:  oklch(0.70 0.008 {H});
  --color-gray-600:  oklch(0.45 0.010 {H});
  --color-gray-900:  oklch(0.15 0.005 {H});

  /* 语义色 */
  --color-success:  oklch(0.65 0.18 145);
  --color-warning:  oklch(0.75 0.18 75);
  --color-error:    oklch(0.55 0.22 25);
  --color-info:     oklch(0.60 0.15 230);

  /* 语义背景/文字/边框 */
  --color-bg-primary:   var(--color-gray-50);
  --color-bg-secondary: var(--color-gray-100);
  --color-bg-tertiary:  var(--color-gray-200);

  --color-text-primary:   var(--color-gray-900);
  --color-text-secondary: var(--color-gray-600);
  --color-text-tertiary:  var(--color-gray-400);

  --color-border:       var(--color-gray-200);
  --color-border-focus: var(--color-brand);
}

/* 暗色模式 */
.dark {
  --color-bg-primary:   oklch(0.10 0.005 {H});
  --color-bg-secondary: oklch(0.14 0.005 {H});
  --color-text-primary: oklch(0.95 0.005 {H});
  /* ... 完整暗色映射 ... */
}

颜色使用规则

  • 总颜色数上限:{N} 种(不含透明度变体)
  • 颜色传达含义,不用作装饰
  • 禁止直接使用原始 hex 值,必须通过语义变量名
  • 禁止:{列出项目特定的禁止用法}

间距系统

基准值:8px(所有间距必须是 8 的倍数或 4px)

token值用途
space-14px图标内间距,紧凑元素
space-28px行内元素间距
space-312px小组件内间距
space-416px组件内标准间距
space-624px组件间间距
space-832px区块间间距
space-1248px大区块间距
space-1664px区域间距

禁止使用任意值(如 13px、22px、37px)


圆角系统

token值适用场景
radius-none0{具体用途,如:表格、分隔线}
radius-sm4px{具体用途,如:标签、小按钮}
radius-md8px{具体用途,如:输入框、按钮}
radius-lg16px{具体用途,如:卡片、模态框}
radius-full999px仅用于:{限制用途,如:pill badge}

禁止随意混用:同一组件不同实例必须使用相同 radius token


阴影系统

(不超过 3 级,明确每级语义)

级别值用途
shadow-sm0 1px 2px rgba(0,0,0,0.05)卡片悬浮前
shadow-md0 4px 12px rgba(0,0,0,0.08)卡片 hover、下拉菜单
shadow-lg0 8px 24px rgba(0,0,0,0.12)模态框、抽屉

动效系统

场景时长缓动说明
微交互(颜色/透明度)150msease-out按钮 hover、输入 focus
组件进出场250msease-spring下拉、提示框
页面切换350msease-outView Transitions
大型动画≤500ms自定义谨慎使用

减少动效原则:@media (prefers-reduced-motion) 必须适配


核心组件规范速查

(详细规范在 docs/design-spec.md)

组件shadcn/ui 基础主要改动
ButtonButton{颜色、大小变体}
InputInput{状态样式}
CardCard{圆角、阴影}
DialogDialog{尺寸、动效}
.........

---

## Phase 5:80 项设计审计评分

对照完整评分表,输出分项得分:

### 评分规则
每项 0-1 分(1=通过,0=不通过)
总分 = 各项得分之和,满分 80

### 10 个类别(各 8 项)

**A. 版式(Typography)**
A1 标题字阶对比度 ≥ 3:1(最小 vs 最大)
A2 正文字体大小 ≥ 14px
A3 行高适配内容类型(标题 1.1-1.2,正文 1.5-1.6)
A4 字重不超过 3 种(含 regular/medium/bold)
A5 中文字间距已配置(标题 letter-spacing: -0.01em 到 -0.02em)
A6 无全大写正文段落(标题可以,正文不行)
A7 混合语言(中英)排版自然
A8 引用、代码块有明确的视觉区分

**B. 颜色(Color)**
B1 主色与白色背景对比度 ≥ 4.5:1
B2 小文字(< 18px)对比度 ≥ 4.5:1
B3 大文字(≥ 18px 或 bold ≥ 14px)对比度 ≥ 3:1
B4 颜色总数 ≤ DESIGN.md 定义的上限
B5 语义颜色(成功/警告/错误)有一致的应用规则
B6 渐变使用不超过 1 处
B7 颜色不是传达信息的唯一方式(同时用图标/文字)
B8 暗色模式颜色方案完整

**C. 间距与布局(Layout)**
C1 所有间距值在 8px 基准系统内
C2 相关元素间距 < 无关元素间距(Gestalt 邻近)
C3 内容最大宽度设置(≤ 1200px)
C4 移动端内边距 ≥ 16px
C5 网格系统一致(不随意混用列数)
C6 表单标签和输入框对齐规则一致
C7 图文混排有足够的环绕空间
C8 滚动时关键操作可见(sticky header/footer)

**D. 组件状态(States)**
D1 所有可交互元素有 hover 状态
D2 所有可交互元素有可见的 focus 状态
D3 disabled 状态视觉明确区分
D4 loading 状态有占位(skeleton 或 spinner)
D5 error 状态有明确视觉提示
D6 空状态有设计(不是空白)
D7 success 状态有反馈
D8 以上状态在暗色模式下也正确

**E. 响应式(Responsive)**
E1 375px 宽度无横向滚动
E2 768px 断点处理合理
E3 1024px+ 充分利用宽屏空间
E4 表格/图表在小屏有降级方案
E5 触摸目标 ≥ 44×44px(移动端所有交互元素)
E6 导航在移动端有明确的方案(底栏/汉堡)
E7 图片在不同屏幕下正确裁剪/缩放
E8 字体大小在移动端不低于 12px

**F. 信息层级(Hierarchy)**
F1 每屏有且只有一个最高权重 CTA
F2 视觉重量按重要性分配
F3 次要信息使用更低对比度
F4 空状态有明确的下一步引导
F5 错误信息比成功信息更显眼
F6 页面标题清楚描述页面内容
F7 列表/表格有明确的排序逻辑
F8 关键数字/状态在第一屏可见

**G. 交互设计(Interaction)**
G1 破坏性操作有确认步骤
G2 表单有实时验证(不是只在提交后报错)
G3 长操作(>1s)有进度反馈
G4 错误信息具体可操作("请输入有效邮箱"不是"格式错误")
G5 成功操作有明确反馈
G6 返回/取消操作清晰
G7 操作后状态明确(用户知道发生了什么)
G8 搜索/筛选有即时反馈

**H. 可访问性(Accessibility)**
H1 所有图片有 alt 文字(或 alt="" 声明装饰性)
H2 所有表单字段有 label
H3 键盘可完成所有核心操作
H4 Tab 顺序合理
H5 焦点样式可见(不依赖浏览器默认)
H6 颜色不是唯一的信息传达方式
H7 动效有 prefers-reduced-motion 适配
H8 ARIA 使用正确(不滥用,不缺失)

**I. 内容质量(Content)**
I1 无 Lorem ipsum 占位文字
I2 数字/日期格式全站一致
I3 CTA 文字描述动作("开始试用"而非"提交")
I4 错误信息用第一人称视角
I5 页面标题语义正确(h1/h2/h3 不为样式乱用)
I6 链接文字描述目标(不是"点击这里")
I7 表单帮助文字在用户输入前就显示
I8 空状态文案有引导性

**J. AI Slop 防护(Anti-AI-Slop)**
J1 无蓝紫渐变背景
J2 无三列等宽图标网格
J3 无漂浮装饰性形状/blob
J4 颜色总数 ≤ DESIGN.md 规定上限
J5 圆角有变化(不是全局统一)
J6 不是所有区块都居中文字
J7 每屏 CTA 数量 ≤ 1 个主要 + 1 个次要
J8 字体选择有个性(不是默认 Inter/Roboto)

### 评分输出格式

```markdown
## 设计审计评分

| 类别 | 得分 | 满分 | 评级 |
|------|------|------|------|
| A 版式 | {X} | 8 | {A/B/C/F} |
| B 颜色 | {X} | 8 | {A/B/C/F} |
| C 间距布局 | {X} | 8 | {A/B/C/F} |
| D 组件状态 | {X} | 8 | {A/B/C/F} |
| E 响应式 | {X} | 8 | {A/B/C/F} |
| F 信息层级 | {X} | 8 | {A/B/C/F} |
| G 交互 | {X} | 8 | {A/B/C/F} |
| H 可访问性 | {X} | 8 | {A/B/C/F} |
| I 内容质量 | {X} | 8 | {A/B/C/F} |
| J AI Slop 防护 | {X} | 8 | {A/B/C/F} |
| **总计** | **{X}** | **80** | **{综合评级}** |

综合评级:A(≥70)/ B(56-69)/ C(40-55)/ F(<40)

需要修复的不通过项:
- [{类别}{编号}] {描述}:{修复建议}

Figma AI 提示词格式

每个主要页面输出一个精确提示词:

Design a {功能描述 - 英文,具体} web interface.

Typography: {字体名,精确}. Heading size: {px}. Body size: {px}.
Colors: Primary {hex 精确值}, Background {hex 精确值}, Text {hex 精确值}.
Style keywords: {2-3 个精确描述词,避免 "modern", "clean", "minimal" 这类无意义词}.
Border radius: {px 值}.

Components needed:
- {组件 1}:{具体描述,包含位置、尺寸比例、内容}
- {组件 2}:{...}

Layout: {具体布局,如 "two-column with 240px fixed left sidebar and flexible right content"}
Responsive: mobile-first, 375px breakpoint shows {具体移动端变化}.

Strictly avoid:
- Blue-to-purple gradients
- Three-column icon grids  
- Floating decorative blobs
- Centered text in every section
- More than {N} distinct colors

Phase 6:Designer 直接编写 HTML 设计稿(不依赖任何 MCP)

核心约束:不调用 Stitch MCP 或任何外部工具,Designer 用 HTML + 内联 CSS 自行实现每个页面的高保真视觉稿。

6.1 构建页面队列

从 docs/design-spec.md 提取完整页面清单,建立生成队列(每页生成 design/{page-slug}/desktop.html)。


6.2 每个页面的 HTML 模板标准

每个 desktop.html 必须满足:

结构要求:

  • 完整的 <!DOCTYPE html> 文档
  • <head> 中引入 Google Fonts(来自 DESIGN.md 字体选型)
  • 使用 <style> 内联 CSS,所有颜色使用 CSS 变量(来自 DESIGN.md)
  • 页面宽度模拟 1440px 桌面端,使用 max-width: 1440px; margin: 0 auto

视觉还原要求:

  • 精确使用 DESIGN.md 中定义的颜色(CSS 变量 + fallback hex)
  • 精确使用 DESIGN.md 中定义的字体、字阶、字重
  • 精确使用 DESIGN.md 中定义的间距(8px 基准)、圆角
  • 所有主要功能区块必须存在(来自 design-spec.md 该页的功能模块清单)
  • 包含真实感的占位内容(非 Lorem ipsum)

组件状态:

  • 所有按钮有 hover 样式(CSS :hover)
  • 表单输入有 focus 样式
  • 必要的空/加载/错误状态用注释标注或用 [data-state] 伪实现

禁止:

  • 不得使用 Tailwind CDN 或外部 UI 框架
  • 不得引用本地图片(用 CSS 背景色块或 SVG placeholder 代替)
  • 不得使用随机 hex 颜色,所有颜色来自 DESIGN.md 定义的 CSS 变量

6.3 页面生成顺序

按 P0 优先:

1. 核心业务页(P0)— 逐一编写
2. 次要页(P1)— 编写
3. 系统页(注册/登录等,若有)— 编写

每写完一个页面,立即输出确认:

✅ [{当前}/{总数}] {页面名} → design/{slug}/desktop.html ({估计行数}行)

6.4 design/index.html 入口页

所有页面完成后,生成汇总入口:

<!DOCTYPE html>
<html lang="zh">
<head>
  <meta charset="UTF-8">
  <title>{项目名} 设计稿</title>
  <style>
    body { font-family: system-ui; max-width: 1100px; margin: 40px auto; padding: 0 24px; }
    h1 { font-size: 22px; font-weight: 600; margin-bottom: 4px; }
    .meta { color: #6B7280; font-size: 13px; margin-bottom: 28px; }
    .grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 16px; }
    .card { border: 1px solid #E5E7EB; border-radius: 10px; overflow: hidden; }
    .card-header { padding: 14px 16px; background: #F9FAFB; border-bottom: 1px solid #E5E7EB; }
    .card-title { font-weight: 600; font-size: 14px; margin: 0 0 2px; }
    .card-route { font-size: 11px; color: #9CA3AF; font-family: monospace; margin: 0; }
    .card-body { padding: 12px 16px; }
    .card-desc { font-size: 12px; color: #6B7280; margin: 0 0 10px; }
    .card-link { font-size: 12px; color: #6366F1; text-decoration: none;
      padding: 4px 12px; border: 1px solid #C7D2FE; border-radius: 5px;
      background: #EEF2FF; display: inline-block; }
    .badge { display: inline-block; font-size: 10px; padding: 2px 6px;
      border-radius: 4px; font-weight: 500; margin-left: 6px; }
    .p0 { background: #FEF3C7; color: #92400E; }
  </style>
</head>
<body>
  <h1>{项目名} — 设计稿</h1>
  <p class="meta">生成:{date} | Designer 手写 HTML | 共 {N} 个页面</p>
  <div class="grid">
    {每个页面一个 card,含页面名、路由、功能模块摘要、桌面版链接}
  </div>
</body>
</html>

6.5 完整性验证

所有页面生成后输出验证报告:

## 设计稿完整性验证

| 页面名 | 路由 | 文件 | 行数 | 状态 |
|--------|------|------|------|------|
| {页面名} | {路由} | design/{slug}/desktop.html | {N}行 | ✅ |

- design-spec.md 中所有 P0 页面均已生成:✅ / ❌
- design/index.html 已生成:✅ / ❌
- 所有文件使用 DESIGN.md 颜色变量:✅ / ❌

接力

所有产出物完成(DESIGN.md + docs/design-spec.md + design/*/desktop.html + design/index.html)后: → 下一步:interaction-spec(提取交互状态机)→ 通知 Orchestrator 推进 DESIGN_REVIEW

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.