@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 +1 -1
- package/templates/skills/genex-ai-hud/SKILL.md +22 -14
- package/templates/skills/genex-ai-hud/references/stage2-prompt-template.md +4 -4
- package/templates/skills/genex-threejs-game-ui/SKILL.md +26 -6
- package/templates/skills/genex-threejs-skill-router/references/routing-map.md +33 -4
package/package.json
CHANGED
|
@@ -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 —
|
|
32
|
-
|
|
33
|
-
- **
|
|
34
|
-
|
|
35
|
-
`backdrop-filter: blur(6–12px)`
|
|
36
|
-
|
|
37
|
-
a
|
|
38
|
-
is
|
|
39
|
-
|
|
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
|
|
64
|
-
as the LOOK, but the Stage-2 asset list requests only
|
|
65
|
-
(frame, brackets, ornament); the plate itself is
|
|
66
|
-
|
|
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.
|
|
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
|
|
19
|
-
|
|
20
|
-
backdrop-filter
|
|
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
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
to
|
|
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
|
-
|
|
29
|
-
|
|
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
|
|
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,
|