用途
animate 是 ui-craft 技能下的一个子技能(sub-skill),相当于该技能的一个“镜头”或视角。它专门负责动效设计环节:为界面添加有目的的动画,或者移除那些过度、缺乏意义的动画。它的核心目标是让动效服务于交互与信息传达,而不是单纯堆砌效果。
如果 ui-craft 主技能也已安装,建议先阅读其 SKILL.md 文件,了解 Discovery、Anti-Slop 和 Craft Test 流程,然后再应用本子技能的具体视角。
主要能力
- 决策阶梯(Decision Ladder):首先运行 references/motion.md 中的决策阶梯。任何未通过决策阶梯的动画会被直接移除,而不是尝试改进。
- 动画库选择:如果用户在 Discovery 阶段选择了某个动画技术栈,则读取 references/stack.md,使用对应章节(Motion、GSAP 或 Three.js)。禁止在同一属性上混用不同库。如果没有指定技术栈,则仅使用 CSS transitions、@keyframes 或 animation-timeline: view()。
- 动效预算控制:按照元素类型分配动画时长:颜色/不透明度 100-150ms;小型 UI(提示、下拉菜单)150-200ms;中型 UI(模态框、面板)200-300ms;大型 UI(页面过渡、抽屉)300-400ms。退出动画约为入场时长的 75%(更短,保持相同 ease-out,或使用更平缓的尾部曲线如 cubic-bezier(0.4, 0, 1, 1))。UI 中绝不使用 ease-in(详见 references/motion.md)。cubic-bezier(0.22, 1, 0.36, 1) 是安全的类弹簧默认值。
- 多阶段序列:如需多阶段编排,读取 ../examples/animation-storyboard.md。错开时间应在 30-80ms,而非 200ms。
- 动效强度调节(MOTION_INTENSITY):根据强度等级采用不同策略:
- ≤ 3:仅悬停状态,无入场动画,无滚动触发动画。
- 4-7:标准入场 + 悬停,每个区块最多一个滚动揭示。
- 8+:滚动联动、页面过渡、磁性光标可用(仍需尊重 reduced-motion 偏好)。
使用方式
使用时需提供目标参数($ARGUMENTS),并加载 ui-craft 技能。然后按步骤执行:先运行决策阶梯,再选择动画库,应用动效预算,处理多阶段序列,最后根据 MOTION_INTENSITY 调节。输出方式为直接编辑代码,并在每个文件后打印 Review Format 表格,标注任何被移除的动画及其原因。后续步骤可执行 /polish 命令,处理刚添加动效周围的复合细节。
适用场景与限制
该技能适用于需要为界面添加或修正动画的场景,尤其是当项目有明确动效强度设定或动画技术栈时。限制方面:需要依赖 ui-craft 主技能及其参考文件(references/motion.md、references/stack.md、../examples/animation-storyboard.md);动效策略受 MOTION_INTENSITY 参数约束;禁止在同一属性上混用动画库;具体支持的技术栈取决于 Discovery 阶段用户的选择。