The skills that shipped 264 browser games from one Mac with no human in the build loop.
Four folders. Three are Claude Code skills: a SKILL.md that tells the agent what to do, and
the tools it names. The fourth is the runtime template the games are built on. Nothing else.
| skill | what it does |
|---|---|
skills/playtest |
plays the game with real clicks and taps, reloads mid-run, screenshots every screen at every size for a vision read, replays 30 minutes of its economy |
skills/ship-evidence |
a hook that blocks any ship command without a fresh, hash-bound receipt; no bypass flag |
skills/playgama-publish |
Playgama Bridge v2 integration, package validation, the QA hand-off |
skills/runtime-template |
the gf-lib.js runtime and blank index.html that 197 of the games start from |
Why it exists: in a measured study of 90 agent-built games, a QA agent that only read code passed 55 of 60 builds and its verdict had no link to whether the game worked. It could not play. These skills are what replaced it.
talk/ holds the slides from AI Builders Monthly London, 10 September 2026 (PDF and PPTX).
Copy a folder into .claude/skills/ (or point your agent runner at its SKILL.md). Tools
need Node 18+ with puppeteer, and Python 3.10+. Start with skills/playtest.
Never trust the agent's report; make the pipeline deterministic. A change is done when it has a before screenshot, an after screenshot, the diff that produced the after, and one sentence. Identical pixels mean the hunk did nothing, and it is stripped. The receipt, the matrix and the playtest bot exist so that every claim of "it works" is replaced by something you can look at.
Every gate drives real Chrome through Puppeteer. The six rules that made
it work for games (attach to a signed-in Chrome, emulate focus, real input only, do not wait
for network idle, screenshot to a vision model, reload and assert the save) are in
skills/playtest/SKILL.md.
Off-screen or headless Chrome reports document.hidden = true, most games pause on it, and
the bot then calls every game frozen. Enable focus emulation on the CDP session before the
first frame: Emulation.setFocusEmulationEnabled { enabled: true }. Every tool here does.
MIT. Tim Markin, game-factory.tech. Extracted 2026-09-06 for AI Builders London.