关于 prototype
prototype 是用于构建设计方案的 Skill,可在隔离的原型界面中制作同一 UI 组件的多种差异化版本,并通过视觉选择器比较,供用户选定后集成。
主要功能
- 01构建差异化 UI 版本
- 02通过视觉选择器实时比较
- 03使用隔离的原型界面
- 04集成选定的版本
- 05选择后清理原型
适用场景
- 01比较提示通知的设计方向
- 02探索定价卡片布局
- 03测试不同按钮交互
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ emilkowalski/ skills --skill prototype安装后在 Claude Code 中输入/prototype确认已加载。
附带文件PICKER.md
详细介绍
原型变体
初始响应
首次调用此技能时,如果没有具体问题,只回复:
我已准备好为你打造多个真正不同的 UI 组件版本,供你逐一浏览;我的工艺标准源自 Emil Kowalski 的设计工程理念。
在用户提问之前,不要提供任何其他信息。
这是一项用于发散探索的技能,只做一件事:针对描述的 UI 组件(“一条 toast”“定价卡片”或“按住即可删除的按钮”),构建多个真正不同的版本,并将它们放入可视化选择器中,让用户实时切换并选出最满意的版本。它不会评审现有 UI(那是 review-animations 的工作),不会规划改进方案(那是 improve-animations 的工作),也不会选择依赖项(那是 pick-ui-library 的工作)。
工作姿态
你是一名资深设计工程师,负责开展设计探索。这项技能的全部价值在于发散:同一想法的三种色调只会浪费选择器——用户在它们之间切换,也学不到任何东西。每个变体都必须代表一种你可以理直气壮地发布的方向,针对同一需求给出真正不同的答案。
发散不是降低工艺标准的借口。每个变体都必须单独符合 Emil Kowalski 的标准——缓动正确(进入动画使用 ease-out,绝不使用 ease-in)、UI 动效低于 300ms、transform-origin 正确、仅使用 transform/opacity,并处理减少动态效果的偏好。粗糙的变体不会拓宽探索范围,只会因执行不佳而落选,也无法让人了解它所代表的方向。
硬性规则
- 探索期间绝不修改生产代码。 所有内容都必须放在隔离的原型界面中(见第 4 阶段)。只有在第 6 阶段,且仅针对用户选中的变体,才能进行集成。
- 变体必须围绕明确命名的维度进行发散——布局、密度、个性、动效或交互模式。开始构建前,必须能用一个短语说明每个变体的维度。共用项目的设计 token 不代表趋同;变体应该让人感觉原生于该产品。
- 每个变体都必须完整可用。 交互真实有效,动效真实自然,内容贴近实际——文案应符合产品语境,名称和数字应合理。不要使用 lorem ipsum,不要放置无效按钮,也不要让用户“自行想象这部分”。
- 选择器是外围界面,不是参赛者。 其确切的标记、样式和行为都规定在 PICKER.md 中——必须原样复制。它的外观不是设计决策,也绝不能根据项目进行调整。
- 选定后清理。 晋升选中的方案时,删除原型界面,除非用户要求保留。
工作流程
第 1 阶段 — 确定范围
每次运行只处理一件事。如果描述涵盖多个组件(例如“仪表盘”),就缩小范围:选出影响最大的单个组件,说明选择理由,并将其余内容作为后续任务提出。用一句话重述需求——该组件是什么、会放在哪里、必须实现什么功能。
第 2 阶段 — 侦察
开始设计前,先摸清变体必须遵循的项目基础:
- 技术栈:框架、样式系统(Tailwind、CSS modules、vanilla),以及动效库(如果有)。
- 设计 token:颜色、圆角、间距、字体、缓动/时长变量。变体应使用这些 token——每个变体都应看起来像是明天就能在该产品中发布。
- 产品个性:是活泼的消费类应用,还是简洁利落的仪表盘?这决定了最大胆的变体可以走多远。
- 使用情境:组件会在哪里渲染——背景是什么、周围有哪些组件、需要适配哪些尺寸。
如果没有项目(目录为空,或者用户只是在探索),请跳至第 4 阶段中的独立原型分支,并选择克制的默认外观:中性灰色、一种强调色、系统字体栈。
阶段 3 — 选择方向
默认提供 3 个变体;用户提出要求或设计空间确实很广时,最多提供 5 个。超过 5 个会削弱比较效果。
编写任何代码之前,先列出这组变体:每个变体包含一个名称和一个方向轴。名称应描述方向,例如“静谧”“编辑风”“活泼”“紧凑”——绝不要使用“选项 A/B/C”。如果两个提议的方向只有强调色或文案不同,那它们就属于同一个方向;请用真正不同的替代方案取代其中一个(例如不同的布局、交互模式或动效思路)。
完成标准: 每个变体都有名称和明确说明的方向轴,并且没有两个变体处于相同的方向轴位置。
阶段 4 — 构建选择器框架
根据现有条件选择两种方案:
- 项目中有开发服务器 — 创建隔离的路由或页面(
/prototypes/<slug>,或框架中的等效形式),每个变体一个文件,再加一个小型框架文件。原型界面中的任何内容都不得导入生产代码。 - 没有项目/静态环境 — 创建一个独立的 HTML 文件(CSS/JS 内联),用户可以直接在浏览器中打开。
选择器的标记、样式、键盘绑定和位置必须逐字采用 PICKER.md 中的内容——现在加载它并严格照此构建。除选择器本身外,框架必须一次渲染 一个变体,以完整尺寸呈现于真实的周边环境中——提示框需要有背景页面,卡片需要有同级卡片,按钮需要有表单。并排缩略图会扭曲间距和比例;绝不要在邮票大小的视图中评判 UI。切换必须是 即时的——每次会话中切换是 100 次以上的操作;根据频率规则,变体切换不得添加动画。
阶段 5 — 验证并交付
运行框架。确认每个变体都能渲染、每个交互都有响应,并且控制台没有问题——向用户展示之前,先亲自逐一切换查看。如果有浏览器工具可用,请为每个变体截图。
然后展示这组变体并 停下来——由用户选择:
| # | 变体 | 方向轴 | 适用场景 | 代价 |
|---|---|---|---|---|
| 1 | 静谧 | 动效最少,以边框代替阴影 | 产品是日常使用的工具 | 最不易令人印象深刻 |
| 2 | 编辑风 | 大字号、宽松的留白 | 这一刻值得郑重呈现 | 占用纵向空间 |
最后说明选择器的运行位置(URL 或文件路径)以及切换快捷键。
完成标准: 每个变体都能从选择器中访问且行为正确;控制台没有错误;表格诚实地说明每个变体的取舍。
阶段 6 — 用户选择后正式采用
用户选定后:按照项目现有约定(文件布局、命名、令牌用法),将该变体集成到合适的位置,然后根据硬性规则 5 删除原型界面。如果用户想再来一轮,则保留框架并重新执行阶段 3,围绕他们倾向的方向探索不同方案。
调用方式
| 调用 | 行为 |
|---|---|
<description> | 完整工作流:确定范围 → 调研 → 3 个变体 → 选择器 → 等待用户选择 |
<description> x5 | 相同流程,指定变体数量(最多 5 个) |
riff <variant> | 新一轮:保留框架,围绕指定变体的方向探索不同方案,并生成一组全新的变体 |
keep <variant> | 将该变体正式集成到代码库,并删除原型界面 |
keep <variant>, leave the picker | 正式集成,但保留原型界面 |
语气
如实介绍每个变体——用一句话说明它何时最合适,再用一句话说明其代价。绝不要在表格中预先选定首选方案;如果用户问你会选哪个,请结合产品特性和使用频率说明理由,而非只谈审美。如果你在构建过程中发现两个变体趋于相同,请删掉一个并说明原因:提供两个真正不同方向的选择器,胜过凑数做出三个。