1仕組みと動作原理
本体は 6KB に凝縮された GSAP チートシートであり、API サーフェス別(Tween メソッド → vars の主要オプション → transform エイリアス → イージング → defaults → 再生制御 → matchMedia → Timeline → パフォーマンス → リファレンスファイル)に構成され、エージェントが HyperFrames コンポジションを作成する際にその場で参照できるようになっています。
GSAP animation reference for HyperFrames. Covers gsap.to(), from(), fromTo(), easing, stagger, defaults, timelines (gsap.timeline(), position parameter, labels, nesting, playback), and performance (transforms, will-change, quickTo).
「規約」によってエージェントの落とし穴を未然に防止:camelCase のプロパティ名を強制し、transform 文字列の連結ではなくエイリアスを優先、opacity ではなく autoAlpha を優先させます。
Always use **camelCase** property names (e.g. `backgroundColor`, `rotationX`). … - **autoAlpha** — prefer over `opacity`. At 0: also sets `visibility: hidden`.
Timeline を推奨オーケストレーション手段として位置付け、位置パラメータの4つの記述方法(絶対値、`+=`/`-=` 相対値、ラベル、`<`/`>` アライメント)を提示します。
- **Alignment**: `"<"` — same start as previous; `">"` — after previous ends; `"<0.2"` — 0.2s after previous starts
パフォーマンス章の基準は「コンポジタ上に留める」こと:x/y/scale/rotation/opacity のみを動かし、レイアウトプロパティの変更を回避。will-change は実際に動く要素のみに付与し、高頻度な更新には quickTo を使用。複数 tween ではなく stagger を活用し、不要になったらクリーンアップします。
Animating `x`, `y`, `scale`, `rotation`, `opacity` stays on the compositor. Avoid `width`, `height`, `top`, `left` when transforms achieve the same effect.
アクセシビリティとレスポンシブ対応は gsap.matchMedia() で処理:条件不一致時に自動 revert され、コード例では prefers-reduced-motion と直接連携しています。
Runs setup only when a media query matches; auto-reverts when it stops matching. … reduceMotion: "(prefers-reduced-motion: reduce)",
references/effects.md では 2 つの即時利用可能なエフェクト(タイプライター、オーディオビジュアライザ)を提供し、すべての効果が HyperFrames の決定論的ルールに準拠することを徹底しています。
All effects follow HyperFrames composition rules — deterministic, no randomness, timelines registered via `window.__timelines`.
音声をフレーム単位の可視化データに変換する Python スクリプトを付属:ffmpeg でモノラル 44.1kHz サンプルにデコードし、numpy で RMS と対数周波数帯域の FFT を実行、コンポジションに直接埋め込み可能な JSON を出力します。
Outputs JSON with RMS amplitude and frequency band data at the target FPS, ready to embed in a HyperFrames composition. … cmd = [ "ffmpeg", "-i", path, "-vn", "-ac", "1", "-ar", str(SAMPLE_RATE), "-f", "s16le", "-acodec", "pcm_s16le", "-loglevel", "error", "pipe:1", ] … result = subprocess.run(cmd, capture_output=True)
2コア機能
3外部依存関係
| Kind | Dependency / Endpoint |
|---|---|
| package | GSAP 3.14.2(随仓库 npm ci 安装;上游来自 heygen-com/hyperframes 技能生态) |
| network | cdn.jsdelivr.net(**产物期**:effects.md 给出的示例片段在生成的 HTML 里用 script 标签引 [email protected] 与 TextPlugin;执行 skill 时并不外发) |
| cli | ffmpeg(extract-audio-data.py 用它解码音频为 s16le 管道) |
| package | numpy(脚本内 FFT/RMS 计算,需 pip 安装) |
| cli | Python 3.9+(跑 extract-audio-data.py) |
4推奨統制措置と判定根拠
- scripts/: ローカルスクリプトまたはコマンドの実行: python3 .claude/skills/gsap/scripts/extract-audio-data.py <audio-or-video>
- 网络端点: 外部ネットワークアクセスの宣言: 成果物フェーズ(評価対象外):references/effects.md のサンプルコードが生成されるコンポジション HTML 内で cdn.jsdelivr.net を参照
- 本地工作目录: ファイル読み書きおよび成果物出力: audio-data.json(-o/--output で指定、デフォルトはカレントディレクトリに出力;フレームごとの rms + bands 数値データ)
5二重目の独立検証
- [ok] 文件清单与类型 — SKILL.md(6.4KB 文档)、references/effects.md(8.8KB 文档)、scripts/extract-audio-data.py(6.5KB 脚本)、NOTICE.txt(228B 声明);无隐藏文件、无 node_modules、无二进制资产。
- [ok] 网络外发反例搜索 — 目录内 3 条 http 命中:effects.md 两行 jsdelivr script 标签(产物期示例)与 NOTICE.txt 的 https://github.com/heygen-com/hyperframes(出处链接)。fetch( 命中位于『**Do NOT use async `fetch()` to load audio data.**』这句告诫中,非调用。
- [ok] 凭证面反例搜索 — 0 处 env/API_KEY/TOKEN/SECRET 命中;Python 脚本 import 仅 argparse/json/subprocess/sys/numpy。
- [ok] description 覆盖度核对 — 描述里点名的每一项都能在正文定位到专节:Core Tween Methods / Common vars(stagger、defaults)/ Easing / Timelines(position parameter、labels、nesting、playback)/ Performance(transforms、will-change、quickTo)。无夸大。
- [ok] 脚本产物与用法核对 — main() 用 argparse 提供 input/-o/--fps/--bands,默认 audio-data.json、30fps、16 段;输出结构含 duration/fps/bands/totalFrames/frames[{time,rms,bands[]}],与 effects.md 里展示的 JSON 结构一致。
- [ok] 上游归属与许可 — NOTICE.txt 声明来源 heygen-com/hyperframes(Apache-2.0),并注明 student-kit 只做 runtime-relative 路径与可移植打包;与仓库 skills-lock.json 中 gsap 条目指向的 source 一致。
6結論
68a50bcbc9292840…