itchio-setting
Goal
Create the initial structure for a new HTML5 game so it is easy to develop locally and later package with itchio-dist. Keep this as a scaffolding workflow, not a release packaging workflow. If the user already has a playable game and wants an upload ZIP, use itchio-dist.
Defaults
When the user does not specify details, use these defaults and state them briefly:
- Game folder slug: lowercase hyphen-case from the title, e.g.
my-game.
- Engine: static Phaser 3 via local
vendor/phaser.min.js if Phaser is appropriate; otherwise plain Canvas if the requested game is tiny.
- Viewport:
800 x 800 for square arcade games, 960 x 540 for landscape games, or match the user's target.
- Output style: source game folder only; do not create
dist/ or upload ZIP during setup.
Recommended Structure
For a static HTML5 game:
<game-slug>/
index.html
css/
main.css
js/
game.js
scenes/
PlayScene.js
resources/
art/
sound/
fonts/
vendor/
recordings/
.gitkeep
For bundled apps, use the framework's normal source layout, but still keep itch-facing constraints visible:
- Ensure the eventual build output has root
index.html.
- Keep asset paths relative.
- Avoid requiring server-side routes.
- Keep a clear
dist/itch/ target for later packaging.
Scaffold Workflow
Choose or derive the game slug.
- Use the user's requested name if given.
- Normalize folder names to lowercase hyphen-case.
- Avoid spaces in shipped file and folder names.
Create the game root and baseline folders.
- Put
index.html at the game root.
- Separate source JS, styles, vendor libraries, and game assets.
- Include
recordings/.gitkeep only if the project will use local capture tools.
Create a playable placeholder, not an empty shell.
- The first run should show a canvas, title, basic input response, and a visible update loop.
- For Phaser, define a minimal config in
js/game.js and a PlayScene with preload/create/update.
- For Canvas, define a minimal animation loop with pointer/keyboard input.
Make it itch.io-friendly from day one.
- Use relative paths only.
- Include
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">.
- Use
overflow: hidden, centered canvas, and a predictable background color.
- Prefer local vendor files over unpinned CDNs when feasible.
- Leave room for fullscreen and mobile scaling.
Add development guardrails.
- Add
.gitignore entries for dist/, node_modules/, .DS_Store, recordings, generated archives, and large raw exports.
- Keep experimental pages clearly named and exclude them later with
itchio-dist.
- Do not mix raw asset archives with the playable game folder unless the user explicitly wants that.
Add a short launch note only when useful.
- If the project has no README, add a compact README with local run command and itch target.
- Avoid long planning docs unless the user asks.
Verify the skeleton.
- Serve locally with
python3 -m http.server <port> --directory <game-folder>.
- Check
/, JS, CSS, and any vendor file return HTTP 200.
- If possible, open the page and confirm the placeholder responds to input.
Handoff
Tell the user:
- The created game folder.
- The local run command.
- The default viewport chosen.
- The next skill to use for upload packaging:
itchio-dist.
Boundaries
- Do not create an itch upload ZIP here; use
itchio-dist.
- Do not over-engineer with npm/Vite unless the user wants a bundled workflow or the game needs it.
- Do not add analytics, ads, monetization SDKs, or platform-specific APIs during initial setup unless explicitly requested.
1---2name: itchio-setting3description: Scaffold new itch.io-ready HTML5 game projects and folder structures. Use when the user asks to start a new browser game, create an HTML5 game skeleton, set up an itch.io-friendly project layout, choose baseline web game files, or prepare an initial Phaser/Pixi/Canvas/WebGL static game foundation before gameplay implementation.4---56# itchio-setting78## Goal910Create the initial structure for a new HTML5 game so it is easy to develop locally and later package with `itchio-dist`. Keep this as a scaffolding workflow, not a release packaging workflow. If the user already has a playable game and wants an upload ZIP, use `itchio-dist`.1112## Defaults1314When the user does not specify details, use these defaults and state them briefly:1516- Game folder slug: lowercase hyphen-case from the title, e.g. `my-game`.17- Engine: static Phaser 3 via local `vendor/phaser.min.js` if Phaser is appropriate; otherwise plain Canvas if the requested game is tiny.18- Viewport: `800 x 800` for square arcade games, `960 x 540` for landscape games, or match the user's target.19- Output style: source game folder only; do not create `dist/` or upload ZIP during setup.2021## Recommended Structure2223For a static HTML5 game:2425```text26<game-slug>/27 index.html28 css/29 main.css30 js/31 game.js32 scenes/33 PlayScene.js34 resources/35 art/36 sound/37 fonts/38 vendor/39 recordings/40 .gitkeep41```4243For bundled apps, use the framework's normal source layout, but still keep itch-facing constraints visible:4445- Ensure the eventual build output has root `index.html`.46- Keep asset paths relative.47- Avoid requiring server-side routes.48- Keep a clear `dist/itch/` target for later packaging.4950## Scaffold Workflow51521. Choose or derive the game slug.53 - Use the user's requested name if given.54 - Normalize folder names to lowercase hyphen-case.55 - Avoid spaces in shipped file and folder names.56572. Create the game root and baseline folders.58 - Put `index.html` at the game root.59 - Separate source JS, styles, vendor libraries, and game assets.60 - Include `recordings/.gitkeep` only if the project will use local capture tools.61623. Create a playable placeholder, not an empty shell.63 - The first run should show a canvas, title, basic input response, and a visible update loop.64 - For Phaser, define a minimal config in `js/game.js` and a `PlayScene` with preload/create/update.65 - For Canvas, define a minimal animation loop with pointer/keyboard input.66674. Make it itch.io-friendly from day one.68 - Use relative paths only.69 - Include `<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">`.70 - Use `overflow: hidden`, centered canvas, and a predictable background color.71 - Prefer local vendor files over unpinned CDNs when feasible.72 - Leave room for fullscreen and mobile scaling.73745. Add development guardrails.75 - Add `.gitignore` entries for `dist/`, `node_modules/`, `.DS_Store`, recordings, generated archives, and large raw exports.76 - Keep experimental pages clearly named and exclude them later with `itchio-dist`.77 - Do not mix raw asset archives with the playable game folder unless the user explicitly wants that.78796. Add a short launch note only when useful.80 - If the project has no README, add a compact README with local run command and itch target.81 - Avoid long planning docs unless the user asks.82837. Verify the skeleton.84 - Serve locally with `python3 -m http.server <port> --directory <game-folder>`.85 - Check `/`, JS, CSS, and any vendor file return HTTP 200.86 - If possible, open the page and confirm the placeholder responds to input.8788## Handoff8990Tell the user:9192- The created game folder.93- The local run command.94- The default viewport chosen.95- The next skill to use for upload packaging: `itchio-dist`.9697## Boundaries9899- Do not create an itch upload ZIP here; use `itchio-dist`.100- Do not over-engineer with npm/Vite unless the user wants a bundled workflow or the game needs it.101- Do not add analytics, ads, monetization SDKs, or platform-specific APIs during initial setup unless explicitly requested.