@genex-ai/cli-demo 0.48.0-dev.79 → 0.48.0-dev.86

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@genex-ai/cli-demo",
3
- "version": "0.48.0-dev.79",
3
+ "version": "0.48.0-dev.86",
4
4
  "description": "Set up your ~/.claude workspace, authorize, create a game project, generate AI assets, and publish (genex CLI).",
5
5
  "type": "module",
6
6
  "bin": {
@@ -28,15 +28,19 @@ ring) that no hand-written CSS can fake.
28
28
  the CSS placeholder, finished to `$genex-threejs-game-ui`'s Tier-1 floor,
29
29
  ships as the HUD.
30
30
 
31
- ## Three layers — glass is CSS, chrome is sprites, data is DOM
32
-
33
- - **Glass (DOM).** The translucent plate behind every widget is CSS —
34
- `background: rgba(<brief's darkest hue>, 0.35–0.6)` plus
35
- `backdrop-filter: blur(6–12px)` (and its `-webkit-` twin). Semi-transparency
36
- physically cannot survive sprite extraction: a composited panel's pixels are
37
- a blend of panel and background, and no cutout can un-blend them so glass
38
- is NEVER baked into a sprite. This is how AAA smoked-glass HUDs are built:
39
- live glass panels, crisp art on top.
31
+ ## Three layers — plates are DOM, chrome is sprites, data is DOM
32
+
33
+ - **Plate (DOM).** The backing surface behind a widget is built in CSS — in
34
+ whatever register the brief and concept frame call for: smoked glass
35
+ (`background: rgba(<darkest hue>, 0.35–0.6)` + `backdrop-filter: blur(6–12px)`
36
+ and its `-webkit-` twin) when the style wants translucency, a solid painted
37
+ plate, a subtle gradient or no plate at all for an outline-led look.
38
+ **Glass is a technique, not a default** do not reach for translucency
39
+ because this skill mentions it; reach for it when THIS game's brief does.
40
+ What is fixed is WHERE plates are built — the DOM — because
41
+ semi-transparency physically cannot survive sprite extraction: a composited
42
+ panel's pixels are a blend of panel and background, and no cutout can
43
+ un-blend them. Plates are NEVER baked into sprites.
40
44
  - **Chrome (sprites — what THIS pipeline generates).** Opaque frames, corner
41
45
  brackets, ornaments, emblems, icons, medallions — hard-alpha art laid over
42
46
  the glass. The Stage-2 sheet contains ONLY chrome; never a panel with its
@@ -60,10 +64,11 @@ The HUD overlays a **live 3D scene**. The pixels between widgets show the game.
60
64
  fabric, wood board) as part of the HUD. Material aesthetics belong on the
61
65
  widget FRAMES — the HP bar frame is parchment, the minimap ring is leather —
62
66
  never on a screen-filling sprite.
63
- - **No glass in sprites.** Translucent panel plates in the mockup are welcome
64
- as the LOOK, but the Stage-2 asset list requests only their opaque chrome
65
- (frame, brackets, ornament); the plate itself is rebuilt at runtime as CSS
66
- glass matching the mockup's tint (see the three layers above).
67
+ - **No plates in sprites.** Panel plates in the mockup translucent or
68
+ solid — are welcome as the LOOK, but the Stage-2 asset list requests only
69
+ their opaque chrome (frame, brackets, ornament); the plate itself is
70
+ rebuilt at runtime in CSS matching the mockup's tint (see the three layers
71
+ above).
67
72
  - **4–7 widgets.** Fewer doesn't read as a HUD; more clutters the screen and
68
73
  burns generations.
69
74
  - **Every widget needs internal contrast** — a panel fill, outline stroke, or
@@ -123,7 +128,10 @@ scaffolding, plain-CSS placeholder bars) while it renders — the CSS HUD keeps
123
128
  the game playable until the sprites land. When the gate produced a concept
124
129
  frame, anchor Stage 1 to it — `--edit <concept-url>` holds the game's
125
130
  register far better than a text-only prompt; single-sprite regenerations
