@genex-ai/cli-demo 0.70.0-dev.182 → 0.71.0-dev.186
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 +8 -2
- package/templates/skills/genex-ai-menu/SKILL.md +7 -1
- package/templates/skills/genex-threejs-game-ui/SKILL.md +48 -18
- package/templates/skills/genex-threejs-game-ui/references/style-capsules.md +2 -1
- package/templates/skills/genex-threejs-skill-router/references/routing-map.md +4 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@genex-ai/cli-demo",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.71.0-dev.186",
|
|
4
4
|
"description": "Set up your project's agent workspace (.claude/.codex/.cursor in the game folder), authorize, create a game project, generate AI assets, and publish (genex CLI).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -40,7 +40,10 @@ ring) that no hand-written CSS can fake.
|
|
|
40
40
|
What is fixed is WHERE plates are built — the DOM — because
|
|
41
41
|
semi-transparency physically cannot survive sprite extraction: a composited
|
|
42
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.
|
|
43
|
+
un-blend them. Plates are NEVER baked into sprites. Give the plate its
|
|
44
|
+
corners with `border-radius` — never chamfer or notch it with
|
|
45
|
+
`clip-path`/`mask`; a real angular frame is chrome, generated, not clipped.
|
|
46
|
+
The only `mask`/`clip-path` in this skill is the masked-fill reveal below.
|
|
44
47
|
- **Chrome (sprites — what THIS pipeline generates).** Opaque frames, corner
|
|
45
48
|
brackets, ornaments, emblems, icons, medallions — hard-alpha art laid over
|
|
46
49
|
the glass. The Stage-2 sheet contains ONLY chrome; never a panel with its
|
|
@@ -151,7 +154,10 @@ layout come from the element inventory and the game contract — a mechanic
|
|
|
151
154
|
the concept invented (a lap counter, a stamina orb) does not enter the HUD,
|
|
152
155
|
and a mechanic it failed to show still does. Generate 2 mockup candidates in one
|
|
153
156
|
call (`--candidates 2`) and pick the better one: a re-roll costs the whole
|
|
154
|
-
serial chain, a second candidate costs nothing extra in wall-clock.
|
|
157
|
+
serial chain, a second candidate costs nothing extra in wall-clock. If the
|
|
158
|
+
user's concept-loop feedback replaces the anchor frame after Stage 1 ran,
|
|
159
|
+
re-run the pipeline from Stage 1 against the new frame — there is no cheaper
|
|
160
|
+
partial path, so budget the full chain and say so in one line.
|
|
155
161
|
|
|
156
162
|
```bash
|
|
157
163
|
# Stage 1 — full-HUD mockup over a placeholder scene (the LAYOUT REFERENCE).
|
|
@@ -65,7 +65,9 @@ might suggest. Two hard rules for the frame prompt:
|
|
|
65
65
|
|
|
66
66
|
```bash
|
|
67
67
|
# 1. The frame — a still of the scene the loop returns to (this example is a
|
|
68
|
-
# painterly meadow; YOUR prompt comes from YOUR game's style brief)
|
|
68
|
+
# painterly meadow; YOUR prompt comes from YOUR game's style brief). When the
|
|
69
|
+
# game-ui gate produced a concept frame, anchor the still to it with
|
|
70
|
+
# --edit <concept-url> so menu and world share one palette and light:
|
|
69
71
|
npx genex image "windswept alpine meadow at golden hour, wildflowers leaning in the gusts, painterly light, cinematic wide shot. Edge-to-edge cinematic composition. Full-bleed 16:9 frame. No UI elements, no text, no buttons in the frame." --aspect 16:9 --quality high
|
|
70
72
|
# -> https://assets.genex.technology/generations/<id>/image-main
|
|
71
73
|
|
|
@@ -300,6 +302,10 @@ upgrades, in order of effort:
|
|
|
300
302
|
- **One menu = ONE video, generated one-off — not iteratively.** Video
|
|
301
303
|
generation is strictly rate-limited and takes minutes per attempt. Get the
|
|
302
304
|
still frame right first (images are cheap to redo), then animate it once.
|
|
305
|
+
The one exception: a user-driven style change (the game-ui concept loop
|
|
306
|
+
re-anchored the look) re-opens this rule once — re-edit the still
|
|
307
|
+
(`--edit` against the new concept frame) and re-run the video from the new
|
|
308
|
+
still. Agent-initiated polish never does.
|
|
303
309
|
- **720p is right.** It's a background under UI; higher resolutions cost more,
|
|
304
310
|
take longer, and change nothing visible.
|
|
305
311
|
- **Pause/victory/defeat variants reuse the same video — as GRADES.** Same
|
|
@@ -79,25 +79,40 @@ lap counter in a game without laps). `--aspect 16:9 --quality high
|
|
|
79
79
|
--no-wait`, enqueued FIRST of all art; the URL goes into the style-brief
|
|
80
80
|
comment.
|
|
81
81
|
|
|
82
|
-
**Share it
|
|
83
|
-
When the concept lands,
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
82
|
+
**Share it the moment it lands — queue first, show immediately, never wait.**
|
|
83
|
+
When the concept lands, enqueue the Tier-2 UI jobs and the core asset set
|
|
84
|
+
against it in the same breath — the frame you just generated IS the working
|
|
85
|
+
style until the user says otherwise. Then pick it up with
|
|
86
|
+
`genex wait <id> --open` (or generate it with `--open`): it opens in the
|
|
87
|
+
user's browser AND prints the link. Paste that URL as a clickable link in
|
|
88
|
+
your message — a URL is invisible in a terminal, and "do you like it?" with
|
|
89
|
+
no picture in front of the user is the #1 way this checkpoint fails (they end
|
|
90
|
+
up digging logs for the file path). Ask ONE keep-or-change question — "this
|
|
91
|
+
is roughly how the game will look: keep it, or change something?" — **as
|
|
92
|
+
plain chat text, never via the blocking structured-question tool: a suspended
|
|
93
|
+
turn is a gate, and this question must not gate anything.** Silence is
|
|
94
|
+
acceptance; only explicit notes reopen the style. An unanswered style
|
|
95
|
+
question that parks the art pipeline is how a finished game ships bare walls
|
|
96
|
+
and a placeholder HUD — strictly worse than re-rolling a few assets later.
|
|
97
|
+
**Feedback triggers a LOOP whenever it arrives:** if the user comes back
|
|
98
|
+
disliking ANYTHING — immediately or an hour later — regenerate with their
|
|
99
|
+
exact notes (`--candidates 2–3` gives them options to choose from), open +
|
|
100
|
+
link the new frame, and ask again the same non-blocking way. Carry every note
|
|
95
101
|
forward so each round compounds; if two rounds don't converge, offer 2–3
|
|
96
|
-
distinct directions
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
the
|
|
102
|
+
distinct directions instead of re-rolling blind (plain chat, same rule).
|
|
103
|
+
Every shown frame becomes the working style exactly like the first did:
|
|
104
|
+
silence after a shown regeneration accepts THAT frame, and when
|
|
105
|
+
`--candidates` goes unanswered, pick the strongest yourself and say so. When
|
|
106
|
+
the style actually changes, re-anchor the style-carrying art made against
|
|
107
|
+
the old frame: the menu still is re-edited (`--edit`) against the new frame
|
|
108
|
+
and its video re-run once from the new still (`$genex-ai-menu` — a
|
|
109
|
+
user-driven style change re-opens its one-video rule), and the HUD chrome
|
|
110
|
+
re-runs its pipeline from Stage 1 with the new frame as the `--edit` anchor
|
|
111
|
+
(`$genex-ai-hud` — budget the full serial chain; it is the most expensive
|
|
112
|
+
re-anchor in the set). Style-neutral assets (most textures, sfx, models)
|
|
113
|
+
usually survive — judge each in one line. The same "open it + paste the
|
|
114
|
+
link" rule covers every image the user weighs in on — the menu still, the
|
|
115
|
+
HUD mockup candidates.
|
|
101
116
|
|
|
102
117
|
**The concept anchors STYLE, not truth.** Palette, materials, light, and
|
|
103
118
|
register come from the frame; CONTENT comes from the game contract. When
|
|
@@ -391,6 +406,16 @@ Order the HUD by what the player loses the game for ignoring:
|
|
|
391
406
|
- **Contrast against the real scene.** Test text over the brightest AND
|
|
392
407
|
darkest areas of actual gameplay; a soft dark plate or text-shadow beats
|
|
393
408
|
restyling per level.
|
|
409
|
+
- **Panel and button corners come from `border-radius`, not a CSS clip.**
|
|
410
|
+
Don't chamfer, notch, or slice corners with `clip-path: polygon(...)` or a
|
|
411
|
+
`mask` for a "hi-tech" look: a raw CSS clip hard-cuts the box, so it shears
|
|
412
|
+
off whatever sits near the corner (text, padding, the focus ring, a glow)
|
|
413
|
+
and leaves a jagged aliased diagonal that reads as *broken*, not as a
|
|
414
|
+
designed bevel. Soft corners are `border-radius`; a genuinely angular or
|
|
415
|
+
ornamented frame is a generated frame sprite (`$genex-ai-hud` chrome, or a
|
|
416
|
+
Tier-3 9-slice panel), never hand-cut in CSS. This governs decorative
|
|
417
|
+
panel/button **shape** only — it does not touch the masked-fill HUD reveal
|
|
418
|
+
or `genex ui` masks, which are the correct uses of `mask`/`clip-path`.
|
|
394
419
|
- **One cohesion layer.** A single full-screen vignette div (a subtle radial
|
|
395
420
|
gradient darkening the corners, optionally faint grain) over canvas + UI is
|
|
396
421
|
the cheapest way to make DOM-over-WebGL read as one composed image instead
|
|
@@ -442,6 +467,11 @@ architecture and consume the shared style brief.
|
|
|
442
467
|
- Hard-cut phase swaps, a menu whose elements just appear, numbers that
|
|
443
468
|
teleport.
|
|
444
469
|
- A silent menu; a bare "Loading…" over black.
|
|
470
|
+
- The art pipeline parked on an unanswered look question — the question is
|
|
471
|
+
advisory: queue Tier-2 + the asset set against the shown frame and keep
|
|
472
|
+
moving; silence is acceptance.
|
|
473
|
+
- Panel or button corners chamfered/notched with `clip-path`/`mask` instead of
|
|
474
|
+
`border-radius` — the corner looks sheared off, not designed.
|
|
445
475
|
- UI panels covering the player or the thing about to kill them.
|
|
446
476
|
- Layout shifting as numbers grow.
|
|
447
477
|
- A fail state with no visible restart key, or a restart that reloads the page.
|
|
@@ -10,7 +10,8 @@ says what it's made of in THIS game.
|
|
|
10
10
|
|
|
11
11
|
Every capsule below assumes the base rules from the skill: corners/edges for
|
|
12
12
|
UI, one display + one body font, tabular numerals, contrast plates over
|
|
13
|
-
arbitrary scenes
|
|
13
|
+
arbitrary scenes, and panel/button corners from `border-radius` or a generated
|
|
14
|
+
frame — never a raw CSS `clip-path`/`mask` chamfer.
|
|
14
15
|
|
|
15
16
|
## Fantasy / action RPG
|
|
16
17
|
|
|
@@ -52,8 +52,10 @@ Three.js release or branch, and do not blindly copy demo architecture.
|
|
|
52
52
|
while you build the game. FIRST of all art: the gate's **concept frame** —
|
|
53
53
|
a playable-moment shot (verb + threat + objective in frame, per the
|
|
54
54
|
game-ui gate), shown to the user for a keep-or-change answer the moment
|
|
55
|
-
it lands
|
|
56
|
-
the game
|
|
55
|
+
it lands — the answer is advisory, never a gate: the art pipeline starts
|
|
56
|
+
against the frame as-is, and the game-ui skill owns the re-anchor loop
|
|
57
|
+
when notes arrive; later `--edit`-able generations anchor to it for STYLE
|
|
58
|
+
while the game contract owns content. Then the `$genex-ai-hud` Stage-1 mockup, enqueued
|
|
57
59
|
here for EVERY game; and the `$genex-ai-menu` video whenever the menu
|
|
58
60
|
decision is yes (the default for every game — "it's only a draft" is not a
|
|
59
61
|
reason to decide no). Skipping this enqueue is
|