{
  "slug": "mechanic-kart-drift-boost",
  "skill": "mechanic-kart-drift-boost",
  "upstream": "GameSkill original (onsite/<slug>/original)",
  "sourceHash": "6ee056a3cbf10f183951671e8f3e6f4a5150f6dffdec29b20a84097e7112574b",
  "date": "2026-10-28",
  "engine": "Canvas 2D in Chrome 156 headless",
  "env": [
    "Node v20.19.2",
    "No runtime dependencies (plain ES modules + Canvas 2D)",
    "puppeteer-core 24 from package-lock.json",
    "Google Chrome 156 headless, touch emulation on"
  ],
  "trigger": "static",
  "passed": 40,
  "total": 40,
  "commands": [
    "(cd ../original && sh -c npm ci --silent --no-audit --no-fund && node --test --test-reporter=tap test/logic.test.mjs)",
    "(cd ../original && node test/browser.test.mjs)",
    "(cd . && cp ../original/shots/kart.png screenshot.png)"
  ],
  "checks": [
    {
      "criterion": "trigger",
      "name": "SKILL.md description says when to use it",
      "pass": true,
      "detail": "Arcade kart-racing drift-boost rules that reward skill without stacking into infinite speed: a drift that starts with a "
    },
    {
      "criterion": "trigger",
      "name": "triggers on: \"Add Mario Kart style drift boost and mini turbo to my kart racing game\"",
      "pass": true,
      "detail": "rank 1/118, overlap 8"
    },
    {
      "criterion": "trigger",
      "name": "triggers on: \"My kart racer drift boosts stack forever, how should drift charge tiers and boost windows work\"",
      "pass": true,
      "detail": "rank 1/118, overlap 7"
    },
    {
      "criterion": "trigger",
      "name": "triggers on: \"Kart ramp air boost and landing boost rules for an arcade racer\"",
      "pass": true,
      "detail": "rank 1/118, overlap 8"
    },
    {
      "criterion": "trigger",
      "name": "does not trigger on: \"Export my Godot game for the web\"",
      "pass": true,
      "detail": "rank 31/118, overlap 0"
    },
    {
      "criterion": "trigger",
      "name": "does not trigger on: \"Make pixel art sprites with Aseprite\"",
      "pass": true,
      "detail": "rank 23/118, overlap 0"
    },
    {
      "criterion": "runs",
      "name": "drift-boost rules tests (tiers, windows, cut, ramps, max-not-sum, walls, track, reference driver): charge tiers at 0.7 / 1.5 / 2.4 s of drift",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "drift-boost rules tests (tiers, windows, cut, ramps, max-not-sum, walls, track, reference driver): drift needs speed and steer; it starts with a hop that is not a ramp",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "drift-boost rules tests (tiers, windows, cut, ramps, max-not-sum, walls, track, reference driver): steering into the drift charges faster",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "drift-boost rules tests (tiers, windows, cut, ramps, max-not-sum, walls, track, reference driver): releasing an uncharged drift gives nothing (no automatic boost)",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "drift-boost rules tests (tiers, windows, cut, ramps, max-not-sum, walls, track, reference driver): releasing a charged drift opens a 0.85 s window; pressing boost inside it fires",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "drift-boost rules tests (tiers, windows, cut, ramps, max-not-sum, walls, track, reference driver): the window expires: a late press does nothing",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "drift-boost rules tests (tiers, windows, cut, ramps, max-not-sum, walls, track, reference driver): counter-steer on release makes it a CUT boost with bonus time",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "drift-boost rules tests (tiers, windows, cut, ramps, max-not-sum, walls, track, reference driver): ramp: one air boost within 0.9 s, then one landing boost within 0.65 s",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "drift-boost rules tests (tiers, windows, cut, ramps, max-not-sum, walls, track, reference driver): landing window closes after 0.65 s",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "drift-boost rules tests (tiers, windows, cut, ramps, max-not-sum, walls, track, reference driver): boost time is max(remaining, new), never the sum",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "drift-boost rules tests (tiers, windows, cut, ramps, max-not-sum, walls, track, reference driver): boosts chained within 2 s count as a combo; a gap resets it",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "drift-boost rules tests (tiers, windows, cut, ramps, max-not-sum, walls, track, reference driver): wall contact cancels the charge and every pending window, and scrubs speed",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "drift-boost rules tests (tiers, windows, cut, ramps, max-not-sum, walls, track, reference driver): boost raises the speed cap; it decays back after the boost",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "drift-boost rules tests (tiers, windows, cut, ramps, max-not-sum, walls, track, reference driver): fixed step: 30 fps and 144 fps give the same position",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "drift-boost rules tests (tiers, windows, cut, ramps, max-not-sum, walls, track, reference driver): track: projection, walls push the kart back inside",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "drift-boost rules tests (tiers, windows, cut, ramps, max-not-sum, walls, track, reference driver): reference driver laps the stadium with drift, cut, air and landing boosts",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "drift-boost rules tests (tiers, windows, cut, ramps, max-not-sum, walls, track, reference driver): exits 0 with no script errors",
      "pass": true,
      "detail": "exit 0"
    },
    {
      "criterion": "runs",
      "name": "demo in headless Chrome: page loads and the render loop runs",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "demo in headless Chrome: reference driver drifts and fires a CUT boost",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "demo in headless Chrome: ramps give an AIR and a LAND boost",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "demo in headless Chrome: completes a lap without scraping the walls ({\"air\":4,\"land\":4,\"cut\":2})",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "demo in headless Chrome: frame is drawn (track, kart, HUD) (100 colour bins)",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "demo in headless Chrome: keyboard: throttle accelerates (59 km/h)",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "demo in headless Chrome: E with no open window does nothing",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "demo in headless Chrome: hold Shift + steer drifts, release opens a window, E fires",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "demo in headless Chrome: touch buttons: DRIFT and BOOST respond",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "demo in headless Chrome: no console errors, page errors or failed requests",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "demo in headless Chrome: 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 drift and boost rules of an arcade kart (charge tiers, timed windows, cut bonus, ramp air/landing boosts, stacking, wall cancel). The kart model, track and driver exist only to exercise those rules."
    },
    {
      "criterion": "bilingual",
      "name": "English SKILL.md",
      "pass": true
    },
    {
      "criterion": "bilingual",
      "name": "Chinese SKILL.zh.md shipped next to SKILL.md",
      "pass": true,
      "detail": "2541 chars"
    },
    {
      "criterion": "bilingual",
      "name": "Chinese guide written",
      "pass": true,
      "detail": "1008 chars"
    }
  ]
}
