让 Codex 做出一版像样的 UI 并不难,麻烦的是每次换一个新任务,很多设计要求又得重新写一遍。
emil-design-eng。emil-design-eng 封装了一套设计工程规则emil-design-eng 来自
emilkowalski/skills,是仓库中的主 Skill。它主要覆盖动画,同时包含 UI 打磨、组件设计和交互细节等设计工程经验,帮助 Agent 在做 UI 时复用这套判断规则。scale(0.97) 提供即时反馈;浮层进入时避免使用迟缓的
ease-in,优先采用
ease-out 缓出曲线;下拉浮层从触发控件对应的位置展开,模态框则保持中心变换原点。npx skills@latest add emilkowalski/skills。这次只测试
emil-design-eng,所以我们采用了定向安装:npx skills add https://github.com/emilkowalski/skills --skill "emil-design-eng"
emil-design-eng 位于当前项目的
.agents/skills/emil-design-eng/ 目录。重新打开项目,Codex 已能够正常识别和调用
$emil-design-eng。为了减少其他 Skill 干扰,测试前我们关闭了已有的 81 个 Skill,实验过程中也没有额外指定其他 Plugin、App 或 MCP。
emil-design-eng 项目级安装并成功识别emil-design-eng,只让 Codex 根据默认判断实现,Prompt 内容如下:请在当前项目的 00-default 目录中,创建一个可以直接在本地运行的 AI Prompt Playground 单页前端。页面需要包含 Model Selector、Prompt 输入框、Generate、Output / JSON Tabs、Copy、Tooltip、Toast、Settings Modal、Loading,以及 Light / Dark Mode。所有功能只使用本地 Mock Data,不调用真实 API;页面必须可以实际交互。根据你自己的默认设计判断完成 UI 和交互,不调用任何第三方自定义 Skill,也不参考额外设计规范。

emil-design-eng 会继续调整哪些交互细节。00-default 原样复制为
01-emil,再调用
$emil-design-eng 做一次只读审查。这一轮没有提供按钮缩放比例、缓动曲线或标签页动画等具体规则,让 Skill 自己检查现有实现。| 默认实现 | Skill 修改建议 |
| 过渡没有明确指定属性 | 只对需要变化的属性做动画,并统一缓动曲线 |
| 按钮按压反馈不一致 | 可按压控件增加 scale(0.97–0.98) 反馈 |
| 模态框关闭直接隐藏 | 增加可中断退场,结束后再隐藏 |
| 空状态 / 加载状态 / 结果状态硬切 | 使用短暂交叉淡化与轻微模糊衔接 |
| 鼠标与键盘切换标签页共用动画 | 鼠标保留短过渡,键盘立即反馈 |
基于刚才的 emil-design-eng Review,请进入第一轮优化。本轮只修改 01-emil,不得修改 00-default。只处理 5 项:明确 Transition 属性与 Easing、统一 Press Feedback、改善 Settings Modal 退场、改善 Empty → Loading → Result 状态切换,以及让 Output / JSON Tabs 对鼠标和键盘采用不同的动画策略。不新增产品功能,不重新设计页面,也不要为了执行 Skill 而增加当前页面并不存在的使用场景。
styles.css 和
app.js,页面结构、HTML 和 README 均保持不变。静态截图差异不大,主要变化集中在按压反馈、状态切换和动画时序。scale(0.97–0.98) 的短促反馈,禁用态不再执行缩放。Ctrl/Cmd + Enter 时则直接切换。
emptyState.hidden = true,但原有样式
.empty-state { display: flex; } 覆盖了
hidden 的默认隐藏效果,导致旧状态没有退出页面。hidden 属性的旧状态彻底隐藏:.result-area > [hidden] {
display: none;
}
emil-design-eng 对完整 UI 设计的影响,我们增加了一轮从零生成测试。功能需求保持一致,同时要求它不参考
00-default 和
01-emil,直接重新创建一套 Prompt Playground。
emil-design-eng 在独立生成时会主动采用哪些设计规则。scale(0.97) 提供即时反馈,多数日常 UI 动画控制在 300ms 内。scale(0) 开始。生成、加载和结果状态则通过轻微位移、透明度和模糊效果衔接,减少内容切换时的跳变。prefers-reduced-motion)。emil-design-eng 主要影响 UI 的交互方式、动效节奏和组件反馈,并没有限定一套固定的视觉风格。emil-design-eng 补充的是动画节奏、按压反馈、浮层展开和键盘交互等设计规则,省掉了每次重新写一遍这些要求的麻烦。emilkowalski/skills 里还有哪些 Skill?emil-design-eng,仓库里还提供了一组围绕 UI、动效和设计工程的 Skill:animate:从零设计一段动画,帮助选择合适的缓动曲线、时长和动画属性。review-animations:按照 Emil 的动效规则审查已有动画实现。improve-animations:扫描代码中的动画问题,并整理成可执行的优化方案。find-animation-opportunities:寻找真正值得加入动效的位置,同时指出哪些地方不应该加动画。animation-vocabulary:补充动画相关术语,方便更准确地告诉 Agent 想要什么效果。apple-design:将 Apple 在 WWDC 中介绍的界面设计与流畅动效原则整理成适用于 Web 的规则。pick-ui-library:根据任务选择合适的 UI 库,减少 Agent 自己重复造组件。prototype:针对一个 UI 需求生成多个不同方案,并通过切换器快速比较。ask-sonner:围绕 Emil 的 Toast 库 Sonner,提供安装、样式、使用方案和常见问题处理。review-animations
**、*
*
improve-animations
和
find-animation-opportunities 与本文的实践衔接最直接。它们分别对应“审查现有动效”“系统优化动效”和“寻找值得加入动效的位置”。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70050060/viewspace-3183912/ ,如需转载,请注明出处,否则将追究法律责任。