{
  "slug": "pixel-blocks-motion",
  "skill": "pixel-blocks-motion",
  "upstream": "chessunyan/renoise-motion-skills@dc14835d302d8157bedceff7edd3785993202836",
  "upstreamSha": "dc14835d302d8157bedceff7edd3785993202836",
  "patches": {
    "count": 27,
    "sha256": "8f6c698a6ddf612e1fef8c335a3f065f88505f3c6092e279f322f86d6de99aa4"
  },
  "date": "2026-11-03",
  "engine": "Node + ffmpeg (the skill's own render.mjs, no browser)",
  "env": [
    "Node v22.23.4",
    "ffmpeg 7 with libx264 and libmp3lame; Python 3 + Pillow for the checks",
    "Noto Sans CJK (SIL OFL 1.1) for the glyph tables and the baker check",
    "the author's tomato mascot, chiptune track and Hiragino glyph tables are excluded and replaced by GameSkill's own"
  ],
  "trigger": "static",
  "passed": 37,
  "total": 37,
  "commands": [
    "(cd examples && python3 tests/run_tests.py)",
    "(cd examples && python3 tests/run_tests.py --shot ../screenshot.png)"
  ],
  "checks": [
    {
      "criterion": "trigger",
      "name": "SKILL.md description says when to use it",
      "pass": true,
      "detail": "Make pixel-art motion graphics in the Pixel Blocks style (deep navy pixel grid, four arcade inks, words and charts built"
    },
    {
      "criterion": "trigger",
      "name": "triggers on: \"Make a pixel 8-bit launch intro for my arcade game as an MP4\"",
      "pass": true,
      "detail": "rank 1/126, overlap 6"
    },
    {
      "criterion": "trigger",
      "name": "triggers on: \"Pixel-art level-up animation with chiptune sound effects, made with code\"",
      "pass": true,
      "detail": "rank 1/126, overlap 8"
    },
    {
      "criterion": "trigger",
      "name": "triggers on: \"Animate a pixel data chart year-in-review in retro-game style\"",
      "pass": true,
      "detail": "rank 1/126, overlap 7"
    },
    {
      "criterion": "trigger",
      "name": "does not trigger on: \"Set up multiplayer netcode in Godot\"",
      "pass": true,
      "detail": "rank 29/126, overlap 0"
    },
    {
      "criterion": "trigger",
      "name": "does not trigger on: \"Balance the damage formula of my RPG\"",
      "pass": true,
      "detail": "rank 6/126, overlap 0"
    },
    {
      "criterion": "runs",
      "name": "carve-outs, replacements, upstream examples and Lantern Run rendered: no chiptune-120bpm.mp3, no Hiragino glyph tables, no watermark in the skill folder",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "carve-outs, replacements, upstream examples and Lantern Run rendered: pixel.mjs has the lantern hero and no tomato sprite or TOMATO_INKS",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "carve-outs, replacements, upstream examples and Lantern Run rendered: no file outside THIRD_PARTY notes names the tomato or 番茄 any more",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "carve-outs, replacements, upstream examples and Lantern Run rendered: cjk-12",
      "pass": true,
      "detail": "baked from NotoSansCJK-Regular.ttc, 60 glyphs, 12 rows each, none blank"
    },
    {
      "criterion": "runs",
      "name": "carve-outs, replacements, upstream examples and Lantern Run rendered: cjk-16",
      "pass": true,
      "detail": "baked from NotoSansCJK-Regular.ttc, 60 glyphs, 16 rows each, none blank"
    },
    {
      "criterion": "runs",
      "name": "carve-outs, replacements, upstream examples and Lantern Run rendered: cjk-title",
      "pass": true,
      "detail": "baked from NotoSansCJK-Bold.ttc, 8 glyphs, 16 rows each, none blank"
    },
    {
      "criterion": "runs",
      "name": "carve-outs, replacements, upstream examples and Lantern Run rendered: glyphs are centred in the cell, not cut off (bottom row inked in 0/128)",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "carve-outs, replacements, upstream examples and Lantern Run rendered: every CJK character the examples draw is in a GameSkill table",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "carve-outs, replacements, upstream examples and Lantern Run rendered: GameSkill chiptune",
      "pass": true,
      "detail": "24 s mp3 (covers music.from 0, 8 and 16 plus an 8 s scene)"
    },
    {
      "criterion": "runs",
      "name": "carve-outs, replacements, upstream examples and Lantern Run rendered: make-chiptune.mjs regenerates the track deterministically",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "carve-outs, replacements, upstream examples and Lantern Run rendered: the track has no silent gap longer than 0.3 s",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "carve-outs, replacements, upstream examples and Lantern Run rendered: launch-intro",
      "pass": true,
      "detail": "renders an 8 s MP4 with video + mixed audio (music from 0 s)"
    },
    {
      "criterion": "runs",
      "name": "carve-outs, replacements, upstream examples and Lantern Run rendered: data-story",
      "pass": true,
      "detail": "renders an 8 s MP4 with video + mixed audio (music from 8 s)"
    },
    {
      "criterion": "runs",
      "name": "carve-outs, replacements, upstream examples and Lantern Run rendered: level-up",
      "pass": true,
      "detail": "renders an 8 s MP4 with video + mixed audio (music from 16 s)"
    },
    {
      "criterion": "runs",
      "name": "carve-outs, replacements, upstream examples and Lantern Run rendered: reel",
      "pass": true,
      "detail": "launch intro + data story back to back, 16 s with continuous music"
    },
    {
      "criterion": "runs",
      "name": "carve-outs, replacements, upstream examples and Lantern Run rendered: launch-intro stills",
      "pass": true,
      "detail": "no tomato colours anywhere, hero lemon present, under 40 colours (no AA)"
    },
    {
      "criterion": "runs",
      "name": "carve-outs, replacements, upstream examples and Lantern Run rendered: probe still at 0.25 s is not empty (INSERT COIN blink + grid boot) and scaled ×6 to 1920x1080",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "carve-outs, replacements, upstream examples and Lantern Run rendered: lantern-run",
      "pass": true,
      "detail": "probe stills + contact sheet"
    },
    {
      "criterion": "runs",
      "name": "carve-outs, replacements, upstream examples and Lantern Run rendered: lantern-run",
      "pass": true,
      "detail": "the same still renders byte-identical twice (pure function of t)"
    },
    {
      "criterion": "runs",
      "name": "carve-outs, replacements, upstream examples and Lantern Run rendered: lantern-run last frame reads",
      "pass": true,
      "detail": "PRESS START lit, full LANTERN RUN title, lantern on the floor"
    },
    {
      "criterion": "runs",
      "name": "carve-outs, replacements, upstream examples and Lantern Run rendered: lantern-run flash at beat 12 inverts the frame (navy ground becomes light)",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "carve-outs, replacements, upstream examples and Lantern Run rendered: lantern-run",
      "pass": true,
      "detail": "8 s MP4 with GameSkill music + chip SFX"
    },
    {
      "criterion": "runs",
      "name": "carve-outs, replacements, upstream examples and Lantern Run rendered: mix is normalised near -14 LUFS (within 2 LU)",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "carve-outs, replacements, upstream examples and Lantern Run rendered: lantern-run",
      "pass": true,
      "detail": "silent GIF at ×2 (640x360), many frames"
    },
    {
      "criterion": "runs",
      "name": "carve-outs, replacements, upstream examples and Lantern Run rendered: bake-glyphs.py bakes new characters from Noto Sans CJK",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "carve-outs, replacements, upstream examples and Lantern Run rendered: 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: short pixel-art motion graphics drawn by code and rendered to video. Single illustrations and sprites go to codixel or pxl."
    },
    {
      "criterion": "bilingual",
      "name": "English SKILL.md from upstream",
      "pass": true
    },
    {
      "criterion": "bilingual",
      "name": "Chinese guide written",
      "pass": true,
      "detail": "1456 chars"
    }
  ]
}
