{
  "slug": "ebitengine-game",
  "skill": "ebitengine-game",
  "upstream": "gamedev-skills/awesome-gamedev-agent-skills@19d93f97c9c1ea0f8b306e77aa81e0d3e352d3e9",
  "upstreamSha": "19d93f97c9c1ea0f8b306e77aa81e0d3e352d3e9",
  "date": "2026-11-03",
  "engine": "Ebitengine v2.10.5 (Go 1.27.3), WebAssembly build in Chrome headless",
  "env": [
    "Node v22.23.4",
    "Go 1.27.3 linux/amd64; Ebitengine v2.10.5 fetched by go mod tidy from the Go module proxy",
    "Python 3 for new_game.py and check_ebitengine.py",
    "Google Chrome headless (SwiftShader WebGL) for the WebAssembly run; puppeteer-core 24 from package-lock.json",
    "Linux desktop build not run: the test machine has no X11/OpenGL/ALSA headers; Windows cross-build only compiled"
  ],
  "trigger": "static",
  "passed": 25,
  "total": 25,
  "commands": [
    "(cd examples && sh -c npm ci --silent --no-audit --no-fund && python3 tests/run_tests.py --shot ../screenshot.png)",
    "(cd . && test -s screenshot.png)"
  ],
  "checks": [
    {
      "criterion": "trigger",
      "name": "SKILL.md description says when to use it",
      "pass": true,
      "detail": "Create, improve, debug and package playable 2D games in Go with Ebitengine (github.com/hajimehoshi/ebiten/v2). Use for E"
    },
    {
      "criterion": "trigger",
      "name": "triggers on: \"Create a playable 2D game in Go with Ebitengine, with input, audio and scenes\"",
      "pass": true,
      "detail": "rank 1/122, overlap 6"
    },
    {
      "criterion": "trigger",
      "name": "triggers on: \"My Ebitengine game plays sounds from Draw, fix the game loop\"",
      "pass": true,
      "detail": "rank 1/122, overlap 3"
    },
    {
      "criterion": "trigger",
      "name": "triggers on: \"Build my Ebitengine game for the browser with WebAssembly\"",
      "pass": true,
      "detail": "rank 1/122, overlap 2"
    },
    {
      "criterion": "trigger",
      "name": "does not trigger on: \"Rig my character in Blender\"",
      "pass": true,
      "detail": "rank 34/122, overlap 0"
    },
    {
      "criterion": "trigger",
      "name": "does not trigger on: \"Write a Godot shader for water\"",
      "pass": true,
      "detail": "rank 37/122, overlap 0"
    },
    {
      "criterion": "runs",
      "name": "Lantern Hop scaffold, rule tests, vet, checker, cross-builds and the WebAssembly demo: new_game.py scaffolds the starter with go.mod pinned to Ebitengine v2.10.5 and our title",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "Lantern Hop scaffold, rule tests, vet, checker, cross-builds and the WebAssembly demo: new_game.py refuses a non-empty folder and a bad module path",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "Lantern Hop scaffold, rule tests, vet, checker, cross-builds and the WebAssembly demo: go mod tidy fetches Ebitengine and writes go.sum",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "Lantern Hop scaffold, rule tests, vet, checker, cross-builds and the WebAssembly demo: starter rule tests pass without graphics (8 tests)",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "Lantern Hop scaffold, rule tests, vet, checker, cross-builds and the WebAssembly demo: go vet ./... is clean (GOOS=js)",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "Lantern Hop scaffold, rule tests, vet, checker, cross-builds and the WebAssembly demo: check_ebitengine.py --strict",
      "pass": true,
      "detail": "the starter is clean"
    },
    {
      "criterion": "runs",
      "name": "Lantern Hop scaffold, rule tests, vet, checker, cross-builds and the WebAssembly demo: check_ebitengine.py catches planted mistakes",
      "pass": true,
      "detail": "input read in Draw and a deprecated DrawRect"
    },
    {
      "criterion": "runs",
      "name": "Lantern Hop scaffold, rule tests, vet, checker, cross-builds and the WebAssembly demo: cross-build for Windows (pure Go backend) succeeds",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "Lantern Hop scaffold, rule tests, vet, checker, cross-builds and the WebAssembly demo: WebAssembly build succeeds",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "Lantern Hop scaffold, rule tests, vet, checker, cross-builds and the WebAssembly demo: the WebAssembly build starts and creates its canvas",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "Lantern Hop scaffold, rule tests, vet, checker, cross-builds and the WebAssembly demo: the screen draws the game (61 colour bins)",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "Lantern Hop scaffold, rule tests, vet, checker, cross-builds and the WebAssembly demo: the scripted demo moves",
      "pass": true,
      "detail": "the frame changes over 3 s"
    },
    {
      "criterion": "runs",
      "name": "Lantern Hop scaffold, rule tests, vet, checker, cross-builds and the WebAssembly demo: no page errors, console errors or missing files",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "Lantern Hop scaffold, rule tests, vet, checker, cross-builds and the WebAssembly demo: 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: Ebitengine/Go game code, from scaffold to builds. Design, feel and UI concerns are handed to the portable discipline skills it names."
    },
    {
      "criterion": "bilingual",
      "name": "English SKILL.md from upstream",
      "pass": true
    },
    {
      "criterion": "bilingual",
      "name": "Chinese guide written",
      "pass": true,
      "detail": "895 chars"
    }
  ]
}
