@genex-ai/cli-demo 0.93.0 → 0.94.0-dev.249

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.
Files changed (58) hide show
  1. package/dist/index.js +26 -5
  2. package/package.json +1 -1
  3. package/templates/skills/genex-ai-model/SKILL.md +3 -2
  4. package/templates/skills/genex-ai-skybox/SKILL.md +4 -4
  5. package/templates/skills/genex-ai-texture/SKILL.md +1 -1
  6. package/templates/skills/genex-ai-video/SKILL.md +1 -1
  7. package/templates/skills/genex-game-director/SKILL.md +321 -411
  8. package/templates/skills/genex-game-director/references/design-contract.md +130 -179
  9. package/templates/skills/genex-game-director/references/routing-map.md +242 -362
  10. package/templates/skills/genex-getting-started/SKILL.md +2 -2
  11. package/templates/skills/genex-threejs-exposure-color-grading/SKILL.md +3 -7
  12. package/templates/skills/genex-threejs-multiplayer/SKILL.md +19 -2
  13. package/templates/skills/genex-threejs-procedural-assets/SKILL.md +112 -0
  14. package/templates/skills/genex-threejs-procedural-materials/SKILL.md +3 -7
  15. package/templates/skills/genex-threejs-procedural-vfx/SKILL.md +6 -11
  16. package/templates/skills/genex-threejs-shadow-systems/SKILL.md +2 -3
  17. package/templates/skills/genex-threejs-visual-validation/SKILL.md +0 -4
  18. package/templates/skills/genex-updates/SKILL.md +1 -1
  19. package/templates/skills/genex-threejs-atmosphere-aerial-perspective/SKILL.md +0 -46
  20. package/templates/skills/genex-threejs-atmosphere-aerial-perspective/references/atmosphere.md +0 -213
  21. package/templates/skills/genex-threejs-bloom/SKILL.md +0 -44
  22. package/templates/skills/genex-threejs-bloom/references/bloom.md +0 -187
  23. package/templates/skills/genex-threejs-exposure-color-grading/references/exposure-grading.md +0 -205
  24. package/templates/skills/genex-threejs-game-content/SKILL.md +0 -198
  25. package/templates/skills/genex-threejs-game-content/references/content-tables.md +0 -269
  26. package/templates/skills/genex-threejs-image-pipeline/SKILL.md +0 -56
  27. package/templates/skills/genex-threejs-image-pipeline/references/image-pipeline.md +0 -197
  28. package/templates/skills/genex-threejs-lighting-design/SKILL.md +0 -144
  29. package/templates/skills/genex-threejs-lighting-design/references/light-recipes.md +0 -137
  30. package/templates/skills/genex-threejs-open-world/SKILL.md +0 -149
  31. package/templates/skills/genex-threejs-open-world/references/terrain-streaming.md +0 -215
  32. package/templates/skills/genex-threejs-precipitation-surfaces/SKILL.md +0 -59
  33. package/templates/skills/genex-threejs-precipitation-surfaces/references/precipitation-surfaces.md +0 -181
  34. package/templates/skills/genex-threejs-procedural-architecture/SKILL.md +0 -50
  35. package/templates/skills/genex-threejs-procedural-architecture/references/architecture-systems.md +0 -509
  36. package/templates/skills/genex-threejs-procedural-fields/SKILL.md +0 -61
  37. package/templates/skills/genex-threejs-procedural-fields/references/field-systems.md +0 -232
  38. package/templates/skills/genex-threejs-procedural-geometry/SKILL.md +0 -39
  39. package/templates/skills/genex-threejs-procedural-geometry/references/mesh-systems.md +0 -202
  40. package/templates/skills/genex-threejs-procedural-materials/references/material-systems.md +0 -198
  41. package/templates/skills/genex-threejs-procedural-planets/SKILL.md +0 -48
  42. package/templates/skills/genex-threejs-procedural-planets/references/planet-systems.md +0 -498
  43. package/templates/skills/genex-threejs-procedural-vegetation/SKILL.md +0 -52
  44. package/templates/skills/genex-threejs-procedural-vegetation/references/vegetation-systems.md +0 -314
  45. package/templates/skills/genex-threejs-procedural-vfx/references/vfx-systems.md +0 -218
  46. package/templates/skills/genex-threejs-raymarched-space-effects/SKILL.md +0 -37
  47. package/templates/skills/genex-threejs-raymarched-space-effects/references/space-effects.md +0 -194
  48. package/templates/skills/genex-threejs-screen-space-ambient-occlusion/SKILL.md +0 -35
  49. package/templates/skills/genex-threejs-screen-space-ambient-occlusion/references/ambient-occlusion.md +0 -441
  50. package/templates/skills/genex-threejs-spectral-ocean/SKILL.md +0 -52
  51. package/templates/skills/genex-threejs-spectral-ocean/references/spectral-ocean.md +0 -473
  52. package/templates/skills/genex-threejs-temporal-surfaces/SKILL.md +0 -41
  53. package/templates/skills/genex-threejs-temporal-surfaces/references/temporal-surfaces.md +0 -207
  54. package/templates/skills/genex-threejs-visual-validation/references/visual-validation.md +0 -427
  55. package/templates/skills/genex-threejs-volumetric-clouds/SKILL.md +0 -49
  56. package/templates/skills/genex-threejs-volumetric-clouds/references/volumetric-clouds.md +0 -579
  57. package/templates/skills/genex-threejs-water-optics/SKILL.md +0 -57
  58. package/templates/skills/genex-threejs-water-optics/references/water-optics.md +0 -195
@@ -1,430 +1,340 @@
1
1
  ---
2
2
  name: genex-game-director
3
- description: The Genex game director the entry point for every Genex build. Checks what your environment can do, writes the DESIGN.md design contract, routes any new-game, feature, or component request to the right Genex skills in the right order, and fans independent modules out to your sub-agents when you have them. Load first for any game work, or when unsure which skill applies.
3
+ description: The lightweight Genex request router. Read the latest game, tool, component, or focused-change request; ask only genuinely unresolved build forks; keep DESIGN.md current; and load only the Genex skills that the requested work actually needs. Use first for new work, resumed work, or whenever ownership is unclear.
4
4
  ---
