{
  "slug": "steam-launch-check",
  "skill": "steam-launch-check",
  "upstream": "GameSkill original (onsite/<slug>/original)",
  "sourceHash": "9dce2760ece4d2ef3d61b9ba0dc6535dea9f0644c852c59c16c6e50e0a62f985",
  "date": "2026-10-28",
  "engine": "Node 20 (no dependencies) + Chrome 156 headless for the report screenshot",
  "env": [
    "Node v20.19.2",
    "No dependencies (plain ES modules)",
    "Google Chrome 156 headless (screenshot only)"
  ],
  "trigger": "static",
  "passed": 33,
  "total": 33,
  "commands": [
    "(cd ../original && node --test --test-reporter=tap test/logic.test.mjs)",
    "(cd ../original && node test/cli.test.mjs)",
    "(cd . && cp ../original/shots/report.png screenshot.png)"
  ],
  "checks": [
    {
      "criterion": "trigger",
      "name": "SKILL.md description says when to use it",
      "pass": true,
      "detail": "Plan and check a Steam launch, then review it afterwards. Works back from a release date to every Steam deadline (app fe"
    },
    {
      "criterion": "trigger",
      "name": "triggers on: \"When do I need to submit my Steam store page and build for review before my release date\"",
      "pass": true,
      "detail": "rank 1/118, overlap 8"
    },
    {
      "criterion": "trigger",
      "name": "triggers on: \"Players keep refunding my short Steam game under two hours, what should I check\"",
      "pass": true,
      "detail": "rank 1/118, overlap 4"
    },
    {
      "criterion": "trigger",
      "name": "triggers on: \"Help me write the AI disclosure for the Steam content survey and analyse my launch numbers and reviews\"",
      "pass": true,
      "detail": "rank 1/118, overlap 7"
    },
    {
      "criterion": "trigger",
      "name": "does not trigger on: \"Make a gameplay trailer for my game\"",
      "pass": true,
      "detail": "rank 11/118, overlap 0"
    },
    {
      "criterion": "trigger",
      "name": "does not trigger on: \"Add a drift boost to my kart racer\"",
      "pass": true,
      "detail": "rank 1/118, overlap 0"
    },
    {
      "criterion": "runs",
      "name": "countdown, refund window, AI disclosure linter, retro, review triage, CSV and report tests: business days skip weekends and listed holidays",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "countdown, refund window, AI disclosure linter, retro, review triage, CSV and report tests: countdown for the example launch: every Steam rule placed and ordered",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "countdown, refund window, AI disclosure linter, retro, review triage, CSV and report tests: late deadlines and the earliest possible launch",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "countdown, refund window, AI disclosure linter, retro, review triage, CSV and report tests: refund window: the example game finishes inside 2 hours",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "countdown, refund window, AI disclosure linter, retro, review triage, CSV and report tests: AI disclosure: the example passes, vague wording and missing guardrails fail",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "countdown, refund window, AI disclosure linter, retro, review triage, CSV and report tests: retro: metrics and causes from the fictional export",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "countdown, refund window, AI disclosure linter, retro, review triage, CSV and report tests: review triage: playtime, version, Deck, topics",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "countdown, refund window, AI disclosure linter, retro, review triage, CSV and report tests: CSV: comments, quotes, numbers",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "countdown, refund window, AI disclosure linter, retro, review triage, CSV and report tests: report: both languages, every section, HTML tables",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "countdown, refund window, AI disclosure linter, retro, review triage, CSV and report tests: exits 0 with no script errors",
      "pass": true,
      "detail": "exit 0"
    },
    {
      "criterion": "runs",
      "name": "CLI on the fictional example: exit codes, bilingual report, HTML screenshot: plan: on time exits 0 and lists all 9 milestones with Steam links",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "CLI on the fictional example: exit codes, bilingual report, HTML screenshot: plan: too late exits 1 and gives the earliest launch (earliest 2027-03-17)",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "CLI on the fictional example: exit codes, bilingual report, HTML screenshot: plan in Chinese",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "CLI on the fictional example: exit codes, bilingual report, HTML screenshot: refund: high risk exits 1 with advice",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "CLI on the fictional example: exit codes, bilingual report, HTML screenshot: disclosure: the example PASSES, the vague one FAILS with reasons",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "CLI on the fictional example: exit codes, bilingual report, HTML screenshot: retro: JSON with metrics and the refund-window cause",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "CLI on the fictional example: exit codes, bilingual report, HTML screenshot: reviews: fixture triage by version",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "CLI on the fictional example: exit codes, bilingual report, HTML screenshot: report: writes en and zh markdown and one HTML page",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "CLI on the fictional example: exit codes, bilingual report, HTML screenshot: example data is marked fictional (our own demo game, no real sales data)",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "CLI on the fictional example: exit codes, bilingual report, HTML screenshot: report renders in headless Chrome (page screenshot)",
      "pass": true
    },
    {
      "criterion": "runs",
      "name": "CLI on the fictional example: exit codes, bilingual report, HTML screenshot: 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: Steam launch timing and the checks around it (countdown to every review deadline, refund-window risk, AI disclosure, post-launch retro and review triage) from the user's own data, locally. Trailers and store images are left to game-trailer-from-code; platform certification lists to ccgs-launch-checklist."
    },
    {
      "criterion": "bilingual",
      "name": "English SKILL.md",
      "pass": true
    },
    {
      "criterion": "bilingual",
      "name": "Chinese SKILL.zh.md shipped next to SKILL.md",
      "pass": true,
      "detail": "3052 chars"
    },
    {
      "criterion": "bilingual",
      "name": "Chinese guide written",
      "pass": true,
      "detail": "1372 chars"
    }
  ]
}
