@genex-ai/cli-demo 0.94.0-dev.251 → 0.95.0-dev.253
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +2000 -2050
- package/package.json +1 -1
- package/templates/skills/genex-ai-character/SKILL.md +13 -14
- package/templates/skills/genex-ai-hud/SKILL.md +84 -85
- package/templates/skills/genex-ai-hud/references/stage1-prompt-template.md +12 -11
- package/templates/skills/genex-ai-menu/SKILL.md +72 -73
- package/templates/skills/genex-ai-model/SKILL.md +1 -1
- package/templates/skills/genex-game-director/SKILL.md +32 -16
- package/templates/skills/genex-game-director/references/design-contract.md +9 -5
- package/templates/skills/genex-game-director/references/routing-map.md +17 -7
- package/templates/skills/genex-getting-started/SKILL.md +5 -4
- package/templates/skills/genex-threejs-game-ui/SKILL.md +92 -188
- package/templates/skills/genex-threejs-game-ui/references/style-capsules.md +2 -2
|
@@ -196,17 +196,26 @@ skip it during unrelated focused work.
|
|
|
196
196
|
|
|
197
197
|
### When the UI/HUD/menu lane is invoked
|
|
198
198
|
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
199
|
+
**Generated UI art is opt-in.** A restrained interface built in clean CSS is a
|
|
200
|
+
finished, legitimate HUD—not a placeholder. Reach for the sprite lane
|
|
201
|
+
(`$genex-ai-hud`) when the game's own style genuinely wants drawn
|
|
202
|
+
chrome—ornate, painterly, comic, hand-made—or when the player asks for HUD art;
|
|
203
|
+
stylized games are where chrome earns its place. The art direction comes from
|
|
204
|
+
the game's brief in words. Generating ONE element you decided the game needs—a
|
|
205
|
+
frame, a mask, an icon, a wordmark, a menu backdrop, a menu video—is a normal,
|
|
206
|
+
first-class use of these tools, never a half-run pipeline.
|
|
207
|
+
|
|
208
|
+
Judgment governs *whether* art is generated; it never loosens *how well* it is
|
|
209
|
+
done. When you do run a stage, run its quality steps in full: `$genex-ai-hud`
|
|
210
|
+
and `$genex-ai-menu` keep their Stage-1/Stage-2 prompts, FAL calls, credits,
|
|
211
|
+
checkpoints, retries, extraction, masks, wiring, `npx genex ui audit`, nudges,
|
|
212
|
+
and preflights exactly as written, hard refusals included. Choosing to generate
|
|
213
|
+
one element rather than a whole set is a scope decision, not a bypass.
|
|
214
|
+
|
|
215
|
+
While a sprite or menu-video pipeline is actually in flight, `DESIGN.md` holds
|
|
216
|
+
its state so a context compaction can resume it: `HUD lane:`, `Menu video:`,
|
|
217
|
+
and the HUD pipeline stage IDs and paths. A game whose interface never runs a
|
|
218
|
+
generation lane records nothing there.
|
|
210
219
|
|
|
211
220
|
In both lanes, micro-text stays HTML text in the chosen font, and no generic
|
|
212
221
|
rectangular plate appears behind bars, digits, or icons; a genuinely shaped
|
|
@@ -240,6 +249,12 @@ usefully independent pieces.
|
|
|
240
249
|
a prose summary.
|
|
241
250
|
- Do not create workers merely to write extra test suites or reports.
|
|
242
251
|
|
|
252
|
+
When the player asks for parallel work, repeated refinement passes, or a critic
|
|
253
|
+
reviewing your output, that request IS the instruction—wherever it reaches you,
|
|
254
|
+
including inside their answer to a question you asked. Adopt it as the working
|
|
255
|
+
mode immediately, starting with the work in front of you; never file it as a
|
|
256
|
+
later milestone or a final polish pass.
|
|
257
|
+
|
|
243
258
|
For a substantial, judgeable result in whole coordinated mode, a **fresh
|
|
244
259
|
critic may** inspect the actual game, rendered pixels, reference, or test
|
|
245
260
|
result—not the builder's summary. It returns the single largest meaningful
|
|
@@ -264,11 +279,12 @@ head.” A genuinely non-person player (car, ship, RTS cursor, board) uses
|
|
|
264
279
|
|
|
265
280
|
When this lane is relevant, put its row in the Assets table and enqueue it
|
|
266
281
|
when its milestone starts—or in parallel when whole coordinated mode makes
|
|
267
|
-
that useful. Its asset-specific concept review is its own beat
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
282
|
+
that useful. Its asset-specific concept review is its own beat—the one concept
|
|
283
|
+
step that survives, because the player is choosing a concrete thing they asked
|
|
284
|
+
for—and it never waits on another lane. `npx genex controller character`
|
|
285
|
+
installs the controller and fallback body; `loadPlayerCharacter` keeps the boot
|
|
286
|
+
path stable, and `npx genex controller character --character <id>` switches the
|
|
287
|
+
manifest when the generated body lands.
|
|
272
288
|
|
|
273
289
|
The profile VRM avatar is the fallback: a temporary body while generation
|
|
274
290
|
runs, or the stand-in when generation genuinely could not happen, recorded as
|
|
@@ -47,7 +47,9 @@ so it survives a long pause, context compaction, handoff, and remix.
|
|
|
47
47
|
appear only when the request or existing project uses them.
|
|
48
48
|
- Preserve every machine-readable marker an invoked pipeline owns, including
|
|
49
49
|
`HUD lane:`, `Menu video:`, HUD stage IDs and paths, `Player character:`,
|
|
50
|
-
asset generation IDs/URLs, and wiring state.
|
|
50
|
+
asset generation IDs/URLs, and wiring state. They exist so work already in
|
|
51
|
+
flight survives a compaction; a lane you never run leaves its markers unwritten
|
|
52
|
+
and owes no explanation for their absence.
|
|
51
53
|
- A private reference attachment is a build input. Do not upload, publish, or
|
|
52
54
|
commit it without the player's explicit permission.
|
|
53
55
|
|
|
@@ -108,8 +110,10 @@ defaults.)
|
|
|
108
110
|
|
|
109
111
|
## Screens & UI (only when the UI/HUD/menu lane is invoked)
|
|
110
112
|
Screens: <only the requested/required states> · Style brief: <one line>
|
|
111
|
-
|
|
112
|
-
|
|
113
|
+
(The two lines below are bookkeeping for a generation lane actually running,
|
|
114
|
+
so a compaction can resume it. An interface built in CSS records neither.)
|
|
115
|
+
HUD lane: sprites (<which elements the sprite lane is producing>)
|
|
116
|
+
Menu video: <generation id/URL, or the still standing in while it renders>
|
|
113
117
|
|
|
114
118
|
## Assets — the generation plan AND budget (only when used)
|
|
115
119
|
| Asset | Kind | Status | Wired? |
|
|
@@ -119,8 +123,8 @@ Menu video: <yes | declined (player's reason) | still fallback (reason)>
|
|
|
119
123
|
| <asset> | <kind> | landed → <URL> | yes/no |
|
|
120
124
|
Status flow: proposed → planned → generating (id) → landed (URL) → wired.
|
|
121
125
|
|
|
122
|
-
**HUD pipeline state (sprites lane) — keep this
|
|
123
|
-
pipeline survives a context compaction.**
|
|
126
|
+
**HUD pipeline state (only while the sprites lane is running) — keep this
|
|
127
|
+
current; it is how that pipeline survives a context compaction.**
|
|
124
128
|
- Stage-1 mockup: <id → URL>
|
|
125
129
|
- Stage-2 sheet: <id → URL>
|
|
126
130
|
- Cleaned sheet: <id → URL>
|
|
@@ -56,9 +56,9 @@ copy demo architecture.
|
|
|
56
56
|
| poster, sign, sprite, decal, reference sheet, or other 2D art | `$genex-ai-image` |
|
|
57
57
|
| in-world motion art or another requested video | `$genex-ai-video` |
|
|
58
58
|
| sound effect, one looping music bed, or a short spoken line | `$genex-ai-sfx`, `$genex-ai-music`, or `$genex-ai-voice` |
|
|
59
|
-
| requested UI/HUD/menu/interface work, or
|
|
59
|
+
| requested UI/HUD/menu/interface work, a visible UI problem, or an interface you decided this game wants built with generated art | `$genex-threejs-game-ui` |
|
|
60
60
|
| cinematic menu/title/pause/victory/defeat/lobby/credits video treatment | `$genex-ai-menu` |
|
|
61
|
-
|
|
|
61
|
+
| drawn HUD chrome the game's style wants—one element or a matched set of frames, masks, and icons | `$genex-ai-hud` |
|
|
62
62
|
| the game works but feels flat, floaty, or unresponsive: input response, camera, impacts, cooldowns, difficulty, fail/retry | `$genex-threejs-game-feel` |
|
|
63
63
|
| realtime multiplayer: movement sync, shared ball/NPC, host-run scores/enemies, shots/emotes, persistence | `$genex-threejs-multiplayer` |
|
|
64
64
|
| player identity, sign-in, guests, saves/progress, per-player state, shared persistent world, leaderboards—mandatory for every game | `$genex-threejs-embed-auth` |
|
|
@@ -150,13 +150,18 @@ landed (<local TypeScript path>) → wired`
|
|
|
150
150
|
|
|
151
151
|
### UI, HUD, menu, and FAL
|
|
152
152
|
|
|
153
|
-
Enter this lane
|
|
154
|
-
problem, or
|
|
155
|
-
|
|
153
|
+
Enter this lane for a direct UI/HUD/menu request, a relevant visible UI
|
|
154
|
+
problem, or an interface you decided this game's style wants built with
|
|
155
|
+
generated art. Generated UI art is opt-in: a restrained CSS interface is a
|
|
156
|
+
finished HUD, and generating one element—a frame, a mask, an icon, a wordmark,
|
|
157
|
+
a menu backdrop, a menu video—is a normal use of the lane. Once invoked,
|
|
158
|
+
`$genex-threejs-game-ui`, `$genex-ai-hud`, `$genex-ai-menu`,
|
|
156
159
|
`$genex-ai-image`, and `$genex-ai-video` retain their existing Stage-1/Stage-2
|
|
157
160
|
prompts, FAL calls, credits/checkpoints, retries, extraction, masks, wiring,
|
|
158
|
-
markers, nudges, preflights, and approval behavior
|
|
159
|
-
|
|
161
|
+
markers, nudges, preflights, and approval behavior—the scope is your call, the
|
|
162
|
+
execution quality is theirs. While a sprite or menu-video pipeline is in
|
|
163
|
+
flight, keep `HUD lane:`, `Menu video:`, and every HUD pipeline stage ID/path
|
|
164
|
+
current in `DESIGN.md` so a compaction can resume it.
|
|
160
165
|
|
|
161
166
|
The absence of generated HUD/menu/concept art alone never interrupts unrelated
|
|
162
167
|
focused work.
|
|
@@ -192,6 +197,11 @@ sub-agents. One writer owns each disjoint file set; the director integrates
|
|
|
192
197
|
shared boot, loop, and netcode files. Focused work skips fan-out unless the
|
|
193
198
|
request itself has independently useful parts.
|
|
194
199
|
|
|
200
|
+
A player who asks for parallel work, repeated refinement passes, or a critic
|
|
201
|
+
reviewing the work has given the instruction—wherever it reaches you, including
|
|
202
|
+
inside an answer to a question you asked. It becomes the working mode right
|
|
203
|
+
then, on the work in front of you, not a milestone scheduled for later.
|
|
204
|
+
|
|
195
205
|
For a substantial judgeable result, a fresh critic may inspect the real game,
|
|
196
206
|
rendered pixels, supplied reference, or test output—not a builder summary. It
|
|
197
207
|
returns the single largest meaningful gap; the builder may correct it and ask
|
|
@@ -52,10 +52,11 @@ npx genex video "waterfall mist drifting" --loop # a video clip (screen/bac
|
|
|
52
52
|
|
|
53
53
|
Each has a focused skill with the exact loader code — `$genex-ai-model`,
|
|
54
54
|
`$genex-ai-skybox`, `$genex-ai-sfx`, `$genex-ai-texture`, `$genex-ai-image`,
|
|
55
|
-
`$genex-ai-video`.
|
|
56
|
-
|
|
57
|
-
backdrop + DOM buttons) and `$genex-ai-hud` (a
|
|
58
|
-
masked fills).
|
|
55
|
+
`$genex-ai-video`. Two more workflow skills draw UI art on the same commands,
|
|
56
|
+
for games whose style wants it: `$genex-ai-menu` (a cinematic menu — looping
|
|
57
|
+
video backdrop + DOM buttons) and `$genex-ai-hud` (a HUD sprite set with
|
|
58
|
+
masked fills). A restrained interface in clean CSS is a finished UI too —
|
|
59
|
+
`$genex-threejs-game-ui` builds that one.
|
|
59
60
|
|
|
60
61
|
## Identity & saves (every game)
|
|
61
62
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: genex-threejs-game-ui
|
|
3
|
-
description: Design the UI HUD interface of a Genex Three.js game —
|
|
3
|
+
description: Design the UI HUD interface of a Genex Three.js game — work out the screen set this game actually needs (loader, menu, HUD, pause/win/lose, lobby) under one shared art direction, then build it as an animated DOM overlay. Use whenever the game needs on-screen text, meters, buttons, menus, or screens, or when the interface reads as a generic dashboard, covers the action, or shifts as numbers change.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Genex Three.js Game UI
|
|
@@ -11,201 +11,110 @@ screens fade and stagger in, values tween, defeat feels different from victory.
|
|
|
11
11
|
This skill is the UI director for the 2D layer of a vanilla Three.js game: the
|
|
12
12
|
plan, the architecture, the states, motion, and readability rules.
|
|
13
13
|
|
|
14
|
-
##
|
|
14
|
+
## Work out which screens this game needs
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
in another.
|
|
16
|
+
Two minutes before the first UI file prevents the two failure modes no later
|
|
17
|
+
polish can fix: a screen set discovered piecemeal, and a menu styled in one
|
|
18
|
+
world while the HUD lives in another.
|
|
20
19
|
|
|
21
20
|
**1. Screen inventory — derived from the game type, not discovered later:**
|
|
22
21
|
|
|
23
22
|
| Screen | When it exists | Default tier |
|
|
24
23
|
| --- | --- | --- |
|
|
25
24
|
| Loader | always | 1 — branded (see loader spec below) |
|
|
26
|
-
| Main menu |
|
|
25
|
+
| Main menu | most games; a few genuinely don't want one (an instant-restart arcade toy) — but "it's only a draft" is never the reason | 1 — animated CSS title screen; 2 — cinematic (`$genex-ai-menu`) when the game's style wants it |
|
|
27
26
|
| Pause | always — opens on the Escape key | 1 — menu backdrop under a dark overlay |
|
|
28
27
|
| Fail / retry | always | 1 — a *graded* variant of the menu screen |
|
|
29
28
|
| Win / next | always | 1 — graded variant, warm |
|
|
30
29
|
| Settings | always — every game carries the Quality picker (Auto/Low/Medium/High, `$genex-threejs-adaptive-quality`), and any game with generated audio carries **Music + SFX volume sliders** (persisted, applied live; music default 0.30, sfx ~0.7 — `$genex-ai-music`; a paid track with no volume control is a failure mode), plus whatever else it has to set | 1 |
|
|
31
30
|
| Lobby / waiting | multiplayer only | 1 over the menu backdrop |
|
|
32
|
-
| HUD |
|
|
31
|
+
| HUD | whenever the game shows state the player has to read | 1 — a restrained CSS HUD finished to the readability + motion rules below; 2 — generated sprites (`$genex-ai-hud`) when the game's style wants drawn chrome |
|
|
33
32
|
|
|
34
33
|
The lobby row is bound by `$genex-threejs-multiplayer`'s MANDATORY rule: the
|
|
35
34
|
waiting overlay's visibility is re-read from `mm.matchmaking.status` every
|
|
36
35
|
frame and closes the instant it flips to `playing` — verified in two browser
|
|
37
36
|
windows. Plan the lobby as a styled screen (roster + count over the menu
|
|
38
|
-
backdrop), not an afterthought `<div>`.
|
|
39
|
-
|
|
40
|
-
|
|
37
|
+
backdrop), not an afterthought `<div>`. In a game that genuinely has no menu,
|
|
38
|
+
every "menu backdrop" row above (pause, fail, win, lobby) grades over the
|
|
39
|
+
loader's key art instead.
|
|
41
40
|
|
|
42
41
|
The table lists screens; **elements are inventoried separately**. Walk the
|
|
43
42
|
whole loop in your head — loader → menu → spawn → action → pickup → damage →
|
|
44
43
|
death → retry → win — and write down EVERY on-screen element the player will
|
|
45
44
|
ever see: the reticle and each of its states, aim/interact cues, toasts,
|
|
46
|
-
damage numbers, kill feeds, timers, countdowns, pickup popups.
|
|
45
|
+
damage numbers, kill feeds, timers, countdowns, pickup popups. That written
|
|
46
|
+
list is the authority on WHAT exists: mechanics come from the agreed game,
|
|
47
|
+
never from a picture — a widget that shows up in generated art with no
|
|
48
|
+
backing mechanic is cut before anything wires it.
|
|
47
49
|
|
|
48
50
|
**2. One shared style brief — for the WHOLE game, not just the UI.** Write it
|
|
49
51
|
once — 4–5 named hues, materials, one display + one body font, mood — and
|
|
50
|
-
store it as a comment block near the UI code.
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
52
|
+
store it as a comment block near the UI code. This brief, in WORDS, IS the
|
|
53
|
+
game's art direction: it comes out of the game's own concept and premise, and
|
|
54
|
+
everything downstream reads its palette, materials, and register from here.
|
|
55
|
+
For genre conventions worth borrowing — placement, hierarchy, type treatment,
|
|
56
|
+
material language — skim
|
|
57
|
+
[references/style-capsules.md](references/style-capsules.md).
|
|
58
|
+
`$genex-ai-menu`, `$genex-ai-hud`, the loader, and every plain-CSS screen
|
|
59
|
+
consume THIS brief verbatim — and so does the scene: the visual-direction
|
|
60
|
+
plan derives its lighting mood, fog, grading, and post-stack choices from the
|
|
61
|
+
same block. Two style briefs in one game is a bug; a scene graded in one
|
|
62
|
+
world under a UI styled in another is the same bug. The brief's font pair
|
|
56
63
|
is LOADED for real — a Google Fonts `<link>` (or `@font-face`) in
|
|
57
64
|
`index.html`, per `$genex-ai-menu`'s genre font table; a display font that
|
|
58
65
|
ships as a system-stack fallback (`Arial Black`, `Impact`) is the same bug in
|
|
59
66
|
type.
|
|
60
67
|
|
|
61
|
-
**3.
|
|
62
|
-
and the
|
|
63
|
-
|
|
64
|
-
game
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
contract in TEXT, not from a prior image: what the player is DOING
|
|
68
|
-
mid-action (the verb), what threatens them right now (enemy silhouettes),
|
|
69
|
-
what they are chasing (the objective — a finish gate, a goal, a pickup),
|
|
70
|
-
and how the space reads (route, scale) — plus the brief's palette,
|
|
71
|
-
materials, and light. A beautiful empty vista with nothing to fight and
|
|
72
|
-
nowhere to go is a FAILED concept; so is one that invents mechanics the
|
|
73
|
-
game doesn't have (a lap counter in a game without laps). Generate it
|
|
74
|
-
`--size 2560x1440 --quality high --no-wait`, enqueued FIRST of all art —
|
|
75
|
-
ONE image, no candidate variants unless the user asks; its URL goes into
|
|
76
|
-
the style-brief comment.
|
|
77
|
-
|
|
78
|
-
**Describe the concept in words while it renders.** Lay it out in chat —
|
|
79
|
-
the playable moment (the verb), what threatens the player, what they chase,
|
|
80
|
-
how the space reads, and the brief's palette / materials / light /
|
|
81
|
-
references — so the user is weighing a stated direction, not guessing at a
|
|
82
|
-
picture.
|
|
83
|
-
|
|
84
|
-
**The moment the mockup lands, the style chain fires — then the user sees
|
|
85
|
-
the frame.** In this order, no waiting between the steps: decide the HUD
|
|
86
|
-
lane as art director and record the `HUD lane:` line in DESIGN.md
|
|
87
|
-
(`$genex-game-director` §5 owns the criteria), enqueue the style-dependent
|
|
88
|
-
chain `--no-wait` — the HUD Stage-2 deconstruct (from the mockup), the menu
|
|
89
|
-
still (`--edit`-anchored to it), and the logotype — and THEN show the frame:
|
|
90
|
-
pick it up with `genex wait <id> --open` (or generate with `--open`) so it
|
|
91
|
-
opens in the user's browser AND prints the link, and paste the URL as a
|
|
92
|
-
clickable link — a URL is invisible in a terminal, and "do you like it?"
|
|
93
|
-
with no picture in front of the user is the #1 way this checkpoint fails.
|
|
94
|
-
|
|
95
|
-
**Ask keep-or-change with your question tool — as INFORMATION, never a
|
|
96
|
-
gate.** The one that shows clickable options; a short numbered list in chat
|
|
97
|
-
only where there is none. ONE question — "this is roughly how the game and
|
|
98
|
-
its HUD will look — keep this direction, or change something?" — with
|
|
99
|
-
concrete keep / change options. The chain is already running while they
|
|
100
|
-
read it: silence means the concept stands; nothing except the menu VIDEO
|
|
101
|
-
ever waits for the answer. The user still gets a real say — a "change" at
|
|
102
|
-
any time loops the concept with their notes at image prices (below). The
|
|
103
|
-
menu video (the one expensive item) fires at the FIRST of: the user's yes ·
|
|
104
|
-
the next `genex preview` after the menu still landed · style work being the
|
|
105
|
-
only work left — and never while a user objection is open
|
|
106
|
-
(`$genex-ai-menu` owns the trigger). (The core asset set — hero model,
|
|
107
|
-
ground texture, skybox, sfx — is prompted from the game IDEA, not the
|
|
108
|
-
image, and mostly survives a style change: launch it up front with
|
|
109
|
-
placeholders. Everything style-independent — scaffold, boot wiring, the
|
|
110
|
-
core loop, the gameplay-LOGIC subagent modules — keeps moving at full speed
|
|
111
|
-
in parallel throughout.)
|
|
112
|
-
|
|
113
|
-
**Change reopens the loop, same shape.** If the user picks "change" — or
|
|
114
|
-
comes back with notes immediately or an hour later — re-run Stage 1 (the
|
|
115
|
-
concept mockup itself) with their exact notes, open + link the new frame,
|
|
116
|
-
ask again the same structured way, and re-run the cheap chain from the new
|
|
117
|
-
frame (image-priced — that is the design: the correction lane is cheap
|
|
118
|
-
because the expensive item waited). Carry every note forward so each round
|
|
119
|
-
compounds; if two rounds don't converge, offer 2–3 distinct directions
|
|
120
|
-
(that's the one moment `--candidates` earns its place) instead of
|
|
121
|
-
re-rolling blind. Each standing frame is the working style. When the style
|
|
122
|
-
changes after downstream art already ran, re-anchor it: the menu still is
|
|
123
|
-
re-edited (`--edit`) against the new mockup and its video re-run once from
|
|
124
|
-
the new still (`$genex-ai-menu` — a user-driven style change re-opens its
|
|
125
|
-
one-video rule), and the HUD deconstruct (Stage 2 onward, `$genex-ai-hud`)
|
|
126
|
-
restarts from the new mockup. Style-neutral assets (most textures, sfx,
|
|
127
|
-
models) usually survive — judge each in one line. The same "open it + paste
|
|
128
|
-
the link" rule covers every image the user weighs in on — the menu still,
|
|
129
|
-
the HUD mockup.
|
|
130
|
-
|
|
131
|
-
**The concept anchors STYLE, not truth.** Palette, materials, light, and
|
|
132
|
-
register come from the frame; CONTENT comes from the game contract. This
|
|
133
|
-
matters MORE now that the concept carries a HUD: every widget in the mockup
|
|
134
|
-
is a PROPOSAL, and a widget with no backing mechanic is cut before Stage 2 —
|
|
135
|
-
mechanics come from the agreed game, never from the picture. Extra widgets
|
|
136
|
-
the image invented are recorded in the plan message as "deferred from
|
|
137
|
-
mockup" — never silently wired, never silently dropped. When
|
|
138
|
-
the frame lands, diff it against the contract in one visible line — what
|
|
139
|
-
does this game have that the frame doesn't show (enemies? arenas? the
|
|
140
|
-
finish? the pickup)? Carry those requirements in words into every later
|
|
141
|
-
prompt. Where the frame contradicts gameplay, gameplay wins — never inherit
|
|
142
|
-
an invented mechanic, or the absence of a real one, from a picture.
|
|
143
|
-
|
|
144
|
-
**4. Ask only when genuinely ambiguous.** If the concept pins the mood (a
|
|
145
|
-
"gothic horror dungeon crawler" pins it), decide and state the plan in one
|
|
146
|
-
line. Only when the art direction is truly open, ask ONE question
|
|
147
|
-
with 2–3 concrete directions, each naming its palette + font pair — using
|
|
148
|
-
your question tool when you have one; if you have none, a short numbered
|
|
149
|
-
list in chat. Never ask about the screen
|
|
150
|
-
inventory — it derives from the game type.
|
|
151
|
-
|
|
152
|
-
**5. Style follows THIS game's concept.** The examples in every Genex skill
|
|
153
|
-
are examples, not defaults. Do not default to neon/cyberpunk/synthwave — or
|
|
154
|
-
any other single register — unless the concept calls for it.
|
|
155
|
-
|
|
156
|
-
**6. Close the gate out loud — a fixed-format plan message.** Post this
|
|
157
|
-
message in chat, translated to the user's language, filling every line —
|
|
158
|
-
this exact structure, not a paraphrase (the scaffold's keep-it-short talk
|
|
159
|
-
rule explicitly does not apply to this one message):
|
|
68
|
+
**3. Never stall the build on art.** Scaffold, boot wiring, the core loop,
|
|
69
|
+
and the gameplay-logic modules keep moving in parallel whatever the UI is
|
|
70
|
+
doing — and the core asset set (hero model, ground texture, skybox, sfx) is
|
|
71
|
+
prompted from the game IDEA, so it can launch up front behind placeholders.
|
|
72
|
+
Nothing ready to build waits on an art answer: decide, say the decision in
|
|
73
|
+
one line, keep going.
|
|
160
74
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
• Menu: <archetype + button treatment, one-line reason from the brief>
|
|
168
|
-
• HUD lane: <sprites (…) | CSS (…, one-line justification)> — recorded in DESIGN.md
|
|
169
|
-
• Concept (HUD mockup): <generation id> — shown for keep / change
|
|
170
|
-
(informational — the chain below is already queued; silence = it stands)
|
|
171
|
-
• Queued on concept landing: HUD sheet (Stage 2) · menu still · logotype
|
|
172
|
-
<or "skipped: reason">; menu VIDEO waits for: your yes / the next preview
|
|
173
|
-
after the still lands / style work being all that's left <or "no menu: reason">
|
|
174
|
-
• Building now (style-independent): <core loop · logic modules already moving>
|
|
175
|
-
• Deferred from mockup: <widgets the image invented but the game lacks — or "none">
|
|
176
|
-
```
|
|
75
|
+
**4. Ask only when genuinely ambiguous.** If the game's premise pins the mood
|
|
76
|
+
(a "gothic horror dungeon crawler" pins it), decide and state it in one line.
|
|
77
|
+
Only when the art direction is truly open, ask ONE question with 2–3 concrete
|
|
78
|
+
directions, each naming its palette + font pair — using your question tool
|
|
79
|
+
when you have one; if you have none, a short numbered list in chat. Never ask
|
|
80
|
+
about the screen inventory — it derives from the game type.
|
|
177
81
|
|
|
178
|
-
|
|
82
|
+
**5. Style follows THIS game.** The examples in every Genex skill are
|
|
83
|
+
examples, not defaults. Do not default to neon/cyberpunk/synthwave — or any
|
|
84
|
+
other single register — unless the game calls for it.
|
|
179
85
|
|
|
180
86
|
## The tier ladder
|
|
181
87
|
|
|
182
|
-
- **Tier 1 —
|
|
183
|
-
screens, shared brief, branded loader, animated
|
|
184
|
-
navigation, phase transitions, UI sounds, vignette.
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
88
|
+
- **Tier 1 — the interface you build, zero generations.** Everything in this
|
|
89
|
+
skill: the planned screens, the shared brief, a branded loader, an animated
|
|
90
|
+
CSS menu with keyboard navigation, phase transitions, UI sounds, vignette.
|
|
91
|
+
Finished to this skill's readability, hierarchy, and motion rules, a
|
|
92
|
+
restrained CSS interface is a real, finished HUD — not a placeholder, not a
|
|
93
|
+
step toward something else. Plenty of games — anything spare, modern,
|
|
94
|
+
systems-y, minimal — are done here and better for it.
|
|
95
|
+
- **Tier 2 — generated UI art, async, when the style asks for it.** The sprite
|
|
96
|
+
HUD (`$genex-ai-hud`), the cinematic menu video (`$genex-ai-menu`), and the
|
|
97
|
+
generated **logotype** — one `--transparent` wordmark in the brief's display
|
|
98
|
+
register (`$genex-ai-menu`'s logotype step). Reach for this lane when the
|
|
99
|
+
game's own style genuinely wants drawn chrome — ornate, painterly, comic,
|
|
100
|
+
hand-made — or when the player asks for HUD art. It is
|
|
101
|
+
**element-addressable**: generating ONE thing you decided the game needs — a
|
|
102
|
+
frame, a mask, an icon, a wordmark, a menu backdrop, a menu video — is a
|
|
103
|
+
normal, complete use of it, never a half-run pipeline. Enqueue `--no-wait`,
|
|
104
|
+
keep building, pick results up with `npx genex wait <id>`, and swap them in
|
|
105
|
+
as they land; while something is in flight, its id lives in DESIGN.md so a
|
|
106
|
+
compaction can pick it back up. Tier 2 never blocks a playable v0 — and
|
|
107
|
+
never park what landed: run `npx genex wait` on every enqueued ID before any
|
|
108
|
+
publish and before the final handoff of a session. When you show the user a
|
|
109
|
+
generated image, open it and paste the link (`npx genex wait <id> --open`,
|
|
110
|
+
or generate with `--open`) — a bare URL in a terminal is invisible, and "do
|
|
111
|
+
you like it?" with no picture in front of them is how that exchange fails.
|
|
112
|
+
Whatever you do generate gets its quality steps IN FULL — extraction, masks,
|
|
113
|
+
wiring, `npx genex ui audit`; judgment decides whether art is generated, it
|
|
114
|
+
never loosens how well it's done.
|
|
206
115
|
- **Tier 3 — offer, don't build.** Video layers over the HUD, 9-slice panel
|
|
207
116
|
sprites, animated menu sprites. Offer in one line
|
|
208
|
-
after the player has seen
|
|
117
|
+
after the player has seen the interface working; build on request.
|
|
209
118
|
|
|
210
119
|
## Architecture: DOM overlay by default
|
|
211
120
|
|
|
@@ -357,12 +266,11 @@ black reads as a broken page. The branded version costs nothing:
|
|
|
357
266
|
|
|
358
267
|
- **Background:** the menu's still frame — when the game has a cinematic menu,
|
|
359
268
|
that image exists BEFORE the video does; show it dimmed
|
|
360
|
-
(`filter: brightness(0.6)`) behind the progress.
|
|
361
|
-
`npx genex image` key-art call in the house
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
handoff is the same failure.
|
|
269
|
+
(`filter: brightness(0.6)`) behind the progress. Otherwise, something
|
|
270
|
+
composed from the brief: an `npx genex image` key-art call in the house
|
|
271
|
+
style, or a CSS backdrop built from the brief's hues (a gradient field, the
|
|
272
|
+
logotype, a sliver of the game's own shapes). Flat black with a percentage
|
|
273
|
+
over it is the thing to avoid.
|
|
366
274
|
- **Progress:** a thin bar styled from the brief (its accent hue), driven by
|
|
367
275
|
real asset counts — never an indeterminate spinner alone.
|
|
368
276
|
- **Reveal:** when ready, fade the loader out (400–600 ms) into the menu or
|
|
@@ -494,43 +402,39 @@ timer in the game WILL drift apart). Buttons and menu keys emit the same
|
|
|
494
402
|
intents the gameplay input path uses — a "Restart" button and the R key must
|
|
495
403
|
run identical code.
|
|
496
404
|
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
video backdrop behind the buttons
|
|
500
|
-
|
|
501
|
-
|
|
405
|
+
That holds whichever tier the interface is drawn in. When a game does take the
|
|
406
|
+
generated layer — a sprite HUD (`$genex-ai-hud`), a cinematic menu with a
|
|
407
|
+
looping video backdrop behind the buttons (`$genex-ai-menu`) — it slots into
|
|
408
|
+
this exact `#ui` + `data-phase` architecture and consumes the shared style
|
|
409
|
+
brief. Generated chrome changes how a widget LOOKS; it never changes where the
|
|
410
|
+
widget gets its numbers.
|
|
502
411
|
|
|
503
412
|
## Failure modes to catch before the player does
|
|
504
413
|
|
|
505
|
-
- No
|
|
506
|
-
different worlds.
|
|
507
|
-
- A
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
- The
|
|
511
|
-
|
|
512
|
-
- HUD sprites never enqueued at the gate — the placeholder CSS shipped as the
|
|
513
|
-
final HUD.
|
|
414
|
+
- No screen inventory: screens invented one at a time, menu and HUD styled in
|
|
415
|
+
two different worlds.
|
|
416
|
+
- A HUD-bearing image fed to `genex video --frame` — a frame with UI baked
|
|
417
|
+
into it yields a menu backdrop with UI baked into it; the UI-free menu still
|
|
418
|
+
is the ONLY valid frame input (`$genex-ai-menu`).
|
|
419
|
+
- The build stalled waiting on art — scaffold, core loop, and logic modules
|
|
420
|
+
keep moving in parallel while anything generated is in flight.
|
|
514
421
|
- No pause screen, or a pause that isn't bound to Escape.
|
|
515
422
|
- The OS arrow parked over the action for the whole session in a keyboard-driven
|
|
516
423
|
game (the cursor is either a gameplay tool or locked away — see the cursor
|
|
517
424
|
section).
|
|
518
425
|
- A style brief whose fonts were never actually loaded (a system-stack display
|
|
519
426
|
font at runtime).
|
|
520
|
-
- A micro-element (reticle, cue, toast, damage number) left
|
|
521
|
-
while the panels got the
|
|
427
|
+
- A micro-element (reticle, cue, toast, damage number) left at browser
|
|
428
|
+
defaults while the panels got the full treatment — one interface, one level
|
|
429
|
+
of finish.
|
|
522
430
|
- A generic stat dashboard (rows of labels + numbers) instead of a designed
|
|
523
431
|
HUD — pick the 2–3 numbers that matter and style them by hierarchy.
|
|
524
432
|
- Hard-cut phase swaps, a menu whose elements just appear, numbers that
|
|
525
433
|
teleport.
|
|
526
434
|
- A silent menu; a bare "Loading…" over black.
|
|
527
|
-
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
objection was still open (its event triple is the only wait in the lane);
|
|
531
|
-
OR the whole build stalled on the concept at all, when concept-INDEPENDENT
|
|
532
|
-
work (scaffold, core loop, logic subagents) must keep moving in parallel
|
|
533
|
-
throughout.
|
|
435
|
+
- Generated UI art enqueued and then left on the shelf — a landed sprite sheet
|
|
436
|
+
that never got extracted, masked, and wired is worse than never running the
|
|
437
|
+
lane at all.
|
|
534
438
|
- A CSS-cut corner (`clip-path`/`mask`) that shears its own content — clipped
|
|
535
439
|
text or padding, a lost focus ring or glow, a jagged aliased edge, or a
|
|
536
440
|
border/frame that stops at the cut instead of following it — the
|
|
@@ -107,7 +107,7 @@ their ONE established HUD use, the masked-fill progress reveal.
|
|
|
107
107
|
canvas texture on PLATES (not full-screen).
|
|
108
108
|
- A display face with calligraphic character; body stays clean for
|
|
109
109
|
readability.
|
|
110
|
-
- Palette lifted from the
|
|
111
|
-
second palette.
|
|
110
|
+
- Palette lifted from the game's own world — sample the scene (or its key art,
|
|
111
|
+
where the game has some), don't invent a second palette.
|
|
112
112
|
- Menu lean: **left rail** or **diegetic corner** over the painted vista;
|
|
113
113
|
brushwork logotype; bare text with calligraphic display face.
|