5
5
 
6
6
  # Genex Game Director
7
7
 
8
- Own the end-to-end outcome: a finished, playable, good-looking game not a
9
- tech demo that boots. You are the director; the other Genex skills are your
10
- specialists. Load only the skills that change the result; never the whole
11
- pack by default.
8
+ The player chooses what to build and in what order. You route that request;
9
+ the owning Genex skills control how their lanes run. Load only skills that
10
+ change the requested result—never the whole pack by default, and never
11
+ commission unrelated work because an old workflow listed it.
12
12
 
13
- **After ANY context compaction or session resume**, re-read the game's
14
- `AGENTS.md` (the Genex build contract block), `DESIGN.md`, and the skill for
15
- the stage you are executing never keep building from memory alone. A
16
- compaction that eats the conversation does not release you from the
17
- pipeline; those two files are how it comes back.
13
+ **After any context compaction or session resume**, re-read the project's
14
+ `AGENTS.md`, `DESIGN.md` when present, and the skill for the work you are
15
+ executing. Then follow the player's latest clear request; do not reconstruct
16
+ the project from memory or replay completed discovery.
18
17
 
19
- ## 1. Check what you can do (once, before planning)
18
+ ## 1. Check capabilities and boundaries once
20
19
 
21
- Look at your own tool list and note the answers — the rest of this workflow
22
- uses them:
20
+ Look at your available tools:
23
21
 
24
- - **A question tool?** Something that asks the player a structured question
25
- with clickable options. If you have one, use it wherever this workflow says
26
- "ask"; if not, a short numbered list in plain chat.
27
- - **Sub-agents?** A way to hand a scoped task to a background worker. If you
28
- have them, delegation (§6) is your default for independent modules; if not,
29
- do the same work yourself, in the same order nothing else changes.
30
- - **A browser?** If you can open pages and take screenshots, verify visuals
31
- yourself; if not, ask the player to look and tell you what they see.
22
+ - **Question tool:** use it only when this skill says a real unresolved fork
23
+ remains; otherwise continue. Without one, ask one short plain-language
24
+ question in chat.
25
+ - **Sub-agents:** useful for independent workstreams in a whole coordinated
26
+ build; never required for focused work.
27
+ - **Browser:** use it to inspect the actual result. Without one, ask the player
28
+ for the smallest useful visual observation.
32
29
 
33
- Never claim a capability you didn't find, and never stall because one is
30
+ Never claim a capability you did not find, and never stall because one is
34
31
  missing.
35
32
 
