← ClaudeAtlas

gameface-drivinglisted

Operating manual for driving a live Gameface UI with the game_* MCP tools: procedures and traps verified on a real game. Load before first use of the input tools (game_click, game_fill, game_type, game_key, game_hover) or of any game_debug_* tool. Also use when verifying UI changes against a running game, when waiting for a mod rebuild to go live in-game, or when a game_* call fails or returns puzzling results. Engine support questions (does this CSS/JS/layout feature exist) belong to the gameface skill.
CitiesSkylinesModding/agents-plugins · ★ 1 · Web & Frontend · score 67
Install: claude install-skill CitiesSkylinesModding/agents-plugins
# Driving a Gameface UI This skill records field-verified procedure for the `game_*` tools: the facts the tool schemas cannot tell you. Everything here was verified live against Cities: Skylines II (CS2, Cohtml 1.64.0.7); facts that may be game-specific are labeled. For what the engine itself supports (layout, events, missing platform APIs), load the `gameface` skill; this one stays operational. ## Session start and triage Screenshot first (jpeg, quality around 60) and orient before acting: menus, dialogs, or a loading screen change what is safe to click. When any tool fails, run `game_status` before retrying; it settles whether the endpoint is reachable and which engine and page answered. Read the page identity from `target.url` (for example `assetdb://gameui/index.html`). A dead endpoint mid-session usually means the game crashed or was closed. Report it and wait for the developer to relaunch the game; retry-looping cannot help, and testing that was interrupted mid-action may have left the UI in a state worth re-checking with a screenshot once the game is back. No reconnect ritual exists or is needed: the server re-resolves the page target on the next call after the game returns. ## Finding elements Text is a durable anchor, and `game_find` is the built-in text search; the schema covers its parameters, so what follows is how to read and use it. Its three counts cascade: `unprunedTotal` (raw text matches), `total` (after `deepest` pruning), and `returned` (after `limit`