📌 项目地址emilkowalski/skills | ⭐ 23,297 颗星 | 📜 未标注

一个反常识的项目:AI不缺代码能力,缺的是品味

如果你用过AI生成UI界面,大概率遇到过这种情况:代码能跑、组件齐全、功能完整,但看起来就是”差点意思”。说不清哪里不对,但和Vercel、Linear这类产品的界面放在一起,差距一目了然。

emilkowalski/skills就是来解决这个问题的。它不是一个代码库,而是一组结构化的”技能包”(SKILL.md文件),通过npx命令安装到你的AI Agent环境中,让Agent在执行任务时遵循一套设计工程规范。

项目的核心理念直接写在了README里:Agents don’t have great taste(AI Agent没有好品味)。作者Emil Kowalski曾在Vercel和Linear工作多年,他把自己在动画和UI设计上的经验,沉淀成了Agent可以理解和执行的规则。比如一个进入动画应该用ease-out而不是ease-in,UI边框应该用半透明阴影而不是实线——这些人类设计师凭本能判断的细节,正是AI最容易出错的地方。

值得注意的是,作者在README中反复强调:”AI doesn’t replace such expertise, it amplifies what you can get out of it”——AI不取代人类的领域专长,它放大专长的价值。这个项目致敬的不是用AI替代设计师,而是让懂设计的人用AI做出更好的东西。

实际用法:一条命令安装,八个技能可选

安装方式非常简单,在终端运行:

npx skills@latest add emilkowalski/skills

这条命令会把项目中的技能文件安装到当前环境中。安装后,你会获得8个可用的技能(Skill),每个技能对应特定的任务场景。从README中可以看到完整列表:

  • emil-design-eng — 主技能,涵盖大部分动画建议和部分设计建议
  • review-animations — 基于作者的设计规则,严格审查你的动画实现
  • improve-animations — 审计代码库中的所有动画,生成按优先级排序、可独立执行的修改计划
  • find-animation-opportunities — 搜索你的UI中真正适合添加动效的位置,同时告诉你什么不该动
  • animation-vocabulary — 教你用准确的词汇向AI描述想要的动画效果,从而获得更精确的产出
  • apple-design — 将苹果WWDC设计讲座中的界面设计与流畅动效原则提炼出来,转化为适用于Web的规则
  • pick-ui-library — 根据具体任务,让Agent从作者信任的库中挑选合适的工具,而不是随机安装一个过时的包或手搓一个toast组件
  • prototype — 针对你描述的一个UI模块,生成多个不同版本,通过切换器逐一查看对比

使用方式上,这些技能应该与支持SKILL.md的AI Agent工具配合工作,比如Claude Code或其他兼容环境。你需要告诉Agent使用哪个技能,然后Agent会加载对应的SKILL.md文件,按照其中的规则来执行任务。

review-animations为例:你让AI审查你当前的动画实现,它会严格按照作者的规范来检查,比如缓动函数是否用对了、动效时长是否符合预期、是否违背了减少动态效果的偏好设置。这种审查不是泛泛而谈的”建议优化”,而是有明确判断标准的规则化检查。

真正值得关注的设计观点

这个项目最有价值的部分,不是代码,而是作者在SKILL.md中渗透的设计哲学。README中提到了几个非常具体的观点:

缓动函数的选择是有讲究的。 进入动画应该用ease-out而非ease-in。作者在他的文章中解释过:元素进入屏幕时,应该快速启动然后缓慢减速,这符合物理世界的惯性感知;反过来用ease-in,元素会慢慢启动再加速,给人的感觉是笨重和延迟。

字体渲染的细节。 半透明阴影往往比实线边框更适合现代UI。实线边框是静态的、生硬的,而半透明阴影能营造层次感和深度——这种”小事情”的积累,最终决定了界面是精良还是粗糙。

不要什么都加动画。 find-animation-opportunities这个技能明确包括”telling you what not to animate”——告诉你不应该动画化什么。克制是设计中很难通过代码评审来传达的部分,但可以固化为规则。

这些观点不一定100%适用于所有场景,但它们是来自一线产品公司的实战经验,比泛泛的”设计规范”要具体得多。

局限性与适用边界

需要明确的是,这个项目不是独立运行的软件,而是嵌入在AI Agent工作流中的指令集。它需要配合支持SKILL.md的Agent环境使用,且Agent本身要能理解并遵循这些规则。所以要用好它,你仍需要有一定的前端基础,能判断Agent的输出是否合理。

另外,设计经验本身有主观性。作者在高品质科技产品界面上的经验,未必适用于所有类型的产品——比如数据密集型后台管理系统,或者面向特定文化市场的消费级应用。这些技能的定位是”帮助你更接近正确决策”,而非”保证一定正确”。

最后是粒度问题。improve-animations这样的技能是面向整个代码库的,对于小项目可能有些大材小用;而prototype则更适合在动手写代码前探索多种方案。选择哪个技能,取决于你当前所处的阶段。

如果你正在用AI做UI,这值得一试

这个项目的思路很聪明:它不给AI提供通用的设计理论,而是把具体的、可验证的规则装进Agent的”工具箱”。对于已经在用AI辅助前端开发的人来说,它提供了一种让产出更接近Vercel/Linear质感的方式。如果你还停留在”让AI生成代码”的阶段,这个项目会让你意识到——AI的上限,是由使用者的专业度决定的。

官方还在持续更新这些技能,可以订阅newsletter获取最新动态。

这篇文章对你有帮助吗?

发表回复