{
  "slug": "godot-one-mechanic",
  "skill": "godot-one-mechanic",
  "upstream": "GameSkill original (onsite/<slug>/original)",
  "sourceHash": "0df1719fd79c7e3bf63537ca2e572d6c0ba51ddd6c55e5a4b50d28b521a4e850",
  "date": "2026-11-03",
  "engine": "Godot 4.7.2 (2D physics, headless playtests) + Python 3 standard library",
  "env": [
    "Node v22.11.0",
    "Godot 4.7.2-stable headless for the playtests; xvfb + OpenGL (gl_compatibility) for the screenshot",
    "Python 3 standard library only for check_refs.py and check_project.py"
  ],
  "trigger": "static",
  "passed": 35,
  "total": 35,
  "commands": [
    "(cd ../original && env GODOT={godot} python3 test/run_tests.py --shot shots/glide.png)",
    "(cd . && cp ../original/shots/glide.png screenshot.png)"
  ],
  "checks": [
    {
      "criterion": "trigger",
      "name": "SKILL.md description says when to use it",
      "pass": true,
      "detail": "Build a Godot 4 game the way that survives agents - a reference folder and a style-prompt JSON first, then a grey box, t"
    },
    {
      "criterion": "trigger",
      "name": "triggers on: \"Help me start a Godot platformer with an agent without it turning into a mess\"",
      "pass": true,
      "detail": "rank 1/122, overlap 4"
    },
    {
      "criterion": "trigger",
      "name": "triggers on: \"Adding a dash to my Godot game broke the jump, how should I add mechanics?\"",
      "pass": true,
      "detail": "rank 1/122, overlap 5"
    },
    {
      "criterion": "trigger",
      "name": "triggers on: \"I have a folder of reference images, build a Godot world from it step by step\"",
      "pass": true,
      "detail": "rank 1/122, overlap 5"
    },
    {
      "criterion": "trigger",
      "name": "does not trigger on: \"Make a pixel art sprite sheet for a coin\"",
      "pass": true,
      "detail": "rank 30/122, overlap 0"
    },
    {
      "criterion": "trigger",
      "name": "does not trigger on: \"Set up Steam achievements\"",
      "pass": true,
      "detail": "rank 7/122, overlap 0"
    },
    {
      "criterion": "runs",
      "name": "refs and project rules, 14 Godot playtests in 3 groups, two broken mechanics caught: reference folder and style.json pass check_refs (8 rules)",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "refs and project rules, 14 Godot playtests in 3 groups, two broken mechanics caught: check_refs rejects an unlisted image and \"in the style of\"",
      "pass": true,
      "detail": "every image in the folder is listed in references, describes a look, not another game or artist"
    },
    {
      "criterion": "runs",
      "name": "refs and project rules, 14 Godot playtests in 3 groups, two broken mechanics caught: project follows one-mechanic-at-a-time (12 rules)",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "refs and project rules, 14 Godot playtests in 3 groups, two broken mechanics caught: templates/style.json has every field check_refs needs",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "refs and project rules, 14 Godot playtests in 3 groups, two broken mechanics caught: [1 move_jump] move_speed",
      "pass": true,
      "detail": "one second of left moves about 220 px: 220.0 px"
    },
    {
      "criterion": "runs",
      "name": "refs and project rules, 14 Godot playtests in 3 groups, two broken mechanics caught: [1 move_jump] jump_apex",
      "pass": true,
      "detail": "73.5 px in theory, about 77 px at 60 Hz, even with jump held: 77.1 px"
    },
    {
      "criterion": "runs",
      "name": "refs and project rules, 14 Godot playtests in 3 groups, two broken mechanics caught: [1 move_jump] lands_on_start_cliff",
      "pass": true,
      "detail": "back on the floor at the same height"
    },
    {
      "criterion": "runs",
      "name": "refs and project rules, 14 Godot playtests in 3 groups, two broken mechanics caught: [1 move_jump] clears_step",
      "pass": true,
      "detail": "a running jump clears the 48 px step: x 563 y 380"
    },
    {
      "criterion": "runs",
      "name": "refs and project rules, 14 Godot playtests in 3 groups, two broken mechanics caught: [1 move_jump] coyote_jump",
      "pass": true,
      "detail": "a jump 3 frames after leaving the ledge still counts: vy -400"
    },
    {
      "criterion": "runs",
      "name": "refs and project rules, 14 Godot playtests in 3 groups, two broken mechanics caught: [2 glide] gap_needs_glide",
      "pass": true,
      "detail": "the best plain jump falls into the 300 px gap: x 1136 y 3055"
    },
    {
      "criterion": "runs",
      "name": "refs and project rules, 14 Godot playtests in 3 groups, two broken mechanics caught: [2 glide] glide_caps_fall",
      "pass": true,
      "detail": "fall speed held at 90 px/s while jump is held: max 90.0"
    },
    {
      "criterion": "runs",
      "name": "refs and project rules, 14 Godot playtests in 3 groups, two broken mechanics caught: [2 glide] glide_crosses_gap",
      "pass": true,
      "detail": "holding jump carries the player onto the far cliff: x 960 y 420"
    },
    {
      "criterion": "runs",
      "name": "refs and project rules, 14 Godot playtests in 3 groups, two broken mechanics caught: [2 glide] release_drops",
      "pass": true,
      "detail": "letting go of jump returns to normal gravity: 90 -> 250 px/s"
    },
    {
      "criterion": "runs",
      "name": "refs and project rules, 14 Godot playtests in 3 groups, two broken mechanics caught: [1 after 2] move_speed",
      "pass": true,
      "detail": "one second of left moves about 220 px: 220.0 px"
    },
    {
      "criterion": "runs",
      "name": "refs and project rules, 14 Godot playtests in 3 groups, two broken mechanics caught: [1 after 2] jump_apex",
      "pass": true,
      "detail": "73.5 px in theory, about 77 px at 60 Hz, even with jump held: 77.1 px"
    },
    {
      "criterion": "runs",
      "name": "refs and project rules, 14 Godot playtests in 3 groups, two broken mechanics caught: [1 after 2] lands_on_start_cliff",
      "pass": true,
      "detail": "back on the floor at the same height"
    },
    {
      "criterion": "runs",
      "name": "refs and project rules, 14 Godot playtests in 3 groups, two broken mechanics caught: [1 after 2] clears_step",
      "pass": true,
      "detail": "a running jump clears the 48 px step: x 563 y 380"
    },
    {
      "criterion": "runs",
      "name": "refs and project rules, 14 Godot playtests in 3 groups, two broken mechanics caught: [1 after 2] coyote_jump",
      "pass": true,
      "detail": "a jump 3 frames after leaving the ledge still counts: vy -400"
    },
    {
      "criterion": "runs",
      "name": "refs and project rules, 14 Godot playtests in 3 groups, two broken mechanics caught: Godot ran 14 playtests in 3 groups, exit 0",
      "pass": true,
      "detail": "14 lines, groups ['1 after 2', '1 move_jump', '2 glide']"
    },
    {
      "criterion": "runs",
      "name": "refs and project rules, 14 Godot playtests in 3 groups, two broken mechanics caught: a weak glide (400 px/s) is caught by glide_crosses_gap",
      "pass": true,
      "detail": "[2 glide] glide_caps_fall: fall speed held at 90 px/s w; [2 glide] glide_crosses_gap: holding jump carries the p; [2 glide] release_drops: letting go of jump returns to "
    },
    {
      "criterion": "runs",
      "name": "refs and project rules, 14 Godot playtests in 3 groups, two broken mechanics caught: a glide that also caps the rise breaks mechanic 1",
      "pass": true,
      "detail": "only the re-run of group 1 catches it: [2 glide] glide_crosses_gap: holding jump carries the p; [2 glide] release_drops: letting go of jump returns to ; [1 after 2] jump_apex: 73.5 px in theory, about 77 px a; [1 after 2] clears_step: a running jump clears the 48 p; [1 after 2] coyote_jump: a jump 3 frames after leaving "
    },
    {
      "criterion": "runs",
      "name": "refs and project rules, 14 Godot playtests in 3 groups, two broken mechanics caught: screenshot of the glide across the gap",
      "pass": true,
      "detail": "glide.png"
    },
    {
      "criterion": "runs",
      "name": "refs and project rules, 14 Godot playtests in 3 groups, two broken mechanics caught: 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 order of work for a Godot game with an agent (reference folder, grey box, one tested mechanic per prompt, regression re-runs). Specific mechanics, art production and engine tooling are left to the mechanic and art skills."
    },
    {
      "criterion": "bilingual",
      "name": "English SKILL.md",
      "pass": true
    },
    {
      "criterion": "bilingual",
      "name": "Chinese SKILL.zh.md shipped next to SKILL.md",
      "pass": true,
      "detail": "1446 chars"
    },
    {
      "criterion": "bilingual",
      "name": "Chinese guide written",
      "pass": true,
      "detail": "975 chars"
    }
  ]
}