36
- One more thing to note while you're looking: your platform may bundle its own
37
- image / video generation workflows AND its own site-building / hosting /
38
- deploy skills. **None of them are part of any Genex lane — don't load them
39
- for this project.** All generated art, audio, video, characters, and UI come
40
- from `genex` commands, unless the player explicitly asks for another tool by
41
- name and a local reference image is never a reason to switch tools:
42
- `genex image --edit` and `--inpaint` take a local file path directly. The
43
- same exclusivity covers shipping: the game builds, previews, and publishes
44
- only through `genex preview` / `genex publish` — a platform hosting skill in
45
- context is pure confusion fuel.
46
-
47
- ## 2. Scope check — what is this?
48
-
49
- - **A new game** the full flow: contract (§3), teams menu (§4), build order
50
- (§5), delegation (§6).
51
- - **A feature or fix for an existing game** read the game's `DESIGN.md` if
52
- present (keep it current as you work; create a stub if it's missing and the
53
- change is big), then load just the skills the
54
- [routing map](references/routing-map.md) names for the touched systems.
55
- Read before writing: learn the current renderer choice, physics setup, and
56
- file conventions first, then extend them don't rebuild working systems or
57
- switch renderers mid-project.
58
- - **A component or tool** a custom controller, a shader, an asset-pipeline
59
- piece skip the contract; route straight to the matching skills via the
60
- routing map. Mostly we build games, but nothing here breaks for
61
- game-adjacent work.
62
-
63
- ## 3. The design contract DESIGN.md
64
-
65
- **First, the design interview before DESIGN.md is written.** Ask the
66
- player 2–4 build-forking questions, batched in ONE round — use your
67
- structured question / ask tool if your harness has one, with answer options
68
- for the user. Ask only what genuinely forks the build:
69
-
70
- - the one-line pitch, confirmed or corrected ("a co-op scythe hunt in a
71
- ruined cathedral — right?");
72
- - the solo / co-op / versus shape (it decides netcode and scope);
73
- - scope ambition, when the request could honestly be read small or large
74
- (compact arena vs. open world);
75
- - any real ambiguity in the request itself.
76
-
77
- Never ask about SDKs, engines, renderers, file layout, or anything
78
- technical those are your decisions. **The silence fallback applies only
79
- AFTER the questions have been posted in chat.** A request that already names
80
- the game does not skip the interview then it's the confirm-pitch round.
81
- Asking is never optional; waiting is: if the player is silent or has no way
82
- to answer, proceed on your own stated assumptions and write each one into
83
- DESIGN.md Decisions as "assumed — player didn't answer"; the build never
84
- stalls on the interview.
85
-
86
- Then, before rendering code, write `DESIGN.md` at the project root from
87
- [references/design-contract.md](references/design-contract.md) — including
88
- its **Build plan & status** section: numbered milestones, a status mark per
89
- line, and a `Now:` line naming the current one. While drafting it, make the
90
- parallel call per module (dependencies decide see §6) and write each call
91
- into the Modules table with its one-line reason. The moment the file lands,
92
- post a 5–6 line summary of the contract in chat — pitch, core loop, content
93
- counts, screens, multiplayer shape, what you build first — **and say in one
94
- plain line that the plan is locked in and lives in `DESIGN.md`** (the player
95
- must never have to wonder whether the contract happened). Then keep building
96
- immediately: the summary is information, not a gate (the plan-message duties
97
- from `$genex-threejs-game-ui` fold into this file plus that summary). The
98
- file is the single source of truth: sub-agents build against it, after any
99
- long break or context compaction work resumes from its `Now:` line, and a
100
- milestone flips to done only when its work reached a preview
101
- (`→ previewed`). Keep it current decisions land in its log the moment
102
- they're made.
103
-
104
- ## 4. Know your teams what we can generate
105
-
106
- Plan the DESIGN.md Assets table from this menu. Details, flags, and approval
107
- steps live in each owning skill load it when its lane fires:
108
-
109
- - `npx genex model "<prompt>"` a real 3D thing (GLB): what you chase,
110
- drive, fight → `$genex-ai-model`
111
- - `npx genex texture "<prompt>"` any surface bigger than a prop
112
- (`--terrain` for ground) → `$genex-ai-texture`
113
- - `npx genex skybox "<prompt>"` a described 360° sky when the game is
114
- outdoors `$genex-ai-skybox`
115
- - `npx genex sfx "<prompt>"` — the core verb and every impact →
116
- `$genex-ai-sfx`
117
- - `npx genex music "<prompt>"` ONE looping instrumental gameplay track
118
- (~90 s default; the menu reuses it quieter; settings gets Music + SFX
119
- sliders) → `$genex-ai-music`
120
- - `npx genex voice "<line>"` short spoken lines: NPC barks, narrator
121
- beats, tutorial VO (curated cast via `--voice`; keep lines short,
122
- subtitled, skippable) `$genex-ai-voice`
123
- - `npx genex image "<prompt>"` — posters, signs, sprites, decals, HUD art
124
- (`--transparent` for anything laid on a surface; `--glass` for real-
125
- translucency glass panels) → `$genex-ai-image`,
126
- `$genex-ai-hud`
127
- - `npx genex video "<prompt>"` — in-world screens and billboards (`--loop`
128
- for a seamless in-world loop) → `$genex-ai-video`; the animated menu
129
- backdrop is its own lane — `$genex-ai-menu`'s `--frame` flow, never `--loop`
130
- - `npx genex character "<prompt>"` the game's themed character (approval
131
- flow — §7) → `$genex-ai-character`
132
- - `npx genex creature "<desc>"` a rigged enemy/creature in one shot
133
- (biped-shaped bodies only — the creatures skill routes the rest to
134
- static + procedural) → `$genex-threejs-creatures`
135
- - `npx genex controller character|car|drone|touch|quality` and
136
- `npx genex animations search "<intent>"` — ready-made, tuned movement and
137
- motion; never write movement physics from scratch
138
- `$genex-threejs-character-controller`,
139
- `$genex-threejs-vehicle-controllers`, `$genex-threejs-touch-controls`,
140
- `$genex-threejs-adaptive-quality`
141
-
142
- Run the commands inside the project (the `@genex-ai/cli-demo` dev dependency
143
- makes `npx genex` resolve to the right CLI). Each prints a permanent
144
- `assets.genex.technology` URL you load straight from at runtime the asset
145
- lives in Genex storage, not your repo, so there's nothing to commit; each
146
- owning `genex-ai-…` skill has the exact loader code. Prefer the procedural skills in
147
- the routing map for abstract/parametric/animated systems (no files, infinite
148
- variation); prefer these generators for concrete, describable, photoreal
149
- assets they complement each other. Assets you didn't plan don't exist: if
150
- the menu has a lane this game needs, put a row in the Assets table.
151
-
152
- **No eternal `proposed`.** At every preview and publish, walk the Assets
153
- table and resolve every `proposed` row — promote it to `planned` (and
154
- enqueue it when its turn comes) or cancel it, saying which in one visible
155
- line ("cancelled: UI hover sfx — out of scope for v1"). A row parked at
156
- `proposed` across a whole session is a decision you didn't make.
157
-
158
- **Generate a core asset set by default don't wait to be asked.** For any
159
- game that needs concrete objects or surfaces, decide a small core set from the
160
- game IDEA — and from the Content lines when there are any (locations and the
161
- enemy roster name the set) — and put it in the Assets table up front. This set
162
- is concept-INDEPENDENT (prompted from the idea, not the concept image, and it
163
- mostly survives a style change), so it never waits on the concept at all. Each
164
- `npx genex` job is an independent ~1-minute render: launch them concurrently
165
- in the background (`--no-wait`), scaffold the scene while they run, and wire
166
- each in as it lands, with a procedural placeholder until then:
167
-
168
- - the **hero model** the player controls or chases (`npx genex model`),
169
- - one key **texture** for the ground/main surface (`--terrain` for ground),
170
- - a **skybox** when the scene is outdoors,
171
- - a **sfx** or two for the core action and its feedback,
172
- - one looping **music** track for the gameplay bed (`npx genex music`,
173
- ~90 s; the menu reuses it at lower volume).
174
-
175
- Skip generation only for purely abstract/geometric games. For three.js
176
- questions no skill covers, use the official three.js documentation
177
- (https://threejs.org/docs/) the skills cover the Genex-specific parts, not
178
- the whole engine.
179
-
180
- ## 5. Build order the same hard floors, one owner
181
-
182
- The mandatory rows, in order, each with its one "done when" line:
183
-
184
- 1. **Identity first** — load `$genex-threejs-embed-auth` unconditionally,
185
- every game (multiplayer or not), before any boot code. Done when:
186
- `initEmbed(...)` runs at the very top of boot and the right gate
187
- (`waitForPlayer()` vs `waitForAuth()`) is wired.
188
- 2. **Adaptive quality at boot** `$genex-threejs-adaptive-quality`. Done
189
- when: the device tier is wired at boot (tier-capped pixel ratio), the
190
- governor runs in the loop, and generated skyboxes/textures load through
191
- their rungs. Phones enforce a hard GPU-memory kill desktop testing never
192
- shows; the tier is what keeps a phone boot alive.
193
- 3. **UI plan gate** — `$genex-threejs-game-ui`, every game: the screen
194
- inventory, one shared style brief, 2–3 AAA references, the menu archetype,
195
- then ONE concept image with its full HUD already on it (no candidate
196
- variants unless the player asks). **The moment it lands: decide the HUD
197
- lane (the lane beat below), enqueue the Stage-2 sheet + the menu still +
198
- the logotype `--no-wait` IMMEDIATELY, and only THEN show the player the
199
- frame and ask keep-or-change with your question tool — as information,
200
- never as a gate.** Silence = the concept stands; a "change" answer loops
201
- the concept with the player's notes and the chain re-runs from the new
202
- frame (image-priced cheap by design). Only the menu VIDEO waits, for
203
- the FIRST of: the player's yes · the next `genex preview` after the menu
204
- still landed · style work being the only work left — and it never fires
205
- while a player objection is open. Done when: the sheet, still, and
206
- logotype are enqueued and the frame is in front of the player.
207
- 4. **Content contract when the request names plural content** — quests,
208
- enemies, bosses, locations, spells, items, or a content genre (an RPG, an
209
- adventure, an open world, a story game) `$genex-threejs-game-content`.
210
- Its countable lines live in DESIGN.md's Content section, written before
211
- the asset batch (the asset set derives from it). Done when: every plural
212
- noun of the request has a countable line. Shrinking one is a question to
213
- the player, never a silent cut.
214
- 5. **Route the rest** via [references/routing-map.md](references/routing-map.md):
215
- the smallest useful skill set, the execution order, the visual-direction
216
- gate (renderer baseline + named post stack), and the world-dressing
217
- decision. Done when: DESIGN.md names the chosen skills and gates.
218
- 6. **Multiplayer when 2+ players share a world** — `$genex-threejs-multiplayer`
219
- before any networking code. Choose the net model from the experience
220
- (`connect()` for one ongoing drop-in world, `matchmake()` for fresh capped
221
- matches) never ask the player to pick an SDK API. When a Play/Online
222
- button exists, nothing connects before the click. A `matchmake()` game
223
- declares its `genex.matchmaking` block before preview. Done when: the
224
- model, start rule, and late-join behavior are stated in DESIGN.md and the
225
- netcode feel gate ran before handoff.
226
- 7. **Ship the playable v0 and preview it.** The scaffold prompt owns the
227
- player-facing milestones and links don't restate them; obey them. Done
228
- when: the v0 loop is genuinely playable and the player has their draft
229
- page link.
230
-
231
- **The HUD lane the concept decides it, and DESIGN.md records it.** You
232
- make this call as the art director the moment the mockup lands: ornate /
233
- painterly / material widget chrome (carved bone, etched metal, glowing
234
- runes, brushed gold) **sprites** the `$genex-ai-hud` pipeline is
235
- mandatory. Chrome that is flat geometry + typography, where a CSS rebuild
236
- would be screenshot-indistinguishable from the mockup → **CSS allowed**,
237
- styled from the brief. The litmus test: would a screenshot of the CSS
238
- rebuild pass for the mockup at a glance? Unsure or ambiguous → sprites.
239
- Record it as one DESIGN.md line `HUD lane: sprites (…)` or
240
- `HUD lane: CSS (…, one-line justification)` the preview preflight checks
241
- for it. In BOTH lanes: micro-text (damage numbers, timers, ammo digits)
242
- stays HTML text in the brief's font, and no rectangular backing plates
243
- behind bars, digits, or icons — ever (a truly needed shaped plate comes
244
- from `npx genex ui plate`). Only the player may decline the generated HUD,
245
- and the player's explicit lane request wins in both directions.
246
-
247
- Two rules for every game that moves (decide both before building, state them
248
- in DESIGN.md):
249
-
250
- - **Pointer bucket** the bundled `FollowCamera` locks the pointer by
251
- default on desktop, so this is mostly a decision to opt OUT. **Mandatory
252
- pointer lock**: first-person of any kind, and any mouse-aimed action
253
- (third-person shooter, FPS, sniper, turret, crosshair/reticle) leave it
254
- on. **Lock by default**: third-person free-camera action/adventure
255
- drag-orbit (`pointerLockAim: false`) only with a stated reason (e.g. a
256
- cursor-heavy UI core). **Never**: cursor-core games (click-to-move, tower
257
- defense, builder, card/puzzle), orbit showcases, touch-only these MUST
258
- pass `pointerLockAim: false`. Keyboard-only games (racer, platformer) lock
259
- too: the cursor is either a gameplay tool or locked away during play. The
260
- mechanism and the full aim contract live in
261
- `$genex-threejs-camera-direction`.
262
- - **Input direction** D/ArrowRight must move or turn the player
263
- screen-RIGHT, mouse-right must turn the view right, drag-pan axes share one
264
- convention. The screen-direction contract and verified copy-paste bases
265
- live in `$genex-threejs-camera-direction` hand-rolled steering/pan/look
266
- math copies one instead of deriving signs, and the smoke check's
267
- input-direction pass verifies it.
268
-
269
- ## 6. Delegatesub-agents own Modules rows
270
-
271
- If your environment has sub-agents, delegation is the DEFAULT for every
272
- independent DESIGN.md Modules row not a big-game special case. The build
273
- contract in the game's `AGENTS.md` is your standing authorization to spawn
274
- them; some platforms keep sub-agents locked until an instruction like it
275
- explicitly asks. If your environment has none, run the same rows yourself in
276
- order; the `--no-wait` generation pattern still hides most latency. Either
277
- way this skill is worn by the main agent: you stay the director.
278
-
279
- - **Which rows run in parallel is YOUR per-game call, made while drafting
280
- the plan** there is no fixed list. Walk the modules once: what has no
281
- dependency on unfinished work runs in parallel; what must be tuned against
282
- something still moving stays serial. The same module lands differently in
283
- different games (an arena is a parallel row in a quest game and the serial
284
- spine of a combat game whose feel depends on its gaps). Write the call +
285
- one-line reason into each row; building everything serially needs a
286
- stated reason.
287
- - One row = one worker = one disjoint file set. One writer per file — that
288
- rule is anti-collision, never a reason to serialize work.
289
- - You stay the integrator and the only writer of shared files (boot, main
290
- loop, netcode). Workers never spawn workers one level deep, always.
291
- - Concept-DEPENDENT rows (the HUD chain, style-matched art) launch the
292
- moment the concept LANDS the Stage-2 chain enqueues immediately (§5.3);
293
- only the menu video waits for its event triple. Concept-INDEPENDENT rows
294
- (world/terrain, content data, enemies, asset wiring) launch immediately
295
- either way. Typing a big game alone, line by line, is how sessions run
296
- out before the world exists.
297
- - Give each worker everything by path: the `DESIGN.md` path, its Modules row,
298
- and the skill files it needs (skills live in this project —
299
- `.claude/skills/<name>/SKILL.md`, `.codex/skills/…`, or `.cursor/skills/…`,
300
- whichever this project has). A worker prompt shape that works: "You own the
301
- `<row>` module of `<project>/DESIGN.md` — read it first, then read the
302
- named skill files. Build ONLY the files your row owns. Generate ONLY your
303
- row's assets already marked `planned` in the Assets table; anything new you
304
- need, add it as a `proposed` row and say so. Report what landed and what's
305
- left."
306
- - **The Assets table is the budget.** A worker runs generation commands only
307
- for its own rows already marked `planned`; anything new it wants goes in as
308
- a `proposed` row for you to approve first. An asset-shepherd lane polls
309
- `npx genex wait --all` and wires + flips landed rows to `wired` — it never
310
- enqueues. (Whoever wires the HUD after a worker finishes follows
311
- `$genex-ai-hud`'s handoff rule: read the produced mask/bbox JSON from disk,
312
- never wire from a prose summary.)
313
- - Do NOT spawn workers to write extra test suites, audits, or verification
314
- passes — the per-milestone smoke pass is yours, the director's, and it is
315
- ONE pass (§8; the scaffold prompt owns the ceilings).
316
- - If you build a module the table planned for a sub-agent inline, say why in
317
- one line in chat ("built enemies inline — the arena worker was still
318
- holding the only free slot"). The table is accountability, not ceremony —
319
- inline can be the right call.
320
-
321
- ## 7. The game's character (Meshy) — the player's body
322
-
323
- **The game's own generated character IS the player's body**, wherever a
324
- human body appears on screen. Third-person obviously; first-person too, the
325
- moment remotes, a look-down body, a shadow, a death or spectator camera, or
326
- a menu portrait shows one. "The camera is in the head" is not an exemption —
327
- **"no human body ever appears in this game" is**, and a game whose player is
328
- genuinely not a person (a car, a ship, an RTS cursor, a board) generates
329
- that object with `npx genex model` instead.
330
-
331
- Put its row in the Assets table up front and **enqueue it with your first
332
- art actions** — its concepts ride the same review beat as the Stage-1 HUD
333
- concept, so firing at minute 0 lands it around the v0 preview instead of
334
- after it. `npx genex controller character` installs the controller and the
335
- fallback body in one command; the boot path is written once and never
336
- rewritten (`loadPlayerCharacter` — see
337
- `$genex-threejs-character-controller`), so when the character lands,
338
- `npx genex controller character --character <id>` is the entire switch.
339
-
340
- The profile VRM avatar is the FALLBACK, in two shapes and both spoken
341
- aloud: a temporary body while the character renders (say so plainly — it's
342
- a fully textured animated humanoid, so nothing on screen will look
343
- unfinished enough to remind you), or the stand-in when generation genuinely
344
- could not happen (out of credits, failed, unverified), recorded in DESIGN.md
345
- as `Player character: VRM — <reason>`. A capsule or hand-built primitive
346
- standing in for a person is never a shipped state, for the local player or a
347
- remote one. In a game with a generated character, every remote wears it —
348
- a mixed roster of one themed hero plus stock avatars is the same incoherence
349
- as capsule-and-cone remotes.
350
-
351
- **The default lane has ONE user stop, and it rides the concept review.**
352
- When the user names a visual reference, inspect references before writing
353
- the concept prompt. Generate exactly three concepts, all neutral A-pose;
354
- never use a dynamic concept pose or silently fall back to T-pose. Warn that
355
- held, slung, or overlapping props and straps can fuse into the body or
356
- obscure limbs, and recommend separate gameplay props. Show the actual
357
- images in the SAME beat as the game-concept keep-or-change question — one
358
- review, two picks. The player's pick carries the lane end to end:
359
- `npx genex character preview <concept-id> --candidate <1|2|3> --user-approved`,
360
- then finalize below. **If the player hasn't picked by the time the
361
- character blocks progress (or ~10 minutes), pick the strongest candidate
362
- yourself, say which and why in chat, and proceed** — this auto-proceed is
363
- owner-ratified platform policy (2026-07-23), not an agent liberty; record
364
- it in DESIGN.md → Decisions ("auto-picked candidate 2 — cleanest
365
- silhouette; player away").
33
+ Your platform may bundle its own image/video generation and site-building,
34
+ hosting, or deploy skills. **They are not Genex lanes.** All generated art,
35
+ audio, video, characters, and UI come from `genex` commands unless the player
36
+ explicitly asks for another tool by name. A local reference image is not a
37
+ reason to switch tools: `genex image --edit` and `--inpaint` accept local
38
+ paths. Building, previewing, and publishing use `genex preview` /
39
+ `genex publish`; do not load a competing hosting workflow.
40
+
41
+ ## 2. Route the latest request
42
+
43
+ Use the request in front of you, not the oldest description of the project.
44
+
45
+ - **Clear focused request**—“work on the UI,” “fix movement,” “add one enemy,”
46
+ “make this prop,” “publish this”—read the touched implementation and
47
+ `DESIGN.md`, load only the owning skills, update `Now:`, and start. Do not
48
+ re-pitch the game, ask whole-game-versus-one-part again, force a concept
49
+ round, restart completed milestones, or add adjacent work.
50
+ - **Clear new game request with a named scope** starts from that scope. Record
51
+ the requested destination and proceed; ask only a missing decision that
52
+ materially changes architecture or player experience.
53
+ - **Broad full-game request** may need one scope choice: “Should I build the
54
+ whole game as coordinated milestones, or start with one part?” Offer only
55
+ request-relevant parts—such as movement, core gameplay, world, enemies, UI,
56
+ multiplayer, or a named tool. If the player already chose a part or clearly
57
+ asked for the complete game, skip the question.
58
+ - **Blank or genuinely unclear intake** asks one neutral question: are they
59
+ making a game, building a tool/component, or changing existing work? Do not
60
+ invent or propose game concepts for them.
61
+ - **Existing project** respects its renderer, physics, file conventions, and
62
+ working systems unless the player asks to change them.
63
+
64
+ Ask one decision at a time. Never ask the player to choose an SDK, engine,
65
+ renderer, file layout, provider, or other implementation detail. Product
66
+ defaults fill missing implementation choices; they never override a clear
67
+ request.
68
+
69
+ The player's latest direction may replace `Now:` immediately. Preserve
70
+ unfinished requested work as open commitments unless the player cancels or
71
+ re-scopes it; focused work changes the current order, not historical truth.
72
+
73
+ ## 3. Keep DESIGN.md as durable memory
74
+
75
+ For a new project or substantial multi-step request, create `DESIGN.md` from
76
+ [references/design-contract.md](references/design-contract.md). For existing
77
+ work, update only the sections touched by the latest request. A tiny focused
78
+ fix does not need unrelated sections filled in.
79
+
80
+ The file keeps three truths separate:
81
+
82
+ 1. **Requested outcome**—the player's final target, changed only by the player.
83
+ 2. **Current focus**—the exact `Now:` item and its observable done condition.
84
+ 3. **Open commitments**—requested work not completed, cancelled, or re-scoped.
85
+
86
+ Also record the working mode: `whole coordinated build`, `step by step`, or
87
+ `focused change`. Step-by-step changes order, not destination. The build plan
88
+ is current, never “locked”; tell the player only that their request is recorded
89
+ in `DESIGN.md` and you will keep it current.
90
+
91
+ Preserve the exact markers used by existing machinery: `## Build plan &
92
+ status`, `Now:`, `HUD lane:`, `Menu video:`, HUD pipeline stage IDs and paths,
93
+ `Player character:`, generation IDs and permanent URLs, and asset wiring
94
+ state. The paid Assets flow remains:
95
+
96
+ `proposed planned generating (id) landed (URL) → wired`
97
+
98
+ A landed asset is not complete until wired or visibly cancelled. Procedural
99
+ code-built assets use their own local flow:
100
+
101
+ `proposed planned building (blockout | detail | material | runtime) →
102
+ landed (<local TypeScript path>) → wired`
103
+
104
+ Never invent a provider generation ID for local code. Sections for gameplay,
105
+ content, UI, world, assets, multiplayer, character/animation, tools, or
106
+ modules are conditional on the request and existing project.
107
+
108
+ ## 4. Route to the owning lane
109
+
110
+ Use the [routing map](references/routing-map.md) for exact ownership. The main
111
+ Genex asset and runtime lanes are:
112
+
113
+ - `npx genex model "<prompt>"`—a static GLB → `$genex-ai-model`
114
+ - `npx genex texture "<prompt>"`—a generated surface `$genex-ai-texture`
115
+ - `npx genex skybox "<prompt>"`—a 360° environment-only sky
116
+ `$genex-ai-skybox`
117
+ - `npx genex sfx "<prompt>"` / `music` / `voice`
118
+ `$genex-ai-sfx`, `$genex-ai-music`, `$genex-ai-voice`
119
+ - `npx genex image "<prompt>"` / `video`—2D and motion art →
120
+ `$genex-ai-image`, `$genex-ai-video`
121
+ - UI, HUD, and menu requests `$genex-threejs-game-ui`,
122
+ `$genex-ai-hud`, `$genex-ai-menu`
123
+ - `npx genex character`, `creature`, and their motion commands →
124
+ `$genex-ai-character`, `$genex-threejs-creatures`
125
+ - movement and vehicles → `$genex-threejs-character-controller`,
126
+ `$genex-threejs-vehicle-controllers`
127
+ - phone input and phone-survivable rendering
128
+ `$genex-threejs-touch-controls`, `$genex-threejs-adaptive-quality`
129
+ - editable, parameterized reference objects or simple environment pieces
130
+ `$genex-threejs-procedural-assets`
131
+
132
+ For “make this image 3D,” ask **one** route question only when both results
133
+ honestly fit: a generated static GLB, or editable parameterized Three.js code.
134
+ If the request says procedural, parametric, code-built, reusable variations,
135
+ or names a GLB, start the corresponding route directly. An image alone never
136
+ auto-triggers the procedural lane. Player bodies, rigged characters/creatures,
137
+ and animation stay with their protected owners.
138
+
139
+ If a procedural request has a private reference, use it locally and do not
140
+ upload, publish, or commit it without explicit permission. If no reference was
141
+ supplied and creating one is part of the requested work, use the existing
142
+ `npx genex image` lane unchanged and record that paid reference as its own
143
+ Assets row.
144
+
145
+ Plan and generate only assets the current request earns. In a whole coordinated
146
+ game build, derive the set from the requested outcome and commitments; in
147
+ focused work, do not create a default “core set” outside the touched scope.
148
+ Run independent planned generations with `--no-wait`, scaffold while they
149
+ land, and preserve their IDs, URLs, and wiring state.
150
+
151
+ ## 5. Execute by working mode
152
+
153
+ ### Focused change
154
+
155
+ Start directly. Read the touched files, preserve working systems, update the
156
+ relevant `DESIGN.md` section and `Now:`, execute the owning lane, and verify
157
+ the requested result. Skip unrelated discovery, module fan-out, UI/HUD
158
+ concepts, asset batches, and critic loops.
159
+
160
+ ### Step by step
161
+
162
+ Set `Now:` to the chosen request-relevant part and build it. Preserve the
163
+ player's final requested outcome and every other unfinished promise under Open
164
+ commitments. When the step is previewed, ask what they want next only if their
165
+ latest message did not already say.
166
+
167
+ ### Whole coordinated build
168
+
169
+ Turn the actual request into milestones and workstreams. The director may run
170
+ independent work in parallel and move through internal milestones without
171
+ asking the player to manage each one. Dependencies determine order; no fixed
172
+ module list does.
173
+
174
+ For every new game, preserve the platform foundations:
175
+
176
+ 1. `$genex-threejs-embed-auth` owns identity and runs before boot code.
177
+ 2. `$genex-threejs-adaptive-quality` owns device tiers, the runtime governor,
178
+ and generated-asset rungs at boot.
179
+ 3. `$genex-threejs-touch-controls` owns mobile input whenever its recipe fits.
180
+ 4. `$genex-threejs-multiplayer` loads before networking code whenever 2+
181
+ players share a world.
182
+
183
+ Record only content and world promises present in the request or essential to
184
+ its stated genre. Make them countable or otherwise observable before choosing
185
+ the paid asset batch. A requested large/open world records its intended scale,
186
+ terrain/ground, boundaries, and locations from the request; never silently
187
+ replace it with one small flat plane hidden by fog or impose fixed kilometer,
188
+ chunk, biome, or POI defaults. Generated-asset availability never decides how
189
+ much game the player receives. Ask one scope question only when a real
190
+ reduction is required.
191
+
192
+ There is **no startup game, UI, or HUD concept gate**. Schedule UI/HUD/menu at
193
+ the appropriate later milestone when the complete requested outcome includes
194
+ those surfaces. Enter that lane immediately when the player asks for it, and
195
+ skip it during unrelated focused work.
196
+
197
+ ### When the UI/HUD/menu lane is invoked
198
+
199
+ The existing owning skills control the full pipeline. Do not simplify or
200
+ bypass their FAL calls, credits, checkpoints, retries, Stage-1/Stage-2 prompts,
201
+ extraction, masks, wiring, markers, nudges, or preflights.
202
+
203
+ The Stage-1 mockup decides the HUD implementation and `DESIGN.md` records it:
204
+ ornate/painterly/material chrome `HUD lane: sprites (…)`; flat geometry plus
205
+ typography that CSS can reproduce screenshot-indistinguishably
206
+ `HUD lane: CSS (…, one-line justification)`. Unsure → sprites. The player's
207
+ explicit lane request wins. Once invoked, follow `$genex-ai-hud` and
208
+ `$genex-ai-menu` exactly, including `Menu video:` and every HUD pipeline state
209
+ marker.
210
+
211
+ In both lanes, micro-text stays HTML text in the chosen font, and no generic
212
+ rectangular plate appears behind bars, digits, or icons; a genuinely shaped
213
+ plate comes from `npx genex ui plate`.
214
+
215
+ ### Controls that move
216
+
217
+ For every game that moves, apply the screen-direction contract and record the
218
+ pointer bucket and input-direction convention:
219
+
220
+ - `$genex-threejs-camera-direction` owns pointer lock. First-person/FPS
221
+ shooters and other mouse-aimed action keep it; cursor-core games and orbit
222
+ showcases pass `pointerLockAim: false`; keyboard-only games lock the unused
223
+ cursor during play.
224
+ - D/ArrowRight moves or turns screen-right, mouse-right turns the view right,
225
+ and drag-pan axes share one convention. Copy the verified bases from the
226
+ camera skill before writing hand-rolled signs.
227
+
228
+ ## 6. Coordinate only when coordination helps
229
+
230
+ Whole coordinated mode may use sub-agents for independent, request-derived
231
+ workstreams. Focused work skips fan-out unless the requested task itself has
232
+ usefully independent pieces.
233
+
234
+ - One worker owns one disjoint file set. The main agent remains the integrator
235
+ and only writer of shared boot, main-loop, and netcode files.
236
+ - Give each worker the `DESIGN.md` path, its exact row, owned files, relevant
237
+ skill paths, and observable done condition. Workers do not spawn workers.
238
+ - A worker generates only Assets rows already marked `planned`; new wants
239
+ enter as `proposed`. Whoever wires HUD output reads its mask/bbox files, not
240
+ a prose summary.
241
+ - Do not create workers merely to write extra test suites or reports.
242
+
243
+ For a substantial, judgeable result in whole coordinated mode, a **fresh
244
+ critic may** inspect the actual game, rendered pixels, reference, or test
245
+ result—not the builder's summary. It returns the single largest meaningful
246
+ gap; the builder may address that gap and request another fresh look. This is
247
+ permission, not ceremony: no fixed round count, progress site, per-round
248
+ ledger, or user approval between internal rounds.
249
+
250
+ Stop when the requested acceptance is reached, improvement becomes immaterial,
251
+ the player redirects the work, or the available time/compute budget is spent.
252
+ A critic may identify a protected or paid-lane problem, but may not bypass,
253
+ rewrite, or automatically repeat that lane; follow-up still uses its existing
254
+ approval, checkpoint, retry, credit, and verification behavior.
255
+
256
+ ## 7. The game's character (Meshy)—the player's body
257
+
258
+ **The game's own generated character is the player's body** wherever a human
259
+ body appears on screen. Third-person obviously; first-person too when remotes,
260
+ a look-down body, shadow, death/spectator camera, or menu portrait shows one.
261
+ “No human body ever appears” is the exemption—not “the camera is in the
262
+ head.” A genuinely non-person player (car, ship, RTS cursor, board) uses
263
+ `npx genex model` instead.
264
+
265
+ When this lane is relevant, put its row in the Assets table and enqueue it
266
+ when its milestone startsor in parallel when whole coordinated mode makes
267
+ that useful. Its asset-specific concept review is its own beat; it never waits
268
+ for or requires a UI concept. `npx genex controller character` installs the
269
+ controller and fallback body; `loadPlayerCharacter` keeps the boot path stable,
270
+ and `npx genex controller character --character <id>` switches the manifest
271
+ when the generated body lands.
272
+
273
+ The profile VRM avatar is the fallback: a temporary body while generation
274
+ runs, or the stand-in when generation genuinely could not happen, recorded as
275
+ `Player character: VRM — <reason>`. A capsule or hand-built primitive is never
276
+ a shipped human body. In multiplayer, every remote wears the generated game
277
+ character when one exists.
278
+
279
+ **The default lane has one user stop: the character concept review.** When the
280
+ user names a visual reference, inspect references before writing the concept
281
+ prompt. Generate exactly three concepts, all neutral A-pose; never use a
282
+ dynamic concept pose or silently fall back to T-pose. Warn that held, slung,
283
+ or overlapping props and straps can fuse into the body or obscure limbs, and
284
+ recommend separate gameplay props. Show the actual images and wait for the
285
+ player to explicitly select a candidate. Their pick carries the lane:
286
+
287
+ `npx genex character preview <concept-id> --candidate <1|2|3> --user-approved`
288
+
289
+ If the player has not picked by the time the character blocks progress (or
290
+ ~10 minutes), use the existing owner-ratified platform policy (2026-07-23):
291
+ pick the strongest candidate, say which and why in chat, proceed, and record
292
+ the decision in `DESIGN.md`.
366
293
 
367
294
  Meshy Image-to-3D first produces an unremeshed high-detail model. Show its
368
295
  front, back, left, and right views and report its measured face count.
369
- Preserve that model in R2. The 10,000-face triangle remesh—not the
370
- high-detail source—is rigged and animated. In the default lane the remesh
371
- proceeds on the same authorization as the pick (say it plainly: "building
372
- the 10,000-face rigging copy now"):
373
- `npx genex character finalize <preview-id> --user-approved --approve-remesh 10000 [--animation <action-id>…]`.
374
- Keep every pre-animation generation in the selected neutral A-pose.
375
-
376
- **When the user themselves asked for a custom character** (an explicit
377
- custom-character request, not the game default), the ceremony is two
378
- separate stops and the approvals are the product: do not start Image-to-3D
379
- until they explicitly select a candidate, and before rigging ask them to
380
- approve the separate 10,000-face triangle remesh — wait for that explicit
381
- approval before finalize. (`npx genex character "<prompt>" --direct-text`
382
- is the explicit legacy one-shot path, not a substitute for these
383
- approvals.)
384
-
385
- Load `$genex-ai-character`, search Meshy actions first with
386
- `npx genex animations search "<intent>" --json`, and use returned action IDs;
387
- never invent IDs. Meshy limb rotations play unchanged. Never freeze hand tracks
388
- or apply post-mixer arm, hand, leg, or foot corrections. Only horizontal root
389
- or hip translation may be normalized for Rapier. In both lanes, the
390
- ECCTRL-derived character controller owns collision and world translation.
391
- Before handoff, visibly check idle, walk, run, crouch-idle, crouch-move, and
392
- jump shoulders, elbows, wrists, hands, both leg cycles, and feet — and press
393
- every control the HUD advertises.
394
-
395
- ## 8. Verification the smoke pass's captures grow with the build
396
-
397
- The per-milestone smoke pass and its ceilings belong to the scaffold prompt
398
- (ONE pass per milestone, never test suites, never re-verify after cosmetic
399
- tweaks) this section only defines WHAT that one pass captures once the
400
- relevant piece exists:
401
-
402
- - **Always:** the gameplay screenshot + the main controls responding the
403
- right way (the scaffold prompt's baseline).
404
- - **Once the generated HUD is wired:** take the gameplay screenshot AFTER
405
- taking damage once, with an enemy in frame facing the player. A full-HP
406
- shot cannot show a broken meter (a painted trough hides behind a 100%
407
- fill), and an enemy you never faced head-on may be looking sideways at
408
- everyone.
409
- - **Once the menu video is wired:** watch one full loop cycle as rendered
410
- (`$genex-ai-menu`'s seam check). A metadata probe can't see a seam, a
411
- hidden video, or a leftover panel covering it.
412
-
413
- Judge each capture against DESIGN.md once, fix only what is visibly broken,
414
- and move on — the captures are eyes, not a test suite.
415
-
416
- **Fresh eyes before publish.** The pre-publish check is just the last
417
- milestone's pass, plus this: take the game's current screenshots (desktop
418
- and phone sizes) and hand them, with DESIGN.md only, to a fresh reviewer —
419
- a sub-agent if you have one, otherwise re-read them yourself adversarially,
420
- looking to refute "it's done": untextured surfaces, a bare HUD, missing
421
- screens, Content lines not in the game, Assets rows never flipped to
422
- `wired`, `proposed` rows never resolved. Fix or honestly report what it
423
- finds; never publish over an unacknowledged gap.
296
+ Preserve that model in R2. The 10,000-face triangle remesh—not the high-detail
297
+ source—is rigged and animated. In the default lane, the pick authorizes that
298
+ remesh:
299
+
300
+ `npx genex character finalize <preview-id> --user-approved --approve-remesh 10000 [--animation <action-id>…]`
301
+
302
+ When the player explicitly requested a custom character, keep the existing
303
+ two stops: wait for candidate selection before Image-to-3D, then wait for
304
+ explicit remesh approval before finalize. The `--direct-text` legacy path is
305
+ not a substitute.
306
+
307
+ Load `$genex-ai-character`, search actions with
308
+ `npx genex animations search "<intent>" --json`, and never invent IDs. Meshy
309
+ limb rotations play unchanged. Never freeze hand tracks or apply post-mixer
310
+ arm, hand, leg, or foot corrections. Only horizontal root or hip translation
311
+ may be normalized for Rapier. The character controller owns collision and
312
+ world translation. Before handoff, visibly check idle, walk, run, crouch-idle,
313
+ crouch-move, and jump, plus every control the HUD advertises.
314
+
315
+ ## 8. Verify in proportion to the request
316
+
317
+ Focused work verifies the focused result and the owning skill's required
318
+ evidence; it does not trigger a whole-project audit. A milestone preview uses
319
+ one smoke pass after the preview, not a new test suite.
320
+
321
+ - Always capture the relevant running result and exercise the changed control
322
+ or interaction in its labeled direction.
323
+ - Once a generated HUD is wired, capture gameplay after a changing value
324
+ (such as damage) so masks/fills are visible.
325
+ - Once menu video is wired, watch one full rendered loop using
326
+ `$genex-ai-menu`'s seam check.
327
+ - Multiplayer uses the existing two-distinct-identity netcode feel gate.
328
+ - Character/animation uses the owning lane's pose, clip, and controller checks.
329
+
330
+ Judge evidence against the requested result and current `DESIGN.md`, fix
331
+ meaningful gaps, and move on. An explicit preview or publish request runs the
332
+ existing protected flow directly; report open commitments honestly rather
333
+ than restarting design discovery.
424
334
 
425
335
  ## 9. Say it straight
426
336
 
427
- "Loaded" means you read a file. "Built" means the thing runs. "Done" means its
428
- "done when" line is true. Never report a skill as applied because you read it,
429
- an asset as wired because it generated, or a gate as passed because you meant
430
- to.
337
+ Loaded means you read a file. Built means the thing runs. Done means the
338
+ requested acceptance and relevant owning-lane checks are true. Never report a
339
+ skill as applied because you read it, an asset as wired because it generated,
340
+ or the full requested outcome as complete while Open commitments remain.