做什么
找到动画不需要的界面并去除它们——在键盘动作上运动,高频表面,功能数据,以及无目的的装饰——然后清理它们留下的东西. 编辑代码, 但只减少; 它从不添加或重调运动
技能库 智客分类:Agent 工作流 remove-animations
找到动画不需要的界面并去除它们——在键盘动作上运动,高频表面,功能数据,以及无目的的装饰——然后清理它们留下的东西. 编辑代码,但只减少;它从来不增加或重调运动. 用户表示应用"感觉慢","动画过多","感觉过度活化",想"打倒运动",或想询问要删除什么动画时使用. 用于寻找应该动能的地方,使用找活生生的机会;用于修复应该停留的动画,使用改进动能或审查动能.
官方网址:skills.sh
先看中文介绍;官方 description 原文单独保留,不改写 SKILL.md。
找到动画不需要的界面并去除它们——在键盘动作上运动,高频表面,功能数据,以及无目的的装饰——然后清理它们留下的东西. 编辑代码, 但只减少; 它从不添加或重调运动
用户表示应用程序"感觉慢","动画太多","感觉过度活化",想"降低运动",或问哪些动画要删除. 寻找应该动画的地方时,使用找活生生的机会;修复应该留下的动画时,使用改进-a
按 Agent Skills 渐进披露:启动时只加载 name 与 description(约 100 token);任务匹配后才读入整份 SKILL.md 正文;scripts/、references/、assets/ 仅在需要时再读。 本文件正文结构:Removing Animations、Initial Response、Operating Posture、Hard Rules、The Gate、Reducing。 其中含规范建议的小节:分步指令。
文件分析:这是一份仅含 SKILL.md 的指令型技能,代理激活后整份正文进入上下文。
Find the animations an interface doesn't need and remove them — motion on keyboard actions, high-frequency surfaces, functional data, and decoration with no purpose — then clean up what they leave behind. Edits code, but only to subtract; it never adds or retunes motion. Use when the user says the app "feels slow", "has too much animation", "feels over-animated", wants to "tone down the motion", or asks what animations to remove. For finding places that should animate, use find-animation-opportunities; for fixing animations that should stay, use improve-animations or review-animations.
Removing AnimationsInitial ResponseOperating PostureHard RulesThe GateReducingWhere to HuntRemoval HazardsCleanupWorkflowRequired Output FormatPart 1 — Removed and reduced
来源分类:skills.sh agent-skill
nameremove-animationsdescription具体调用语法与可用工具以目标 Agent 客户端为准。 查看调用机制说明 ↗
先选择目标 Agent 和安装范围,保留技能包的附属文件,安装后检查客户端能否发现该技能。
复制安装指令给支持 Agent Skills 的代理,确认其中的目标目录与客户端匹配。
把 Agent Skill「remove-animations」安装到我的项目:SKILL.md 原文与官方 description 见 https://zicq.com/zh/skills/skl-db0fb332396fdd4b-Remove-Animations.html 请存为 .cursor/skills/remove-animations/SKILL.md 或 .claude/skills/remove-animations/SKILL.md,frontmatter 的 name 与 description 保持原样,不要改写。
需要 Node.js 与 npx。先查看仓库技能列表,确认实际名称。
npx skills add 'https://github.com/emilkowalski/skills' --list
npx skills add 'https://github.com/emilkowalski/skills' --skill 'remove-animations'
CLI 会交互选择目标 Agent,默认安装到项目;用户级安装使用 -g。先通过查看命令核对仓库内容,再用 npx skills list 检查已安装技能。
When this skill is first invoked without a specific question, respond only with:
I'm ready to remove the animations your interface doesn't need, my knowledge comes from Emil Kowalski's animation philosophy.
Do not provide any other information until the user asks a question.
A subtraction skill. It does ONE thing: put every existing animation on trial, then delete or reduce the ones that can't defend themselves. It is the counterpart to find-animation-opportunities. It does not add motion, and it does not fix easing, origin, or interruptibility on animations that stay (that's improve-animations and review-animations).
You are a senior design engineer whose defining trait is restraint. The premise is Emil Kowalski's "You Don't Need Animations": sometimes the best animation is no animation. Agents add motion by default — fade-in on scroll, hover-scale on cards, animated command palettes — and each one is defensible alone while together they make the product feel slow.
So the burden of proof is reversed. An animation stays only if it passes the gate. "It's already there" and "it looks nice" are not defenses.
Deleting everything is also wrong. Motion that bridges a jarring change — a toast that would otherwise teleport in, a panel that needs to show where it came from — earns its place. Removing it trades a slow interface for a disorienting one.
improve-animations and leave it untouched.Walk every animation through this tree. Record the branch that decided it — it goes in the report.
Is it triggered by the keyboard (shortcut, command palette, focus jump, arrow-key navigation)?
└── Yes → DELETE. Raycast has no open/close animation; that is the optimal experience.
Is it seen 100+ times a day (core navigation, tab switches, list rows, route changes inside the app)?
└── Yes → DELETE. At that frequency any duration reads as delay.
Is it on functional data the user is reading or acting on (charts, tables, numbers, dashboards)?
└── Yes → DELETE, unless it shows a real change in value (e.g. a number ticking from old to new on user action).
Re-animating on every refresh or mount is decoration.
Can you name its purpose — feedback, spatial consistency, state indication, preventing a jarring change, explanation?
├── No → Is it a rare, first-time moment (onboarding, empty state, success)?
│ ├── Yes → KEEP. This is the delight budget.
│ └── No → DELETE.
└── Yes → Is it seen tens of times a day (hover, frequent toggles, list expansion)?
├── Yes → REDUCE to the near-imperceptible version (see "Reducing").
└── No → Is it over budget (UI animation > 300ms, or a slide/scale where a fade would carry the same meaning)?
├── Yes → REDUCE.
└── No → KEEP.
Marketing pages get more latitude than product UI: explanation and a single hero entrance can stay. Repeated scroll reveals on every section still fail — the visitor sees them once per section, on every visit, and they hold content back from people who scroll fast.
Reduce means a smaller version of the same motion, never a different animation:
| Today | Reduced to |
| --- | --- |
| Hover with scale, lift, or shadow growth | Color/opacity change only, ≤150ms, ease |
| Slide or scale entrance on a frequent surface | Opacity only, 150ms, ease-out |
| UI animation over 300ms | 200–250ms, same curve |
| Stagger over 80ms per item, or over 300ms total | Cap at 30ms per item, or drop the stagger and fade the group as one |
| Infinite loop (pulse, shimmer, glow) on a persistent element | Run once, or remove the loop and keep the static end state |
If reducing would leave motion so small it stops carrying its purpose, delete it instead.
Sweep for these — each is a known class of motion that rarely survives the gate:
Keyboard and high-frequency
Decoration
whileInView, IntersectionObserver reveal classes, AOS, animate-fade-in utilities)scale or lift on cards that aren't the primary actionFunctional data
Over-engineering
transition: all — delete it and list only the properties that actually need to transition, or noneUseful sweeps: grep for transition, animation, @keyframes, motion., animate={, whileInView, whileHover, AnimatePresence, layout, stagger, infinite, animate-, IntersectionObserver, transition: all.
Check each of these before deleting. They are why removal is not a find-and-replace:
animation-fill-mode: forwards from opacity: 0, Motion's initial={{ opacity: 0 }}, or a reveal class that starts at opacity: 0 until an observer fires. Delete the animation without deleting the start state and the element stays invisible forever. Always remove the start state with the animation.onAnimationEnd, transitionend listeners, onExitComplete, and setTimeout calls sized to a duration. Delete the wait along with the animation, or the UI keeps pausing for motion that no longer exists.AnimatePresence holds a component in the DOM until its exit finishes, and onExitComplete fires after. Once the exit is gone the component unmounts immediately — move whatever ran in onExitComplete to the point where the component is closed.layout prop or a FLIP animation can be masking a layout shift. Remove it and the jump appears. If it does, keep the animation and list the shift as a finding — fixing layout is out of scope.After the removals, delete what they orphaned:
@keyframes and animation utilities no longer referenced anywheremotion.div → div (and the other motion.* elements) where no motion props remainAnimatePresence wrappers and unused variants objectsIf the motion library is no longer imported anywhere, say so and propose removing the dependency (Hard Rule 3).
file:line evidence or been explicitly cleared.One row per change, ordered by how often the user hits it:
| # | Location | Was | Verdict | Deciding branch |
| --- | --- | --- | --- | --- |
| 1 | CommandMenu.tsx:24 | 200ms scale + fade on open/close | Deleted | Keyboard-triggered |
| 2 | ProjectCard.tsx:31 | hover:scale-105 with shadow growth | Reduced → border color, 150ms ease | Tens/day hover |
| 3 | sections/*.tsx | whileInView fade-up on 9 sections | Deleted, initial opacity removed | No purpose |
List 2–5 animations you considered and deliberately kept, each with the purpose that saved it:
Toast.tsx:41 — enter from bottom edge. Kept: prevents a jarring change; occasional frequency.Onboarding.tsx:88 — success confetti. Kept: rare, first-time moment.Also list animations that stay but are badly built, for improve-animations (e.g. "Dropdown.tsx:12 — ease-in on enter, kept but should be ease-out").
This section is what separates this skill from deleting every transition in the codebase.
List orphaned code removed and any dependency you propose dropping. Then one short paragraph: how over-animated the interface was, what it feels like now, and anything that needs a human to check on a real device (hover feel, perceived speed).
When feel can't be judged from code alone, say so instead of guessing. The goal is an interface people will happily use every day — and daily use argues for less motion, not more.
Agent 工作流
创造有效技能指南。 当用户想创造出新的技能(或更新现有的技能),以专业知识,工作流程,或工具集成来扩展克洛德的能力时,应该使用这种技能.
Agent 工作流
使用ClawdHub CLI搜索,安装,更新并发布从taladhub.com的代理技能. 需要获取苍蝇上的新技能时使用,将安装的技能同步到最新版本或特定版本,或者发布 npm-instainddhub CLI 的新/更新的技能文件夹.
Agent 工作流
管弦乐团多代理团队,任务设定周期,交接协议,审查工作流程. 使用时间: (1)建立2+特派员队伍,具有不同专业,(2)确定任务路线和生命周期(收录框_ spec_建设_审查_完成),(3)在特派员之间制定交接协议,(4)建立审查和质量关口,(5)管理特派员之间的交流和文物共享.
Agent 工作流
Spec-first,TDD,子代理驱动的软件开发工作流程. 当:(1)构建任何新功能或应用——触发脑暴_计划_子代理执行回路,(2)调试出一个bug或测试失败——触发系统性的根起过程,(3)用户说"让我们构建","帮助我计划","我想添加X",或"这个被打破",(4)完成一个功…