--- name: harness-phaser description: "Use this skill first in a Harness Phaser workspace. The project layout, the Vite dev-server pane and its live reload, the webview keyboard-focus rule (click-to-play gate and on-screen touch buttons), procedural art with no asset files, and .harness/verdict.json. Triggers on: Harness, the pane, dev server, keyboard focus, click to play, touch buttons, verdict, workspace layout, new game." --- # harness-phaser > How a Phaser game is built inside a Harness workspace: where the files go, what the pane is, why > the first scene must wait for a click, and what the verdict checks. **Related skills:** ../game-setup-and-config/SKILL.md, ../scenes/SKILL.md, ../input-keyboard-mouse-touch/SKILL.md, ../graphics-and-shapes/SKILL.md, ../scale-and-responsive/SKILL.md ## The workspace ``` index.html loaded by the pane; script tag → /src/main.js vite.config.mjs 960×540 FIT, base './', build.outDir 'out/dist', cacheDir '.vite' src/main.js new Phaser.Game({...}) — config and the scene list. The entry; keep the name. src/scenes/*.js one class per file, `export default class X extends Phaser.Scene` src/touch.js touchPad(scene, labels) → on-screen controls public/ served at the root: /style.css, and any real asset files out/dist/ the production build, written by the verdict. Generated; never edit. node_modules a SYMLINK to the Harness package's shared install. Never npm install here. .harness/verdict.json the pane header. Written by the verdict script only. ``` Phaser is **4.2.1**, loaded as a module: `import Phaser from 'phaser';` at the top of every file that names it. There is no global `Phaser` and no `