emilkowalski/skills是一个面向 AI 编程助手的「设计工程师技能库(Skills for Design Engineers)」,它把多年 UI 设计经验、动画原则、交互细节整理成 AI Agent 可以直接调用的知识模块,让 AI 在写界面时不仅会“生成代码”,还更懂“什么样的界面有质感”。
以前让AI写个登录框,它三秒钟就能丢给你一个能用的页面。但那个页面用起来,就像和一个没有感情的人握手,程序上全对,感觉上全错。现在,这个emilkowalski/skills的GitHub仓库,专门治这个毛病:它把一个设计工程师十几年的经验,打包成一个AI能看懂的外挂。装上之后,AI再写界面,脑子里就会多一根弦,开始琢磨按钮按下去是硬着陆还是软着陆,页面切换是像坐跳楼机还是像翻书。
它真正作用是:搜索您的用户界面,找出真正适合添加动画效果的地方,同时也要告诉您哪些地方不应该添加动画效果。
安装的不是代码是设计脑回路
这个项目的核心,是一个叫SKILL.md的文件。它不是什么复杂的算法,更像是一本写给AI看的《设计师的自我修养》。
打开这个文件,里面全是这种大白话指令:按钮被点中的时候要微微缩一下,像一个有弹性的东西被按下去。弹窗出来的时候不能太生硬,要带一点缓动效果,像抽屉被轻轻拉开。页面切换最好用transition而不是animation,因为用户可能会中途变卦,得让动画能随时掉头。
这些指令听起来很简单,但它们恰恰是AI之前完全缺失的一块拼图。AI知道按钮的HTML结构,知道怎么绑定点击事件,但它不知道按下去的瞬间,用户的手指和屏幕之间需要一场微妙的对话。有了这个skill文件,AI就像被注入了肌肉记忆,写代码之前会先过一遍脑子里的那本手册。
以前让AI写页面,它关注的是功能是否完整。现在让AI写页面,它开始关心用户的心理活动。这种转变不靠更聪明的模型,靠的是给模型配一个专业顾问。这个顾问不说话,只是静静躺在skill文件里,但AI每次生成代码都会翻翻它的建议。
点一下按钮的世界从此不同
这个仓库里有一个核心技能叫emil-design-eng,专门解决交互反馈的问题。它举了一个很经典的例子:两个登录按钮,一个点击后页面立刻跳转,反应快到有点吓人;另一个在点击的瞬间,按钮会缩小到原来的97%,像是被手指轻轻压了一下,然后页面再跳转。
两个按钮的代码就差一行,但给人的感觉天差地别。第一个按钮像个暴躁的机器,只管执行指令。第二个按钮像个有礼貌的侍者,告诉你它收到了你的请求。用户说不清哪里好,但会觉得第二个软件“用起来很顺手”。这种顺手的感觉,就是设计质量的来源。
这个skill文件里专门有一条规则:按钮必须添加点击缩放效果,这是最低成本的即时反馈。它不是在限制AI,而是在教AI一种同理心。让AI明白,用户每一次点击,都是在向系统投递信任,系统得用一点微小的动静回应这份信任。否则用户就会陷入焦虑,开始不停地点,然后抱怨软件卡。
一个好的界面,就是让用户在每个操作节点上都感觉被确认。这个确认不需要弹窗,不需要文字提示,有时候一个像素级的缩放就够了。这个原理懂的人很多,但能坚持写成规则让AI去执行的,这个仓库是头一个。
动画里的大学问完全反常识
大多数人写动画,喜欢用keyframes,也就是定义好从A点到B点的完整路线。这个思路很直观,像拍电影一样,剧本写好就按部就班演。但厉害的设计师更偏爱CSS transition,也就是状态之间的平滑过渡。为什么呢?因为用户的操作是不按剧本来的。
比如一个面板正在滑出,用户突然想取消,又点了一下按钮。用keyframes写的动画,会先硬生生停住,然后从头开始播放进入动画,看起来像抽风一样。而transition写的动画,能感知到面板现在正滑到一半,它会优雅地从当前位置掉头,回到初始状态。这中间的差距,就是专业和业余的分水岭。
用户可能永远说不出“transition”和“keyframes”的区别,但他会感受到这个软件很懂他,反应很自然。那些让他感觉有点别扭的软件,多半就是在这些细节上偷了懒。这个skill文件把这类经验也写进去了,明确告诉AI:在复杂的交互场景下,优先使用transition。这不是代码偏好问题,这是对人的行为习惯的尊重。
一个技能包等于十年工作经验
普通程序员写表单,脑子里想的是输入框、提交按钮、数据校验。一个有十年经验的产品老手写表单,脑子里想的是:错误提示要出现在输入框下方还是右侧,输入节奏是否被打断,按钮在加载时要不要禁用,移动端的手指头能不能轻松点中。
这两种人写出来的东西,一个是工具,一个是作品。区别就在于后者心里装着一本厚厚的“边界情况手册”。AI现在的问题就是,它读完了所有编程书,唯独没读过这本手册。而emilkowalski/skills干的事,就是把这本手册做成标准化的文件,挂到AI的腰带上。
这个技能包里的每一条规则,都对应着一个具体的痛点。比如加一点缩放是为了确认感,用transition是为了流畅感,考虑加载状态是为了安全感。这些规则组合在一起,就像给AI穿上了设计师的鞋,让它开始站在用户的角度思考问题。虽然AI没有感情,但它可以模拟有感情的人会怎么设计。
未来的程序员更像导演
以前我们衡量AI编程助手的能力,只看它能不能跑通代码。现在技能包这个概念一出来,标准变了。能力等于模型加技能加工具链。模型是演员,技能是剧本,人是导演。模型负责演得真,技能负责演得对,人负责喊卡和重来。
这个转变非常有意思。简单生成代码的能力会越来越不值钱,因为模型本身就在进化。但把专业经验写成技能包的能力,会变得很贵。因为经验这东西,模型从代码里学不到,代码只教它逻辑,不教它品味。
这个仓库相当于开源了一套优质的经验包,让所有人都能免费给AI装上设计脑。独立开发者不用再花大价钱请设计师调界面,直接用这个技能包,AI就能给出七八十分的方案。那些特别好的设计,剩下的分数,是留给有独特审美和商业洞察的人的。但基础的分,这个包给补上了。
这个外挂怎么装进你的AI
装这个东西简单到离谱。在命令行里敲一行代码,npx skills add加上仓库地址,指定要安装emil-design-eng这个技能就完事了。然后你常用的AI编程工具,像Cursor或者Claude Code,就能感知到这个技能的存在。
下次你再让它写页面,它输出的代码就会自带那些微交互。你会看到按钮多了个active状态,弹窗多了个transition,列表多了个loading骨架屏。它写的还是React或者HTML,但灵魂已经变了。它开始主动解释为什么要加这行样式,而不是只会说“这是你要的按钮”。
这个安装动作,相当于给你的AI助手报了个设计速成班。学费不贵,就一行命令,但学到的全是实打实的干活经验。以后它写出来的东西,不会再让你觉得是外包给一个没感情的码农做的了。
真正值钱的是判断力不是代码行数
现在很多人都说AI会取代程序员,其实恰恰相反,AI会让低水平的重复劳动消失,但会让高水平的判断力更值钱。一个按钮颜色、一个阴影大小、一个动画速度,这些东西都可以问AI。但问完之后呢?什么时候该选择保守方案,什么时候该大胆创新,什么情况下干脆不要动画保持极简,这些决策模型做不了,得人来拍板。
这个仓库的存在,就是在帮AI提前过滤掉那些低级的判断。它把基础的、公认的、经过验证的设计原则固化下来,让AI在起飞前就绑好安全带。这样人就可以把精力放在更高级的问题上,比如这个产品的气质是什么,目标人群的偏好是什么。
所以这个项目的最大贡献,不是写了几行漂亮的代码,而是定义了一种知识传递的格式。它证明了一件事:经验是可以被结构化的,品味是可以被编码的。当这种技能包越来越多,AI就不再是一个只会执行命令的机器,而是一个受过良好教育的实习生。它懂规矩,知进退,就差你给它指明方向了。
总结一下,这个GitHub仓库给AI装上了设计脑,让代码从能用变好用。以后写界面,AI负责懂规矩,人负责定品味,分工明确。别再让你的按钮像块木头了。