126
- anchor the same way. Generate 2 mockup candidates in one
131
+ anchor the same way. The concept is a STYLE anchor only: the widget set and
132
+ layout come from the element inventory and the game contract — a mechanic
133
+ the concept invented (a lap counter, a stamina orb) does not enter the HUD,
134
+ and a mechanic it failed to show still does. Generate 2 mockup candidates in one
127
135
  call (`--candidates 2`) and pick the better one: a re-roll costs the whole
128
136
  serial chain, a second candidate costs nothing extra in wall-clock.
129
137
 
@@ -15,10 +15,10 @@ Fill `[ASSET_LIST]`, then pass the whole text as the prompt to
15
15
  identity labels);
16
16
  - **states what to REMOVE** (`runtime_static` labels and `runtime_dynamic`
17
17
  values, fills, items);
18
- - **requests chrome only** — never a panel's translucent plate or glass
19
- surface: plates are rebuilt at runtime as CSS glass (rgba +
20
- backdrop-filter), so ask for the panel's frame/brackets/ornament, not the
21
- panel surface itself;
18
+ - **requests chrome only** — never a panel's plate/backing surface,
19
+ translucent or solid: plates are rebuilt at runtime in CSS (rgba,
20
+ backdrop-filter, or a solid fill — whatever matches the mockup), so ask
21
+ for the panel's frame/brackets/ornament, not the panel surface itself;
22
22
  - **requests the annotated duplicate** for every bar/meter frame (the
23
23
  template's progress block below covers the mechanics — your item just says
24
24
  "output the clean frame + annotated duplicate pair").
@@ -68,12 +68,32 @@ you're borrowing. The bar is what those games ship, not "good enough for a
68
68
  demo". Conventions only — never logos, exact layouts, or trade dress. The
69
69
  same 2–3 names carry into the router's visual-direction gate for the scene.
70
70
  Then turn references + brief into ONE **concept frame** — a single generated
71
- image of what THIS game should look like mid-play (scene, mood, lighting;
72
- a UI impression is welcome but optional):
73
- `npx genex image "<one-sentence game look from the brief>" --aspect 16:9 --quality high --no-wait`,
74
- enqueued FIRST of all art. Its URL goes into the style-brief comment as the
75
- game's north star: every later 2D generation that accepts `--edit` anchors
76
- to it, and the scene's lighting/grading is judged against it.
71
+ image of a PLAYABLE MOMENT of this game, not key art. Build the prompt from
72
+ the game contract, not just the mood: what the player is DOING mid-action
73
+ (the verb), what threatens them right now (enemy silhouettes), what they
74
+ are chasing (the objective a finish gate, a goal, a pickup), and how the
75
+ space reads (route, scale) plus the brief's palette, materials, and
76
+ light. A beautiful empty vista with nothing to fight and nowhere to go is a
77
+ FAILED concept; so is one that invents mechanics the game doesn't have (a
78
+ lap counter in a game without laps). `--aspect 16:9 --quality high
79
+ --no-wait`, enqueued FIRST of all art; the URL goes into the style-brief
80
+ comment.
81
+
82
+ **Share it before building on it.** The moment the frame lands, show it to
83
+ the user — "this is roughly how the game will look: keep it, or change
84
+ something?" — as ONE structured question with 2–3 concrete adjustment
85
+ options. Keep building gameplay-neutral work (scaffold, physics, netcode)
86
+ while waiting, but do NOT anchor further art to an unapproved frame; if the
87
+ user redirects, regenerate with their notes before the HUD mockup and menu
88
+ frame go out.
89
+
90
+ **The concept anchors STYLE, not truth.** Palette, materials, light, and
91
+ register come from the frame; CONTENT comes from the game contract. When
92
+ the frame lands, diff it against the contract in one visible line — what
93
+ does this game have that the frame doesn't show (enemies? arenas? the
94
+ finish? the pickup)? Carry those requirements in words into every later
95
+ prompt. Where the frame contradicts gameplay, gameplay wins — never inherit
96
+ an invented mechanic, or the absence of a real one, from a picture.
77
97
 
