{
  "checker": {
    "claims": [
      {
        "claim": "The README install command installs the motion design skills into the project",
        "command": "npx -y skills add iart-ai/motion-design-skills -y --agent claude-code",
        "evidence": "Installed 9 skills \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u256e\n\u2502                                             \u2502\n\u2502  \u2713 after-effects (copied)                   \u2502\n\u2502    \u2192 ./.claude/skills/after-effects         \u2502\n\u2502  \u2713 animation-principles (copied)            \u2502\n\u2502    \u2192 ./.claude/skills/animation-principles  \u2502\n\u2502  \u2713 beat-sync-editing (copied)               \u2502\n\u2502    \u2192 ./.claude/skills/beat-sync-editing     \u2502\n\u2502  \u2713 color-motion (copied)                    \u2502\n\u2502    \u2192 ./.claude/skills/color-motion          \u2502\n\u2502  \u2713 logo-animation (copied)                  \u2502\n\u2502    \u2192 ./.claude/skills/logo-animation        \u2502\n\u2502  \u2713 motion-art-direction (",
        "expected": "Installer reports 9 skills installed",
        "input": "npx skills add iart-ai/motion-design-skills -y --agent claude-code, run in an empty project directory outside the checkout",
        "kind": "claim",
        "outcome": "Real input produced the expected result: Installed 9 skills",
        "returncode": 0,
        "source": "npx skills add iart-ai/motion-design-skills",
        "source_checked": true,
        "source_file": "README.md",
        "verdict": "yes"
      }
    ],
    "cycle_checks": [
      {
        "claim": "Scheduled or looping main behavior",
        "command": "",
        "evidence": "Entry points inspected: README.md, scripts/README.md, scripts/seek-shot.sh, scripts/contact-sheet.sh, scripts/probe-mp4.sh, .claude-plugin/plugin.json. No cron, scheduler, daemon, --once/--now, webhook or loop trigger in product code; the only matches for loop/watch are animation content inside skill markdown. The scripts are one-shot tools run by the agent.",
        "expected": "identify the product trigger",
        "input": "source inspection",
        "kind": "cycle",
        "outcome": "Entry points inspected: README.md, scripts/README.md, scripts/seek-shot.sh, scripts/contact-sheet.sh, scripts/probe-mp4.sh, .claude-plugin/plugin.json. No cron, scheduler, daemon, --once/--now, webhook or loop trigger in product code; the only matches for loop/watch are animation content inside skill markdown. The scripts are one-shot tools run by the agent.",
        "source": "repository entry points",
        "verdict": "yes"
      }
    ],
    "details": {
      "argv": [
        "scripts/probe-mp4.sh",
        "/tmp/motion-testdata/short.mp4",
        "1080x1920",
        "30"
      ],
      "kind": "cli",
      "needs_browser": false,
      "needs_credentials": false,
      "returncode": 0,
      "scope": "product operation",
      "stderr": "",
      "stdout": "  short.mp4: 1080x1920  h264  30 fps  2.00s\n  \u2713 spec OK",
      "working": true
    },
    "evidence_strength": "readme_checked",
    "example_checks": [
      {
        "claim": "Contact sheet tiles start, mid and end frames side-by-side for one-glance review",
        "command": "scripts/contact-sheet.sh /tmp/motion-out/examples/sheet.png /tmp/motion-testdata/frame-0.png /tmp/motion-testdata/frame-1.png /tmp/motion-testdata/frame-2.png",
        "deferred": false,
        "evidence": "\u2713 contact sheet (3 frame(s)) \u2192 /tmp/motion-out/examples/sheet.png",
        "expected": "sheet.png written with 3 frames",
        "input": "3 PNG frames from /tmp/motion-testdata tiled into one sheet",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "scripts/README.md",
        "verdict": "yes"
      },
      {
        "claim": "probe-mp4.sh reads and asserts the MP4 real resolution, codec, fps and duration",
        "command": "scripts/probe-mp4.sh /tmp/motion-testdata/short.mp4 1080x1920 30",
        "deferred": false,
        "evidence": "short.mp4: 1080x1920  h264  30 fps  2.00s\n  \u2713 spec OK",
        "expected": "spec printed and OK",
        "input": "/tmp/motion-testdata/short.mp4 asserted as 1080x1920 at 30 fps",
        "kind": "example",
        "outcome": "command completed successfully",
        "returncode": 0,
        "source": "scripts/README.md",
        "verdict": "yes"
      },
      {
        "claim": "seek-shot.sh freezes an HTML animation at given times and screenshots each frame",
        "command": "",
        "deferred": false,
        "evidence": "Requires npx Playwright Chromium (npx playwright install chromium), which must be downloaded; browser download is not permitted in this guest and the shared CDP endpoint is not used by the script. Not run. Local Chromium check: no chromium/google-chrome binary found on PATH.",
        "expected": "documented command completes successfully",
        "input": "",
        "kind": "example",
        "outcome": "Requires npx Playwright Chromium (npx playwright install chromium), which must be downloaded; browser download is not permitted in this guest and the shared CDP endpoint is not used by the script. Not run. Local Chromium check: no chromium/google-chrome binary found on PATH.",
        "source": "scripts/README.md",
        "verdict": "blocked"
      }
    ],
    "status": "PASS"
  },
  "deviations": [
    "/inputs/coldpass-preflight.py does not exist in this guest; used <guest-path> as the task specified.",
    "ffmpeg was not preinstalled; installed Ubuntu ffmpeg 6.1.1 via apt-get (prerequisite for the scripts).",
    "The README installer creates ./.claude/skills in the directory it runs from; it was run in /tmp/skills-install so the checkout stays unmodified. The checkout was not changed.",
    "The first replay failed because the checker appends a -checker-<id> suffix to the example's output path, and contact-sheet.sh picks the output format from the file extension (ffmpeg exit 234 on '...sheet.png-checker-...'). This is a harness/path-naming conflict, not a product result. Fix: the example no longer declares expected_file; contact-sheet.sh overwrites its output, so replay still runs and the printed text is checked. The product still fails with non-standard output names, which the script could guard against (e.g. ffmpeg -f image2 or explicit format).",
    "seek-shot.sh was not run: it needs npx Playwright Chromium (npx playwright install chromium), which is a browser download and is not allowed here. It is recorded as a blocked example with its reason.",
    "The claim exercises the installer with extra flags (-y --agent claude-code) beyond the README's bare command, to make it non-interactive."
  ],
  "fault_owner": null,
  "main_blocker": null,
  "operation": "Install the motion design skills with the README installer, then run the bundled verify-loop scripts (probe-mp4.sh asserts an MP4 spec; contact-sheet.sh tiles frames into one image)",
  "operation_scope": "Linux Ubuntu 24.04, Node v22.23.4, npm 10.9.9, Python 3.12.3, ffmpeg/ffprobe 6.1.1 (apt). Test media generated locally in /tmp/motion-testdata. seek-shot.sh (Playwright Chromium) not run: needs a browser download, which is not permitted; the shared CDP endpoint is not used by that script.",
  "outcome": "working",
  "plain_failure": null,
  "steps": [
    "curl -sS -m 10 -i $CDP_URL/json/version -> HTTP/1.1 200 OK (Chrome/155.0.8059.84)",
    "sudo apt-get -o DPkg::Lock::Timeout=300 install -y ffmpeg",
    "cd /tmp/skills-install && npx -y skills add iart-ai/motion-design-skills -y --agent claude-code  (README: npx skills add iart-ai/motion-design-skills) -> Installed 9 skills",
    "scripts/probe-mp4.sh /tmp/motion-testdata/short.mp4 1080x1920 30 -> 1080x1920 h264 30 fps 2.00s, spec OK",
    "scripts/contact-sheet.sh /tmp/motion-out/sheet.png frame-0.png frame-1.png frame-2.png -> contact sheet (3 frame(s)) written",
    "Negative check: scripts/probe-mp4.sh short.mp4 1920x1080 30 -> resolution mismatch reported, exit 1 (as designed)",
    "<env-var>=<guest-path> python3 -I <guest-path> --validate --replay -> valid true, no problems, replay PASS"
  ],
  "stuck_step": null,
  "suggested_fix": "None required for the working path. Optional: make scripts/contact-sheet.sh pass an explicit output format so it works with any output filename; and document that seek-shot.sh needs a locally installed Chromium."
}
