Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

playtest-bot

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.

The talk

talk/ holds the slides from AI Builders Monthly London, 10 September 2026 (PDF and PPTX).

Use

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.

The rule under all of it

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.

Puppeteer

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.

One gotcha worth the whole repo

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.

About

The skills that shipped 264 browser games with no human in the build loop: a QA bot that plays, a ship gate that needs a receipt, Playgama publishing, the runtime template. Plus the AI Builders London deck.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages