@aura3d/cli 4.1.1 → 4.1.3

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 (39) hide show
  1. package/data/root-export-dispositions.json +39 -0
  2. package/dist/commands/evidence/index.d.ts +3 -0
  3. package/dist/commands/evidence/index.d.ts.map +1 -0
  4. package/dist/commands/evidence/index.js +12 -0
  5. package/dist/commands/evidence/index.js.map +1 -0
  6. package/dist/commands/evidence/judge.d.ts +18 -0
  7. package/dist/commands/evidence/judge.d.ts.map +1 -0
  8. package/dist/commands/evidence/judge.js +194 -0
  9. package/dist/commands/evidence/judge.js.map +1 -0
  10. package/dist/commands/evidence/judgeLib.d.ts +84 -0
  11. package/dist/commands/evidence/judgeLib.d.ts.map +1 -0
  12. package/dist/commands/evidence/judgeLib.js +178 -0
  13. package/dist/commands/evidence/judgeLib.js.map +1 -0
  14. package/dist/commands/registry.d.ts +1 -0
  15. package/dist/commands/registry.d.ts.map +1 -1
  16. package/dist/commands/registry.js +1 -0
  17. package/dist/commands/registry.js.map +1 -1
  18. package/dist/look/capture.d.ts +15 -7
  19. package/dist/look/capture.d.ts.map +1 -1
  20. package/dist/look/capture.js +85 -13
  21. package/dist/look/capture.js.map +1 -1
  22. package/package.json +5 -5
  23. package/skills/aura3d-art-direction/SKILL.md +5 -1
  24. package/skills/aura3d-assets/SKILL.md +9 -15
  25. package/skills/aura3d-assets/references/preview-under-look.md +16 -0
  26. package/skills/aura3d-browser-game/SKILL.md +18 -22
  27. package/skills/aura3d-browser-game/references/genre-gates.md +11 -0
  28. package/skills/aura3d-browser-game/references/genre-looks.md +48 -0
  29. package/skills/aura3d-character-animation/SKILL.md +8 -2
  30. package/skills/aura3d-core/SKILL.md +17 -15
  31. package/skills/aura3d-evidence-review/SKILL.md +11 -2
  32. package/skills/aura3d-materials-environments/SKILL.md +25 -19
  33. package/skills/aura3d-performance/SKILL.md +19 -11
  34. package/skills/aura3d-retexture/SKILL.md +4 -3
  35. package/skills/aura3d-scene-authoring/SKILL.md +15 -15
  36. package/skills/aura3d-threejs-migration/SKILL.md +10 -2
  37. package/skills/llms.txt +104 -216
  38. package/skills/meshy-cli/SKILL.md +33 -32
  39. package/skills/meshy-cli/references/asset-tooling.md +23 -0
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../../packages/aura3d-cli/src/commands/registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,kBAAkB,CAAC;AAC1B,OAAO,kBAAkB,CAAC;AAC1B,OAAO,kBAAkB,CAAC;AAC1B,OAAO,kBAAkB,CAAC;AAC1B,OAAO,kBAAkB,CAAC;AAC1B,OAAO,kBAAkB,CAAC;AAC1B,OAAO,kBAAkB,CAAC;AAC1B,OAAO,kBAAkB,CAAC;AAC1B,OAAO,kBAAkB,CAAC;AAC1B,OAAO,kBAAkB,CAAC;AAC1B,OAAO,kBAAkB,CAAC;AAC1B,OAAO,kBAAkB,CAAC;AAC1B,OAAO,kBAAkB,CAAC;AAC1B,OAAO,mBAAmB,CAAC;AAE3B,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../../packages/aura3d-cli/src/commands/registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,kBAAkB,CAAC;AAC1B,OAAO,kBAAkB,CAAC;AAC1B,OAAO,kBAAkB,CAAC;AAC1B,OAAO,kBAAkB,CAAC;AAC1B,OAAO,kBAAkB,CAAC;AAC1B,OAAO,kBAAkB,CAAC;AAC1B,OAAO,kBAAkB,CAAC;AAC1B,OAAO,kBAAkB,CAAC;AAC1B,OAAO,kBAAkB,CAAC;AAC1B,OAAO,kBAAkB,CAAC;AAC1B,OAAO,kBAAkB,CAAC;AAC1B,OAAO,kBAAkB,CAAC;AAC1B,OAAO,kBAAkB,CAAC;AAC1B,OAAO,mBAAmB,CAAC;AAC3B,OAAO,qBAAqB,CAAC;AAE7B,OAAO,EAAE,CAAC"}
@@ -2,16 +2,22 @@
2
2
  * PRD-13 T2.16 — `look capture` command body.
3
3
  * Registered as C-39 command `look capture` from commands/prd13/index.ts.
4
4
  *
5
- * `--runner gh-actions` (default): dispatches the scaffolded project's own
5
+ * `--runner remote` (default): browsers never run on the developer machine.
6
+ * With `--remote-cmd "<cmd>"` (or env AURA3D_REMOTE_RUNNER) the command is
7
+ * executed as `<cmd> <capture-request.json> <outDir>` and must leave the
8
+ * screenshots in outDir. With `--from <dir>` the PNGs and reports a remote run
9
+ * already produced are collected. With neither, a `capture-request.json` is
10
+ * written next to the output and the exact remote-run steps are printed (exit 2:
11
+ * the capture is pending, not done).
12
+ *
13
+ * `--runner local` (explicit opt-in, prints a warning): runs the project's
14
+ * Playwright screenshot spec directly on this machine.
15
+ *
16
+ * `--runner gh-actions` (legacy, prints a warning): dispatches the project's own
6
17
  * `.github/workflows/aura3d-lookdev.yml` through the user's `gh` CLI auth —
7
18
  * the command never sets or reads tokens itself — polls the run, then
8
19
  * downloads the `lookdev` artifact into `--out` (default dist/lookdev/<round>).
9
20
  *
10
- * `--runner local`: runs the project's Playwright screenshot spec directly.
11
- * Available only where the local environment permits it (Playwright package
12
- * installed); the lane-wide remote-execution rule makes gh-actions the
13
- * supported path on Devin/CI machines.
14
- *
15
21
  * Always exits 0 on a completed capture even when lint findings exist —
16
22
  * lint.json is evidence, not a gate (the judge consumes it).
17
23
  */
@@ -32,7 +38,9 @@ export interface LookCaptureDeps {
32
38
  }
33
39
  export interface LookCaptureResult {
34
40
  readonly ok: boolean;
35
- readonly runner: "gh-actions" | "local";
41
+ readonly runner: "remote" | "gh-actions" | "local";
42
+ readonly pending?: boolean;
43
+ readonly requestPath?: string;
36
44
  readonly outDir: string;
37
45
  readonly pngs: readonly string[];
38
46
  readonly appliedLookPath?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../../../../packages/aura3d-cli/src/look/capture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,WAAW,eAAe;IAC9B,6EAA6E;IAC7E,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,KAAK;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACzJ,kEAAkE;IAClE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,sDAAsD;IACtD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,mDAAmD;IACnD,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AA8BD,wDAAwD;AACxD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOpD;AAqDD,wBAAsB,cAAc,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,EAAE,EAAE;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAAE,IAAI,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAsGzL;AAED,eAAO,MAAM,kBAAkB,EAAE,cAMhC,CAAC"}
1
+ {"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../../../../packages/aura3d-cli/src/look/capture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,MAAM,WAAW,eAAe;IAC9B,6EAA6E;IAC7E,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,KAAK;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IACzJ,kEAAkE;IAClE,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,sDAAsD;IACtD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,mDAAmD;IACnD,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,YAAY,GAAG,OAAO,CAAC;IACnD,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;CACzB;AA8BD,wDAAwD;AACxD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOpD;AAqDD,wBAAsB,cAAc,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,EAAE,EAAE;IAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,EAAE,IAAI,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAgKzL;AAED,eAAO,MAAM,kBAAkB,EAAE,cAMhC,CAAC"}
@@ -2,16 +2,22 @@
2
2
  * PRD-13 T2.16 — `look capture` command body.
3
3
  * Registered as C-39 command `look capture` from commands/prd13/index.ts.
4
4
  *
5
- * `--runner gh-actions` (default): dispatches the scaffolded project's own
5
+ * `--runner remote` (default): browsers never run on the developer machine.
6
+ * With `--remote-cmd "<cmd>"` (or env AURA3D_REMOTE_RUNNER) the command is
7
+ * executed as `<cmd> <capture-request.json> <outDir>` and must leave the
8
+ * screenshots in outDir. With `--from <dir>` the PNGs and reports a remote run
9
+ * already produced are collected. With neither, a `capture-request.json` is
10
+ * written next to the output and the exact remote-run steps are printed (exit 2:
11
+ * the capture is pending, not done).
12
+ *
13
+ * `--runner local` (explicit opt-in, prints a warning): runs the project's
14
+ * Playwright screenshot spec directly on this machine.
15
+ *
16
+ * `--runner gh-actions` (legacy, prints a warning): dispatches the project's own
6
17
  * `.github/workflows/aura3d-lookdev.yml` through the user's `gh` CLI auth —
7
18
  * the command never sets or reads tokens itself — polls the run, then
8
19
  * downloads the `lookdev` artifact into `--out` (default dist/lookdev/<round>).
9
20
  *
10
- * `--runner local`: runs the project's Playwright screenshot spec directly.
11
- * Available only where the local environment permits it (Playwright package
12
- * installed); the lane-wide remote-execution rule makes gh-actions the
13
- * supported path on Devin/CI machines.
14
- *
15
21
  * Always exits 0 on a completed capture even when lint findings exist —
16
22
  * lint.json is evidence, not a gate (the judge consumes it).
17
23
  */
@@ -112,11 +118,15 @@ function emitLookReports(outDir) {
112
118
  export async function runLookCapture(argv, io, deps = {}) {
113
119
  const { flags, switches } = parseArgs(argv);
114
120
  const asJson = switches.has("json");
115
- const runner = flags.get("runner") ?? "gh-actions";
116
- if (runner !== "gh-actions" && runner !== "local") {
117
- io.stderr(`unknown --runner "${runner}"; use gh-actions or local`);
121
+ const runner = flags.get("runner") ?? "remote";
122
+ if (runner !== "remote" && runner !== "gh-actions" && runner !== "local") {
123
+ io.stderr(`unknown --runner "${runner}"; use remote (default), local or gh-actions`);
118
124
  return 2;
119
125
  }
126
+ if (runner === "local")
127
+ io.stderr("warning: --runner local runs a real browser on this machine; prefer --runner remote (see docs/agents/verification.md).");
128
+ if (runner === "gh-actions")
129
+ io.stderr("warning: --runner gh-actions is a legacy option; prefer --runner remote (see docs/agents/verification.md).");
120
130
  const exec = deps.exec ?? defaultExec;
121
131
  const sleepBuffer = new Int32Array(new SharedArrayBuffer(4));
122
132
  const sleep = deps.sleep ?? ((ms) => Atomics.wait(sleepBuffer, 0, 0, ms));
@@ -143,10 +153,72 @@ export async function runLookCapture(argv, io, deps = {}) {
143
153
  // Spec: exit 0 on completed capture even when lint has errors.
144
154
  return result.ok ? 0 : 2;
145
155
  };
156
+ if (runner === "remote") {
157
+ const requestPath = join(outDir, "capture-request.json");
158
+ const request = {
159
+ schema: "aura3d.look-capture-request/1",
160
+ route: flags.get("route") ?? "/",
161
+ shots: shots ?? "opening,mid,action",
162
+ viewports: viewports ?? "desktop,mobile",
163
+ spec: "tests/screenshot.spec.ts",
164
+ env: { A3D_LOOKDEV_SHOTS: shots ?? "opening,mid,action", A3D_LOOKDEV_VIEWPORTS: viewports ?? "desktop,mobile" },
165
+ reportsDir: "tests/reports",
166
+ expectedFiles: ["*.png", "screenshot.json", "appliedLook.json", "lint.json"]
167
+ };
168
+ writeFileSync(requestPath, `${JSON.stringify(request, null, 2)}\n`);
169
+ const fromDir = flags.get("from");
170
+ if (fromDir !== undefined) {
171
+ const src = resolve(io.cwd, fromDir);
172
+ if (!existsSync(src))
173
+ return finish({ ok: false, runner, outDir, pngs: [], lintErrors: 0, requestPath, error: `--from directory not found: ${src}` });
174
+ for (const file of collectPngs(src)) {
175
+ const dest = join(outDir, file.slice(src.length + 1));
176
+ mkdirSync(join(dest, ".."), { recursive: true });
177
+ writeFileSync(dest, readFileSync(file));
178
+ }
179
+ for (const json of ["screenshot.json", "appliedLook.json", "lint.json"]) {
180
+ const file = join(src, json);
181
+ if (existsSync(file))
182
+ writeFileSync(join(outDir, json), readFileSync(file));
183
+ }
184
+ const pngs = collectPngs(outDir);
185
+ if (pngs.length === 0)
186
+ return finish({ ok: false, runner, outDir, pngs, lintErrors: 0, requestPath, error: `no .png captures found under ${src}` });
187
+ return finish({ ok: true, runner, outDir, pngs, requestPath, ...emitLookReports(outDir) });
188
+ }
189
+ const remoteCmd = (flags.get("remote-cmd") ?? process.env.AURA3D_REMOTE_RUNNER ?? "").trim();
190
+ if (remoteCmd !== "") {
191
+ const [command, ...rest] = remoteCmd.split(/\s+/);
192
+ const result = exec(command, [...rest, requestPath, outDir], io.cwd);
193
+ if (result.status !== 0)
194
+ return finish({ ok: false, runner, outDir, pngs: [], lintErrors: 0, requestPath, error: `remote runner failed: ${result.stderr || result.stdout}` });
195
+ const pngs = collectPngs(outDir);
196
+ if (pngs.length === 0)
197
+ return finish({ ok: false, runner, outDir, pngs, lintErrors: 0, requestPath, error: "remote runner finished but left no .png captures in the output directory" });
198
+ return finish({ ok: true, runner, outDir, pngs, requestPath, ...emitLookReports(outDir) });
199
+ }
200
+ const steps = [
201
+ `No remote runner is configured, so no browser was started here. Capture request written: ${requestPath}`,
202
+ "Run the capture on a remote machine (never a local browser on your dev machine):",
203
+ " 1. On the remote runner, in this project, run: A3D_LOOKDEV_SHOTS=<shots> A3D_LOOKDEV_VIEWPORTS=<viewports> pnpm exec playwright test tests/screenshot.spec.ts --workers=1",
204
+ " (AuraOne repos: tools/remote-acr/run.sh with a SPECS entry for tests/screenshot.spec.ts.)",
205
+ " 2. Copy tests/reports back to this machine.",
206
+ ` 3. Finish with: aura3d look capture --runner remote --from <copied reports dir> --out ${outDir}`,
207
+ "Or configure a runner once: --remote-cmd \"<command>\" or AURA3D_REMOTE_RUNNER (called as <command> <capture-request.json> <outDir>)."
208
+ ];
209
+ if (asJson) {
210
+ io.stdout(JSON.stringify({ ok: false, pending: true, runner, outDir, pngs: [], lintErrors: 0, requestPath, error: "no remote runner configured; capture request written", steps }, null, 2));
211
+ }
212
+ else {
213
+ for (const line of steps)
214
+ io.stderr(line);
215
+ }
216
+ return 2;
217
+ }
146
218
  if (runner === "local") {
147
219
  const playwrightBin = join(io.cwd, "node_modules", ".bin", process.platform === "win32" ? "playwright.cmd" : "playwright");
148
220
  if (!existsSync(playwrightBin) && exec("pnpm", ["exec", "playwright", "--version"], io.cwd).status !== 0) {
149
- return finish({ ok: false, runner, outDir, pngs: [], lintErrors: 0, error: "local runner unavailable: playwright is not installed in this project (use --runner gh-actions)" });
221
+ return finish({ ok: false, runner, outDir, pngs: [], lintErrors: 0, error: "local runner unavailable: playwright is not installed in this project (use --runner remote)" });
150
222
  }
151
223
  // shots/viewports reach the spec through the same env vars the
152
224
  // aura3d-lookdev.yml workflow sets (A3D_LOOKDEV_SHOTS/VIEWPORTS); exec()
@@ -173,7 +245,7 @@ export async function runLookCapture(argv, io, deps = {}) {
173
245
  }
174
246
  // --runner gh-actions: use the user's gh auth; never set/read tokens.
175
247
  if (exec("gh", ["--version"], io.cwd).status !== 0) {
176
- return finish({ ok: false, runner, outDir, pngs: [], lintErrors: 0, error: "gh CLI not found; install https://cli.github.com or use --runner local" });
248
+ return finish({ ok: false, runner, outDir, pngs: [], lintErrors: 0, error: "gh CLI not found; install https://cli.github.com or use --runner remote" });
177
249
  }
178
250
  const workflowFile = resolve(io.cwd, ".github/workflows/aura3d-lookdev.yml");
179
251
  if (!existsSync(workflowFile)) {
@@ -222,8 +294,8 @@ export async function runLookCapture(argv, io, deps = {}) {
222
294
  export const lookCaptureCommand = {
223
295
  name: "look capture",
224
296
  owner: "prd13",
225
- summary: "Capture look-dev screenshots via the project's lookdev workflow (gh-actions) or local Playwright",
226
- usage: "aura3d look capture [--route /] [--shots opening,mid,action] [--viewports desktop,mobile] [--runner gh-actions|local] [--out dist/lookdev/<n>] [--json]",
297
+ summary: "Capture look-dev screenshots on a remote runner (default), or explicitly via local Playwright or the legacy gh-actions workflow",
298
+ usage: "aura3d look capture [--route /] [--shots opening,mid,action] [--viewports desktop,mobile] [--runner remote|local|gh-actions] [--remote-cmd <cmd>] [--from <reports-dir>] [--out dist/lookdev/<n>] [--json]",
227
299
  run: (argv, io) => runLookCapture(argv, io)
228
300
  };
229
301
  //# sourceMappingURL=capture.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"capture.js","sourceRoot":"","sources":["../../../../../packages/aura3d-cli/src/look/capture.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capture.js","sourceRoot":"","sources":["../../../../../packages/aura3d-cli/src/look/capture.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aura3d/cli",
3
- "version": "4.1.1",
3
+ "version": "4.1.3",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "aura3d": "dist/cli.js",
@@ -28,10 +28,10 @@
28
28
  "types": "./dist/index.d.ts",
29
29
  "dependencies": {
30
30
  "typescript": "^5.8.3",
31
- "@aura3d/asset-index": "4.1.1",
32
- "@aura3d/audio": "4.1.1",
33
- "@aura3d/rendering": "4.1.1",
34
- "create-aura3d": "4.1.1"
31
+ "@aura3d/asset-index": "4.1.3",
32
+ "@aura3d/audio": "4.1.3",
33
+ "create-aura3d": "4.1.3",
34
+ "@aura3d/rendering": "4.1.3"
35
35
  },
36
36
  "description": "Bring real GLB/glTF assets into Aura3D browser apps with typed references, provenance, catalog search, validation, screenshots, and deploy checks.",
37
37
  "keywords": [
@@ -48,7 +48,7 @@ description: Sets the visual target and runs the look-dev loop for any Aura3D sc
48
48
 
49
49
  Run until every rubric category scores >= 7, or 6 rounds, or 2 rounds with no gain:
50
50
 
51
- 1. Capture: `aura3d look capture --route / --shots opening,mid,action --viewports desktop,mobile` (`--runner gh-actions` is the default where the template ships `.github/workflows/aura3d-lookdev.yml`; `--runner local` is the downstream user's choice).
51
+ 1. Capture opening, mid and action frames at desktop and mobile. In the Aura3D repository and on AuraOne machines (no GitHub Actions, no local Playwright) run the route's screenshot spec on the remote runner: `RUN_ID=look-1 SPECS="tests/browser/<route-look>.spec.ts" tools/remote-acr/run.sh`, then read the PNGs from `tests/reports/remote-acr/look-1/artifacts/`. In your own project: `aura3d look capture --route / --shots opening,mid,action --viewports desktop,mobile --runner gh-actions|local` (`gh-actions` is the CLI default and needs the template's `aura3d-lookdev` workflow plus `gh`; `local` needs Playwright installed). Use only the path your environment allows.
52
52
  2. Judge: open each PNG and fill `look-judgement.json` against `references/quality-bar.md`; validate with `aura3d look judge --validate look-judgement.json`. Read `aura3d look lint` plus `app.diagnostics().look`.
53
53
  3. Change the single highest-leverage thing: lint codes first, then the lowest category. One change per round.
54
54
  4. Repeat. Record remaining gaps with their lint code or engine limitation — never paint over a gap with fake geometry.
@@ -74,6 +74,10 @@ Hard checklist (all must hold before claiming done):
74
74
  - Label `prototype` when the loop could not run (no capture runner available): say which step failed.
75
75
  - A self-judgement is not a pass of the quality bar; only a panel round passes it. Report medians and the weakest category.
76
76
 
77
+ ## Default-look facts
78
+
79
+ No environment authored means the built-in neutral floor (4.1.2 published builds also log `ENV_FETCH_FAILED` for `/aura-environments/neutral.manifest.json`); the legacy post chain makes frames with bloom or vignette 25% to 40% darker (`POSTPROCESS_V2_UNMIGRATED`, known issue); exposure runs brighter than three.js for the same intensities. Judge the captured frame with the same post settings, and read the full list in `docs/agents/art-direction.md` section 3.
80
+
77
81
  ## References
78
82
 
79
83
  - `references/look-recipes.md` — the 13 genre rows (look, camera, key, palette, atmosphere, post, VFX, assets, reference frames)
@@ -7,7 +7,11 @@ description: Finds, admits, inspects, validates, and types GLB/glTF, texture, en
7
7
 
8
8
  The CLI is the only path from a file or catalog hit to a typed `assets.<key>`.
9
9
  Shared rules (catalog-first, typed assets, paid generation) are in
10
- [boundaries](../aura3d-core/references/boundaries.md).
10
+ [boundaries](../aura3d-core/references/boundaries.md). The canonical end-to-end
11
+ page (catalog, Meshy, optimise, isolated admission, rig and clips, production
12
+ rules, budgets) is
13
+ [asset workflow](https://github.com/auraoneai/aura3d/blob/main/docs/agents/asset-workflow.md);
14
+ this skill is the short procedure.
11
15
 
12
16
  ## Look target
13
17
 
@@ -92,18 +96,7 @@ lighting you evaluate materials and silhouettes against.
92
96
  rigged characters (`skins > 0`) with `handle.setAnimation({ clip, loop: true,
93
97
  speed })`, and never build stick-figure humans or box cars from primitives.
94
98
 
95
- ```ts
96
- import { createAuraApp, groundedRenderedAssetPlacement, looks, model, scene } from "@aura3d/engine";
97
- import { assets } from "./aura-assets";
98
-
99
- const place = groundedRenderedAssetPlacement(assets.helmet, { targetMaxDimension: 1.2, floorY: 0 });
100
- createAuraApp("#app", {
101
- scene: scene()
102
- .add(looks.preset("product-studio"))
103
- .add(model(assets.helmet).position(...place.position).scale(place.scale)),
104
- ...looks.appOptions("product-studio")
105
- });
106
- ```
99
+ Worked example: [preview under look](references/preview-under-look.md#grounded-placement-example).
107
100
 
108
101
  8. Games and examples without a project manifest declare models with
109
102
  `defineModelAssets` (same-origin URL, `sha256`, license; `?models=0` falls
@@ -135,8 +128,9 @@ lighting you evaluate materials and silhouettes against.
135
128
 
136
129
  - Search returns no auto-pullable candidate, or every candidate fails the
137
130
  reject list: stop, list the query, profile, and rejection reasons, and offer
138
- two options: a user-supplied licensed file, or Meshy generation (load
139
- `meshy-cli`, dry run first). Do not model the subject from primitives.
131
+ two options: a user-supplied licensed file, or Meshy generation from a text
132
+ prompt (load `meshy-cli`, dry run and an approved credit maximum first; never
133
+ from screenshots or frames of another game or product). Do not model the subject from primitives.
140
134
  - Search prints a catalog fetch warning (for example an HTTP 404): report it
141
135
  verbatim, label asset-dependent work `blocked`, and never treat fallback
142
136
  deep-links as auto-pullable.
@@ -24,3 +24,19 @@ Evaluate candidates under the route's look preset.
24
24
  4. Palette: the asset's dominant hue must sit inside the genre palette or be
25
25
  the declared accent — clashing saturation reads as wrong-asset even when
26
26
  the mesh is fine.
27
+
28
+ ## Grounded placement example
29
+
30
+ ```ts
31
+ import { createAuraApp, groundedRenderedAssetPlacement, looks, model, scene } from "@aura3d/engine";
32
+ import { assets } from "./aura-assets";
33
+
34
+ const place = groundedRenderedAssetPlacement(assets.helmet, { targetMaxDimension: 1.2, floorY: 0 });
35
+ createAuraApp("#app", {
36
+ scene: scene()
37
+ .add(looks.preset("product-studio"))
38
+ .add(model(assets.helmet).position(...place.position).scale(place.scale)),
39
+ ...looks.appOptions("product-studio")
40
+ });
41
+ ```
42
+
@@ -11,17 +11,19 @@ an objective and a progression loop in the browser AND looks like its genre.
11
11
  Shared rules (claim labels, forbidden patterns, typed assets, benchmark mode)
12
12
  are in [boundaries](../aura3d-core/references/boundaries.md).
13
13
 
14
- ## Look target
14
+ ## Start here
15
+
16
+ Read `docs/agents/build-a-game.md` (one page, type-checked sample) and
17
+ `docs/api/game-cheatsheet.md`. Build the route from the library shell
18
+ (`createGame` from `@aura3d/engine/game`, `createFixedStepLoop`,
19
+ `installQaHooks`, `defineModelAssets`, `installSafetyNet`); do not hand-roll a
20
+ HUD, touch layer, loop, QA hooks, synth or black-frame guard. Verify remotely
21
+ only (`tools/remote-acr/run.sh`): software WebGL2 is correctness and draw-call
22
+ evidence, never GPU performance evidence.
15
23
 
16
- Genre → recipe row (full table: `../aura3d-art-direction/references/look-recipes.md`):
24
+ ## Look target
17
25
 
18
- | Template | Look | Camera | Frame mood |
19
- | --- | --- | --- | --- |
20
- | `mini-game` | `outdoor-day` | `follow` (side-on) fov 50 | saturated greens, sky blue, warm wood + coin gold; fog 0.0025; `daylight-outdoor` post; coin sparkle + land dust |
21
- | `racing-starter` | `golden-hour` | `chase` fov 60 | warm asphalt, burnt orange, charcoal + headlight amber; low sun haze; `cinematic-film` post; brake glow |
22
- | `falling-blocks-starter` | `neon-arcade` | `orthographic` (top-down) fov 45 | neon palette per piece colour, dark glossy board + accent rim; `neon-night` post; line-clear flash |
23
- | `fighting-game` | `arena-fight` | `follow` (side-on) fov 45 | arena dark, rope colour, crowd shadow + spotlight rim; haze cone; `arena-fight` post; hit sparks |
24
- | `character-controller` | `outdoor-day` | `shoulder` fov 55 | open world greens + cloth accent; fog to horizon; `daylight-outdoor` post |
26
+ Pick the genre's recipe row before adding props: [genre looks](references/genre-looks.md) (template, look id, camera, mood) and the full table in `../aura3d-art-direction/references/look-recipes.md`.
25
27
 
26
28
  ## Establish the contract
27
29
 
@@ -71,7 +73,8 @@ Genre → recipe row (full table: `../aura3d-art-direction/references/look-recip
71
73
  `lights.studio()` / `lights.directional()` on top, pass `{ fogDensityScale: 0,
72
74
  exposureEv: -0.1 }` to `looks.preset(...)` if fog whitewashes a fast route,
73
75
  and never pin post-processing or the compiler off with a `qualityRebuild` flag
74
- list (the engine defaults are right; install the safety net instead), and never
76
+ list (the engine defaults are right; `@aura3d/engine/game` already turns the
77
+ `game` lane on; install the safety net instead), and never
75
78
  set `emissive: "#ffffff"` on instanced pool materials (`instanceColors`
76
79
  multiply `u_baseColor`, not `u_emissiveColor`).
77
80
  3. Mount typed 3D GLBs for every character, athlete, enemy, vehicle, weapon,
@@ -84,7 +87,7 @@ Genre → recipe row (full table: `../aura3d-art-direction/references/look-recip
84
87
  (`idle`, `walk`, `run`, `attack`) for real pixel motion under the key shadow
85
88
  instead of sliding rigid statues. Never build stick-figure humans or box cars
86
89
  from primitives; ground `model()` actors (`minY = 0`) at `y + sy / 2` of
87
- centered platforms; wind custom `primitives.mesh` triangles CCW from `+Y`; and
90
+ centered platforms; wind custom `geometry.custom` triangles CCW from `+Y`; and
88
91
  run Meshy GLBs through `assets optimize --role` before admission and mount
89
92
  them with a valid 64-char `sha256-...` `hash` (`defineModelAssets`).
90
93
  4. Camera state drives `app.camera` every frame — size `html, body, #app, canvas`
@@ -102,16 +105,7 @@ Genre → recipe row (full table: `../aura3d-art-direction/references/look-recip
102
105
  6. Reset without tearing down the scene: mutate runtime node handles
103
106
  (`app.nodes.require(...)`) instead of calling `app.setScene()` on same-stage
104
107
  (`stageId` / `worldId`) restarts so shadow and postprocess grade never drop.
105
- 7. Genre gates (plan for 60 seconds of meaningful play):
106
-
107
- | Genre | Must have |
108
- | --- | --- |
109
- | racing | throttle, brake, steer, ordered checkpoints, lap or finish, penalty or timeout |
110
- | platformer | move, jump, fall, collision matching visible ledges, collectibles, hazards, camera keeps player visible |
111
- | falling blocks | move, rotate, soft + hard drop, lock, line clear, scoring, levels, game over |
112
- | fighting | strikes/blocks, hit reactions, round + KO state, both fighters readable |
113
- | character controller | walk/run/jump clips playing, camera shoulder follow, locomotion direction matches travel |
114
-
108
+ 7. Genre gates (plan for 60 seconds of meaningful play): [genre gates](references/genre-gates.md).
115
109
  8. `npx @aura3d/cli@latest assets validate --no-placeholders --require-license`
116
110
  and `assets validate-game`; racing/platformer also
117
111
  `assets certify-game-geometry --asset track --category racing`.
@@ -145,7 +139,9 @@ per round until every category reads 7+, 6 rounds, or 2 flat rounds.
145
139
  - [Shared boundaries](../aura3d-core/references/boundaries.md)
146
140
  - [Look recipes](../aura3d-art-direction/references/look-recipes.md)
147
141
  - [Quality bar](../aura3d-art-direction/references/quality-bar.md)
148
- - [Build a browser game](https://github.com/auraoneai/aura3d/blob/main/docs/guides/build-a-browser-game.md)
142
+ - Build a game (one page, type-checked sample): `docs/agents/build-a-game.md`
143
+ - Game kit cheat sheet: `docs/api/game-cheatsheet.md`
144
+ - [Build a browser game guide](https://github.com/auraoneai/aura3d/blob/main/docs/guides/build-a-browser-game.md)
149
145
  - [Game example standards](https://github.com/auraoneai/aura3d/blob/main/docs/agents/game-example-standards.md)
150
146
  - [Game runtime API](https://github.com/auraoneai/aura3d/blob/main/docs/api/game-runtime.md)
151
147
  - [Genre looks in the frame](references/genre-looks.md)
@@ -0,0 +1,11 @@
1
+ # Genre gates
2
+
3
+ Plan for 60 seconds of meaningful play.
4
+
5
+ | Genre | Must have |
6
+ | --- | --- |
7
+ | racing | throttle, brake, steer, ordered checkpoints, lap or finish, penalty or timeout |
8
+ | platformer | move, jump, fall, collision matching visible ledges, collectibles, hazards, camera keeps player visible |
9
+ | falling blocks | move, rotate, soft + hard drop, lock, line clear, scoring, levels, game over |
10
+ | fighting | strikes/blocks, hit reactions, round + KO state, both fighters readable |
11
+ | character controller | walk/run/jump clips playing, camera shoulder follow, locomotion direction matches travel |
@@ -50,3 +50,51 @@ overlay reads as a bug).
50
50
  - fighting: drama lives in the dark crowd and the spot's hard edge.
51
51
  - blocks: rhythm is the palette — every piece hue distinct at a glance.
52
52
  - character: the silhouette is the gameplay; rim keeps it readable.
53
+
54
+ ## Recipe rows by template
55
+
56
+ ### mini-game
57
+
58
+ - Look preset: `outdoor-day`
59
+ - Camera: `follow` (side-on) fov 50
60
+ - Palette and mood: saturated greens, sky blue, warm wood + coin gold
61
+ - Atmosphere and finish: fog 0.0025; `daylight-outdoor` post; coin sparkle + land dust
62
+
63
+ ### racing-starter
64
+
65
+ - Look preset: `golden-hour`
66
+ - Camera: `chase` fov 60
67
+ - Palette and mood: warm asphalt, burnt orange, charcoal + headlight amber
68
+ - Atmosphere and finish: low sun haze; `cinematic-film` post; brake glow
69
+
70
+ ### falling-blocks-starter
71
+
72
+ - Look preset: `neon-arcade`
73
+ - Camera: `orthographic` (top-down) fov 45
74
+ - Palette and mood: neon palette per piece colour, dark glossy board + accent rim
75
+ - Atmosphere and finish: `neon-night` post; line-clear flash
76
+
77
+ ### fighting-game
78
+
79
+ - Look preset: `arena-fight`
80
+ - Camera: `follow` (side-on) fov 45
81
+ - Palette and mood: arena dark, rope colour, crowd shadow + spotlight rim
82
+ - Atmosphere and finish: haze cone; `arena-fight` post; hit sparks
83
+
84
+ ### character-controller
85
+
86
+ - Look preset: `outdoor-day`
87
+ - Camera: `shoulder` fov 55
88
+ - Palette and mood: open world greens + cloth accent
89
+ - Atmosphere and finish: fog to horizon; `daylight-outdoor` post
90
+
91
+
92
+ ## Frame composition rules
93
+
94
+ - Read the key light direction from the long shadows on the ground, not from the sky.
95
+ - Keep the horizon in the upper third so fog has room to fade the distance.
96
+ - Hold the palette to the recipe row; accent colours go on pickups and hazards only.
97
+ - Separate the hero silhouette from the backdrop in luminance, not only in hue.
98
+ - In dark scenes add a rim on the hero edge so the shape survives the grade.
99
+ - Warm key against cool shadow keeps the mood readable at small sizes.
100
+ - Let bloom touch emissive accents only; a bloomed backdrop flattens the contrast.
@@ -23,6 +23,11 @@ in flat light can vanish inside night-city shadow pools or golden-hour haze.
23
23
  `assets validate-animation`, and `assets assemble-character` flags it prints.
24
24
  2. Read `src/aura-assets.ts` and `aura.assets.json`. The character must be a
25
25
  typed key with role `character`. No key: load `aura3d-assets` first.
26
+ Need a new humanoid? Generate it from a text prompt (a-pose or t-pose
27
+ preview, remesh to about 10,000 triangles, rig, animate, `assets
28
+ merge-clips`) as laid out in section 5 of the
29
+ [asset workflow](https://github.com/auraoneai/aura3d/blob/main/docs/agents/asset-workflow.md);
30
+ rigging adds walk and run, each extra `animate` task is one action.
26
31
  3. Inspect the rig and record the real names:
27
32
 
28
33
  ```bash
@@ -103,8 +108,9 @@ in flat light can vanish inside night-city shadow pools or golden-hour haze.
103
108
  map; do not claim arbitrary-rig retargeting or full-body IK.
104
109
  8. Normal mode: `npm run build` locally. Browser proof (deterministic capture
105
110
  times inside the clip's keyframe range, stable camera, character-region
106
- pixel delta, backend and fallback named) runs remotely via the template
107
- `npm run test` or CI. Hand results to `aura3d-evidence-review`.
111
+ pixel delta, backend and fallback named) runs on a remote runner
112
+ (`tools/remote-acr/run.sh` in the monorepo, or the template's `npm run test`
113
+ on a remote worker), never local Playwright. Hand results to `aura3d-evidence-review`.
108
114
 
109
115
  ## Stop and report
110
116
 
@@ -48,22 +48,26 @@ without a look ships flat shading, void background and floating props.
48
48
  });
49
49
  ```
50
50
 
51
- 3. Translate any three.js instinct with this table:
51
+ 3. Translate any three.js instinct with this table (every row compiles against
52
+ the engine types; the full table and the mistakes agents make are in
53
+ [agent-quickstart.md](https://github.com/auraoneai/aura3d/blob/main/docs/agents/agent-quickstart.md)):
52
54
 
53
55
  | three.js habit | Aura3D |
54
56
  | --- | --- |
55
- | `Mesh` plus a glTF loader | `model(assets.x)` (typed asset) |
56
- | `new Scene()` | `scene()` |
57
- | `PerspectiveCamera` | `camera.perspective(...)`, `camera.rigs.*` |
58
- | `AmbientLight` | `lights.hemisphere(...)` or the look fill |
59
- | `DirectionalLight`/`PointLight` | the look's key/rim slots, `lights.*` |
60
- | `scene.environment` + PMREM | `environments.studio`/`hdri`, `world.biome` |
61
- | `toneMapping`, exposure | `output.preset`, the look's grade |
62
- | `setPixelRatio` | `quality: "auto"` via `looks.appOptions` |
63
- | `castShadow` | `shadow: true` |
64
- | `EffectComposer` passes | `output.preset` + `effects.*` |
65
- | `AnimationMixer` | `AnimationController` |
66
- | OrbitControls | `interactions.orbit(...)` |
57
+ | `new Scene()` | `scene()`, then `.add(node)` |
58
+ | `GLTFLoader` + `Mesh` | `model(assets.x, { targetHeight })` |
59
+ | `PerspectiveCamera` | `scene({ camera: camera.perspective({ fov, position, target }) })` |
60
+ | `AmbientLight`/`HemisphereLight` | `lights.ambient(...)`/`lights.hemisphere(...)` or the look |
61
+ | `DirectionalLight` + `castShadow` | `lights.directional({ shadow: true })`; models cast by default |
62
+ | `FogExp2` | `effects.fog({ density })` |
63
+ | `EffectComposer` + bloom | `effects.bloom()` |
64
+ | `ShaderMaterial` | `material.custom({ glsl: { fragment }, uniforms: { uTime: { type: "f32", value: 0 } } })` |
65
+ | `InstancedMesh` | `instances.cone/box/sphere({ transforms, colors })` |
66
+ | `OrbitControls` | `interactions.orbit({ target: "<node name>" })` |
67
+ | `AnimationMixer` | `app.nodes.require(name).play(clip, { crossFade })` |
68
+
69
+ There is no root `output` or `world` namespace: tone mapping and grade come
70
+ from the look (`looks.appOptions`), environment from `environments.*`.
67
71
 
68
72
  4. If the prompt names a real object, resolve it through the catalog before
69
73
  writing model code (load `aura3d-assets`).
@@ -139,6 +143,4 @@ spec lives in `aura3d-art-direction`.
139
143
  - [Known pitfalls](references/pitfalls.md)
140
144
  - [Agent guide llms.txt](https://github.com/auraoneai/aura3d/blob/main/llms.txt)
141
145
  - [Claims and boundaries](https://github.com/auraoneai/aura3d/blob/main/docs/agents/claims-and-boundaries.md)
142
- - [No hackjob rules](https://github.com/auraoneai/aura3d/blob/main/docs/agents/no-hackjob-rules.md)
143
- - [Anti-hallucination rules](https://github.com/auraoneai/aura3d/blob/main/docs/agents/anti-hallucination-rules.md)
144
146
  - [Agent quickstart](https://aura3d.auraone.ai/docs/agent-quickstart.html)
@@ -38,8 +38,17 @@ benchmark exception are in [boundaries](../aura3d-core/references/boundaries.md)
38
38
  ```
39
39
 
40
40
  Read `failures` in the JSON, not only the exit code. Keep the reports.
41
- 3. Run the browser gate (`npm run test`) in CI or a remote runner, not in the
42
- local agent process. It writes route-health output and
41
+ `check-deploy` covers assets only: hashed files present in `dist`, no
42
+ unreferenced files under the asset base path, derived files present, and
43
+ the asset validation (`--release` adds provenance and license gates). It
44
+ never proves a frame draws; `assertAuraScreenshotNotBlank` and
45
+ `assertAuraRouteReady` from `@aura3d/engine/devtools` do the pixel side
46
+ inside the browser gate.
47
+ 3. Run the browser gate (`npm run test`, a Playwright suite) on a remote runner,
48
+ never in the local agent process, never as local Playwright, never through
49
+ GitHub Actions. In the Aura3D repository:
50
+ `RUN_ID=ev-1 SPECS="tests/browser/<route>.spec.ts" tools/remote-acr/run.sh`
51
+ (artifacts in `tests/reports/remote-acr/ev-1/artifacts/`). It writes route-health output and
43
52
  `tests/reports/screenshot.png` plus pixel metrics. Capture desktop and
44
53
  mobile viewports and retain the PNGs with hashes.
45
54
  Games and simulations: drive the page through `installQaHooks`