1仕組みと動作原理
全編を通じた実行の主軸は「段階的開示(プログレッシブ・リビール)」:一度に1つの情報ビートのみを進め、開示順序を nodes → edges → labels に固定し、「フォーカス+コンテキスト」(アクティブ要素は完全不透明、残りは約0.35まで減光)を組み合わせて閲覧者の混乱を防ぐ。
Never show everything at once. Reveal in this order: **nodes → edges → labels**.
線描画系のアニメーションは stroke-dashoffset メカニズムに統一し、pathLength="1" を使って幾何学的な長さを 0→1 の進捗値に正規化することで、同一の dash パラメータで任意の長さのエッジを制御可能にする。
`pathLength="1"` lets one dash value drive any edge length.
チャートアニメーションには3つの最小実行可能実装を提供:ベースラインからの scaleY によるバー伸長、getTotalLength + transition による折れ線描画、rAF + easeOutCubic 補間および Intl.NumberFormat 桁区切りによる数値カウントアップ。
| Count-up | interpolate value with eased `t` | `easeOutCubic` |
納品物は階層別にトラック分け:自己完結型チャート = 単一ファイル HTML(インライン SVG + CDN ライブラリ + メインタイムライン用インライン script 1本)。ヘッドレススクリーンショットで確定的描画を捉えられるよう、ページは ?t=N による停止をサポート必須とする。
if (t !== null) { tl.pause(); tl.seek(parseFloat(t)); }
検証ループ = start / mid / end の3時点でヘッドレススクリーンショットを撮影し、目視で2点を確認:忠実性(開示順序、接続先の終点、カウントアップが正確な値に着地しているか)と不具合アーティファクト(ラベルの途切れ、画面外ノード、フォントの FOUC、継ぎ目のカクつき)。
count-ups land on the EXACT values
reduced-motion は機能縮小アニメーションではなく最終状態ブランチを提供:ループ系アニメーションは即座に animation:none とし、合成済みの最終フレームを表示する。
`prefers-reduced-motion` path shows the final composed diagram without looping motion.
2コア機能
3外部依存関係
| Kind | Dependency / Endpoint |
|---|---|
| cli | npx / Playwright(无头截图) |
| cli | ffmpeg(contact-sheet.sh 拼图) |
| cli | npx -y playwright(仓库根 seek-shot.sh 内部) |
| network | jsDelivr CDN:gsap ESM(交付物在浏览器端加载) |
| package | 第三方动画/图表库:GSAP、Framer Motion、D3、anime、Remotion(自 CDN 或 npm 引入) |
4推奨統制措置と判定根拠
- scripts/: ローカルスクリプトまたはコマンドの実行: npx playwright screenshot --wait-for-timeout=500 …(SKILL.md Verify loop 内のインラインコマンド)
- 网络端点: 外部ネットワークアクセスの宣言: スキル自体に業務 API 呼び出しはない。ネットワーク面はツールチェーンに起因する——npx が registry.npmjs.org から playwright パッケージを取得し、Chromium バイナリをダウンロードする
- 本地工作目录: ファイル I/O と成果物出力: frame-mid.png(SKILL.md 内のインラインスクリーンショット出力例)、frame-<t>.png(seek-shot.sh の出力)
5二重目の独立検証
- [ok] 外部依赖调用点复核(npx playwright / ffmpeg / CDN) — SKILL.md Verify loop 内确有 `npx playwright screenshot --wait-for-timeout=500 "file://$PWD/diagram.html?t=1.2" frame-mid.png`;仓库根 scripts/seek-shot.sh 同为 npx playwright 截图、scripts/contact-sheet.sh 为 ffmpeg hstack;SKILL.md 顶部代码块确有 cdn.jsdelivr.net 的 gsap ESM import。三条均落地,非推测。
- [ok] 无凭证 / 无 env / 无业务 API 反查 — skill 两个文档与三个仓库脚本中无 API_KEY/token/secret/.env 读取、无 curl/wget、无 fetch 到业务端点;唯一远程动作是包管理器与 CDN 静态资源。判 orange 的依据只是「远程包/镜像」,不含凭据读取。
- [ok] 目录资产面清点 — skills/diagram-animation/ 下仅 SKILL.md(163 行)、references/ 一份 218 行 cookbook、0 字节 README.md;无 scripts/、无模板、无数据文件——「纯指令 + 内联代码片段」结论成立。
- [discrepancy] 跨引用可解析性 — SKILL.md 有两处引用落在本 skill 目录外:`scripts/seek-shot.sh`/`scripts/contact-sheet.sh` 位于仓库根(单装本 skill 目录会悬空,需装整个 repo);`see remotion-video` 指向的 remotion-video 不在本 repo 的 5 个 skill 中(属同作者 motion-design-skills pack),同样悬空。同 repo 内的 whiteboard → explainer-video 引用可解析。
- [ok] 功能声明 vs 实际能力 — frontmatter 宣称覆盖 SVG / Framer Motion / D3 / Remotion 四栈,正文 Build-tool choice 逐栈给出适用判据,reference 给出对应可运行实现(Framer Motion pathLength、D3 数据绑定、Remotion spring/interpolate);无夸大,也未声称能自动出图或代跑渲染。
- [ok] 「确定性」主张的成立条件 — 成立范围有明确边界:GSAP/JS 主时间轴的 ?t 冻结与 Remotion 帧驱动路径可逐帧确定;而 CSS keyframes/transition 分支本身不可 seek,SKILL.md 明确要求「drive reveal order with `animationDelay`; freeze by pausing/seeking the equivalent JS timeline」并给出 prefers-reduced-motion 终态——主张非无条件承诺。
6結論
e196243bfb566372…