{
  "$schema": "https://bestaiskill.com/schemas/agent-install/2.json",
  "skill": "remotion-to-hyperframes",
  "built": "2026-10-26",
  "control_level": 4,
  "control_level_label": "L4 高权限",
  "capabilities": [
    "execute_command",
    "write_file"
  ],
  "required_controls": {
    "agent": [
      "sandbox_recommended",
      "graded_authorization"
    ],
    "admin": [
      "approval_process",
      "rollback_support",
      "full_audit"
    ]
  },
  "evidence": [
    {
      "file": "scripts/",
      "summary": "Executes local script or command: python3 scripts/lint_source.py <remotion-src> [--json] (statically analyzes text in scanned directory; does not execute scanned code)"
    },
    {
      "file": "本地工作目录",
      "summary": "File read/write & artifact output: Translation artifacts: hf-src/index.html (HF composition) and TRANSLATION_NOTES.md"
    }
  ],
  "verification": {
    "method": "第二遍独立重读 + 反查（换角度抓第一遍的错）：① 全量文件清单（含隐藏）核对：70 个文件，含 6 个隐藏项（assets/.gitkeep、assets/test-corpus/.gitignore、三个 tier 的 .gitignore、scripts/.gitkeep），与 skills-manifest.json 的 files=70 一致；构成 = 16 md + 6 sh + 10 json + 3 html + 6 ts + 22 tsx + 1 py + 6 无扩展名。② token 扫描（URL / fetch / process.env / child_process / writeFile / API_KEY|TOKEN|SECRET|.env|Bearer）：URL 27 处逐条归类——文档链接（github PR #214、hyperframes.heygen.com、gsap/fonts 等）、HF/Remotion 示例 HTML 的 gsap CDN（tier-1/2/3 的 hf-src/index.html 用 cdnjs 的 gsap 3.12.5）、以及测试 fixture 里的 example.com 端点；fetch 7 处全部位于 tier-4 escape-hatch 的 8 个 .tsx 用例与 scripts/tests/fixtures/*.tsx（lint 规则的**输入样本**，不执行）；凭证关键词 3 处全部是 validate.sh 读 SCRIPTS_DIR/THIS_DIR/EXPECTED 路径变量。③ 打开脚本验证执行面：lint_source.py 导入表仅标准库（argparse/json/re/sys/collections.abc/dataclasses/pathlib/typing），无 subprocess、无网络；render_diff.sh/frame_strip.sh 只调用 ffmpeg/ffprobe 与内嵌 python3；smoke.sh 用 mktemp 与 trap 清理。④ 数字类声明核对：lint_source.py 行数 370、frame_strip.sh 107、render_diff.sh 103、smoke.sh 90、test-corpus/run.sh 249——与 traits/internal_assets 中所述一致；SSIM 基线表（0.974/0.985/0.953/8-8）在 SKILL.md 原文。⑤ 功能声明 vs 实际能力：description 的『单向、仅 Remotion』与正文 NOT SUPPORTED 段（反向导出、非 Remotion 来源）一致；『mechanical for ~80%』与 lint 三级规则、escape-hatch 改荐路径一致，无夸大。⑥ 与同批 skill 对比：本 skill 是唯一自带可执行测试语料与量化阈值表的 workflow，也是唯一使用 Python 的（其余用 node/bash），已在 traits 记录。",
    "second_pass": [
      {
        "item": "是否真的零网络 / 零凭证（蓝档判定的关键）",
        "status": "ok",
        "detail": "脚本层 fetch/curl/wget/http.request 0 命中；process.env 命中仅 3 处且在 tier-4 的 validate.sh 里读路径变量；无 API_KEY/TOKEN/SECRET/.env/Bearer 命中。27 处 URL 全部可解释为文档链接、示例 HTML 资源或测试夹具端点。"
      },
      {
        "item": "测试夹具里的 fetch / example.com 是否会被执行（是否构成隐藏外发）",
        "status": "ok",
        "detail": "逐文件确认：tier-4 的 8 个 .tsx 与 scripts/tests/fixtures/*.tsx 只被 lint_source.py 以文本方式扫描（脚本无 subprocess/无 import 被扫描模块），run.sh 的 T4 分支只跑 lint 校验（'It runs T1, T2, T3 (render + diff) and T4 (lint validation)'）。不会被渲染或执行，因此不构成外发。"
      },
      {
        "item": "『外部资源』逐条回查调用点",
        "status": "ok",
        "detail": "npx remotion render 与 npx hyperframes render 在 SKILL.md Step 4 原文；ffmpeg/ffprobe 的存在性检查与调用在 render_diff.sh/frame_strip.sh 原文；python3 调用在 frame_strip.sh 原文；shader-transitions 与 lottie 适配器链接在 api-map.md/lottie.md 原文。无推测项。"
      },
      {
        "item": "lint 规则是否真能拦住它宣称拦的东西（blocker 是否只是文档口号）",
        "status": "ok",
        "detail": "lint_source.py 的 docstring 与 THIRD_PARTY_UI_PACKAGES 集合、rule id（r2hf/use-state、r2hf/use-effect-deps、r2hf/use-reducer、r2hf/async-metadata、r2hf/third-party-react-ui 等）在源码中真实存在，并配有 8 个 tier-4 用例与 validate.sh 断言（'8/8 pass' 基线）。规则实现与文档口径一致。"
      },
      {
        "item": "验证：SSIM 阈值基线表是否可在源码内复算",
        "status": "unlocatable",
        "detail": "SKILL.md 的基线表（T1 0.974、T2 0.985、T3 0.953、T4 8/8，日期 2026-04-27）是历史测量值；复算需要执行 Remotion 与 HF 两条渲染管线（本任务禁止构建/渲染，且环境未验证具备 Remotion）。故该表按『文档声明』记录，不在结论中当作已验证事实。"
      },
      {
        "item": "meta.official_desc 与 SKILL.md 原文的逐字比对（体检工具的 ⚠ 项）",
        "status": "ok",
        "detail": "本 skill 的 frontmatter 用 YAML 单引号风格书写：`description: 'Port an existing Remotion (React) composition''s source to …'`——文件里的两个连续单引号是 YAML 的转义语法，解析后的字符串值是带**一个**撇号的 `composition's`。本 JSON 的 meta.official_desc 记录的是解析后的真实描述文本（与 YAML 解析结果一致），因此对**原始文件字节**做朴素逐字比对时会出现一处不可避免的差异（源码里的 `composition''s` vs 记录值的 `composition's`）。这不是改写，也不影响展示层：如实记录为报告口径差异，而非内容出入。"
      }
    ],
    "level": 1,
    "level_label": "V1 已固定",
    "commit": "b8328f957368713d288900957eb5bee0dca31dd9",
    "sha256": "7dc73746cff19b969ec6866a88c20276a4bea107992ffcce9d57946dd5d5641c",
    "reviewed_by": null,
    "reviewed_at": null
  },
  "assessed_at": "2026-10-25",
  "method_version": "2.0",
  "mirror": {
    "archive": "https://skillpub.pages.dev/r2/v/2026-09-15/remotion-to-hyperframes.tar.gz",
    "sha256": "7dc73746cff19b969ec6866a88c20276a4bea107992ffcce9d57946dd5d5641c",
    "commit": "b8328f957368713d288900957eb5bee0dca31dd9"
  },
  "original": {
    "github": "https://github.com/heygen-com/hyperframes/tree/main/skills/remotion-to-hyperframes",
    "path": "skills/remotion-to-hyperframes",
    "commit": "b8328f957368713d288900957eb5bee0dca31dd9"
  }
}