{
  "slug": "defold-core",
  "skill": "defold-core",
  "upstream": "gamedev-skills/awesome-gamedev-agent-skills@19d93f97c9c1ea0f8b306e77aa81e0d3e352d3e9",
  "upstreamSha": "19d93f97c9c1ea0f8b306e77aa81e0d3e352d3e9",
  "date": "2026-11-03",
  "engine": "Defold 1.14.0 (Bob 1.14.0 on OpenJDK 25, headless engine)",
  "env": [
    "Node v22.23.4",
    "OpenJDK 25.0.5 (Temurin) and bob.jar 1.14.0, sha1 d295ed4e, the version the skill names",
    "Python 3 for the skill's checker and the test driver; Pillow for the result card",
    "headless x86_64-linux bundle run under a 30 s timeout; no keyboard, so input was not exercised",
    "the screenshot is a card of the check output, not a game frame (the headless engine draws nothing)"
  ],
  "trigger": "static",
  "passed": 29,
  "total": 29,
  "commands": [
    "(cd examples && sh -c JAVA=${JAVA:-/home/box/tools/jdk-25.0.5+8/bin/java} BOB=${BOB:-/home/box/tools/defold/bob.jar} python3 tests/run_tests.py)",
    "(cd examples && sh -c JAVA=${JAVA:-/home/box/tools/jdk-25.0.5+8/bin/java} BOB=${BOB:-/home/box/tools/defold/bob.jar} python3 tests/card.py 'defold-core checks (Defold 1.14.0, Lantern Drop)' ../screenshot.png -- python3 tests/run_tests.py)"
  ],
  "checks": [
    {
      "criterion": "trigger",
      "name": "SKILL.md description says when to use it",
      "pass": true,
      "detail": "Build and debug the core of a Defold game in Lua: game.project settings, collections, game objects and components, scrip"
    },
    {
      "criterion": "trigger",
      "name": "triggers on: \"Bob says my Defold main collection can't be found\"",
      "pass": true,
      "detail": "rank 1/125, overlap 3"
    },
    {
      "criterion": "trigger",
      "name": "triggers on: \"Spawn enemies with a factory in my Defold game and send messages back with msg.post\"",
      "pass": true,
      "detail": "rank 1/125, overlap 4"
    },
    {
      "criterion": "trigger",
      "name": "triggers on: \"My collection proxy never sends proxy_loaded in Defold\"",
      "pass": true,
      "detail": "rank 1/125, overlap 3"
    },
    {
      "criterion": "trigger",
      "name": "does not trigger on: \"Balance the upgrade costs of my Roblox simulator\"",
      "pass": true,
      "detail": "rank 13/125, overlap 0"
    },
    {
      "criterion": "trigger",
      "name": "does not trigger on: \"Make a LÖVE platformer in plain Lua\"",
      "pass": true,
      "detail": "rank 2/125, overlap 1"
    },
    {
      "criterion": "runs",
      "name": "checker on Lantern Drop and planted mistakes, Bob builds, headless smoke runs: checker",
      "pass": true,
      "detail": "clean Lantern Drop exits 0 with 0 errors, 0 warnings"
    },
    {
      "criterion": "runs",
      "name": "checker on Lantern Drop and planted mistakes, Bob builds, headless smoke runs: checker --json prints one JSON object",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "checker on Lantern Drop and planted mistakes, Bob builds, headless smoke runs: checker catches game.project main_collection without the compiled c suffix",
      "pass": true,
      "detail": "exit 1, names game.project"
    },
    {
      "criterion": "runs",
      "name": "checker on Lantern Drop and planted mistakes, Bob builds, headless smoke runs: checker catches factory prototype that does not exist",
      "pass": true,
      "detail": "exit 1, names levels/spawner.go"
    },
    {
      "criterion": "runs",
      "name": "checker on Lantern Drop and planted mistakes, Bob builds, headless smoke runs: checker catches prototype path with the wrong letter case",
      "pass": true,
      "detail": "exit 1, names levels/spawner.go"
    },
    {
      "criterion": "runs",
      "name": "checker on Lantern Drop and planted mistakes, Bob builds, headless smoke runs: checker catches require of a module that does not exist",
      "pass": true,
      "detail": "exit 1, names levels/spawner.script"
    },
    {
      "criterion": "runs",
      "name": "checker on Lantern Drop and planted mistakes, Bob builds, headless smoke runs: Bob 1.14.0 headless build of Lantern Drop exits 0",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "checker on Lantern Drop and planted mistakes, Bob builds, headless smoke runs: Bob fails on the missing prototype and names a generated .factory, as the skill says",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "checker on Lantern Drop and planted mistakes, Bob builds, headless smoke runs: Bob strips the last letter of a suffix-less main_collection ('/main/main.collectio')",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "checker on Lantern Drop and planted mistakes, Bob builds, headless smoke runs: headless bundle builds and runs to SMOKE done with exit 0",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "checker on Lantern Drop and planted mistakes, Bob builds, headless smoke runs: level loads through the proxy as orchard:/spawner#spawner",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "checker on Lantern Drop and planted mistakes, Bob builds, headless smoke runs: spawner drops 6 lanterns (count overridden in the collection) and all report back",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "checker on Lantern Drop and planted mistakes, Bob builds, headless smoke runs: lanterns land in their column",
      "pass": true,
      "detail": "level_done landed=6 max_drift=0"
    },
    {
      "criterion": "runs",
      "name": "checker on Lantern Drop and planted mistakes, Bob builds, headless smoke runs: loader unloads the level after level_done",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "checker on Lantern Drop and planted mistakes, Bob builds, headless smoke runs: no ERROR lines in the clean run",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "checker on Lantern Drop and planted mistakes, Bob builds, headless smoke runs: proxied collection named like the main world",
      "pass": true,
      "detail": "socket clash logged, level never runs"
    },
    {
      "criterion": "runs",
      "name": "checker on Lantern Drop and planted mistakes, Bob builds, headless smoke runs: a Lua error prints ERROR:SCRIPT with file and line while the engine keeps running",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "checker on Lantern Drop and planted mistakes, Bob builds, headless smoke runs: 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: the core of a Defold project (files, scripts, messages, spawning, loading) and proving it builds and runs. GUI, sprites, tilemaps and physics depth go to the official manuals and related skills."
    },
    {
      "criterion": "bilingual",
      "name": "English SKILL.md from upstream",
      "pass": true
    },
    {
      "criterion": "bilingual",
      "name": "Chinese guide written",
      "pass": true,
      "detail": "1430 chars"
    }
  ]
}
