@aura3d/cli 3.0.1 → 4.0.2

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 (379) hide show
  1. package/README.md +16 -15
  2. package/dist/admission/artDirection.d.ts +28 -0
  3. package/dist/admission/artDirection.d.ts.map +1 -0
  4. package/dist/admission/artDirection.js +47 -0
  5. package/dist/admission/artDirection.js.map +1 -0
  6. package/dist/admission/audio.d.ts +19 -0
  7. package/dist/admission/audio.d.ts.map +1 -0
  8. package/dist/admission/audio.js +31 -0
  9. package/dist/admission/audio.js.map +1 -0
  10. package/dist/admission/builder-patterns.d.ts +25 -0
  11. package/dist/admission/builder-patterns.d.ts.map +1 -0
  12. package/dist/admission/builder-patterns.js +40 -0
  13. package/dist/admission/builder-patterns.js.map +1 -0
  14. package/dist/admission/gates.d.ts +136 -0
  15. package/dist/admission/gates.d.ts.map +1 -0
  16. package/dist/admission/gates.js +335 -0
  17. package/dist/admission/gates.js.map +1 -0
  18. package/dist/admission/glb.d.ts +64 -0
  19. package/dist/admission/glb.d.ts.map +1 -0
  20. package/dist/admission/glb.js +128 -0
  21. package/dist/admission/glb.js.map +1 -0
  22. package/dist/admission/index.d.ts +8 -0
  23. package/dist/admission/index.d.ts.map +1 -0
  24. package/dist/admission/index.js +8 -0
  25. package/dist/admission/index.js.map +1 -0
  26. package/dist/admission/profiles.d.ts +52 -0
  27. package/dist/admission/profiles.d.ts.map +1 -0
  28. package/dist/admission/profiles.js +91 -0
  29. package/dist/admission/profiles.js.map +1 -0
  30. package/dist/admission/qrFlags.d.ts +12 -0
  31. package/dist/admission/qrFlags.d.ts.map +1 -0
  32. package/dist/admission/qrFlags.js +48 -0
  33. package/dist/admission/qrFlags.js.map +1 -0
  34. package/dist/admission/routeGates.d.ts +36 -0
  35. package/dist/admission/routeGates.d.ts.map +1 -0
  36. package/dist/admission/routeGates.js +144 -0
  37. package/dist/admission/routeGates.js.map +1 -0
  38. package/dist/admission/texel.d.ts +50 -0
  39. package/dist/admission/texel.d.ts.map +1 -0
  40. package/dist/admission/texel.js +177 -0
  41. package/dist/admission/texel.js.map +1 -0
  42. package/dist/admission/textureStats.d.ts +45 -0
  43. package/dist/admission/textureStats.d.ts.map +1 -0
  44. package/dist/admission/textureStats.js +201 -0
  45. package/dist/admission/textureStats.js.map +1 -0
  46. package/dist/animation-asset-validator.d.ts +44 -0
  47. package/dist/animation-asset-validator.d.ts.map +1 -1
  48. package/dist/animation-asset-validator.js +80 -1
  49. package/dist/animation-asset-validator.js.map +1 -1
  50. package/dist/asset-core-types.d.ts +100 -4
  51. package/dist/asset-core-types.d.ts.map +1 -1
  52. package/dist/asset-inspection-types.d.ts +9 -0
  53. package/dist/asset-inspection-types.d.ts.map +1 -1
  54. package/dist/asset-manifest.d.ts +1 -0
  55. package/dist/asset-manifest.d.ts.map +1 -1
  56. package/dist/asset-manifest.js +17 -5
  57. package/dist/asset-manifest.js.map +1 -1
  58. package/dist/asset-route-typegen.d.ts +37 -0
  59. package/dist/asset-route-typegen.d.ts.map +1 -0
  60. package/dist/asset-route-typegen.js +179 -0
  61. package/dist/asset-route-typegen.js.map +1 -0
  62. package/dist/cli-help.d.ts +1 -1
  63. package/dist/cli-help.d.ts.map +1 -1
  64. package/dist/cli-help.js +9 -4
  65. package/dist/cli-help.js.map +1 -1
  66. package/dist/cli-options.d.ts +7 -0
  67. package/dist/cli-options.d.ts.map +1 -1
  68. package/dist/cli-options.js +33 -2
  69. package/dist/cli-options.js.map +1 -1
  70. package/dist/cli.d.ts +1 -1
  71. package/dist/cli.d.ts.map +1 -1
  72. package/dist/cli.js +126 -11
  73. package/dist/cli.js.map +1 -1
  74. package/dist/codemods/engine-entry-imports.d.ts +22 -0
  75. package/dist/codemods/engine-entry-imports.d.ts.map +1 -0
  76. package/dist/codemods/engine-entry-imports.js +159 -0
  77. package/dist/codemods/engine-entry-imports.js.map +1 -0
  78. package/dist/codemods/lean-imports.d.ts +40 -0
  79. package/dist/codemods/lean-imports.d.ts.map +1 -0
  80. package/dist/codemods/lean-imports.js +175 -0
  81. package/dist/codemods/lean-imports.js.map +1 -0
  82. package/dist/codemods/renderer-imports.d.ts +36 -0
  83. package/dist/codemods/renderer-imports.d.ts.map +1 -0
  84. package/dist/codemods/renderer-imports.js +364 -0
  85. package/dist/codemods/renderer-imports.js.map +1 -0
  86. package/dist/codemods/renderer-mode.d.ts +38 -0
  87. package/dist/codemods/renderer-mode.d.ts.map +1 -0
  88. package/dist/codemods/renderer-mode.js +130 -0
  89. package/dist/codemods/renderer-mode.js.map +1 -0
  90. package/dist/commands/prd01/index.d.ts +8 -0
  91. package/dist/commands/prd01/index.d.ts.map +1 -0
  92. package/dist/commands/prd01/index.js +39 -0
  93. package/dist/commands/prd01/index.js.map +1 -0
  94. package/dist/commands/prd02/environmentsBake.d.ts +6 -0
  95. package/dist/commands/prd02/environmentsBake.d.ts.map +1 -0
  96. package/dist/commands/prd02/environmentsBake.js +174 -0
  97. package/dist/commands/prd02/environmentsBake.js.map +1 -0
  98. package/dist/commands/prd02/index.d.ts +2 -0
  99. package/dist/commands/prd02/index.d.ts.map +1 -0
  100. package/dist/commands/prd02/index.js +26 -0
  101. package/dist/commands/prd02/index.js.map +1 -0
  102. package/dist/commands/prd02/migrateLighting.d.ts +17 -0
  103. package/dist/commands/prd02/migrateLighting.d.ts.map +1 -0
  104. package/dist/commands/prd02/migrateLighting.js +86 -0
  105. package/dist/commands/prd02/migrateLighting.js.map +1 -0
  106. package/dist/commands/prd02/migrateLightingSweep.d.ts +20 -0
  107. package/dist/commands/prd02/migrateLightingSweep.d.ts.map +1 -0
  108. package/dist/commands/prd02/migrateLightingSweep.js +105 -0
  109. package/dist/commands/prd02/migrateLightingSweep.js.map +1 -0
  110. package/dist/commands/prd03/index.d.ts +7 -0
  111. package/dist/commands/prd03/index.d.ts.map +1 -0
  112. package/dist/commands/prd03/index.js +9 -0
  113. package/dist/commands/prd03/index.js.map +1 -0
  114. package/dist/commands/prd04/index.d.ts +10 -0
  115. package/dist/commands/prd04/index.d.ts.map +1 -0
  116. package/dist/commands/prd04/index.js +10 -0
  117. package/dist/commands/prd04/index.js.map +1 -0
  118. package/dist/commands/prd04/modelTintReport.d.ts +16 -0
  119. package/dist/commands/prd04/modelTintReport.d.ts.map +1 -0
  120. package/dist/commands/prd04/modelTintReport.js +114 -0
  121. package/dist/commands/prd04/modelTintReport.js.map +1 -0
  122. package/dist/commands/prd04/pinEmissiveDefaults.d.ts +3 -0
  123. package/dist/commands/prd04/pinEmissiveDefaults.d.ts.map +1 -0
  124. package/dist/commands/prd04/pinEmissiveDefaults.js +36 -0
  125. package/dist/commands/prd04/pinEmissiveDefaults.js.map +1 -0
  126. package/dist/commands/prd05/admit.d.ts +54 -0
  127. package/dist/commands/prd05/admit.d.ts.map +1 -0
  128. package/dist/commands/prd05/admit.js +153 -0
  129. package/dist/commands/prd05/admit.js.map +1 -0
  130. package/dist/commands/prd05/codemods/assetsRouteModules.d.ts +3 -0
  131. package/dist/commands/prd05/codemods/assetsRouteModules.d.ts.map +1 -0
  132. package/dist/commands/prd05/codemods/assetsRouteModules.js +92 -0
  133. package/dist/commands/prd05/codemods/assetsRouteModules.js.map +1 -0
  134. package/dist/commands/prd05/index.d.ts +9 -0
  135. package/dist/commands/prd05/index.d.ts.map +1 -0
  136. package/dist/commands/prd05/index.js +171 -0
  137. package/dist/commands/prd05/index.js.map +1 -0
  138. package/dist/commands/prd05/library.d.ts +23 -0
  139. package/dist/commands/prd05/library.d.ts.map +1 -0
  140. package/dist/commands/prd05/library.js +245 -0
  141. package/dist/commands/prd05/library.js.map +1 -0
  142. package/dist/commands/prd05/lookdev.d.ts +14 -0
  143. package/dist/commands/prd05/lookdev.d.ts.map +1 -0
  144. package/dist/commands/prd05/lookdev.js +68 -0
  145. package/dist/commands/prd05/lookdev.js.map +1 -0
  146. package/dist/commands/prd05/optimize.d.ts +16 -0
  147. package/dist/commands/prd05/optimize.d.ts.map +1 -0
  148. package/dist/commands/prd05/optimize.js +55 -0
  149. package/dist/commands/prd05/optimize.js.map +1 -0
  150. package/dist/commands/prd05/prune.d.ts +26 -0
  151. package/dist/commands/prd05/prune.d.ts.map +1 -0
  152. package/dist/commands/prd05/prune.js +104 -0
  153. package/dist/commands/prd05/prune.js.map +1 -0
  154. package/dist/commands/prd05/review.d.ts +24 -0
  155. package/dist/commands/prd05/review.d.ts.map +1 -0
  156. package/dist/commands/prd05/review.js +40 -0
  157. package/dist/commands/prd05/review.js.map +1 -0
  158. package/dist/commands/prd06/index.d.ts +6 -0
  159. package/dist/commands/prd06/index.d.ts.map +1 -0
  160. package/dist/commands/prd06/index.js +86 -0
  161. package/dist/commands/prd06/index.js.map +1 -0
  162. package/dist/commands/prd06/inspectAnimationClips.d.ts +86 -0
  163. package/dist/commands/prd06/inspectAnimationClips.d.ts.map +1 -0
  164. package/dist/commands/prd06/inspectAnimationClips.js +168 -0
  165. package/dist/commands/prd06/inspectAnimationClips.js.map +1 -0
  166. package/dist/commands/prd06/validateHero.d.ts +18 -0
  167. package/dist/commands/prd06/validateHero.d.ts.map +1 -0
  168. package/dist/commands/prd06/validateHero.js +91 -0
  169. package/dist/commands/prd06/validateHero.js.map +1 -0
  170. package/dist/commands/prd07/codemods.d.ts +28 -0
  171. package/dist/commands/prd07/codemods.d.ts.map +1 -0
  172. package/dist/commands/prd07/codemods.js +155 -0
  173. package/dist/commands/prd07/codemods.js.map +1 -0
  174. package/dist/commands/prd07/index.d.ts +2 -0
  175. package/dist/commands/prd07/index.d.ts.map +1 -0
  176. package/dist/commands/prd07/index.js +151 -0
  177. package/dist/commands/prd07/index.js.map +1 -0
  178. package/dist/commands/prd08/feelLint.d.ts +13 -0
  179. package/dist/commands/prd08/feelLint.d.ts.map +1 -0
  180. package/dist/commands/prd08/feelLint.js +32 -0
  181. package/dist/commands/prd08/feelLint.js.map +1 -0
  182. package/dist/commands/prd08/index.d.ts +2 -0
  183. package/dist/commands/prd08/index.d.ts.map +1 -0
  184. package/dist/commands/prd08/index.js +16 -0
  185. package/dist/commands/prd08/index.js.map +1 -0
  186. package/dist/commands/prd08/motionReport.d.ts +94 -0
  187. package/dist/commands/prd08/motionReport.d.ts.map +1 -0
  188. package/dist/commands/prd08/motionReport.js +197 -0
  189. package/dist/commands/prd08/motionReport.js.map +1 -0
  190. package/dist/commands/prd09/codemods/audio-wrapper.d.ts +9 -0
  191. package/dist/commands/prd09/codemods/audio-wrapper.d.ts.map +1 -0
  192. package/dist/commands/prd09/codemods/audio-wrapper.js +30 -0
  193. package/dist/commands/prd09/codemods/audio-wrapper.js.map +1 -0
  194. package/dist/commands/prd09/codemods/capture-branches.d.ts +10 -0
  195. package/dist/commands/prd09/codemods/capture-branches.d.ts.map +1 -0
  196. package/dist/commands/prd09/codemods/capture-branches.js +54 -0
  197. package/dist/commands/prd09/codemods/capture-branches.js.map +1 -0
  198. package/dist/commands/prd09/codemods/evidence-globals.d.ts +8 -0
  199. package/dist/commands/prd09/codemods/evidence-globals.d.ts.map +1 -0
  200. package/dist/commands/prd09/codemods/evidence-globals.js +19 -0
  201. package/dist/commands/prd09/codemods/evidence-globals.js.map +1 -0
  202. package/dist/commands/prd09/codemods/perf-script.d.ts +8 -0
  203. package/dist/commands/prd09/codemods/perf-script.d.ts.map +1 -0
  204. package/dist/commands/prd09/codemods/perf-script.js +24 -0
  205. package/dist/commands/prd09/codemods/perf-script.js.map +1 -0
  206. package/dist/commands/prd09/index.d.ts +8 -0
  207. package/dist/commands/prd09/index.d.ts.map +1 -0
  208. package/dist/commands/prd09/index.js +19 -0
  209. package/dist/commands/prd09/index.js.map +1 -0
  210. package/dist/commands/prd09/perf-report.d.ts +56 -0
  211. package/dist/commands/prd09/perf-report.d.ts.map +1 -0
  212. package/dist/commands/prd09/perf-report.js +118 -0
  213. package/dist/commands/prd09/perf-report.js.map +1 -0
  214. package/dist/commands/prd09/sfx-admit.d.ts +18 -0
  215. package/dist/commands/prd09/sfx-admit.d.ts.map +1 -0
  216. package/dist/commands/prd09/sfx-admit.js +120 -0
  217. package/dist/commands/prd09/sfx-admit.js.map +1 -0
  218. package/dist/commands/prd10/index.d.ts +2 -0
  219. package/dist/commands/prd10/index.d.ts.map +1 -0
  220. package/dist/commands/prd10/index.js +109 -0
  221. package/dist/commands/prd10/index.js.map +1 -0
  222. package/dist/commands/prd11/batchOptout.d.ts +35 -0
  223. package/dist/commands/prd11/batchOptout.d.ts.map +1 -0
  224. package/dist/commands/prd11/batchOptout.js +155 -0
  225. package/dist/commands/prd11/batchOptout.js.map +1 -0
  226. package/dist/commands/prd11/index.d.ts +2 -0
  227. package/dist/commands/prd11/index.d.ts.map +1 -0
  228. package/dist/commands/prd11/index.js +13 -0
  229. package/dist/commands/prd11/index.js.map +1 -0
  230. package/dist/commands/prd11/perfGate.d.ts +15 -0
  231. package/dist/commands/prd11/perfGate.d.ts.map +1 -0
  232. package/dist/commands/prd11/perfGate.js +98 -0
  233. package/dist/commands/prd11/perfGate.js.map +1 -0
  234. package/dist/commands/prd13/index.d.ts +15 -0
  235. package/dist/commands/prd13/index.d.ts.map +1 -0
  236. package/dist/commands/prd13/index.js +26 -0
  237. package/dist/commands/prd13/index.js.map +1 -0
  238. package/dist/commands/prd13/run.d.ts +10 -0
  239. package/dist/commands/prd13/run.d.ts.map +1 -0
  240. package/dist/commands/prd13/run.js +29 -0
  241. package/dist/commands/prd13/run.js.map +1 -0
  242. package/dist/commands/prd14/index.d.ts +6 -0
  243. package/dist/commands/prd14/index.d.ts.map +1 -0
  244. package/dist/commands/prd14/index.js +6 -0
  245. package/dist/commands/prd14/index.js.map +1 -0
  246. package/dist/commands/prd15/index.d.ts +8 -0
  247. package/dist/commands/prd15/index.d.ts.map +1 -0
  248. package/dist/commands/prd15/index.js +152 -0
  249. package/dist/commands/prd15/index.js.map +1 -0
  250. package/dist/commands/registry.d.ts +19 -0
  251. package/dist/commands/registry.d.ts.map +1 -0
  252. package/dist/commands/registry.js +19 -0
  253. package/dist/commands/registry.js.map +1 -0
  254. package/dist/contracts/assetManifest.d.ts +80 -0
  255. package/dist/contracts/assetManifest.d.ts.map +1 -0
  256. package/dist/contracts/assetManifest.js +9 -0
  257. package/dist/contracts/assetManifest.js.map +1 -0
  258. package/dist/contracts/commands.d.ts +53 -0
  259. package/dist/contracts/commands.d.ts.map +1 -0
  260. package/dist/contracts/commands.js +37 -0
  261. package/dist/contracts/commands.js.map +1 -0
  262. package/dist/index.d.ts +17 -1
  263. package/dist/index.d.ts.map +1 -1
  264. package/dist/index.js +297 -73
  265. package/dist/index.js.map +1 -1
  266. package/dist/library-manifest.d.ts +86 -0
  267. package/dist/library-manifest.d.ts.map +1 -0
  268. package/dist/library-manifest.js +95 -0
  269. package/dist/library-manifest.js.map +1 -0
  270. package/dist/look/capture.d.ts +51 -0
  271. package/dist/look/capture.d.ts.map +1 -0
  272. package/dist/look/capture.js +229 -0
  273. package/dist/look/capture.js.map +1 -0
  274. package/dist/look/judge.d.ts +24 -0
  275. package/dist/look/judge.d.ts.map +1 -0
  276. package/dist/look/judge.js +151 -0
  277. package/dist/look/judge.js.map +1 -0
  278. package/dist/look/lint-static.d.ts +45 -0
  279. package/dist/look/lint-static.d.ts.map +1 -0
  280. package/dist/look/lint-static.js +241 -0
  281. package/dist/look/lint-static.js.map +1 -0
  282. package/dist/look/rubric.d.ts +70 -0
  283. package/dist/look/rubric.d.ts.map +1 -0
  284. package/dist/look/rubric.js +169 -0
  285. package/dist/look/rubric.js.map +1 -0
  286. package/dist/meshy/admission.d.ts.map +1 -1
  287. package/dist/meshy/admission.js +32 -7
  288. package/dist/meshy/admission.js.map +1 -1
  289. package/dist/meshy/import.d.ts +7 -1
  290. package/dist/meshy/import.d.ts.map +1 -1
  291. package/dist/meshy/import.js +84 -6
  292. package/dist/meshy/import.js.map +1 -1
  293. package/dist/migrate-three/CompatibilityWarnings.d.ts +6 -0
  294. package/dist/migrate-three/CompatibilityWarnings.d.ts.map +1 -0
  295. package/dist/migrate-three/CompatibilityWarnings.js +24 -0
  296. package/dist/migrate-three/CompatibilityWarnings.js.map +1 -0
  297. package/dist/migrate-three/ImportMap.d.ts +19 -0
  298. package/dist/migrate-three/ImportMap.d.ts.map +1 -0
  299. package/dist/migrate-three/ImportMap.js +35 -0
  300. package/dist/migrate-three/ImportMap.js.map +1 -0
  301. package/dist/migrate-three/R3fMigration.d.ts +32 -0
  302. package/dist/migrate-three/R3fMigration.d.ts.map +1 -0
  303. package/dist/migrate-three/R3fMigration.js +70 -0
  304. package/dist/migrate-three/R3fMigration.js.map +1 -0
  305. package/dist/migrate-three/ThreeToA3DAdapter.d.ts +8 -0
  306. package/dist/migrate-three/ThreeToA3DAdapter.d.ts.map +1 -0
  307. package/dist/migrate-three/ThreeToA3DAdapter.js +20 -0
  308. package/dist/migrate-three/ThreeToA3DAdapter.js.map +1 -0
  309. package/dist/migrate-three/emit.d.ts +21 -0
  310. package/dist/migrate-three/emit.d.ts.map +1 -0
  311. package/dist/migrate-three/emit.js +117 -0
  312. package/dist/migrate-three/emit.js.map +1 -0
  313. package/dist/migrate-three/mappings.d.ts +21 -0
  314. package/dist/migrate-three/mappings.d.ts.map +1 -0
  315. package/dist/migrate-three/mappings.js +42 -0
  316. package/dist/migrate-three/mappings.js.map +1 -0
  317. package/dist/migrate-three/parse.d.ts +20 -0
  318. package/dist/migrate-three/parse.d.ts.map +1 -0
  319. package/dist/migrate-three/parse.js +56 -0
  320. package/dist/migrate-three/parse.js.map +1 -0
  321. package/dist/migrate-three/report.d.ts +18 -0
  322. package/dist/migrate-three/report.d.ts.map +1 -0
  323. package/dist/migrate-three/report.js +16 -0
  324. package/dist/migrate-three/report.js.map +1 -0
  325. package/dist/pull-bridge/adapters.d.ts +1 -1
  326. package/dist/pull-bridge/adapters.d.ts.map +1 -1
  327. package/dist/pull-bridge/adapters.js +17 -4
  328. package/dist/pull-bridge/adapters.js.map +1 -1
  329. package/dist/pull-bridge/provenance.d.ts.map +1 -1
  330. package/dist/pull-bridge/provenance.js +3 -2
  331. package/dist/pull-bridge/provenance.js.map +1 -1
  332. package/dist/pull-bridge/pullable.d.ts.map +1 -1
  333. package/dist/pull-bridge/pullable.js +14 -3
  334. package/dist/pull-bridge/pullable.js.map +1 -1
  335. package/dist/pull-bridge/scoring.d.ts +36 -8
  336. package/dist/pull-bridge/scoring.d.ts.map +1 -1
  337. package/dist/pull-bridge/scoring.js +143 -47
  338. package/dist/pull-bridge/scoring.js.map +1 -1
  339. package/dist/pull-bridge/search.d.ts +2 -0
  340. package/dist/pull-bridge/search.d.ts.map +1 -1
  341. package/dist/pull-bridge/search.js +17 -10
  342. package/dist/pull-bridge/search.js.map +1 -1
  343. package/dist/pull-bridge.d.ts +2 -2
  344. package/dist/pull-bridge.d.ts.map +1 -1
  345. package/dist/pull-bridge.js +24 -8
  346. package/dist/pull-bridge.js.map +1 -1
  347. package/package.json +6 -3
  348. package/skills/agent-files/AGENTS.md +3 -0
  349. package/skills/aura3d-animation-studio/SKILL.md +153 -0
  350. package/skills/aura3d-animation-studio/references/shot-looks.md +26 -0
  351. package/skills/aura3d-art-direction/SKILL.md +84 -0
  352. package/skills/aura3d-art-direction/references/failure-gallery.md +64 -0
  353. package/skills/aura3d-art-direction/references/framing-and-shots.md +45 -0
  354. package/skills/aura3d-art-direction/references/look-recipes.md +32 -0
  355. package/skills/aura3d-art-direction/references/quality-bar.md +103 -0
  356. package/skills/aura3d-art-direction/references/reference-frames.md +82 -0
  357. package/skills/aura3d-assets/SKILL.md +151 -0
  358. package/skills/aura3d-assets/references/preview-under-look.md +26 -0
  359. package/skills/aura3d-browser-game/SKILL.md +149 -0
  360. package/skills/aura3d-browser-game/references/genre-looks.md +52 -0
  361. package/skills/aura3d-character-animation/SKILL.md +129 -0
  362. package/skills/aura3d-character-animation/references/stage-and-lighting.md +31 -0
  363. package/skills/aura3d-core/SKILL.md +143 -0
  364. package/skills/aura3d-core/references/boundaries.md +91 -0
  365. package/skills/aura3d-evidence-review/SKILL.md +106 -0
  366. package/skills/aura3d-game-art/SKILL.md +118 -0
  367. package/skills/aura3d-game-art/references/sheet-check.mjs +58 -0
  368. package/skills/aura3d-game-art/references/sprite-palettes.md +25 -0
  369. package/skills/aura3d-materials-environments/SKILL.md +139 -0
  370. package/skills/aura3d-performance/SKILL.md +97 -0
  371. package/skills/aura3d-retexture/SKILL.md +115 -0
  372. package/skills/aura3d-retexture/references/geometry-hash.mjs +89 -0
  373. package/skills/aura3d-scene-authoring/SKILL.md +132 -0
  374. package/skills/aura3d-scene-authoring/references/look-by-family.md +28 -0
  375. package/skills/aura3d-threejs-migration/SKILL.md +125 -0
  376. package/skills/aura3d-threejs-migration/references/look-mapping.md +27 -0
  377. package/skills/llms.txt +147 -0
  378. package/skills/manifest.json +163 -0
  379. package/skills/meshy-cli/SKILL.md +148 -0
@@ -0,0 +1,129 @@
1
+ ---
2
+ name: aura3d-character-animation
3
+ description: Drives rigged Aura3D characters from inspected clip, skeleton, and morph metadata with an animation controller, clip events, runtime pose and morph state, and voice-bridge visemes, then proves motion in character-region pixels. Use when animating a humanoid or creature, using `AnimationController`, `createAnimationController`, or `animation.sampleAuraVoiceBridgeAtTime`, setting morph targets or visemes, or running `assets inspect --animation`, `assets validate-animation`, or `assets assemble-character`.
4
+ ---
5
+
6
+ # Aura3D character animation
7
+
8
+ Clip, bone, and morph names come from the asset, never from memory. Controller
9
+ state is source evidence; a visible animation claim needs pixel deltas on the
10
+ character. Shared rules (claim labels, forbidden patterns, typed assets,
11
+ benchmark mode) are in [boundaries](../aura3d-core/references/boundaries.md).
12
+
13
+ ## Look target
14
+
15
+ A character reads through its silhouette and rim: `character-showcase` (or the
16
+ genre recipe's look) supplies the 3/4-front key plus rim that makes locomotion,
17
+ poses and morphs visible. Judge animation under that look — a clip that reads
18
+ in flat light can vanish inside night-city shadow pools or golden-hour haze.
19
+
20
+ ## Establish the contract
21
+
22
+ 1. Run `npx @aura3d/cli@latest --help` and use only the `assets inspect`,
23
+ `assets validate-animation`, and `assets assemble-character` flags it prints.
24
+ 2. Read `src/aura-assets.ts` and `aura.assets.json`. The character must be a
25
+ typed key with role `character`. No key: load `aura3d-assets` first.
26
+ 3. Inspect the rig and record the real names:
27
+
28
+ ```bash
29
+ npx @aura3d/cli@latest assets inspect ./public/aura-assets/hero.glb --animation --skeleton --morphs
30
+ ```
31
+
32
+ Read the JSON fields "animations", "skeleton.skins[].joints", and
33
+ "morphTargets.targetNames".
34
+ `"No morph target metadata detected."` means no morph or viseme work on
35
+ this asset.
36
+ 4. Decide the mode. Benchmark mode: `npm install && npm run build`, then stop.
37
+
38
+ ## Procedure
39
+
40
+ 1. Map gameplay actions to real clip names and fail fast on gaps:
41
+
42
+ ```bash
43
+ npx @aura3d/cli@latest assets validate-animation --clips idle,walk,sprint,jump \
44
+ --map idle=idle,walk=walk,run=sprint --require idle,walk,run --require-rig
45
+ ```
46
+
47
+ Pass `--clips` from the inspection output. `"ok": false` with a
48
+ `missingActions` entry means the rig cannot play that action.
49
+ 2. Multi-part characters: build the assembly from typed keys first.
50
+
51
+ ```bash
52
+ npx @aura3d/cli@latest assets assemble-character --name hero --body heroBody --part hair=heroHair
53
+ ```
54
+
55
+ 3. Create one controller per character from typed clip metadata, bind it to a
56
+ runtime node, and update it once per frame:
57
+
58
+ ```ts
59
+ import { createAnimationController, createAuraApp, game, lights, model, scene } from "@aura3d/engine";
60
+ import { assets } from "./aura-assets";
61
+
62
+ const app = createAuraApp("#app", {
63
+ scene: scene()
64
+ .add(model(assets.hero).runtime(game.runtimeNode("hero", { tags: ["player"] })))
65
+ .add(lights.studio())
66
+ });
67
+ const hero = app.nodes.require("hero");
68
+ const controller = createAnimationController({
69
+ id: "hero-animation",
70
+ clipRegistry: assets.hero,
71
+ requiredClips: ["idle", "walk", "sprint"],
72
+ suppressRootMotion: true
73
+ });
74
+ controller.bindRuntimeNode(hero, { id: "hero-binding", defaultClipId: "idle" });
75
+
76
+ let moving = false; // set from your input or kinematic body each frame
77
+ app.onFrame(({ dt }) => {
78
+ controller.crossFade(moving ? "walk" : "idle", 0.12);
79
+ controller.update(dt);
80
+ });
81
+ ```
82
+
83
+ 4. Clip-local gameplay events (event names such as "hitbox.open", "sfx", "vfx",
84
+ "camera.impulse", "caption", "viseme") go through the controller's event subscription. Bridge
85
+ them into public systems such as `game.combatWorld`; never call private
86
+ hitbox or renderer internals.
87
+ 5. Pose and morph state go through the runtime node handle (its animation-pose
88
+ and morph-target setters). App code never reaches into renderer skinning.
89
+ 6. Voice sync: sample the bridge package at the frame time and apply the
90
+ viseme weights to the node's morph targets, using only morph names the
91
+ inspection reported.
92
+
93
+ ```ts
94
+ import { animation } from "@aura3d/engine";
95
+
96
+ app.onFrame(({ time }) => {
97
+ const sample = animation.sampleAuraVoiceBridgeAtTime(bridgePackage, time, "host");
98
+ app.nodes.require("host").setMorphTargets(sample.viseme?.blendshapeWeights ?? {});
99
+ });
100
+ ```
101
+
102
+ 7. Retargeting is explicit and selected-roster only. Use an explicit humanoid
103
+ map; do not claim arbitrary-rig retargeting or full-body IK.
104
+ 8. Normal mode: `npm run build` locally. Browser proof (deterministic capture
105
+ 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`.
108
+
109
+ ## Stop and report
110
+
111
+ - A clip, bone, or morph you need is absent from the inspection output: stop
112
+ and report it. Do not rename clips in code or guess names.
113
+ - `assets validate-animation` returns `"ok": false`: the action map is
114
+ `blocked` until a rig with the clip is admitted.
115
+ - A clip is a static pose (zero channel motion): it cannot satisfy an
116
+ animation row; pick a clip with real motion or label `prototype`.
117
+ - The claim is "visible skinning, morphs, or visemes" and you only have
118
+ controller snapshots or clip lists: label it `prototype`.
119
+ - Only the certified roster in the skinning doc may be called certified.
120
+
121
+ ## References
122
+
123
+ - [Shared boundaries](../aura3d-core/references/boundaries.md)
124
+ - [Skinning and morphs](https://github.com/auraoneai/aura3d/blob/main/docs/rendering/skinning-and-morphs.md)
125
+ - [Animation, retargeting, IK](https://github.com/auraoneai/aura3d/blob/main/docs/rendering/animation.md)
126
+ - [Animation runtime events](https://github.com/auraoneai/aura3d/blob/main/docs/api/animation-runtime-events.md)
127
+ - [Animation runtime support](https://github.com/auraoneai/aura3d/blob/main/docs/animation/runtime-support.md)
128
+ - [Agent guide llms.txt](https://github.com/auraoneai/aura3d/blob/main/llms.txt)
129
+ - [Character staging and lighting](references/stage-and-lighting.md)
@@ -0,0 +1,31 @@
1
+ # Character staging and lighting
2
+
3
+ How to stage a rigged character so the animation itself is what a reviewer
4
+ sees.
5
+
6
+ ## Stage
7
+
8
+ | Setup | When | Look | Frame |
9
+ | --- | --- | --- | --- |
10
+ | Showcase plinth | clip demos, locomotion cycles | `character-showcase` | full body, 60–70% of frame height |
11
+ | Walk path | locomotion proof | `outdoor-day` | character 25–40%, path leads forward |
12
+ | Fight pair | combat clips | `arena-fight` | both fighters inside spotlight pools |
13
+ | Interior | dialogue, visemes | `interior-warm` | head-and-torso, catchlights visible |
14
+
15
+ ## Lighting reads for motion
16
+
17
+ - Rim light is what separates a moving silhouette from the backdrop — under
18
+ `night-city` or `arena-fight` the rim does more work than the key.
19
+ - Ground contact shadow sells weight: feet must plant inside the shadow blob,
20
+ not beside it (floating feet = `weak-shadow` / grounding lint).
21
+ - Golden-hour key gives long dramatic shadows for walk cycles; overcast gives
22
+ even exposure for cloth and morph inspection.
23
+ - Keep the palette quiet — one accent (cloth or trim) plus neutral stage
24
+ colors, so motion draws the eye instead of props.
25
+
26
+ ## Camera for animation proof
27
+
28
+ - `follow` rig for locomotion (side-on for gait, 3/4 for turn animations).
29
+ - `orbit` for pose/morph inspection on a plinth.
30
+ - Cut between a wide framing (whole body, 60–70%) and a close framing
31
+ (head/visemes, 40%) — never mid-body crops that amputate feet.
@@ -0,0 +1,143 @@
1
+ ---
2
+ name: aura3d-core
3
+ description: Orients an agent in Aura3D, maps three.js habits to `@aura3d/engine` APIs, routes visual work to art direction first, and sets claim labels. Use when starting any Aura3D task, scaffolding with `create-aura3d`, writing `createAuraApp` code, or before writing public examples, README text, or release claims.
4
+ ---
5
+
6
+ # Aura3D core
7
+
8
+ Aura3D is a TypeScript engine API, an asset CLI, templates, diagnostics, and a
9
+ deploy checker. You are not writing three.js; `createAuraApp(...)` owns the
10
+ renderer, scene graph, camera, and frame loop. Every scene gets a look — a
11
+ preset that owns environment light, key shadow, fog, background and grade.
12
+ Shared rules (claim labels, forbidden patterns, catalog-first, typed assets,
13
+ paid generation, benchmark mode) live once in
14
+ [references/boundaries.md](references/boundaries.md).
15
+
16
+ ## Look target
17
+
18
+ Before any code, pick the look: read `aura3d-art-direction`'s recipe row for
19
+ the genre, note the look id, the post preset and the palette accent. A scene
20
+ without a look ships flat shading, void background and floating props.
21
+
22
+ ## Establish the contract
23
+
24
+ 1. Run `npx @aura3d/cli@latest --help` (or `pnpm exec aura3d --help` inside the
25
+ monorepo) and use only the commands and flags it prints.
26
+ 2. Check the installed engine version in `package.json`. Do not name an export
27
+ you have not seen in the installed package's type declarations.
28
+ 3. Read `src/aura-assets.ts` and `aura.assets.json` before writing scene code.
29
+ Asset keys come from that generated file, never from memory.
30
+ 4. Decide the mode. Benchmark mode means `npm install && npm run build`, then
31
+ stop (run the look-dev loop instead when `aura3d look capture` exists).
32
+
33
+ ## Procedure
34
+
35
+ 1. Pick the starting point in this order: a template (`npx create-aura3d@latest
36
+ <dir> --template <name>`), then `sceneKits.*`, then `prefabs.*`, and use
37
+ `primitives.*` last, for set dressing only.
38
+ 2. Add the look first — it supplies the sky/environment light, the key shadow,
39
+ fog, background and the post grade as one unit:
40
+
41
+ ```ts
42
+ import { createAuraApp, looks, model, scene } from "@aura3d/engine";
43
+ import { assets } from "./aura-assets";
44
+
45
+ createAuraApp("#app", {
46
+ scene: scene().add(looks.preset("product-studio")).add(model(assets.robot)),
47
+ ...looks.appOptions("product-studio")
48
+ });
49
+ ```
50
+
51
+ 3. Translate any three.js instinct with this table:
52
+
53
+ | three.js habit | Aura3D |
54
+ | --- | --- |
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(...)` |
67
+
68
+ 4. If the prompt names a real object, resolve it through the catalog before
69
+ writing model code (load `aura3d-assets`).
70
+ 5. Load the next skill from the routing table below. Load more than one when
71
+ the task spans them.
72
+ 6. Never assemble characters, athletes, enemies, vehicles, aircraft, trees, or
73
+ architectural landmarks out of `primitives.box`, `primitives.sphere`, or
74
+ `primitives.cylinder` (keep every silhouette, look, and style readable):
75
+ every hero subject, lighting, and shadow requires a real 3D GLB via
76
+ `model(assets.<name>, { targetMaxDimension, role })` from `src/aura-assets.ts`
77
+ (use `targetHeight` only for upright humanoids and `targetMaxDimension` for
78
+ vehicles, rackets, weapons, barriers, and wide props so aspect ratios and
79
+ silhouettes stay proportional). Drive rigged characters (`skins > 0`) with
80
+ `handle.setAnimation({ clip, loop: true, speed })` so limbs articulate under
81
+ the key light and shadow rather than sliding as rigid statues.
82
+ 7. For interactive and game routes, gate Frame 1 on `await app.ready()` before
83
+ fading `#boot-gate` so lighting, shadow, and GLB silhouettes are fully
84
+ mounted; default `autopilot` to `false` (manual control on Frame 1) unless
85
+ `?autoplay=1` / `?demo=1` is in the URL or the user clicks the HUD `Auto`
86
+ button (with `button.blur()` for clean framing). Pass
87
+ `qualityRebuild: { flags: ["game", "-compiler", "-post", "-vfxFog"] }` when
88
+ fast arcade contrast and frame pacing are required, decimate Meshy GLBs
89
+ (`<= 20,000` vertices, `<= 2 MB`, 16-bit indices, `<= 1024x1024` textures for
90
+ sharp reflection and palette), keep canonical `sha256-...` `hash` provenance
91
+ in `defineAuraAssets(...)` for clean look and silhouette, and mutate runtime
92
+ node handles (`app.nodes.require(...)`) instead of calling `app.setScene()`
93
+ on same-stage restarts so lighting, shadow, and postprocess grade never drop.
94
+
95
+ ## Routing table
96
+
97
+ | Task signal | Load |
98
+ | --- | --- |
99
+ | Any visual task, screenshot looks flat/dark/empty, starting or finishing a scene | `aura3d-art-direction` (first) |
100
+ | Prompt to scene or route, scene kits, `definePromptPlan` | `aura3d-scene-authoring` |
101
+ | Named real object, user GLB, `assets search/resolve/add` | `aura3d-assets` |
102
+ | Done, public, shippable, screenshots, claims, `check-deploy` | `aura3d-evidence-review` |
103
+ | `mini-game`, `racing-starter`, `falling-blocks-starter`, `fighting-game`, `character-controller` | `aura3d-browser-game` |
104
+ | Rigged humanoids, clips, locomotion, morphs, visemes | `aura3d-character-animation` |
105
+ | `animation-studio` template, `aura3d animation scene`, episodes | `aura3d-animation-studio` |
106
+ | Porting three.js code, migration templates (formerly `three-compat-*`) | `aura3d-threejs-migration` |
107
+ | Materials, textures, HDRI, skies, water, weather | `aura3d-materials-environments` |
108
+ | Flipbook VFX sheets, HUD icons, UI sprites | `aura3d-game-art` |
109
+ | Restyling a finished mesh without touching geometry | `aura3d-retexture` |
110
+ | Frame time, bundle size, KTX2, LOD, instancing | `aura3d-performance` |
111
+ | No clean catalog candidate, Meshy generation or import | `meshy-cli` |
112
+
113
+ A listed skill that is not installed in this project is a gap to report, not
114
+ permission to improvise its procedure.
115
+
116
+ ## Look-dev loop
117
+
118
+ Capture the route with `aura3d look capture`, judge each frame against the
119
+ quality-bar rubric, fix the single highest-leverage issue (lint codes first),
120
+ and repeat until every category reads 7+ or the loop exits flat. The full loop
121
+ spec lives in `aura3d-art-direction`.
122
+
123
+ ## Stop and report
124
+
125
+ - The CLI help does not list a command you need: stop, name the missing
126
+ command, and label the work `blocked`.
127
+ - A required asset key is missing from `src/aura-assets.ts`: stop and fix the
128
+ import. Do not substitute a string id, URL, or primitive.
129
+ - The claim you are about to write has no matching browser evidence: lower it
130
+ to `prototype` or `roadmap` per boundaries.md — claim labels are a one-line
131
+ link, not a restatement.
132
+ - The task needs paid generation and no approval exists: stop at the dry run.
133
+ - Benchmark mode: after `npm install && npm run build`, stop and report the
134
+ runner-owned launch and capture command.
135
+
136
+ ## References
137
+
138
+ - [Shared boundaries](references/boundaries.md)
139
+ - [Agent guide llms.txt](https://github.com/auraoneai/aura3d/blob/main/llms.txt)
140
+ - [Claims and boundaries](https://github.com/auraoneai/aura3d/blob/main/docs/agents/claims-and-boundaries.md)
141
+ - [No hackjob rules](https://github.com/auraoneai/aura3d/blob/main/docs/agents/no-hackjob-rules.md)
142
+ - [Anti-hallucination rules](https://github.com/auraoneai/aura3d/blob/main/docs/agents/anti-hallucination-rules.md)
143
+ - [Agent quickstart](https://aura3d.auraone.ai/docs/agent-quickstart.html)
@@ -0,0 +1,91 @@
1
+ # Aura3D shared boundaries
2
+
3
+ Every Aura3D skill links here instead of restating these rules. The full
4
+ policy is in [claims and boundaries](https://github.com/auraoneai/aura3d/blob/main/docs/agents/claims-and-boundaries.md)
5
+ and the [agent guide](https://github.com/auraoneai/aura3d/blob/main/llms.txt).
6
+
7
+ ## Claim labels
8
+
9
+ Label every capability with exactly one of these:
10
+
11
+ | Label | Meaning | Minimum evidence |
12
+ | --- | --- | --- |
13
+ | `createAuraApp` root safe API | A browser route imports only `@aura3d/engine` and mounts through `createAuraApp(...)`. | Build, route-health or equivalent diagnostics, typed asset manifest, browser screenshot, claim-specific pixel or runtime assertion. |
14
+ | `production-runtime` | Exists in production-runtime packages or adapters, not necessarily root APIs. | Package or browser tests for that package, worded without implying root support. |
15
+ | `rendering` package | Exists in the lower-level `@aura3d/rendering` package. | Package exports plus renderer unit or browser evidence, worded at package level. |
16
+ | CLI asset pipeline | Asset search, add, resolve, validation, provenance, typegen, thumbnails, deploy checks. | CLI output, `aura.assets.json`, `src/aura-assets.ts`, license metadata, validation reports. |
17
+ | Template-only scaffold | A template starts a project; it does not prove production capability. | Template generation smoke test and honest scaffold wording. |
18
+ | `prototype` | Illustrates direction without release-quality evidence. | Prototype label and no flagship or production wording. |
19
+ | `roadmap` | Planned, not implemented or not public. | Future tense and a linked issue or PRD item. |
20
+
21
+ When evidence is missing, use `prototype` or `roadmap`. A route that loads,
22
+ compiles, or produces a large screenshot is not proof.
23
+
24
+ ## Forbidden patterns
25
+
26
+ - no raw string asset IDs, raw GLB/glTF URLs, `unsafeModelUrl(...)`, `three` imports, or `GLTFLoader` in public examples;
27
+ - no primary character, vehicle, product, weapon, creature, world, or hero environment made only from primitives unless the route is explicitly abstract visualization;
28
+ - no CSS/DOM particle implementation for examples claiming Aura3D particle rendering;
29
+ - no WebGPU, PBR, postprocess, skinned animation, morph, or game-runtime claim without matching browser evidence;
30
+ - no public showcase or README claim that exceeds detected capability, route-health evidence, or screenshots.
31
+
32
+ Related prohibitions from the same sources: no hand-wired renderer, scene, or
33
+ camera loop; no memorized or guessed model URLs (they are hallucinated
34
+ provenance); no `createAuraApp()` call per frame; no CSS, DOM, or canvas
35
+ overlay standing in for 3D effects, labels on models, or renderer output.
36
+
37
+ ## Catalog-first rule
38
+
39
+ A prompt that names a real object resolves through the asset catalog before
40
+ any model code: `npx @aura3d/cli@latest assets search "<descriptive phrase>"`,
41
+ then `assets resolve "<phrase>" --name <key>` for an auto-pullable candidate.
42
+ Auto-pullable means verified, redistributable (CC0 or CC-BY), and
43
+ direct-download. Marketplace and deep-link results are user-handled: the user
44
+ downloads and licenses them, then admits the file with `assets add`.
45
+ Primitives are set dressing around a resolved asset, never the named subject.
46
+
47
+ ## Typed-asset rule
48
+
49
+ 1. Admit every file through the CLI (`assets add`, `assets resolve`, or
50
+ `assets import-meshy`) so it is hashed, inspected, and recorded in
51
+ `aura.assets.json`.
52
+ 2. Read the generated `src/aura-assets.ts` and import `assets` from
53
+ `./aura-assets`.
54
+ 3. Render with `model(assets.<key>)` or a kit such as
55
+ `sceneKits.productViewer(assets.<key>)`, using the exact generated key.
56
+ 4. Place with render-normalized helpers such as
57
+ `groundedRenderedAssetPlacement(...)`, not raw bounds math.
58
+
59
+ If the key you need is missing, fix the import. Never fall back to a string
60
+ id, a URL, a copied GLB, or a draft artifact path.
61
+
62
+ ## Paid generation controls (Meshy)
63
+
64
+ - Catalog first. Generation is a fallback after a reported catalog rejection.
65
+ - Run `meshy make ... --dry-run` and show the plan before any paid call.
66
+ - Get explicit user approval for the displayed maximum, then pass
67
+ `--max-credits <approved>` on the paid command. Prices are never assumed.
68
+ - Resume recorded task IDs. Do not repeat paid work that already succeeded.
69
+ - Download immediately with `-o artifacts/meshy/<asset>/`. Provider retention
70
+ is short and signed URLs expire.
71
+ - Keep credentials out of arguments, prompts, logs, commits, and output.
72
+ - Admit through `assets import-meshy` with rights evidence. Import defaults to
73
+ `candidate` quality and never certifies release quality.
74
+
75
+ ## Benchmark mode versus normal mode
76
+
77
+ | | Benchmark mode | Normal mode |
78
+ | --- | --- | --- |
79
+ | Starting point | `sceneKits.<name>()` first, `prefabs.*` if needed, primitives only for small additions | Template, kit, prefab, primitives last |
80
+ | Commands | `npm install && npm run build`, then stop | `npm run build`, `npm run test`, asset validation, `check-deploy` |
81
+ | Forbidden in the agent process | `npm run dev`, `npm run preview`, Playwright, screenshot capture, manual visual review | Nothing extra; heavy browser suites still run in CI or a remote runner |
82
+ | Report | Build output and the runner-owned capture command | Evidence bundle and a claim label |
83
+
84
+ A nonblank screenshot is not enough in either mode. The image must visibly
85
+ match the prompt.
86
+
87
+ ## Evidence language
88
+
89
+ Say `reported` for another agent's claim, `recorded` for a manifest or board
90
+ entry, `verified` only for something you opened or ran (and state the scope),
91
+ and `unknown` when you cannot establish current state.
@@ -0,0 +1,106 @@
1
+ ---
2
+ name: aura3d-evidence-review
3
+ description: Reviews Aura3D work before it is called done, public, or shippable by collecting route-health, screenshots, visual QA, asset release checks, and `check-deploy` output, then choosing a claim label through a capped critique loop. Use when finishing a route or template, writing README or showcase claims, comparing catalog versus Meshy candidates, capturing thumbnails or posters with `assets thumbnail`, or running `assets validate --release` and `check-deploy`.
4
+ ---
5
+
6
+ # Aura3D evidence review
7
+
8
+ A compiling route is not proof. This skill turns a finished change into an
9
+ evidence bundle and one claim label — claim labels live here only; other
10
+ skills link to them, never restate or reinterpret them. Label meanings and the
11
+ benchmark exception are in [boundaries](../aura3d-core/references/boundaries.md).
12
+
13
+ ## Establish the contract
14
+
15
+ 1. Run `npx @aura3d/cli@latest --help` and confirm `assets validate`,
16
+ `assets thumbnail`, and `check-deploy` are listed.
17
+ 2. Read `package.json` scripts. Templates gate on `npm run build` and
18
+ `npm run test` (route-health and screenshot specs under `tests/`).
19
+ 3. Read `aura.assets.json` and `src/aura-assets.ts` so you know which typed
20
+ assets the route claims.
21
+ 4. Decide the mode. Benchmark mode: run `npm install && npm run build`, report
22
+ the output and the runner-owned capture command, then stop. Skip every
23
+ step below.
24
+
25
+ ## Procedure
26
+
27
+ 1. Pre-register the rubric before looking at output. Write 3 to 6 checks
28
+ taken from the prompt and the claim you intend to make, for example
29
+ "product centered and seated", "studio lighting visible", "metal and rubber
30
+ read differently". Add the role evidence from `aura3d-assets`.
31
+ 2. Run the local finite gates.
32
+
33
+ ```bash
34
+ npm run build
35
+ npx @aura3d/cli@latest assets validate --source --no-placeholders --require-license
36
+ npx @aura3d/cli@latest assets validate --release
37
+ npx @aura3d/cli@latest check-deploy --dist dist --release
38
+ ```
39
+
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
43
+ `tests/reports/screenshot.png` plus pixel metrics. Capture desktop and
44
+ mobile viewports and retain the PNGs with hashes.
45
+ 4. For kit-based or prompt-plan scenes, collect structured evidence:
46
+ `collectAuraSceneEvidence(scene)` for bodies, cameras, clips, and asset
47
+ provenance; `app.diagnostics().look` (resolved look, expansion, lint
48
+ findings); and `compilePromptPlan(plan).report.repairHints`. Structural
49
+ name heuristics exist under `structuralQA.*` — they are diagnostics, never
50
+ acceptance evidence.
51
+ 5. Open the screenshots yourself and grade each rubric item `pass`, `warn`,
52
+ or `fail` in one batch. Every verdict cites a file: a PNG, a report field,
53
+ or a validation failure line.
54
+ 6. Critique loop, at most 6 rounds for visual findings (the look-dev loop).
55
+ For each `fail`, apply the highest-leverage fix — lint codes first, then
56
+ the lowest rubric category (a repair hint, the matching scene kit, a better
57
+ typed asset), rerun only the affected gates, and regrade. Do not change
58
+ labels, rubric items, or thresholds to make a round pass.
59
+ 7. Grade cinematic scenes on the ladder: L0 text only, L1 primitive sketch,
60
+ L2 asset-backed draft, L3 realtime cinematic scene, L4 production handoff.
61
+ Only L3 or better is public product proof.
62
+ 8. Bake-offs: when comparing a catalog candidate against a Meshy candidate,
63
+ use one brief, one rubric, one camera and lighting setup, and the same
64
+ gates for both. Report both verdict sets and pick on evidence, not source.
65
+ 9. Thumbnails and posters: run `npx @aura3d/cli@latest assets thumbnail` for
66
+ manifest thumbnails, and use the screenshot spec output as the poster.
67
+ Marketing previews use a static approved poster unless the live embed
68
+ passes the same gates as the route.
69
+ 10. Choose the label and write the claim at exactly that strength. Record
70
+ the prompt, typed asset keys, screenshot paths, route-health report,
71
+ verdicts, label, and next action.
72
+
73
+ ## What does not count
74
+
75
+ - blank, cropped, tiny, or unreadable screenshots, or PNG size alone;
76
+ - renderer-internal imports offered as root API proof;
77
+ - CSS, DOM, or canvas stand-ins for particles, bloom, lighting, or labels;
78
+ - stale route-health that names assets the source no longer uses;
79
+ - `structuralQA`/`visualQA` name-heuristic output as acceptance evidence — it
80
+ diagnoses, it does not prove pixels;
81
+ - an in-repo scorer as release proof (use a neutral human or opposite-vendor
82
+ model reviewer);
83
+ - a report generated with missing evidence inputs, even when it exits 0.
84
+
85
+ ## Stop and report
86
+
87
+ - A gate command is missing from the installed CLI or scripts: label the
88
+ work `blocked`, name the missing gate, and do not substitute a weaker check.
89
+ - `assets validate --release` lists provenance failures: label `prototype`
90
+ until durable evidence exists.
91
+ - After 6 critique rounds any rubric item still fails: stop, report the
92
+ failing items with their evidence, and label `prototype`.
93
+ - Browser evidence could not be captured (no capture runner available): the
94
+ claim stays `prototype` AND the report names which look-dev loop step
95
+ failed (capture, judge, or lint); do not describe visual results you did
96
+ not see.
97
+ - The claim needs WebGPU, PBR, postprocess, skinned animation, morph, or game
98
+ runtime proof and the pixels do not show it: remove the claim.
99
+
100
+ ## References
101
+
102
+ - [Boundaries](../aura3d-core/references/boundaries.md)
103
+ - [Verification](https://github.com/auraoneai/aura3d/blob/main/docs/agents/verification.md)
104
+ - [Rendering proof required](https://github.com/auraoneai/aura3d/blob/main/docs/agents/rendering-proof-required.md)
105
+ - [Cinematic scene quality](https://github.com/auraoneai/aura3d/blob/main/docs/agents/cinematic-scene-quality.md)
106
+ - [Deployment](https://aura3d.auraone.ai/docs/deployment.html)
@@ -0,0 +1,118 @@
1
+ ---
2
+ name: aura3d-game-art
3
+ description: Produces 2D game art that a real Aura3D consumer uses: flipbook VFX sprite sheets for `effects.flipbook` (the `flipbook-sprite` effect with `spriteColumns` / `spriteRows`) and HUD icons or UI sprites for DOM overlays, each admitted as a typed texture asset. Use when a game template (`mini-game`, `racing-starter`, `falling-blocks-starter`, `fighting-game`) needs explosion, muzzle-flash, or hit VFX sheets, HUD icons, score or health sprites, or a style-consistent batch of UI art.
4
+ ---
5
+
6
+ # Aura3D game art (flipbook VFX and HUD sprites)
7
+
8
+ Only two consumers exist, so only two kinds of art are produced: flipbook
9
+ sheets for the `flipbook-sprite` effect and icons for the DOM HUD. Tilesets
10
+ are out of scope: no 2D tile runtime consumes them, so 3D levels come from
11
+ `aura3d-browser-game` and `aura3d-assets`. Shared rules (claim labels, typed
12
+ assets, CSS/DOM is UI only, benchmark mode) are in
13
+ [../aura3d-core/references/boundaries.md](../aura3d-core/references/boundaries.md).
14
+
15
+ ## Look target
16
+
17
+ Sprites live or die by the route's look: a flipbook explosion pops against a
18
+ night-city grade and washes out under `product-studio` key light. Design the
19
+ sheet against the genre recipe palette (see
20
+ `aura3d-art-direction/references/look-recipes.md`) — emissive colors 3–5×
21
+ background luminance read as glow through bloom; flat fills read as UI, not
22
+ VFX. Keep alpha edges clean: the frame's fog and grade will expose halos the
23
+ texture viewer hides.
24
+
25
+ ## Establish the contract
26
+
27
+ 1. Run `npx @aura3d/cli@latest --help` and read the `assets add` line.
28
+ 2. Read `src/aura-assets.ts` and `aura.assets.json`, and find the consumer
29
+ first: the `effects.flipbook(...)` call, or the HUD element in `src/main.ts`
30
+ (the `mini-game` HUD is a DOM `aside`). No consumer means no art.
31
+ 3. Know the flipbook state. `effects.flipbook` records validated sheet
32
+ geometry (`spriteColumns`, `spriteRows`, `frameRate`) but the root renderer
33
+ has no sprite-sheet sampler yet and submits no flipbook pass.
34
+ `renderer.diagnostics(scene)` reports the warning "flipbook-sprite is
35
+ recorded but withheld". Any route relying on it is `prototype` for that
36
+ effect.
37
+ 4. Benchmark mode: `npm install && npm run build`, then stop.
38
+
39
+ ## Procedure
40
+
41
+ Flipbook VFX sheets:
42
+
43
+ 1. Fix the grid before producing art: columns, rows, frame count, and cell
44
+ size (for example 8 x 4 at 64 px per cell makes a 512 x 256 sheet with up
45
+ to 32 frames). Frames run left to right, top row first; that is the order
46
+ `resolveFlipbookUv(frame, columns, rows)` in `@aura3d/rendering` maps to
47
+ UVs.
48
+ 2. Author every frame in its own cell with the effect centered, a
49
+ transparent background, and no bleed across cell edges. Keep a frame
50
+ inventory (index to description) next to the file.
51
+ 3. Pre-flight the file with the bundled checker:
52
+
53
+ ```sh
54
+ node .agents/skills/aura3d-game-art/references/sheet-check.mjs ./art/explosion.png --columns 8 --rows 4 --frames 30
55
+ ```
56
+
57
+ (Adjust the path to wherever your agent client installed this skill.) It
58
+ fails when the width or height does not divide by the grid, when the frame
59
+ count exceeds the grid, or when the PNG has no alpha channel. It does not
60
+ inspect pixels, so review the transparent background and edges visually.
61
+ 4. Admit it as a typed texture with provenance:
62
+
63
+ ```sh
64
+ npx @aura3d/cli@latest assets add ./art/explosion.png --name explosionSheet --type texture --license CC0-1.0 --author "<author>" --quality candidate
65
+ npx @aura3d/cli@latest assets typegen
66
+ ```
67
+
68
+ 5. Declare the effect with the same grid:
69
+ `effects.flipbook({ spriteColumns: 8, spriteRows: 4, frameRate: 24 })`.
70
+ Mismatched or non-integer values throw a `RangeError` (fail loud); never
71
+ catch and ignore it. The effect has no texture slot today, so the sheet is
72
+ ready for the sampler but not yet drawn.
73
+
74
+ HUD icons and UI sprites:
75
+
76
+ 6. Produce PNG or WebP icons (SVG is not an accepted asset format) at 1x and
77
+ 2x, on a transparent background, sized to the HUD slot.
78
+ 7. Admit each with `assets add ... --type texture`, then reference the
79
+ typed URL in DOM markup, for example an `<img>` whose `src` is
80
+ `assets.hudHeart.url`, mounted with `ui.html(...)` or the template's HUD
81
+ element. Give every icon a text alternative (`alt`, or `aria-label` on the
82
+ control).
83
+ 8. DOM and CSS are allowed for UI only. Never use them for particles,
84
+ explosions, hit sparks, or anything claimed as rendered 3D VFX.
85
+
86
+ Style-consistent batches:
87
+
88
+ 9. Write one style sheet before the batch: palette (hex values), outline
89
+ weight, light direction, and cell or icon size. Produce every item against
90
+ it, then review the batch side by side and redo outliers instead of
91
+ shipping a mixed set.
92
+ 10. Generated images (from an image skill outside Aura3D) are candidates:
93
+ keep them under `artifacts/`, admit them with `--quality candidate`, and
94
+ run the same checks.
95
+ 11. Normal mode: capture the HUD on desktop and mobile through `npm run test`
96
+ on CI or a remote worker, then hand claim wording to
97
+ `aura3d-evidence-review`.
98
+
99
+ ## Stop and report
100
+
101
+ - The sheet fails `sheet-check.mjs`, or frames bleed across cells: fix the
102
+ sheet; do not change the grid in code to paper over it.
103
+ - The route's VFX depends on flipbook pixels: label that effect `prototype`
104
+ and quote the withheld warning. Do not fake it with CSS, a DOM overlay, or
105
+ an animated `<img>` on top of the canvas.
106
+ - Someone asks for a tileset: decline it and route level work to
107
+ `aura3d-browser-game`.
108
+ - A file has no license or author: do not admit it.
109
+
110
+ ## References
111
+
112
+ - [Flipbook UV math (`@aura3d/rendering`)](https://github.com/auraoneai/aura3d/blob/main/packages/rendering/src/SpriteFlipbook.ts)
113
+ - [Flipbook and beam root builder test](https://github.com/auraoneai/aura3d/blob/main/tests/unit/engine/phase2-root-bridge.test.ts)
114
+ - [Flipbook browser harness](https://github.com/auraoneai/aura3d/blob/main/tests/browser/d4-flipbook-beam-harness.ts)
115
+ - [Mini-game template HUD](https://github.com/auraoneai/aura3d/blob/main/packages/create-aura3d/templates/mini-game/src/main.ts)
116
+ - [Build a browser game guide](https://github.com/auraoneai/aura3d/blob/main/docs/guides/build-a-browser-game.md)
117
+ - [Sheet checker](references/sheet-check.mjs)
118
+ - [Sprite and flipbook palettes](references/sprite-palettes.md)