Game UI/UX
This is the canonical generic game-interface contract. It combines the pictured
game-ui-design, game-ui-ux, and Three.js game-UI planning lanes without duplicating
engine widgets or the project-specific Open Design takeover workflow.
When to use this skill
Use it to:
- design or review a HUD, menu, inventory, shop, map, settings screen, or overlay;
- map player decisions to information priority and visibility rules;
- design screen flow, pause/overlay behavior, focus order, and back/cancel behavior;
- support mouse, keyboard, controller, touch, and assistive input consistently;
- handle aspect ratios, safe areas, text scaling, localization, and content expansion;
- replace per-frame UI polling with a documented state/event contract;
- compare mockups against real runtime states and target devices;
- build a verification matrix before engine implementation.
Do not use it for a landing-page UI, pure visual moodboard, engine-specific widget code,
moment-to-moment juice, or a Darkbone Archer Open Design takeover. Route those to web design,
Open Design game UI, game-feel, Unity, or Three.js specialists.
Instructions
1. Inventory real screens and states
Inspect the runtime, design files, screenshots, controller maps, supported devices, locales,
and accessibility settings. Record each screen, overlay, modal, loading/empty/error state,
and game phase. A mockup is partial evidence and must not delete states or information it does
not show.
For each screen, name the player decision it supports. If an element supports no decision,
feedback, status, or legal requirement, challenge its presence instead of polishing it.
2. Define information hierarchy
Classify information by urgency, persistence, and consequence:
- critical and immediate;
- current decision support;
- contextual or reveal-on-demand;
- historical or reference;
- decorative.
Record visibility triggers, dismissal behavior, conflict priority, and what happens under
stress, pause, spectator, reconnect, loading, or reduced-HUD settings. Do not rely on color,
position, audio, motion, or haptics as the only carrier of critical state.
3. Model navigation and screen flow
Use explicit screens and transitions rather than scattered booleans. Define push, replace,
overlay, modal, pop/back, resume, disconnect, and destructive-action behavior.
For every input method, define initial focus, directional or sequential focus, activation,
back/cancel, tab/section change, scroll, pointer takeover, and device-switch behavior. Focus
must remain visible, predictable, recoverable after a layout change, and able to leave every
focusable element.
Accessibility settings must be reachable before gameplay and fully navigable with declared
input methods.
4. Define responsive layout and safe areas
Use layout constraints, containers, anchors, and content rules rather than one fixed pixel
composition. Record:
- target device and aspect families;
- safe-area and overscan handling;
- persistent anchors and expandable regions;
- text and UI scaling behavior;
- reflow and scroll ownership;
- minimum readable states based on target-device testing;
- split-screen, picture-in-picture, or streaming overlays when applicable.
Do not copy a universal reference resolution, touch target, margin, or text size. Measure the
target devices and apply platform accessibility guidance.
5. Make localization a layout state
Externalize player-visible strings and account for expansion, truncation policy, plural,
gender, number/date formatting, bidirectional text, fonts, glyph coverage, line breaks, and
input-glyph substitution. Test real representative strings rather than pseudo-localization
alone.
Never bake English text into art or size a control only for its shortest label unless the
product explicitly accepts that limitation.
6. Define the UI data contract
For each element, record its source, event or query, update conditions, stale state,
permission, error state, and owner. Prefer event-driven updates for changes and explicit
initial snapshots. Do not expose hidden multiplayer data through an interface binding.
Keep presentation state distinct from gameplay truth. A disabled control must explain why and
how the player can proceed when that information is safe to reveal.
7. Verify the real interaction
Test every required screen and state across the target matrix. Include:
- pointer, keyboard, controller, touch, and assistive paths as declared;
- initial focus, logical traversal, focus restoration, and back behavior;
- aspect, orientation, safe area, UI/text scale, and locale changes;
- loading, empty, error, offline, reconnect, and destructive confirmations;
- HUD conflict under peak gameplay load;
- reduced motion, color-independent state, subtitles/captions, narration, and haptics as
applicable;
- event update, stale value, unauthorized data, and rapid state-change cases.
Record the exact build, device or viewport, input method, locale, and observed result. A
static screenshot does not prove navigation or state behavior.
8. Write and validate the contract
From this skill directory, copy references/contract-example.json, replace the example, and
run:
python3 scripts/validate-game-ui.py game-ui-contract.json
python3 scripts/validate-game-ui.py --self-test
Return:
### Game UI/UX packet
- Player decision: <primary decision or flow>
- Screens and states: <covered runtime surface>
- Information hierarchy: <critical, contextual, hidden>
- Input and focus: <methods, initial focus, traversal, back>
- Layout and locale: <safe area, scaling, reflow, languages>
- Accessibility: <barriers and alternatives>
- Data contract: <source, update, stale/error behavior>
- Verification: <matrix result and missing evidence>
- Next owner: <concept, engine widgets, Three.js, feel, accessibility, or implementation>
Examples
Controller cannot navigate settings
Capture the real focus graph, initial focus, back behavior, and device-switch state. Fix the
navigation contract before styling. Test every setting and confirm that scaling or locale
changes preserve logical traversal.
Three.js HUD request
Use this skill for hierarchy, layout, focus, state, and verification. Route DOM/CSS or canvas
implementation to the appropriate web/Three.js skill. Do not create a second
threejs-game-ui-designer skill.
Darkbone Archer Open Design mockup
Route the concept, preservation handoff, or takeover to the existing Open Design game UI
sequence. Use this generic contract only for cross-project UI/UX questions not owned by that
project workflow.
Best practices
- Reconcile mockups with real states, player decisions, inputs, and supported devices.
- Treat focus, back, safe layout, localization, accessibility, and hidden data as dynamic contracts.
- Verify interaction, then route visual concepts and engine widgets to their established owners.
References
references/interface-contract.md: hierarchy, navigation, layout, localization, binding, and verification model.
references/contract-example.json: complete validator-accepted contract.
references/source-notes.md: upstream, engine, and accessibility evidence.
scripts/validate-game-ui.py: read-only Python 3.9+ validator.
1---2name: game-ui-ux3description: Design and review an engine-neutral game UI/UX contract for HUDs, menus, inventories, shops, maps, settings, overlays, tutorials, notifications, and controller flows. Use when a game interface must define player decisions, information hierarchy, persistent versus contextual HUD state, screen-stack behavior, keyboard/gamepad/touch input, focus order, back behavior, safe areas, responsive layout, scalable text, localization, accessibility, event-driven data binding, or cross-device verification; when the user asks for game UI design, game UI UX, HUD usability, controller navigation, or Three.js game UI planning; or when a mockup must be reconciled with a real runtime. Produce and validate `game-ui-contract.json`, then route visual concepts and engine widgets to their specialist skills.4---56# Game UI/UX78This is the canonical generic game-interface contract. It combines the pictured9`game-ui-design`, `game-ui-ux`, and Three.js game-UI planning lanes without duplicating10engine widgets or the project-specific Open Design takeover workflow.1112## When to use this skill1314Use it to:1516- design or review a HUD, menu, inventory, shop, map, settings screen, or overlay;17- map player decisions to information priority and visibility rules;18- design screen flow, pause/overlay behavior, focus order, and back/cancel behavior;19- support mouse, keyboard, controller, touch, and assistive input consistently;20- handle aspect ratios, safe areas, text scaling, localization, and content expansion;21- replace per-frame UI polling with a documented state/event contract;22- compare mockups against real runtime states and target devices;23- build a verification matrix before engine implementation.2425Do not use it for a landing-page UI, pure visual moodboard, engine-specific widget code,26moment-to-moment juice, or a Darkbone Archer Open Design takeover. Route those to web design,27Open Design game UI, `game-feel`, Unity, or Three.js specialists.2829## Instructions3031### 1. Inventory real screens and states3233Inspect the runtime, design files, screenshots, controller maps, supported devices, locales,34and accessibility settings. Record each screen, overlay, modal, loading/empty/error state,35and game phase. A mockup is partial evidence and must not delete states or information it does36not show.3738For each screen, name the player decision it supports. If an element supports no decision,39feedback, status, or legal requirement, challenge its presence instead of polishing it.4041### 2. Define information hierarchy4243Classify information by urgency, persistence, and consequence:4445- critical and immediate;46- current decision support;47- contextual or reveal-on-demand;48- historical or reference;49- decorative.5051Record visibility triggers, dismissal behavior, conflict priority, and what happens under52stress, pause, spectator, reconnect, loading, or reduced-HUD settings. Do not rely on color,53position, audio, motion, or haptics as the only carrier of critical state.5455### 3. Model navigation and screen flow5657Use explicit screens and transitions rather than scattered booleans. Define push, replace,58overlay, modal, pop/back, resume, disconnect, and destructive-action behavior.5960For every input method, define initial focus, directional or sequential focus, activation,61back/cancel, tab/section change, scroll, pointer takeover, and device-switch behavior. Focus62must remain visible, predictable, recoverable after a layout change, and able to leave every63focusable element.6465Accessibility settings must be reachable before gameplay and fully navigable with declared66input methods.6768### 4. Define responsive layout and safe areas6970Use layout constraints, containers, anchors, and content rules rather than one fixed pixel71composition. Record:7273- target device and aspect families;74- safe-area and overscan handling;75- persistent anchors and expandable regions;76- text and UI scaling behavior;77- reflow and scroll ownership;78- minimum readable states based on target-device testing;79- split-screen, picture-in-picture, or streaming overlays when applicable.8081Do not copy a universal reference resolution, touch target, margin, or text size. Measure the82target devices and apply platform accessibility guidance.8384### 5. Make localization a layout state8586Externalize player-visible strings and account for expansion, truncation policy, plural,87gender, number/date formatting, bidirectional text, fonts, glyph coverage, line breaks, and88input-glyph substitution. Test real representative strings rather than pseudo-localization89alone.9091Never bake English text into art or size a control only for its shortest label unless the92product explicitly accepts that limitation.9394### 6. Define the UI data contract9596For each element, record its source, event or query, update conditions, stale state,97permission, error state, and owner. Prefer event-driven updates for changes and explicit98initial snapshots. Do not expose hidden multiplayer data through an interface binding.99100Keep presentation state distinct from gameplay truth. A disabled control must explain why and101how the player can proceed when that information is safe to reveal.102103### 7. Verify the real interaction104105Test every required screen and state across the target matrix. Include:106107- pointer, keyboard, controller, touch, and assistive paths as declared;108- initial focus, logical traversal, focus restoration, and back behavior;109- aspect, orientation, safe area, UI/text scale, and locale changes;110- loading, empty, error, offline, reconnect, and destructive confirmations;111- HUD conflict under peak gameplay load;112- reduced motion, color-independent state, subtitles/captions, narration, and haptics as113 applicable;114- event update, stale value, unauthorized data, and rapid state-change cases.115116Record the exact build, device or viewport, input method, locale, and observed result. A117static screenshot does not prove navigation or state behavior.118119### 8. Write and validate the contract120121From this skill directory, copy `references/contract-example.json`, replace the example, and122run:123124```bash125python3 scripts/validate-game-ui.py game-ui-contract.json126python3 scripts/validate-game-ui.py --self-test127```128129Return:130131```markdown132### Game UI/UX packet133- Player decision: <primary decision or flow>134- Screens and states: <covered runtime surface>135- Information hierarchy: <critical, contextual, hidden>136- Input and focus: <methods, initial focus, traversal, back>137- Layout and locale: <safe area, scaling, reflow, languages>138- Accessibility: <barriers and alternatives>139- Data contract: <source, update, stale/error behavior>140- Verification: <matrix result and missing evidence>141- Next owner: <concept, engine widgets, Three.js, feel, accessibility, or implementation>142```143144## Examples145146### Controller cannot navigate settings147148Capture the real focus graph, initial focus, back behavior, and device-switch state. Fix the149navigation contract before styling. Test every setting and confirm that scaling or locale150changes preserve logical traversal.151152### Three.js HUD request153154Use this skill for hierarchy, layout, focus, state, and verification. Route DOM/CSS or canvas155implementation to the appropriate web/Three.js skill. Do not create a second156`threejs-game-ui-designer` skill.157158### Darkbone Archer Open Design mockup159160Route the concept, preservation handoff, or takeover to the existing Open Design game UI161sequence. Use this generic contract only for cross-project UI/UX questions not owned by that162project workflow.163164## Best practices1651661. Reconcile mockups with real states, player decisions, inputs, and supported devices.1672. Treat focus, back, safe layout, localization, accessibility, and hidden data as dynamic contracts.1683. Verify interaction, then route visual concepts and engine widgets to their established owners.169170## References171172- `references/interface-contract.md`: hierarchy, navigation, layout, localization, binding, and verification model.173- `references/contract-example.json`: complete validator-accepted contract.174- `references/source-notes.md`: upstream, engine, and accessibility evidence.175- `scripts/validate-game-ui.py`: read-only Python 3.9+ validator.