mcpField
D
deconstruct

deconstruct

github.com/raphaelsalaja设计与 UI4741 次安装今天更新
代码仓库

关于 deconstruct

deconstruct 是用于拆解动画或交互的技能,面向需要还原和检查界面动效的开发者。它将状态、事件及逐属性时间轨道整理为可拖动查看的时间线,并要求与原始效果慢速对比。

主要功能

  1. 01记录状态及触发事件
  2. 02逐属性记录动画参数
  3. 03基于单一时钟驱动预览
  4. 04支持拖动、播放与暂停
  5. 05慢速并排比较原始效果
  6. 06导出 timeline.js 数据

适用场景

  1. 01还原页面动画的状态转换
  2. 02检查各属性的时长与缓动
  3. 03对比重建效果和录制原片
  4. 04将时间线数据交给重建项目

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/raphaelsalaja/skills --skill deconstruct

安装后在 Claude Code 中输入/deconstruct确认已加载。

附带文件agents/openai.yamlviewer.html

详细介绍

拆解

此技能会拆解动画或交互,为每个状态和事件命名,把每次状态转换拆分成每个属性各自的轨道,并将两者放在一个用户可以拖动时间轴的页面上。

逐帧记录

描述不靠感觉。每个状态都有名称,每次状态转换都有触发事件,每个动画属性都有起始值、目标值、延迟、时长和缓动。无法读取的值会标记为 Not verified,绝不估算。

读取计算后的值并排展示证据属于 match。强制组件状态展开属于 lab。打开结果属于 verify。判断动画值是否正确属于 motion。

1. 捕捉实际动画

打开源内容:代码、实时页面或录制视频。读取关键帧、过渡和弹簧配置,或者降低播放速度逐帧查看。只看一遍就完成拆解,属于 deconstruct-capture-the-source。

2. 为状态和事件命名

列出元素可以停留的状态,以及促使它们相互转换的事件,例如按下、松开、解析完成和超时。将它们写成包含状态、进入条件和离开条件的表格。像“它缩小,然后旋转”这样的描述属于 deconstruct-name-the-states。

3. 将每次状态转换拆分成轨道

为每个动画属性分别设置轨道:缩放、不透明度、模糊、宽度、颜色、图标和标签。每条轨道都列出起始值、目标值、延迟、时长和缓动。“大约 300ms”属于 deconstruct-every-property。

保持曲线与原始写法一致。弹簧仍然是弹簧,并保留其刚度、阻尼和质量,或其回弹和时长。把弹簧曲线硬套成猜测的贝塞尔曲线,属于 deconstruct-keep-the-curve。

4. 由同一个时钟驱动

将元素渲染为单个时间值的纯函数。这样,拖动时间轴、暂停和循环播放时,相同时间都会显示相同的帧。只能重放 CSS、无法在过渡中途停止的查看器属于 deconstruct-one-clock。

5. 构建查看器

将 viewer.html 复制到重建项目旁边,作为仅用于开发的页面;按照其头部注释所示的结构,在旁边编写 timeline.js,然后打开页面。页面会显示元素、状态机,以及每条轨道及其实时值。

此技能附带查看器,因此只需编写数据。自行编写标记或样式的页面属于 deconstruct-shipped-viewer。查看器会突出显示当前状态,点击某个状态即可跳转到该状态。保留时间轴拖动条、播放、暂停和 0.25× 速度功能。没有时间轴拖动条的时间轴属于 deconstruct-scrub-the-timeline。

6. 慢速对比

以 0.25× 速度并排播放原版和重建版本。将 recording 设为原版的录制视频,查看器便会在预览旁边按同一个时钟播放视频。记录每一处出现偏差的帧。只以全速检查的拆解属于 deconstruct-compare-slowed。

7. 交付数据

timeline.js 就是交付内容:状态表和轨道作为一个对象保存在其中。重建版本导入该文件,而不是使用副本,这样查看器和最终交付的动画就会读取相同的值。只存在于回复中的时间轴属于 deconstruct-timeline-as-data。发布前限制查看器仅在开发环境中使用,或将其删除,并保留 timeline.js。

配对

每项检查都是一组配对内容。错误的做法旁边就是替代它的做法。

规则错误做法替代做法
deconstruct-capture-the-source只看一遍后做出的拆解阅读代码,并以 0.1× 逐帧查看
deconstruct-name-the-states“它缩小,然后旋转”Idle、Pressed、Copying 和 Copied,以及对应的事件
deconstruct-every-property“约 300ms”缩放比例从 1 变为 0.96,持续 120ms,采用 ease-out,在 400ms 时触发
deconstruct-keep-the-curve将弹簧效果近似为 ease-out按原样使用 stiffness: 400, damping: 30
deconstruct-one-clock使用 CSS 重现的按钮根据同一个 t 计算每一帧
deconstruct-scrub-the-timeline仅提供循环预览提供时间轴拖动条、播放、暂停和 0.25×
deconstruct-shipped-viewer从头编写查看器页面复制 viewer.html,仅编写 timeline.js
deconstruct-compare-slowed仅以全速检查一次以 0.25× 并排比较原版与重建版本
deconstruct-timeline-as-data在回复中描述时间轴使用由重建版本导入的 timeline.js

报告

严重程度。 HIGH 表示未打开源文件就进行拆解,或缺少某个状态。MEDIUM 表示时间估算不准确、曲线被简化、查看器无法拖动时间轴,或查看器是手动编写的。LOW 表示以慢速发现并指出偏差。

格式。 每个根本原因列出一条发现:

file:line - [rule-id] what is wrong

然后提供 Rule | Count | Severity 汇总。只要仍有任何 HIGH,就标记为 Block;否则标记为 Approve。所有无法从源文件读取的值都标记为 Not verified。

评论

支持 Markdown