game-prototype-bible
Game prototype + design bible
This skill produces one artifact page that is both a playable game (a 1280×720 canvas running every scene) and a detailed design bible below it, with every table generated from the same code the game runs. It comes from a project where the user rejected static phone mockups ("looks too like mockup", "too kiddy"), then asked for the depth of a written design doc on top of a playable build. Both halves matter: the playable build lets them feel the game, and the bible lets them check the design.
The bundled starter (assets/starter/) is a complete working game ("Lane Thief", a last-hit timing game) with a skeletal-rig renderer, UI kit, particle/feedback system, synthesized audio, scene manager, presets, snapshot gallery and doc generators. Build new games by scaffolding from it: keep the engine modules and rewrite the game modules. Starting from a working game is much faster and much more polished than starting blank.
Workflow
1. Intake (orient, then decide, don't interrogate)
- If there's a reference game (URL, source folder, video, screenshots), study it first. Read its docs and rules. Pull frames from videos with
ffmpeg -i in.mp4 -vf "fps=1/2.5,scale=960:-1,tile=2x3" sheet%d.pngand view them. Note the camera, composition, HUD placement, pacing and the core mechanic. - Decide sensible defaults yourself and list them as decisions for the user to veto: name, tone, orientation, factions and palette, business model. Ask only when a choice would waste hours if wrong.
- If the user is remaking a known game to publish it, read
references/clean-room.mdbefore designing anything. Mechanics and genre layout are fine to keep. Names, art, audio, UI strings and exact constants are not.
2. Scaffold
<skill-dir>/scripts/new-project.sh <project-dir> # <skill-dir> = the folder containing this SKILL.md
cd <project-dir> && node build.mjs # → dist/index.html (single file, artifact-ready)
Then read references/architecture.md. It lists which modules to keep, which to rewrite, and the APIs you'll call. Don't git init or commit unless asked.