{
  "$schema": "https://bestaiskill.com/schemas/agent-install/2.json",
  "skill": "video-hyperframes",
  "built": "2026-10-26",
  "control_level": 1,
  "control_level_label": "L1 基础",
  "capabilities": [],
  "required_controls": {
    "agent": [
      "auto_load"
    ],
    "admin": [
      "register_source_and_version"
    ]
  },
  "evidence": [
    {
      "file": "SKILL.md",
      "summary": "Pure prompt directives and rule text, devoid of script execution or external impact"
    }
  ],
  "verification": {
    "method": "第二遍独立重读 + 反查（换角度抓第一遍的错）：① 对 9 个模板目录逐个 find，核对资产面（每个目录仅 SKILL.md + example.html[/example.md]，无 scripts/references/模板/数据文件）；② 逐目录 grep 'https?://' 与 '<script'，把端点与脚本执行面钉到具体文件行；③ 沿调用链反查宿主是否真消费模板约定：next/src/lib/templates/loader.ts（扫盘 + frontmatter 解析）、next/src/lib/templates/shared.ts（assemblePrompt 与全局指令）、next/src/app/api/convert/route.ts（body → prompt）、next/src/app/api/templates/[id]/preview/route.ts（example.html 直出）、cli/src/skills-matcher.ts（关键词直配）、next/src/lib/deck.ts 与 next/src/lib/hyperframes.ts（section 约定解析）、next/src/components/export-menu.tsx（导出动作）；④ 功能声明 vs 示例实现逐条对表：凡正文要求而示例未实现者（如 vfx 的逐字揭示、weekly-update 的 hash 同步、video-hyperframes 的行内 frame 标记、soft 的 button-in-button、wireframe 的字体名与 CLI 强信号行）一律标 discrepancy，不硬写为 ok；⑤ 元数据核对：本地 git HEAD == 553ed98c283f（== 任务 pin），git remote 为 github.com/nexu-io/html-anything，GitHub API 取 stars/license/pushed_at。步骤 ④ 的结果即下方 second_pass 的 discrepancy 项。",
    "second_pass": [
      {
        "item": "skill 目录文件清单",
        "status": "ok",
        "detail": "find 得 SKILL.md + example.html + example.md，无 scripts/references。"
      },
      {
        "item": "外部端点只出现在示例/元数据",
        "status": "ok",
        "detail": "SKILL.md 正文无 URL；URL 分别位于 frontmatter example_source_url 与示例的 Tailwind CDN / Google Fonts。"
      },
      {
        "item": "HYPERFRAMES_META 是否真实存在",
        "status": "ok",
        "detail": "example.html 含 <!-- HYPERFRAMES_META: {\"frames\":[ … ]} --> 共 8 条（i/duration/transition/scene），与示例 8 个 section.frame 一一对应。"
      },
      {
        "item": "行内 frame 标记是否在示例中",
        "status": "discrepancy",
        "detail": "grep 'frame:' example.html = 0 命中；SKILL.md 要求的 `<!-- frame:N duration:3000 transition:fade -->` 在示例中未出现，时长改由 data-duration 承载。宿主解析器 parseInlineMarker + 兜底注释表明两条路径都被支持，故为约定演示缺口而非能力缺口。"
      },
      {
        "item": "宿主是否真消费该约定",
        "status": "ok",
        "detail": "next/src/lib/hyperframes.ts 存在 FRAME_RE/META_RE/parseInlineMarker 实现（注释「Pull duration / transition out of the inline …marker the skill plants at the bottom of each section」）；export-menu.tsx 提供 hyperframes-remotion-zip 动作；e2e/ui/export-menu.test.ts 以 templateId \"video-hyperframes\" 造样本。"
      },
      {
        "item": "CLI 匹配器路由",
        "status": "ok",
        "detail": "cli/src/skills-matcher.ts 存在 [[\"视频\", \"video\", \"帧动画\", \"hyperframes\", \"remotion\", \"mp4\", \"片头\"], \"video-hyperframes\"] 行。"
      },
      {
        "item": "判级 green 自证",
        "status": "ok",
        "detail": "目录零脚本文件（示例内联 JS 属产物示例）、零凭证、零写盘；正文只规定 HTML 结构与注释标记，未点名运行时接口 → green。"
      },
      {
        "item": "official_desc 逐字",
        "status": "ok",
        "detail": "meta.official_desc 取自 frontmatter description 原文「Hyperframes / Remotion 兼容的连续帧动画, 可自动播放」。"
      }
    ],
    "level": 1,
    "level_label": "V1 已固定",
    "commit": "553ed98c283f9c0f489902d035416a972d6a9699",
    "sha256": "f8c23c688123a19b6e24995a52b69a9e1028dbaa16a247b15141b223ed8c7e0d",
    "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/video-hyperframes.tar.gz",
    "sha256": "f8c23c688123a19b6e24995a52b69a9e1028dbaa16a247b15141b223ed8c7e0d",
    "commit": "553ed98c283f9c0f489902d035416a972d6a9699"
  },
  "original": {
    "github": "https://github.com/nexu-io/html-anything/tree/main/next/src/lib/templates/skills/video-hyperframes",
    "path": "next/src/lib/templates/skills/video-hyperframes",
    "commit": "553ed98c283f9c0f489902d035416a972d6a9699"
  }
}