design-exploration

SKILL.md

用户有一个模糊的想法,想做一个新功能或新模块,但还没想清楚具体要什么。通过结构化的探索流程,帮助用户从模糊想法收敛到明确的设计方案,并产出完整的设计参考文档。

核心原则

  • 不猜,多问 — 没确认范围不出图,没设计规范就问,拿不准就让用户选
  • ASCII 先行 — 先对齐信息结构和布局逻辑,逻辑对了再投入 HTML
  • 一次多方案 — 批量出 5-8 个方案让用户选方向,不要一个个试
  • 全状态是必须的 — 正常态只是起点,异常态、边界情况、交互反馈必须穷举
  • 决策要落纸 — 对话中确认的每个决策都写进需求总结,不能只存在对话上下文里

输出物

每次探索产出 3 个文件,归档到 设计/v{版本号}-{模块名}/ 目录下:

文件 内容 用途
需求总结.md 背景、目标、功能范围、关键决策、技术约束 PRD 阶段的输入,讲清楚"为什么做、做什么"
{模块名}-设计稿.html 主界面 HTML mockup PRD + 前端开发的视觉参考
{模块名}-全状态设计参考.html 所有页面状态、Toast、边界情况、交互规则表 前端开发直接对照实现

版本号和模块名由用户决定,必须问用户确认。

工作流程

第 1 步:需求发散与收敛

用户说了模糊想法后,主动追问:

  • 痛点是什么 — 现在遇到了什么问题?为什么想做这个?
  • 核心场景 — 最典型的使用场景是什么?
  • 边界在哪 — 这个版本要做什么?不做什么?

整理成结构化的需求共识:

做什么:
- xxx
- xxx

不做什么:
- xxx

载体:独立应用 / 已有应用的新 Tab / 插件 / ...

禁止:用户说了一句话就开始出图。必须先对齐需求边界。

第 2 步:技术调研(按需)

判断是否需要调研:如果功能涉及外部数据(配置文件、API、第三方系统、文件格式),必须先调研技术约束。如果是纯 UI 功能不涉及外部依赖,跳过。

调研内容:

  • 数据存储位置和格式
  • 现有系统的接口和限制
  • 技术可行性验证

调研结果会直接影响设计方案(比如发现两个工具配置格式不同,决定了界面需要展示"类型"列)。

禁止:跳过调研直接画图,画出来发现技术上实现不了。

第 3 步:ASCII 批量探索

一次出 5-8 个不同思路的 ASCII 布局方案,每个方案包含:

  • ASCII 布局图
  • 一句话说明核心思路
方案 A:卡片列表 + 工具勾选
┌──────────────────────────────────┐
│ ┌────────────────────────────┐   │
│ │ pencil       [✓] CC [✓] CX│   │
│ └────────────────────────────┘   │
└──────────────────────────────────┘

方案 B:表格视图,一行一个
┌──────────────────────────────────┐
│ 名称       类型   CC    CX      │
│ pencil     stdio  [✓]   [✓]    │
│ github     http   [✓]   [✓]    │
└──────────────────────────────────┘

用户可以:

  • 直接选一个方案
  • 组合多个方案的元素("B 的结构 + E 的开关风格")
  • 全部否掉,补充新的方向

禁止

  • 只出 1-2 个方案(用户没有选择空间)
  • 超过 10 个方案(选择困难)
  • 方案之间差异太小(换汤不换药)

第 4 步:确认设计风格

问用户以下问题:

  1. 有没有已有的设计规范?(如 design-system.html)

    • 有 → 读取并严格遵循 design tokens(颜色、字号、圆角、间距)
    • 没有 → 问风格偏好,或直接出图让用户挑感觉
  2. 有没有要参考的已有页面?(外框、导航结构)

    • 有 → 读取参考页面,对齐外框样式(如 mac-window、sidebar 布局)
    • 没有 → 按独立页面处理
  3. 载体形式?

    • 已有应用的新页面/Tab → 必须对齐已有页面的外框和导航
    • 独立应用 → 自定义外框
    • 其他 → 问清楚

禁止:没问就默认使用某个设计规范。

第 5 步:HTML 设计稿

基于选定方案 + 确认的设计风格,输出 HTML mockup:

  • 使用真实数据填充(不用 lorem ipsum)
  • 如有设计规范,严格使用 CSS 变量 / design tokens
  • 如有参考页面,外框结构保持一致

输出后让用户浏览器打开查看,根据反馈微调。微调是具体的小修改(间距、配色、文案),直接执行,不需要重新走方案选择。

第 6 步:全状态覆盖

产出一个完整的全状态设计参考 HTML,固定包含以下内容:

必须覆盖的页面状态

状态 说明
正常态 有数据的标准展示
加载态 数据加载中(spinner + 禁用交互)
空态 没有数据,引导文案
搜索/筛选无结果 有数据但当前条件无匹配
错误态 数据加载失败、文件不存在、格式错误等(按场景拆多个)
部分可用 部分数据源可用、部分失败

必须覆盖的交互反馈

  • Toast 汇总:所有操作的成功/失败/警告 Toast,包含具体文案
  • Toast 规则:位置、时长(成功短、错误长)、同时最多显示几条

必须覆盖的边界情况

  • 长文本截断(名称、路径、URL)
  • 大量数据滚动
  • 其他根据具体场景补充

必须包含的交互行为规则表

表格格式,列定义:

触发 用户操作 系统行为 反馈
用户/系统/异常 具体操作 详细的系统处理步骤 Toast/状态变化/界面更新

覆盖所有用户操作和系统行为的完整映射,前端开发直接对照实现。

文档结构

  • 顶部:标题、版本、日期
  • 目录:锚点跳转
  • 每个状态一个 section:标签 + 标题 + 说明 + 预览截面 + 标注
  • 底部:交互行为规则表

禁止:只做正常态就结束。全状态覆盖是本流程的核心交付物。

第 7 步:需求总结 + 归档

按模板(templates/需求总结-模板.md)生成需求总结文档。

将对话中确认的所有决策提取出来,写入"关键决策"部分。这些决策往往散落在对话各处,必须主动收集整理,不能遗漏。

三个文件归档到 设计/v{版本号}-{模块名}/ 目录下。版本号和模块名问用户确认。

设计/v0.11-MCP管理/
├── 需求总结.md
├── mcp-manager-设计稿.html
└── mcp-manager-全状态设计参考.html

过程中的沟通规范

必须问用户的

时机 问什么
第 1 步 痛点、场景、边界(做什么/不做什么)
第 3 步 选哪个方案
第 4 步 有无设计规范、参考页面、载体形式
第 5 步 mockup 效果是否满意,有无微调
第 6 步 全状态覆盖有无遗漏的场景
第 7 步 版本号和模块名

不需要问用户的

事项 直接做
全状态要不要覆盖 必须覆盖,不用问
交互规则表要不要写 必须写,不用问
需求总结要不要输出 必须输出,不用问
Toast 文案 先给出建议,用户不满意再调

AI 绝不应该做的

  • 用户说了一句模糊想法就开始出 HTML
  • 只出一个 ASCII 方案
  • 只做正常态不管异常态
  • 跳过技术调研直接画图(如果涉及外部数据)
  • 把决策留在对话里不写进需求总结
  • 自己编版本号和模块名
  • 没问就默认使用某个设计规范
Weekly Installs
32
GitHub Stars
374
First Seen
Feb 25, 2026
Installed on
codex32
gemini-cli31
github-copilot31
amp31
kimi-cli31
cursor31