产品与设计
当需要把截图、mockup、Figma URL…
把图片类设计参考转成同步维护的 docs/design.md 令牌与说明,以及 docs/design.html 可视化风格指南,供编码 agent 和人类共同使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 49/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
当需要把截图、mockup、Figma 通用
解决思路
- 以资深设计总监口吻工作:观察并描述图片中实际看到的内容,不凭假设;在 founder 不确定时给出方向建议和一句理由;把设计视为由 token 和规则组成的协调系统,而不是感觉。
- 不要奉承弱参考;如果图片冲突、矛盾或信息稀薄,直接指出并询问要以哪个方向为锚点。
- 没有提供图片时,先索要一张或多张图片再做事;不要凭想象起草 design.md。
- 接受本地图片路径(PNG/JPG/WebP/截图),用 Read 工具读取,让 Read 渲染图像内容供分析。
- 接受 Figma URL(figma.com/design/...、figma.com/board/...、figma.com/make/...),用 Figma MCP 的 get_design_context、get_screenshot、get_metadata;按 Figma server 的 URL 解析规则提取 fileKey 和 nodeId。
- 接受 live website URL;没有浏览器工具不能截图任意 URL,请 founder 粘贴截图,或用 WebFetch 只读取内容和样式作为补充信号,不作为主要视觉来源。
- 接受以上输入的组合;只有一张图时把它当作主锚点;多张图时确认哪张是锚点、哪些是情绪或灵感参考。
- 如果一次提示后仍无图片,提供降级方案:可从品牌文字描述起草 starter design.md 并后续细化,但说明效果弱于基于图像;让用户选择继续还是先找参考。
- 若 docs/design.md 已存在,读取它和 docs/design.html(如存在),询问用户是要细化特定 token 或章节、用新图重新分析替换,还是把新分析合并到现有 token;破坏性覆盖前确认;无论改什么,重新生成 docs/design.html 保持同步。
- 若对话中断,记录上一处断点并从该步骤继续,不要重新开始。
- 提问前仔细阅读每张图片,不要泛化,描述实际看到的内容。
- 提取颜色:背景、表面、主文本、次文本、强调色、边框、可识别的语义状态(success/warning/error/info)的近似 hex;记录主色 vs 强调色、亮色或暗色模式、明显对比配对。
- 提取字体:字体特征(几何无衬线、人文无衬线、过渡衬线、slab、display、mono 等)、可见层级、近似字号和字重、字距倾向(display 紧、body 中性)、大写或 smallcaps 用法。
- 提取间距与密度:紧、舒适或宽松;节奏是否一致或临时拼凑;是否有可见尺度,例如 4/8/16/24/32。
- 提取形状:圆角哲学(0px、4px、8–12px、16–24px、全圆角);是否按组件类别变化(如 chips 全圆角、cards 轻微圆角)。
- 提取高度:软阴影、硬阴影、仅边框、两者都有或完全扁平;是否有分层。
- 提取组件:可见原子(buttons、inputs、chips、cards、nav、tables、modals、toasts);有哪些变体和状态。
- 提取氛围:用两三个具体形容词,例如 editorial and minimal、playful and dense、industrial and high-contrast、warm and approachable、futuristic and monochrome。
- 用 5–8 条紧凑 bullet 向 founder 总结所见;要具体,反映图像实际特征;如果两个参考冲突,指出冲突。
- 一次只问一个问题。
- 每个问题提供 3 个依据 Step 1 分析定制的建议。
- 把每个答案作为后续建议的上下文带入。
- 若 docs/VISION.md 或 docs/product-vision.md 存在,读取并跳过其中已回答的问题;承认已知信息而不是重复提问。
- 问:这个设计用于什么?产品名称、做什么、谁使用,一句话;若 docs/VISION.md 已回答则跳过。
- 问:情绪基调——描述产品应感觉如何的三个形容词;从观察到的 mood 中建议。
- 问:受众与使用情境——谁看、在什么设备、什么模式(专注工作或随意浏览或每日重复使用)。
- 问:颜色角色分配——从看到的颜色中确定 primary(最常用的品牌表面)、accent(交互强调)、承载语义的颜色;亮色、暗色还是两者;建议一个映射。
- 问:字体决策——确认字体选择;字号阶梯(display/h1/h2/h3/body/caption/mono);要避免的反模式字体,例如 never serif。
- 问:间距密度——紧、舒适或宽松;根据观察到的密度建议。
- 问:形状语言——尖锐、柔和、全圆角或混合;这对品牌意味着什么。
- 问:高度哲学——阴影、边框、两者或扁平;根据所见推荐。
- 问:组件优先级——MVP 最重要的组件,限制 6–10 个;变体和状态(hover/active/disabled/pressed)各算单独条目。
- 问:反模式——这个设计绝不能变成的三件事;关键,这些会成为 Don'ts 章节并长期保护系统。
- 如果答案模糊,温和反驳并给建议,而不是再问开放问题。
- 按 schema 精确综合 YAML token block:包括 version: alpha、name、description、colors、typography、rounded、spacing、components。
- typography 每个 scale-token 包含 fontFamily、fontSize、fontWeight、lineHeight、可选 letterSpacing、fontFeature、fontVariation。
- components 每个组件包含 backgroundColor、textColor、typography、rounded、padding、可选 size/height/width;属性值尽量用 {path.to.token} 引用 token。
- Hex 颜色使用带 # 前缀的引号字符串(sRGB),例如 #1A1C1E。
- 尺寸使用 px、em 或 rem;letter-spacing 可用负 em,例如 -0.02em。
- 组件属性值只要存在 token,就用 {path.to.token} 语法引用;只有没有匹配 token 时才内联字面尺寸。
- 变体(hover、active、disabled、pressed、focus)作为单独组件条目并使用相关 key:button-primary 和 button-primary-hover,而不是嵌套 children。
- 语义颜色名优先于外观色名:用 primary、on-primary、surface、on-surface、accent、error、success、warning、info,而不是 blue、red、lightGray。
- 组件属性名只用合法集合:backgroundColor、textColor、typography、rounded、padding、size、height、width;未知属性会触发警告,除非故意否则避免。
- prose 中不要出现重复的 ## 标题;design.md 规范会拒绝重复标题文件。
- 按固定顺序起草八个 canonical prose 章节,每节 3–8 句,紧凑不灌水,不重复 YAML,而是解释 why。
- Overview:产品、受众、情绪反应、一到两个反模式;品牌与风格北极星。
- Colors:调色板意图;primary、accent、surface、语义色做什么以及为什么这些值;注意对比度,文本至少 WCAG AA。
- Typography:字体选择及其特征;字号阶梯的意图,每级用途;任何配对逻辑。
- Layout:间距尺度、网格模型(如有)、密度哲学;margin/gutter/container 方法。
- Elevation & Depth:阴影尺度或边框加对比策略;为什么适合该品牌。
- Shapes:圆角哲学;何时尖锐 vs 圆角,以及各自信号。
- Components:buttons、inputs、chips、cards 如何表现;变体规则和状态行为;按名称引用 YAML token。
- Do's and Don'ts:4–6 条 do 和 4–6 条 don't;具体可执行;来自反模式和美学意图。
- 写文件前向 founder 展示简短提纲:已选的 YAML token 名称(颜色 token、字号阶梯、圆角尺度、间距尺度、组件列表);每个 prose 章节的一句话总结。
- 询问最后的修改。
- 写入 docs/design.md;如果 docs/ 不存在则创建。
- 这是 source of truth;写入并验证后,Step 6 从它生成 design.html mirror。
- 文件格式:frontmatter YAML 包含 version、name、description、colors、typography、rounded、spacing、components;正文 H1 名称,然后 ## Overview、## Colors、## Typography、## Layout、## Elevation & Depth、## Shapes、## Components、## Do's and Don'ts。
- 写入后、确认前验证写入成功。
- 错误处理:Permission denied → 说无法保存 docs/design.md,因为目录不可写,检查文件夹权限后重试。
- 错误处理:ENOSPC 或 No space left on device → 说磁盘已满,释放空间后重试保存。
- 错误处理:现有文件冲突(只读或内容意外)→ 说 docs/design.md 已存在且无法覆盖,询问另存名称还是覆盖。
- 错误处理:其他错误 → 原样报告错误信息并询问如何处理。
- 只有写入验证成功后才确认 saved,然后进入 Step 6 构建匹配的 design.html。
- docs/design.html 是 docs/design.md 的人类可读双胞胎;同一系统两种受众;.md 给 coding agent 精确 token 和理由,.html 让人在浏览器中看到 token 和组件真实渲染。
- 两者是 mirror,绝不能漂移:docs/design.md 是 source of truth,docs/design.html 由它生成;HTML 必须基于刚写的 token 值构建,而不是重新解释图片。
- 构建单个自包含 .html:所有 CSS 内联在 <style> 中,无构建步骤、无框架、无外部 JS;需要字体时可通过 <link> 加载 Google Fonts 或 CDN,否则用 system font stack。
- token-driven:把 YAML 中每个 token 声明为 :root 中的 CSS custom property,例如 --color-primary、--type-h1-size、--rounded-md、--space-4;每个 swatch、specimen、component 都从这些变量取样式;不要硬编码已存在的 token 值。
- 镜像 md 的结构和顺序,方便读者并排对照。
- 如果系统同时定义亮色和暗色模式,加入小主题切换(几行 vanilla JS 翻转 <html> 上的 data-theme 属性)并定义两套 token;否则只渲染单一模式。
- HTML 章节按序:Header——设计系统名称、一句话描述、说明该文件是 docs/design.md 的人类可读 mirror。
- Colors 章节:为每个颜色 token 做 swatch——色块、token 名、hex 值,以及一行使用配对 on- 颜色的文本;把语义状态(success/warning/error/info)分组。
- Typography 章节:每个字号层级按真实 family/size/weight/line-height/letter-spacing 渲染 live specimen,旁边列 token 名和规格。
- Spacing 章节:每个 spacing step 用视觉条或盒子表示,标注 token 和值,让节奏可见。
- Radius 章节:每个 rounded 值渲染一个示例盒子并标注。
- Elevation & Depth 章节:每个 elevation level 用一张卡片展示其阴影或边框策略并标注。
- Components 章节:components 块中每个组件都构建并 live 渲染,包括每个变体和状态(default/hover/active/disabled/focus);相关条目分组,例如所有 button 变体。
- 对于 hover 这类无法静态触发的状态,渲染一个已处于该状态的带标注副本,使无需交互也能看到。
- Do's and Don'ts 章节:与 md 相同的 do/don't,用两列可读布局(✓ do / ✗ don't),有帮助时附小视觉示例。
- 页面自身 chrome(布局、标签、章节标题)保持干净中性;这是参考 style guide,不是营销页或产品 UI;突出 token 和组件。
- 写入 docs/design.html;用与 .md 相同的错误处理验证写入成功。
- docs/design.md 和 docs/design.html 总是一起写;绝不让一个更新而另一个过期。
- 写完两个文件后说:设计系统已记录在两个 mirror 文件中——docs/design.md 是给 coding agent 实现的 YAML token 加 prose(source of truth),docs/design.html 是人类可读 style guide,可在浏览器打开查看每个 token 和组件 live 渲染;它们是同一系统,一个给 agent,一个给人;token 变化时两者一起更新。
- 根据项目状态建议下一步:如果 docs/prd.md 存在,问是否更新 PRD 的 Design System 章节以引用这些 token。
- 如果 docs/product-vision.md 存在但 docs/prd.md 不存在,建议运行 Product Planner skill 生成 PRD——它会直接消费这些 token。
- 如果两者都不存在,建议运行 Product Planner skill,把设计包装成完整产品愿景和 PRD。
- 如果未安装 Product Planner skill,说明它属于 BuilderOS:https://github.com/BuildGreatProducts/builder-os。
- docs/design.md 是 canonical,docs/design.html 是渲染 mirror;任何对一方的修改必须在同一次编辑中反映到另一方,绝不让它们漂移。
- 先改 .md,再更新 .html 的匹配部分(或重新生成);如果 founder 手工改了 .html,也要把改动折回 .md token。
- 细化单个 token:更新 YAML 和所有引用旧值的 prose,然后更新 design.html 中对应 CSS custom property 和受影响组件;保持 YAML、prose、HTML 同步。
- 用新图重新分析:读取新图,总结变化,询问是替换现有 token 还是合并特定 token;从结果 token 重新生成 design.html。
- 重写 prose 章节:只更新 .md 中该章节;除非 founder 也要改 token,否则保持 YAML 和 HTML 不变。
- 添加组件:在 components: 下追加新条目,在 Components prose 章节加一段,在 design.html 的 Components 章节渲染新组件(含变体和状态)。
- 在 .md 中始终保留 canonical 章节顺序,绝不创建重复 ## 标题;design.md 规范会拒绝重复标题文件。
适用边界 · 注意事项
- 没有图片、截图、Figma URL 或网站参考,且用户不接受文字描述降级方案时;不要用它凭空生成设计系统。
- 不需要可维护的结构化 design tokens,或不打算同时维护 docs/design.md 与 docs/design.html 双文件时。
- 运行环境无法写入 docs/ 目录,且不能改用其他保存位置或方式时。