78
98
  **4. Ask only when genuinely ambiguous.** If the concept pins the mood (a
79
99
  "gothic horror dungeon crawler" pins it), decide and state the plan in one
@@ -25,8 +25,10 @@ Three.js release or branch, and do not blindly copy demo architecture.
25
25
  decided silently. Enqueue the Tier-2 UI generations now with `--no-wait`
26
26
  (pick them up later with `npx genex wait <id>`) — they render server-side
27
27
  while you build the game. FIRST of all art: the gate's **concept frame** —
28
- the single image of the finished game's look that every later `--edit`-able
29
- generation anchors to. Then the `$genex-ai-hud` Stage-1 mockup, enqueued
28
+ a playable-moment shot (verb + threat + objective in frame, per the
29
+ game-ui gate), shown to the user for a keep-or-change answer the moment
30
+ it lands; later `--edit`-able generations anchor to it for STYLE while
31
+ the game contract owns content. Then the `$genex-ai-hud` Stage-1 mockup, enqueued
30
32
  here for EVERY game; and the `$genex-ai-menu` video whenever the menu
31
33
  decision is yes (the default for every game — "it's only a draft" is not a
32
34
  reason to decide no). Skipping this enqueue is
@@ -50,8 +52,8 @@ Three.js release or branch, and do not blindly copy demo architecture.
50
52
  - **references**: name 2–3 AAA games whose look this game borrows
51
53
  (conventions, lighting mood, palette, post — never trade dress); the
52
54
  same 2–3 the UI gate named, extended from the interface to the scene,
53
- and embodied in the gate's concept frame — the image the scene is
54
- judged against;
55
+ and embodied in the gate's concept frame — the image the scene's STYLE
56
+ is judged against (content always comes from the game contract);
55
57
  - **ambient motion**: name ONE subtle environmental motion loop that keeps
56
58
  the scene alive at rest — an emissive pulse along edges, heat shimmer,
57
59
  drifting dust, a slowly flowing texture. Shader/procedural, zero
@@ -110,6 +112,33 @@ Three.js release or branch, and do not blindly copy demo architecture.
110
112
  13. Validate in a real browser with fixed seeds, captures, interaction checks,
111
113
  and performance evidence.
112
114
 
115
+ ## Parallelize with subagents (when the environment has them)
116
+
117
+ Generations already render server-side in parallel — the wall-clock savings
118
+ live in the ATTENDED chains. When the coding agent supports background
119
+ subagents (e.g. Claude Code's Agent tool), split these off; in environments
120
+ without them (Cursor), the same order simply runs sequentially and the
121
+ `--no-wait` pattern still hides most generation latency.
122
+
123
+ - **HUD chain worker.** The moment the Stage-1 mockup lands, hand the whole
124
+ `$genex-ai-hud` chain to one subagent: pick the better candidate → Stage-2
125
+ sheet → clean → extract → masks → write the sprite wiring. Its prompt must
126
+ be self-contained — the style brief, concept-frame and mockup URLs, the
127
+ output dir, and exactly which files it owns.
128
+ - **Asset shepherd.** One subagent runs `npx genex wait` on every queued ID
129
+ and wires each asset in as it lands (skybox, models, menu video, dressing),
130
+ swapping placeholders out and reporting each swap.
131
+ - **Verification runner.** Browser evidence — screenshots, control presses,
132
+ the menu loop-seam watch, in-situ checks of placed art — can run in a
133
+ subagent while the main agent keeps building.
134
+
135
+ Hard rules: **one writer per file** — each subagent owns a disjoint file set
136
+ (the HUD worker owns the hud modules and `public/assets/hud/`, the shepherd
137
+ owns asset-wiring modules), and the main agent stays the only writer of
138
+ gameplay/netcode. Merge points are explicit: a subagent reports what it
139
+ changed, the main agent reconciles. Never put two writers on the same
140
+ module — a corrupted entry point costs more than the minutes saved.
141
+
113
142
  ## Acceptance gate
114
143
 
115
144
  **Game fast path:** for a game task that loaded no procedural/visual-system skill,