A store page kit
Built 2026-10-21, toward Wave 5 of the audit (design/audit-2026-10.md: "itch.io upload;
store-ready packages"). Export already writes what itch.io and Steam take: a web zip with
index.html at its root, and a zip for each desktop system. What a person still wrote by hand was
the page beside it: what the game is, how to play, what they can change, who made it, and the
stores' questions about AI. A game's own documents hold all of it, so Gamewright writes it.
What
gamewright store [--json] [--out DIR] [--shots] <pack> writes two files (default
<pack>/.gamewright/store/, core/src/export/store.ts):
page.md, to paste into the store's description:- the game's name and pitch (the GameManifest's
meta.description, else the brief'spitch); - How to play: a row per action from its InputMap, keys and mouse buttons in plain names,
up, down, left and right as one Move row (
core/src/game/controls.ts, which the site's gallery uses too), then whether a controller plays it and whether a phone shows controls; - Accessibility: what the game's Options page offers (text to 200%, the colour filter,
Controls for keys, a controller and the mouse; captions when a Sound or a Score section has
one; shake and flashes when its Style has juice; the languages its Locales add). A game whose
menu is off (
menu.pause: false) has no Options page, so none is listed; - Credits: Gamewright and Godot, then every imported file's own credit, author and licence from its Asset's ledger ("author not stated" where it says nothing).
- the game's name and pitch (the GameManifest's
ai-disclosure.md, the stores' AI questions answered from records, never guessed:- every document's
meta.provenance.createdBy(andmodel, when it names one): how many of the game's own documents an AI agent wrote, by kind, and how many come from its template; - every imported file's
source.aiandaiTool: made by AI, with AI's help, without, or not stated yet (named, to set before publishing); - that every other picture, model, sound and piece of music is made from a recipe by Gamewright's generators as the game loads, and how many of those recipes an AI agent wrote: no image, sound or music model made the output, which is what a store's graphics and sound questions ask, and the recipes' authorship is said beside it so a person can judge;
- Steam's content survey (pre-generated AI content, live-generated: always no, since nothing in a game asks an AI anything while it plays) and itch.io's graphics, sound and text answers.
- every document's
In every export. gamewright export and the Studio's Export write the two beside the zip,
named for the game (Thornwick - store page.md, Thornwick - AI disclosure.md), and the Studio
says so when the zip is ready. Each desktop zip carries an .itch.toml at its root naming the
program to launch (Thornwick/Thornwick.x86_64, Thornwick/Thornwick.exe, Thornwick.app), so
itch.io's app starts the game; a web zip needs none (index.html is at its root).
Its pictures. gamewright store --shots draws them through the player too
(core/src/export/store-shots.ts), from tours the game already has, so nothing is staged by hand:
cover.png, 630x500, itch.io's cover: the shot a tour namesposter(the gallery's poster), else the last shot ofplaytests/poster.tour(Nightcoast's builds up to its sentry), else the opening frame of play. It is drawn at 1260x1000, in the cover's own shape so the game lays its screen out for it, and halved, so its edges are smooth.screenshots/, up to six at 1920x1080 (Steam's size; its least is 1280x720, and itch.io takes the same), named in order (01-title.png): spread from the first to the last shot of the tour of the Playtest that takes the most, which is a game's look Playtest, the one L3 shoots. Playtests in another language or for a person's options are passed over, so the pictures show the game as it is made, and a frame with a menu page over it (the pause menu, Options, an app's slate, as the player records each shot's texts) is left out. A game with no tour that takes a shot gets a cover and a note saying a look Playtest would give it screenshots, and one whose tours give fewer than five (Lamplighter's Playtest shoots its first level and its end card) is told Steam asks for five.
From an export. Playing a game's tours takes minutes, so an export draws them only when asked:
gamewright export --shots, or the Studio Export dialog's Store pictures too box (the
session's pack.export with shots). They go into <Name> - store pictures/ beside the zip,
drawn through the session's own engine; each one that couldn't be drawn is told as a step, and
the dialog ends "its store page and pictures beside it", or says its pictures were not drawn.
Not yet
- The upload itself (butler for itch.io): it sends the game to a store, so it waits on the owner's account and key.