{
  "slug": "video-to-game",
  "skill": "video-to-game",
  "upstream": "lovisdotio/video-to-game@d1a24fd8a47576ec4b3c36388b30deda0631def9",
  "upstreamSha": "d1a24fd8a47576ec4b3c36388b30deda0631def9",
  "patches": {
    "count": 2,
    "sha256": "2f9f154de55cd5f74082bc58c5a81177183b621864f95679b449eaeb048adfd8"
  },
  "date": "2026-11-03",
  "engine": "video-to-game scripts (Python 3, ffmpeg, Node 22) + three.js r160 in headless Chrome",
  "env": [
    "Node v22.23.4",
    "Our 12 s concept clip rendered in code (numpy + Pillow + ffmpeg), not a video model",
    "three@0.160.0 and playwright-core 1.62.0 from npm, Google Chrome headless",
    "No FAL_KEY: assets made in code, as the GameSkill note in SKILL.md says"
  ],
  "trigger": "static",
  "passed": 42,
  "total": 42,
  "commands": [
    "(cd examples && python3 tests/run_tests.py)",
    "(cd examples && python3 tests/screenshot.py ../screenshot.png)"
  ],
  "checks": [
    {
      "criterion": "trigger",
      "name": "SKILL.md description says when to use it",
      "pass": true,
      "detail": "Turns a gameplay video (generated by a video model such as MiniMax H3 Max or Seedance, or any clip) into a real, playabl"
    },
    {
      "criterion": "trigger",
      "name": "triggers on: \"Turn this AI gameplay video into a playable Three.js browser game\"",
      "pass": true,
      "detail": "rank 1/121, overlap 6"
    },
    {
      "criterion": "trigger",
      "name": "triggers on: \"I generated a gameplay clip with a video model, make it a real playable WebGL game\"",
      "pass": true,
      "detail": "rank 1/121, overlap 8"
    },
    {
      "criterion": "trigger",
      "name": "triggers on: \"Make my game concept video playable in the browser and prove it with a recorded playtest\"",
      "pass": true,
      "detail": "rank 1/121, overlap 6"
    },
    {
      "criterion": "trigger",
      "name": "does not trigger on: \"Set up Steam achievements for my Unity game\"",
      "pass": true,
      "detail": "rank 7/121, overlap 1"
    },
    {
      "criterion": "trigger",
      "name": "does not trigger on: \"Write a level design document for my puzzle game\"",
      "pass": true,
      "detail": "rank 42/121, overlap 0"
    },
    {
      "criterion": "runs",
      "name": "Lantern Glide: study, build, contract, playtest, best window, side-by-side: concept clip rendered in code (no video model, no existing game)",
      "pass": true,
      "detail": "12.0 s"
    },
    {
      "criterion": "runs",
      "name": "Lantern Glide: study, build, contract, playtest, best window, side-by-side: study_video.py",
      "pass": true,
      "detail": "a frame every 0.25 s, the contact sheet, palette and cuts: 640x360 24.0 fps 12.0 s, 48 frames, 0 cuts, palette #252839 #172229 #1d2433 #2b2842 #322d44 #373248 #191a35 #211e3a #785947 #956549"
    },
    {
      "criterion": "runs",
      "name": "Lantern Glide: study, build, contract, playtest, best window, side-by-side: the clip is one take (no cuts found)",
      "pass": true,
      "detail": "[]"
    },
    {
      "criterion": "runs",
      "name": "Lantern Glide: study, build, contract, playtest, best window, side-by-side: PALETTE.sky is a colour study_video.py measured",
      "pass": true,
      "detail": "#191a35, nearest at distance 0.0"
    },
    {
      "criterion": "runs",
      "name": "Lantern Glide: study, build, contract, playtest, best window, side-by-side: PALETTE.haze is a colour study_video.py measured",
      "pass": true,
      "detail": "#322d44, nearest at distance 0.0"
    },
    {
      "criterion": "runs",
      "name": "Lantern Glide: study, build, contract, playtest, best window, side-by-side: PALETTE.ground is a colour study_video.py measured",
      "pass": true,
      "detail": "#172229, nearest at distance 0.0"
    },
    {
      "criterion": "runs",
      "name": "Lantern Glide: study, build, contract, playtest, best window, side-by-side: PALETTE.hill is a colour study_video.py measured",
      "pass": true,
      "detail": "#2b2842, nearest at distance 0.0"
    },
    {
      "criterion": "runs",
      "name": "Lantern Glide: study, build, contract, playtest, best window, side-by-side: the warm lights keep the clip's orange hue",
      "pass": true,
      "detail": "clip warm ['#785947', '#956549'], game hues [29, 34]"
    },
    {
      "criterion": "runs",
      "name": "Lantern Glide: study, build, contract, playtest, best window, side-by-side: without ?autostart the game waits on its title",
      "pass": true,
      "detail": "title"
    },
    {
      "criterion": "runs",
      "name": "Lantern Glide: study, build, contract, playtest, best window, side-by-side: no text on screen beyond a title and one controls line",
      "pass": true,
      "detail": "[\"Lantern Glide\",\"← → steer onto the warm vents · Enter to fly\"]"
    },
    {
      "criterion": "runs",
      "name": "Lantern Glide: study, build, contract, playtest, best window, side-by-side: window.__game.state has the contract fields",
      "pass": true,
      "detail": "phase, x, y, z, alt, speed, grounded, t, score, lifts, inVent, nextVent, vents, seed, layout"
    },
    {
      "criterion": "runs",
      "name": "Lantern Glide: study, build, contract, playtest, best window, side-by-side: ?autostart starts flying at once",
      "pass": true,
      "detail": "t 1.55 s, z -14.0 m"
    },
    {
      "criterion": "runs",
      "name": "Lantern Glide: study, build, contract, playtest, best window, side-by-side: the same ?seed builds the same valley twice",
      "pass": true,
      "detail": "8 vents"
    },
    {
      "criterion": "runs",
      "name": "Lantern Glide: study, build, contract, playtest, best window, side-by-side: another seed builds another valley",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "Lantern Glide: study, build, contract, playtest, best window, side-by-side: zero console errors on load",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "Lantern Glide: study, build, contract, playtest, best window, side-by-side: contract checks ran",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "Lantern Glide: study, build, contract, playtest, best window, side-by-side: record_play.mjs films the keyboard playtest",
      "pass": true,
      "detail": "take.mp4: 833 frames, 13.9 s, 60.1 fps, 0 console errors"
    },
    {
      "criterion": "runs",
      "name": "Lantern Glide: study, build, contract, playtest, best window, side-by-side: the take is the full length",
      "pass": true,
      "detail": "13.9 s"
    },
    {
      "criterion": "runs",
      "name": "Lantern Glide: study, build, contract, playtest, best window, side-by-side: zero console errors during the take",
      "pass": true,
      "detail": "0"
    },
    {
      "criterion": "runs",
      "name": "Lantern Glide: study, build, contract, playtest, best window, side-by-side: frame rate while filming",
      "pass": true,
      "detail": "60.1 fps (headless Chrome on the test box)"
    },
    {
      "criterion": "runs",
      "name": "Lantern Glide: study, build, contract, playtest, best window, side-by-side: play.mjs flies the lantern through the gate",
      "pass": true,
      "detail": "won at z -110 m in 12.2 s"
    },
    {
      "criterion": "runs",
      "name": "Lantern Glide: study, build, contract, playtest, best window, side-by-side: never comes down (no fall)",
      "pass": true,
      "detail": "lowest 3.1 m"
    },
    {
      "criterion": "runs",
      "name": "Lantern Glide: study, build, contract, playtest, best window, side-by-side: the mechanic is played",
      "pass": true,
      "detail": "warm air caught again and again: 8 of 8 vents"
    },
    {
      "criterion": "runs",
      "name": "Lantern Glide: study, build, contract, playtest, best window, side-by-side: lights collected on the way (the score goes up)",
      "pass": true,
      "detail": "4 lights"
    },
    {
      "criterion": "runs",
      "name": "Lantern Glide: study, build, contract, playtest, best window, side-by-side: no dead second",
      "pass": true,
      "detail": "the lantern moves in every sample: 96 samples"
    },
    {
      "criterion": "runs",
      "name": "Lantern Glide: study, build, contract, playtest, best window, side-by-side: best_window.py finds and cuts the liveliest 4 s",
      "pass": true,
      "detail": "1.75 s ->   5.75 s   score 0.0649"
    },
    {
      "criterion": "runs",
      "name": "Lantern Glide: study, build, contract, playtest, best window, side-by-side: side_by_side.py",
      "pass": true,
      "detail": "three pairs at the same three times: pair_002.00.jpg, pair_006.30.jpg, pair_009.00.jpg"
    },
    {
      "criterion": "runs",
      "name": "Lantern Glide: study, build, contract, playtest, best window, side-by-side: pair_002.00.jpg",
      "pass": true,
      "detail": "the game frame reads like the clip frame: brightness 51 vs 43, warm light 9% vs 7%"
    },
    {
      "criterion": "runs",
      "name": "Lantern Glide: study, build, contract, playtest, best window, side-by-side: pair_006.30.jpg",
      "pass": true,
      "detail": "the game frame reads like the clip frame: brightness 51 vs 35, warm light 7% vs 4%"
    },
    {
      "criterion": "runs",
      "name": "Lantern Glide: study, build, contract, playtest, best window, side-by-side: pair_009.00.jpg",
      "pass": true,
      "detail": "the game frame reads like the clip frame: brightness 50 vs 34, warm light 8% vs 4%"
    },
    {
      "criterion": "runs",
      "name": "Lantern Glide: study, build, contract, playtest, best window, side-by-side: exits 0 with no script errors",
      "pass": true,
      "detail": "exit 0"
    },
    {
      "criterion": "output",
      "name": "screenshot screenshot.png rendered",
      "pass": true
    },
    {
      "criterion": "output",
      "name": "self-check list has at least 3 items",
      "pass": true,
      "detail": "6 items"
    },
    {
      "criterion": "single",
      "name": "one job per skill (reviewed)",
      "pass": true,
      "detail": "One job: a short gameplay video becomes one playable Three.js game, matched to the video's look and proven with side-by-side pairs and a recorded keyboard playtest. Engine games (Unity, Unreal, Godot) and trailers are left to other skills."
    },
    {
      "criterion": "bilingual",
      "name": "English SKILL.md from upstream",
      "pass": true
    },
    {
      "criterion": "bilingual",
      "name": "Chinese guide written",
      "pass": true,
      "detail": "1967 chars"
    }
  ]
}
