@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,28 @@
1
+ # Look by scene family
2
+
3
+ One look per scene family, matched to `aura3d-art-direction/references/look-recipes.md`
4
+ genres. Values are starting points; the look-dev loop refines them.
5
+
6
+ | Scene family | Look preset | Key light | Palette accent | Atmosphere | Post grade |
7
+ | --- | --- | --- | --- | --- | --- |
8
+ | Physics playground | `interior-industrial` | high window key, 60° elevation | safety orange on concrete | light haze for depth | `product-studio` |
9
+ | Particle fountain | `neon-night` | rim/back light through the spray | cyan-magenta emissive trail | thin fog catching bloom | `neon-night` |
10
+ | Solar system | `space` | single hard key from the sun | warm gold rim on planets | none — void is the look | `space` |
11
+ | Neon tunnel | `neon-arcade` | receding emissive rings | alternating ring hues | fog inside the tube | `neon-night` |
12
+ | Data visualization | `interior-neutral` | soft key over axis plane | single accent per series | none | `product-studio` |
13
+ | Mini golf | `outdoor-day` | warm afternoon key, 40° | turf greens + flag red | light fog on horizon | `daylight-outdoor` |
14
+ | Material lab | `product-studio` | triple softbox | neutral grey stage | none | `product-studio` |
15
+ | City block | `neon-night` | streetlight pools | sodium amber + sign neon | ground fog at street level | `neon-night` |
16
+ | Humanoid walk | `character-showcase` | 3/4 front key + rim | cloth accent color | light ground fog | `product-studio` |
17
+ | Product viewer | `product-studio` | hero softbox | brand accent on plinth | none | `product-studio` |
18
+ | Cinematic scene | `golden-hour` | low warm sun, 15° | teal shadow vs amber key | atmosphere haze layer | `cinematic-film` |
19
+ | Underwater | `underwater` | caustic shafts from surface | deep teal + biolume accent | volume haze, God rays | `underwater` |
20
+
21
+ ## Reading the row
22
+
23
+ - Look preset supplies IBL, background, fog base and grade; the row's key and
24
+ palette entries are the scene-specific tweak you apply on top.
25
+ - Fog density belongs to the look until the capture shows depth banding — then
26
+ raise it in the look, not with ad-hoc `world.fog` nodes.
27
+ - Palette accent is one saturated color the eye can find fast; the rest of the
28
+ frame stays in the look's own grade.
@@ -0,0 +1,125 @@
1
+ ---
2
+ name: aura3d-threejs-migration
3
+ description: Ports three.js code to Aura3D by picking the matching migration template, rewriting to `@aura3d/engine` public APIs, and recording every approximation in the migration notes without drop-in claims. Use when porting three.js or R3F code, reading `THREE.*` imports, running the `aura3d migrate three` codemod (`migrateThreeToA3D`), or scaffolding a migration template (formerly `three-compat-*`).
4
+ ---
5
+
6
+ # Aura3D three.js migration
7
+
8
+ Aura3D is not a three.js drop-in. The target of a migration is a route written
9
+ against `@aura3d/engine` public APIs. There is no installed compat shim
10
+ package — `@aura3d/three-compat` was deleted in 4.0.0 — so the migration
11
+ codemod plus an honest written record of what could not be reproduced is the
12
+ on-ramp. Shared rules (claim labels, forbidden patterns, typed assets) are in
13
+ [../aura3d-core/references/boundaries.md](../aura3d-core/references/boundaries.md).
14
+
15
+ ## Look target
16
+
17
+ The migration replaces a hand-tuned renderer stack with a look preset: the
18
+ target genre's recipe row maps `toneMapping`, `scene.environment`, exposure and
19
+ fog into `looks.preset(<id>)` + `looks.appOptions(<id>)`. Keep the original
20
+ lighting intent visible in the migration notes rather than porting raw
21
+ toneMapping constants.
22
+
23
+ ## Establish the contract
24
+
25
+ 1. Run `npx @aura3d/cli@latest --help`, and check the installed
26
+ `@aura3d/engine` version. Name only exports you can see in its types.
27
+ 2. Inventory the source: list every `three`, `three/examples/jsm/*`, and
28
+ `three/addons/*` import, plus any `WebGLRenderer`, render loop, loader, and
29
+ `EffectComposer` use. That list is the migration scope.
30
+ 3. Read `src/aura-assets.ts`. Every GLB the old code loaded by URL must become
31
+ a typed asset (load `aura3d-assets`).
32
+ 4. Benchmark mode: `npm install && npm run build`, then stop.
33
+
34
+ ## Procedure
35
+
36
+ 1. Pick the closest template and scaffold it with
37
+ `npx create-aura3d@latest <dir> --template <name>`:
38
+
39
+ | Source code looks like | Template |
40
+ | --- | --- |
41
+ | Hand-rolled starter: renderer, ground, lit primitives | `custom-scene` |
42
+ | Product on a studio stage | `premium-product-viewer` |
43
+ | Room or interior built from boxes | `architecture-interior` |
44
+ | Single asset on an inspection stage | `asset-inspector` |
45
+ | Character on a pedestal | `character-viewer` |
46
+ | Material swatch row | `material-authoring` |
47
+ | Bloom or emissive post pass | `postprocess-scene` |
48
+ | Many repeated meshes | `large-scene` |
49
+
50
+ The former `three-compat-*` names scaffold the same templates through a
51
+ deprecation alias (removed next minor). All eight templates import only
52
+ `@aura3d/engine`. Keep it that way.
53
+ 2. Map each construct to the engine API. `createAuraApp` owns the renderer,
54
+ scene graph, camera, and frame loop, so delete them rather than port them.
55
+
56
+ | three.js | Aura3D |
57
+ | --- | --- |
58
+ | `WebGLRenderer` plus a render loop | `createAuraApp("#app", { scene })` |
59
+ | `new Scene()` | `scene()` |
60
+ | `PerspectiveCamera` | `camera.perspective(...)` or `camera.orbit(...)` |
61
+ | `OrbitControls` | `interactions.orbit(...)` |
62
+ | Lights | `lights.*` |
63
+ | `MeshStandardMaterial` and friends | `material.*` |
64
+ | Mesh plus a glTF loader | `model(assets.x)` |
65
+ | Box, sphere, plane geometry (set dressing) | `primitives.*` |
66
+ | `EffectComposer` bloom | `effects.bloom(...)` |
67
+
68
+ 3. When the port must stay three-shaped for a while, run the CLI codemod
69
+ and keep its output as a report, not as proof:
70
+ `aura3d migrate three "src/**/*.ts" --report` walks each file and prints
71
+ the per-construct verdicts; `--write` applies the rewrite in place. The
72
+ underlying adapter `migrateThreeToA3D(source)` returns `code`,
73
+ `rewrittenImports`, and `warnings`. Imports in `THREE_COMPAT_UNSUPPORTED_THREE_IMPORTS`
74
+ (`EffectComposer`, `RenderPass`, `UnrealBloomPass`, and others) are left
75
+ unchanged with a `postprocessing-unsupported` warning. Treat that as a
76
+ manual rewrite to `effects.*`, never as a pass.
77
+ 4. Triage coverage from the codemod's warning list, not a matrix: the
78
+ import map `THREE_COMPAT_THREE_IMPORT_MAP` names every specifier the
79
+ codemod rewrites; anything three-shaped it leaves alone shows up in
80
+ `warnings` as `postprocessing-unsupported` or an unmapped import. Each
81
+ warning is the work item — a manual rewrite to `effects.*` or
82
+ `material.*`, never a pass.
83
+ 5. There is no approximation ledger or compatibility matrix anymore — the
84
+ `@aura3d/three-compat` package was deleted in 4.0.0. For every construct
85
+ the codemod could not rewrite, record the approximation yourself in the
86
+ migration notes: what the three.js API did, what the Aura3D replacement
87
+ does, and the honest delta. For example, `MeshPhongMaterial`'s
88
+ Blinn-Phong specular maps to a native `material.*` preset with GGX —
89
+ write that delta down, do not imply equivalence.
90
+ 6. Keep `three` out of the engine route. The shipped route must pass
91
+ `aura3d check-deploy --dist dist --source`; a `three` import anywhere in
92
+ the shipped tree fails the deploy check.
93
+ 7. Write the migration notes: each supported API by name with the test that
94
+ covers it, each codemod warning and how it was resolved, and each dropped
95
+ or manually rewritten construct.
96
+ 8. Build and verify: `npm run build`, then `npm run test` (the template's
97
+ route-health and screenshot specs; run on CI or a remote worker), then
98
+ `aura3d assets validate --source`. Hand claim wording to
99
+ `aura3d-evidence-review`.
100
+
101
+ ## Stop and report
102
+
103
+ - The source depends on something with no engine equivalent (custom
104
+ `ShaderMaterial` passes, render targets, `EffectComposer` chains, or an
105
+ import the codemod leaves unmapped): stop and list each construct with the
106
+ codemod warning that flagged it. Do not fake it with CSS, a DOM overlay,
107
+ or a CPU pixel pass.
108
+ - A kept construct renders only approximately: it is not parity. Label that
109
+ part `prototype` or rewrite it natively.
110
+ - A codemod warning you cannot resolve: report it; do not silently keep the
111
+ three.js shape.
112
+ - The old code loaded a GLB by URL and no typed asset replaces it: stop and
113
+ hand off to `aura3d-assets`. Never keep the URL or use `unsafeModelUrl`.
114
+ - Never write "drop-in", "full parity", or "100% three.js compatible". Name
115
+ the specific supported API and the test that proves it.
116
+
117
+ ## References
118
+
119
+ - [Migration guide and boundaries](https://github.com/auraoneai/aura3d/blob/main/docs/project/migration.md)
120
+ - [Migration codemod adapter](https://github.com/auraoneai/aura3d/blob/main/packages/aura3d-cli/src/migrate-three/ThreeToA3DAdapter.ts)
121
+ - [Codemod import map](https://github.com/auraoneai/aura3d/blob/main/packages/aura3d-cli/src/migrate-three/ImportMap.ts)
122
+ - [Codemod warnings](https://github.com/auraoneai/aura3d/blob/main/packages/aura3d-cli/src/migrate-three/CompatibilityWarnings.ts)
123
+ - [Codemod CLI command (`aura3d migrate three`)](https://github.com/auraoneai/aura3d/blob/main/packages/aura3d-cli/src/commands/prd15/index.ts)
124
+ - [Custom migration template](https://github.com/auraoneai/aura3d/blob/main/packages/create-aura3d/templates/custom-scene/src/main.ts)
125
+ - [three.js lighting stack → Aura3D look](references/look-mapping.md)
@@ -0,0 +1,27 @@
1
+ # three.js lighting stack → Aura3D look
2
+
3
+ The single largest visual change in a migration: a hand-assembled renderer,
4
+ lighting and post stack collapses into one look preset. Map by intent, not by
5
+ constant.
6
+
7
+ | three.js source pattern | Replaced by | Watch for |
8
+ | --- | --- | --- |
9
+ | `scene.environment` + PMREM + env map | the look's IBL | do not re-add a second environment — lint `look/no-ibl`/`double-aa` guards |
10
+ | `AmbientLight` (any intensity) | drop — the look fills ambient | re-adding it flattens the grade (`look/ambient-kills-ibl`) |
11
+ | `DirectionalLight` key + `castShadow` | the look's key (elevation/azimuth baked per genre) | a second DirectionalLight doubles the shadow read |
12
+ | `toneMapping`, `toneMappingExposure` | the look's `output.preset` | exposure moves inside the preset, not the renderer |
13
+ | `scene.fog = new Fog(...)` | the look's fog/atmosphere | recipe rows give per-genre density |
14
+ | `scene.background = color` | the look's backdrop | a solid color is `look/solid-void` unless declared |
15
+ | `EffectComposer` bloom/vignette | the look's post stack | do not stack `antiAlias`/post twice (`look/double-aa`) |
16
+ | `setPixelRatio` | `looks.appOptions(<id>)` DPR cap | `look/low-dpr` catches manual low ratios |
17
+ | `HemisphereLight` | the look fill (or `lights.hemisphere` when you must override) | hemisphere + IBL flattens (`look/ambient-flattens`) |
18
+
19
+ ## Procedure tie-in
20
+
21
+ 1. Delete the lighting/renderer block entirely, apply `looks.preset(<genre>)` +
22
+ `looks.appOptions(<genre>)`.
23
+ 2. Recapture: the migrated scene's palette, shadow density and background come
24
+ from the look; the ledger records *intent deltas* (e.g. "original had a
25
+ cooler fill"), not constant deltas.
26
+ 3. `aura3d look lint` catches the leftovers the ledger cannot: orphaned
27
+ fog nodes, double AA, ambient that kills the IBL.
@@ -0,0 +1,147 @@
1
+ Aura3D agent guide — a typed scene API for building real 3D apps: scenes, looks,
2
+ lighting, materials, typed assets, camera rigs, gameFeel, SDF text, decals, rigid bodies, and gameplay through
3
+ `@aura3d/engine` plus the `@aura3d/cli` toolchain. Current release: Aura3D 4.0.1 (succeeding 4.0.0).
4
+
5
+ Hello world: every scene gets a look first.
6
+
7
+ ```ts
8
+ import { createAuraApp, looks, model, scene } from "@aura3d/engine";
9
+ import { assets } from "./aura-assets";
10
+
11
+ createAuraApp("#app", {
12
+ scene: scene().add(looks.preset("product-studio")).add(model(assets.robot)),
13
+ ...looks.appOptions("product-studio")
14
+ });
15
+ ```
16
+
17
+ The quality floor — what the defaults give you, and the never list:
18
+
19
+ - A `looks.preset` supplies environment light (IBL), a shadow-casting key, fog,
20
+ background and a post grade as one unit — never hand-wire
21
+ `lights.ambient()` as the only fill, it flattens shading and kills IBL.
22
+ - Never a solid void background: the look's sky, biome or studio backdrop owns it.
23
+ - Never `pixelRatio`/`qualityProfile`/`safe-basic`/FXAA overrides or
24
+ `replaceTextures: true` — `looks.appOptions(id)` carries the renderer contract.
25
+ - Never a hero subject made of primitives; `model(assets.x)` with a typed
26
+ catalog asset.
27
+ - Never emissive cards or sprites faking reflections, puddles, splashes or glows —
28
+ use the look's `post` grade and `effects.*`.
29
+ - Never CSS/DOM particles, overlays or labels standing in for rendered output;
30
+ HUD lives in the DOM, the scene does not.
31
+ - Keep the key shadow at full strength with contact darkening at the subject's
32
+ feet; fog or atmosphere carries depth to the horizon.
33
+
34
+ three.js → Aura3D mapping (corrected):
35
+
36
+ | three.js | Aura3D |
37
+ | --- | --- |
38
+ | `new THREE.Scene()` | `scene()` |
39
+ | `new THREE.Mesh(...)` + `new GLTFLoader()` | `model(assets.x)` (typed asset) |
40
+ | `new THREE.PerspectiveCamera(...)` | `camera.perspective(...)`, `camera.rigs.*` |
41
+ | `AmbientLight` | `lights.hemisphere(...)` or the look's environment fill |
42
+ | `DirectionalLight` key/fill | the look's `key`/`rim` slots |
43
+ | `scene.environment` + PMREM | `environments.preset|hdri`, `world.biome` |
44
+ | `toneMapping`/exposure | `output.preset` and the look's post grade |
45
+ | `setPixelRatio` | `quality: "auto"` via `looks.appOptions` |
46
+ | `castShadow = true` | `shadow: true` on the light/node |
47
+ | `EffectComposer` passes | `output.preset` + `effects.*` |
48
+ | `AnimationMixer` | `AnimationController` / `createAnimationController` |
49
+ | `new OrbitControls(...)` | `interactions.orbit(...)` |
50
+
51
+ Effects, post-processing, atmospherics & VFX (`effects.*` in `@aura3d/engine@4.0.1`):
52
+ - Post-processing: `effects.bloom`, `effects.neonBloom`, `effects.cinematicBloom`, `effects.ambientOcclusion`, `effects.contactOcclusion`, `effects.contactShadows`, `effects.screenSpaceReflections`, `effects.depthOfField`, `effects.motionBlur`, `effects.colorGrade`, `effects.vignette`, `effects.filmGrain`, `effects.chromaticAberration`, `effects.antiAlias`, `effects.outline`
53
+ - Atmospherics & volumetrics: `effects.fog`, `effects.depthFog`, `effects.volumetricFog`, `effects.fogVolume`, `effects.lightCone`, `effects.auroraRibbon`, `atmosphere.setSky`, `atmosphere.setWetness`
54
+ - Particles, weather & trails: `effects.particles`, `effects.meshParticles`, `effects.rain`, `effects.snow`, `effects.flipbook`, `effects.trail`, `effects.beam`, `ResidentGPUParticleRenderer` (WebGPU compute)
55
+ - Game feel & genre kits: `game.feel` / `app.feel` (`hitStop`, `slowMo`, `damageFlash`, `speedLines`, `landingDust`, camera trauma), `game.platformer`, `game.racing`, `game.arcadeKart`, `game.grandPrixRoad`, `game.carSoccer`, `game.carSoccerPitch`, `game.racketSports`, `game.fallingBlocks`, `game.fighting`
56
+
57
+ Genre recipes (see `aura3d-art-direction/references/look-recipes.md`):
58
+
59
+ | Genre | Look | Camera + fov | Palette/accent | Atmosphere |
60
+ | --- | --- | --- | --- | --- |
61
+ | platformer | `outdoor-day` | follow2d fov 50 | greens/sky/wood + gold | fog 0.0025 |
62
+ | racing | `golden-hour` | chase fov 60 | asphalt/orange/charcoal + amber | fog 30–180 m |
63
+ | fighting | `arena-fight` | fighting fov 45 | arena dark/rope/crowd + rim | haze cone |
64
+ | arena shooter | `space` | topDown fov 55 | space blue/graphite/teal + magenta | none |
65
+ | sports/table | `interior-industrial` | topDown fov 40 | turf/white/dark + ball | indoor haze |
66
+ | product | `product-studio` | orbit fov 35 | grey/white/metal + brand | none |
67
+ | character | `character-showcase` | orbit fov 40 | costume neutrals + rim | room haze |
68
+ | outdoor env | `overcast` | wide fov 55 | green/slate/fog blue + wildflower | fog 0.004 |
69
+ | interior | `interior-warm` | orbit fov 45 | wood/cream/spines + plant | dust shafts |
70
+ | night city | `night-city` | tele fov 35 | sodium/neon/asphalt + cyan | fog 15–90 m |
71
+ | space | `space` | orbit fov 60 | void blue/limb/stars + aurora | none |
72
+ | underwater | `underwater` | follow fov 50 | deep blue/teal/kelp + coral | scatter 0.03 |
73
+ | cinematic | `polar-night` | dolly fov 35 | aurora/snow/night + lantern | snow mist 0.006 |
74
+
75
+ The look-dev loop:
76
+
77
+ 1. Pick the genre recipe row and 1–3 reference frames; write a 3-line look brief.
78
+ 2. Build with the look preset and typed assets; no renderer overrides.
79
+ 3. Capture `aura3d look capture --route / --shots opening,mid,action`.
80
+ 4. Judge each frame against the quality-bar rubric; read `aura3d look lint`.
81
+ 5. Fix the single highest-leverage thing; one change per round; repeat until
82
+ every category reads 7+ or the loop exits flat.
83
+
84
+ Assets — resolve real objects from the catalog first. Do not invent asset paths,
85
+ URLs or ids — every model comes from a generated `assets.<key>`:
86
+
87
+ - `npx @aura3d/cli@latest assets search "<object>"` (natural descriptive phrase;
88
+ the catalog is ~850k license-verified GLB/glTF aggregated from Objaverse,
89
+ Sketchfab, Poly Pizza, Poly Haven, OS3A, Khronos and CC0 packs).
90
+ - `assets resolve "<object>" --name <name>` pulls the top auto-pullable match
91
+ and types it as `assets.<name>` → `model(assets.<name>)`.
92
+ - Add local files with `assets add ./assets/model.glb --name model`, then read
93
+ the generated `src/aura-assets.ts`.
94
+ - Playable characters: `assets resolve "animated humanoid fighting character"
95
+ --profile fighting-character` keeps provenance in `aura.assets.json`.
96
+
97
+ Scaffold:
98
+
99
+ ```bash
100
+ npx create-aura3d@latest my-scene --template product-viewer
101
+ npx create-aura3d@latest my-fighter --template fighting-game
102
+ cd my-scene && npm run dev
103
+ ```
104
+
105
+ Mandatory 3D game & scene anti-failure guardrails:
106
+
107
+ 1. No primitive-box characters, vehicles, or hero props ("no stick-figure humans or box cars"):
108
+ - Never assemble characters, athletes, enemies, vehicles, aircraft, trees, or architectural landmarks out of `primitives.box`, `primitives.sphere`, or `primitives.cylinder` — keep every silhouette, look, lighting, and shadow readable with real 3D geometry.
109
+ - Every character, vehicle, creature, weapon, and landmark must mount a real 3D GLB via `model(assets.<name>, { targetMaxDimension, role })` from `src/aura-assets.ts`. If the catalog lacks a required 3D model, generate a bespoke PBR 3D model with Meshy (`meshy`) and admit it via `aura3d assets import-meshy`.
110
+ - Primitives (`primitives.plane`, `primitives.box`, `primitives.cylinder`, `primitives.torus`) are reserved strictly for ground/court surfaces, field lines, UI rings/reticles, laser beams, and invisible physics colliders.
111
+ 2. Boot directly into live 60 FPS 3D gameplay (no blocking start modals):
112
+ - Never hide the 3D canvas, camera framing, or atmosphere behind an opaque full-screen HTML start menu, character select modal, or briefing overlay on initial page load, and never require query parameters (`?autoplay=1`, `?demo=1`, `?play=1`) for the scene to animate.
113
+ - Every game route must start in active 60 FPS gameplay on Frame 1 with an intelligent AI autopilot/demo controller that plays the game autonomously and yields instant manual control on the first keyboard (`keydown`), pointer, touch, or gamepad input.
114
+ - Keep mode, stage, camera, and roster selectors in a compact, non-blocking top HUD bar, and always call `button.blur()` after button clicks so `Space` or `Enter` gameplay keys never re-trigger focused HUD buttons.
115
+ 3. Always decimate and compress Meshy 3D GLBs before admission (`<= 20,000` vertices, `<= 2 MB`, 16-bit indices):
116
+ - Raw Meshy exports often contain `200,000–1,750,000` vertices and `20–65 MB` of uncompressed 4K PNG textures, which stall main-thread glTF parsing and exhaust GPU memory when multiple models load in one scene.
117
+ - Every generated Meshy GLB must be simplified (`MeshoptSimplifier` to `<= 20,000` vertices for props/vehicles, 16-bit `Uint16Array` indices, de-interleaved `byteStride === 0` buffers) and have its textures compressed to `<= 1024x1024` (`~0.5–2.0 MB` per GLB) before being admitted into `public/aura-assets/` so PBR palette, contrast, and reflection stay responsive.
118
+ 4. Always use canonical typed asset manifest refs (`hash` required):
119
+ - The production glTF bridge requires `createAssetProvenance(node.asset).source === "typed-aura-assets-manifest"`, which requires a valid 64-character `sha256-...` `hash` and `public/aura-assets/...` provenance from `aura.assets.json` / `src/aura-assets.ts` so the rendered look and silhouette load cleanly.
120
+ - Never omit `hash` in custom `defineAssets(...)` declarations and never place unhashed duplicate GLBs in route-local `apps/<route>/public/aura-assets/` that collide with root `public/aura-assets/`.
121
+ 5. Mutate node handles instead of calling `app.setScene()` on every restart:
122
+ - Do not call `app.setScene()` when restarting a round, hole, or bout on the same stage/world; tearing down and remounting the scene disposes live GPU resources, breaks lighting and postprocess continuity, and aborts in-flight GLB loads. Track a scene signature (`stageId` / `worldId`) and reset positions, visibility, and animations through runtime node handles (`app.nodes.require(...)`).
123
+
124
+ Claims: use every feature freely. Claim only what a judged capture shows.
125
+
126
+ - Label every capability as one of: `createAuraApp` root safe API,
127
+ `production-runtime`, `rendering` internals, CLI asset pipeline, template-only
128
+ scaffold, prototype, or roadmap.
129
+ - Public examples prove only what the safe API renders through `@aura3d/engine`.
130
+ - A compiling route is not proof: route health, typed provenance and a readable
131
+ frame are required.
132
+
133
+ Release integrity rules:
134
+ - no raw string asset IDs, raw GLB/glTF URLs, `unsafeModelUrl(...)`, `three` imports, or `GLTFLoader` in public examples;
135
+ - no primary character, vehicle, product, weapon, creature, world, or hero environment made only from primitives unless the route is explicitly abstract visualization;
136
+ - no CSS/DOM particle implementation for examples claiming Aura3D particle rendering;
137
+ - no WebGPU, PBR, postprocess, skinned animation, morph, or game-runtime claim without matching browser evidence;
138
+ - no public showcase or README claim that exceeds detected capability, route-health evidence, or screenshots.
139
+
140
+ Benchmark mode: if `aura3d look capture` is available, run the look-dev loop;
141
+ otherwise run finite commands (`npm install && npm run build`) then stop and
142
+ label the result `prototype`.
143
+
144
+ | Scene Kit | API | Status |
145
+ | --- | --- | --- |
146
+ | Material lab | `sceneKits.materialLab()` | root-proven (partial advanced coat extensions) |
147
+
@@ -0,0 +1,163 @@
1
+ {
2
+ "schema": "aura3d.skills/1.0",
3
+ "cliVersion": "4.0.0",
4
+ "docsBase": "https://github.com/auraoneai/aura3d/blob/main/",
5
+ "coreSet": [
6
+ "aura3d-core",
7
+ "aura3d-art-direction",
8
+ "aura3d-assets",
9
+ "aura3d-evidence-review",
10
+ "aura3d-scene-authoring"
11
+ ],
12
+ "skills": {
13
+ "aura3d-core": {
14
+ "tier": "core",
15
+ "prd": "C1"
16
+ },
17
+ "aura3d-scene-authoring": {
18
+ "tier": "core",
19
+ "prd": "C2"
20
+ },
21
+ "aura3d-assets": {
22
+ "tier": "core",
23
+ "prd": "C3"
24
+ },
25
+ "aura3d-evidence-review": {
26
+ "tier": "core",
27
+ "prd": "C4"
28
+ },
29
+ "aura3d-art-direction": {
30
+ "tier": "core",
31
+ "prd": "QR13"
32
+ },
33
+ "aura3d-browser-game": {
34
+ "tier": "domain",
35
+ "prd": "D1"
36
+ },
37
+ "aura3d-character-animation": {
38
+ "tier": "domain",
39
+ "prd": "D2"
40
+ },
41
+ "aura3d-animation-studio": {
42
+ "tier": "domain",
43
+ "prd": "D3"
44
+ },
45
+ "aura3d-threejs-migration": {
46
+ "tier": "domain",
47
+ "prd": "D4"
48
+ },
49
+ "meshy-cli": {
50
+ "tier": "asset",
51
+ "prd": "P1"
52
+ },
53
+ "aura3d-materials-environments": {
54
+ "tier": "asset",
55
+ "prd": "P2"
56
+ },
57
+ "aura3d-game-art": {
58
+ "tier": "asset",
59
+ "prd": "P3"
60
+ },
61
+ "aura3d-retexture": {
62
+ "tier": "asset",
63
+ "prd": "P4"
64
+ },
65
+ "aura3d-performance": {
66
+ "tier": "later",
67
+ "prd": "L1"
68
+ }
69
+ },
70
+ "templates": {
71
+ "product-viewer": [
72
+ "aura3d-materials-environments",
73
+ "aura3d-retexture",
74
+ "meshy-cli"
75
+ ],
76
+ "cinematic-scene": [
77
+ "aura3d-materials-environments",
78
+ "aura3d-character-animation"
79
+ ],
80
+ "mini-game": [
81
+ "aura3d-browser-game",
82
+ "aura3d-materials-environments",
83
+ "aura3d-game-art"
84
+ ],
85
+ "racing-starter": [
86
+ "aura3d-browser-game",
87
+ "aura3d-materials-environments",
88
+ "aura3d-game-art"
89
+ ],
90
+ "falling-blocks-starter": [
91
+ "aura3d-browser-game",
92
+ "aura3d-materials-environments",
93
+ "aura3d-game-art"
94
+ ],
95
+ "fighting-game": [
96
+ "aura3d-browser-game",
97
+ "aura3d-materials-environments",
98
+ "aura3d-character-animation",
99
+ "aura3d-game-art"
100
+ ],
101
+ "arena-shooter": [
102
+ "aura3d-browser-game",
103
+ "aura3d-materials-environments",
104
+ "aura3d-game-art"
105
+ ],
106
+ "character-controller": [
107
+ "aura3d-browser-game",
108
+ "aura3d-materials-environments",
109
+ "aura3d-character-animation"
110
+ ],
111
+ "animation-channel": [
112
+ "aura3d-character-animation",
113
+ "aura3d-animation-studio"
114
+ ],
115
+ "prompt-animation-channel": [
116
+ "aura3d-character-animation",
117
+ "aura3d-animation-studio"
118
+ ],
119
+ "animation-studio": [
120
+ "aura3d-character-animation",
121
+ "aura3d-animation-studio"
122
+ ],
123
+ "episode-builder": [
124
+ "aura3d-character-animation",
125
+ "aura3d-animation-studio"
126
+ ],
127
+ "premium-product-viewer": [
128
+ "aura3d-threejs-migration",
129
+ "aura3d-materials-environments"
130
+ ],
131
+ "architecture-interior": [
132
+ "aura3d-threejs-migration",
133
+ "aura3d-materials-environments"
134
+ ],
135
+ "material-authoring": [
136
+ "aura3d-threejs-migration",
137
+ "aura3d-materials-environments"
138
+ ],
139
+ "asset-inspector": [
140
+ "aura3d-threejs-migration"
141
+ ],
142
+ "character-viewer": [
143
+ "aura3d-threejs-migration",
144
+ "aura3d-character-animation"
145
+ ],
146
+ "postprocess-scene": [
147
+ "aura3d-threejs-migration"
148
+ ],
149
+ "custom-scene": [
150
+ "aura3d-threejs-migration"
151
+ ],
152
+ "large-scene": [
153
+ "aura3d-threejs-migration",
154
+ "aura3d-performance"
155
+ ]
156
+ },
157
+ "clients": {
158
+ "claude": ".claude/skills",
159
+ "cursor": ".cursor/skills",
160
+ "generic": ".agents/skills",
161
+ "copilot": ".github/skills"
162
+ }
163
+ }
@@ -0,0 +1,148 @@
1
+ ---
2
+ name: meshy-cli
3
+ description: Guides safe Meshy 3D generation, retexture, remesh, rigging, and animate work through the pinned official CLI and admits results with `aura3d assets import-meshy`. Use when the catalog has no clean candidate, or when planning, generating, resuming, downloading, post-processing, or admitting Meshy assets for Aura3D.
4
+ ---
5
+
6
+ # Meshy CLI
7
+
8
+ The installed official Meshy CLI is the command authority. Do not reproduce
9
+ its API or trust remembered flags. Paid-generation controls are shared in
10
+ [boundaries](../aura3d-core/references/boundaries.md).
11
+
12
+ ## Look target
13
+
14
+ Decide the look before writing the generation prompt — the recipe row's palette
15
+ and material mood belong in the Meshy text ("matte ceramic", "sun-faded
16
+ plastic") so the returned PBR set lands inside the frame's lighting instead of
17
+ fighting it. Judge the result under the scene's look preset, not in a neutral
18
+ viewer.
19
+
20
+ ## Establish the contract
21
+
22
+ 1. Run `meshy --version` and require the repository pin `0.2.0`.
23
+ 2. Read `meshy --help`, `meshy resources`, and `meshy <resource> create --help`
24
+ for every resource you will call.
25
+ 3. Run `npx @aura3d/cli@latest --help` and confirm `assets import-meshy` and
26
+ its `--profile prop|environment|vehicle|humanoid` values.
27
+ 4. Confirm the catalog was tried first (`aura3d-assets`) and its rejection
28
+ reasons were reported. For the full upstream agent skill, review and pin a
29
+ revision of [meshy-3d-agent](https://github.com/meshy-dev/meshy-3d-agent)
30
+ before installing; do not copy its text here.
31
+
32
+ ## Decision tree
33
+
34
+ Start from the closest existing mesh and pick the smallest operation:
35
+
36
+ | Situation | Operation |
37
+ | --- | --- |
38
+ | Geometry and topology are right, look is wrong | `meshy retexture create` (hand the look to `aura3d-retexture` first) |
39
+ | Look is right, triangle count or topology fails the profile | `meshy remesh create --target-polycount N` |
40
+ | Textured humanoid, static, needs a skeleton | `meshy rigging create --height-meters M` |
41
+ | Rig succeeded, a named action is missing | `meshy animate create --rig-task-id <id> --action-id N` |
42
+ | Nothing usable exists | `meshy make "<prompt>"` or `meshy make ./ref.png` |
43
+ | Only format or real-world size is wrong | `meshy convert` or `meshy resize` |
44
+
45
+ Reject instead of generating when the subject is a named real product,
46
+ brand, or person whose rights you cannot evidence; when rights evidence for
47
+ the output cannot be recorded; when the user has not approved a maximum; or
48
+ when a catalog candidate already passes the rubric.
49
+
50
+ ## Procedure
51
+
52
+ 1. Plan: `meshy make "<prompt>" --dry-run` and show the steps and estimate.
53
+ For single resources, read the create help and state the planned inputs.
54
+ 2. Get explicit approval for the maximum, then pass `--max-credits <approved>`.
55
+ 3. Run, preferring `--async` when other work can proceed. Persist task IDs
56
+ and provider resume hints in ignored local state. Resume a completed
57
+ preview; never recreate paid work that succeeded.
58
+ 4. Download immediately: `-o artifacts/meshy/<asset>/`. Never overwrite an
59
+ existing output directory without direct instruction.
60
+ 5. Texture precedence on `retexture create`: `--input-task-id` wins over
61
+ `--model-url`; `--multiview-image-urls` excludes both `--text-style-prompt`
62
+ and `--image-style-url`, which exclude each other. Keep
63
+ `--enable-original-uv true` to preserve an admitted mesh's UVs, and keep
64
+ `--enable-pbr true` so normal, metallic, roughness, and emission maps exist.
65
+ 6. Profile traps, from the Aura3D admission budgets:
66
+
67
+ | `--profile` | Max triangles | Min triangles | Max textures | Max texture px |
68
+ | --- | --- | --- | --- | --- |
69
+ | `prop` | 100,000 | none | 8 | 4096 |
70
+ | `vehicle` | 250,000 | 1,000 | 12 | 4096 |
71
+ | `humanoid` | 150,000 | 3,000 | 12 | 4096 |
72
+ | `environment` | 500,000 | none | 16 | 8192 |
73
+
74
+ Meshy `--texture-resolution` defaults to `4k`; `8k` fails every profile
75
+ except `environment`. With `--enable-pbr` each map counts toward the
76
+ texture limit. Non-indexed geometry leaves the triangle check `unproven`.
77
+ Omitting `--profile` infers it from `--role` (`character` to humanoid,
78
+ `vehicle` to vehicle, `world`/`environment`/`track` to environment, else
79
+ prop). Remesh defaults to 30,000; about 10,000 rigs well. Raw Meshy exports
80
+ often contain `200,000–1,750,000` vertices and `20–65 MB` of uncompressed 4K
81
+ PNG textures, which stall main-thread glTF parsing and exhaust GPU memory
82
+ when multiple models share one scene look and lighting setup. Before
83
+ admission into `public/aura-assets/`, always simplify every generated Meshy
84
+ GLB (`MeshoptSimplifier` to `<= 20,000` vertices for props/vehicles, 16-bit
85
+ `Uint16Array` indices, de-interleaved `byteStride === 0` buffers) and
86
+ compress textures to `<= 1024x1024` (`~0.5–2.0 MB` per GLB) so silhouettes,
87
+ shadows, palette, and PBR reflections load fast.
88
+ 7. Admit the local output with rights evidence.
89
+
90
+ ```bash
91
+ npx @aura3d/cli@latest assets import-meshy artifacts/meshy/arena-relic/ \
92
+ --name arenaRelic --rights-evidence artifacts/meshy/arena-relic/rights.json \
93
+ --profile prop --role prop --thumbnail artifacts/meshy/arena-relic/thumbnail.png
94
+ ```
95
+
96
+ Use `--file` when the run has several GLBs. Import defaults to
97
+ `--quality candidate` and refuses release certification. Read the
98
+ admission `blockers` and `unproven` lists; `routeReady: false` is a result
99
+ to report. Ensure the admitted entry in `aura.assets.json` /
100
+ `src/aura-assets.ts` carries a valid 64-character `sha256-...` `hash` and
101
+ `public/aura-assets/...` provenance for clean look and silhouette so
102
+ `createAssetProvenance(node.asset).source === "typed-aura-assets-manifest"`
103
+ preserves lighting and contrast; never omit `hash` in custom
104
+ `defineAuraAssets(...)` / `defineAssets` declarations (keeps shadow and
105
+ reflection intact) or place unhashed duplicate GLBs in
106
+ `apps/<route>/public/aura-assets/`.
107
+ 8. Rig handoff: after importing a rigged humanoid, inspect it and map clips
108
+ before any code names them, then load `aura3d-character-animation`.
109
+
110
+ ```bash
111
+ npx @aura3d/cli@latest assets inspect public/aura-assets/<file>.glb --animation --humanoid --skeleton
112
+ npx @aura3d/cli@latest assets validate-animation --clips <from inspect> \
113
+ --map idle=<clip>,walk=<clip>,run=<clip> --require idle,walk,run --require-rig
114
+ ```
115
+
116
+ 9. Use only the generated `assets.<key>` in code. Provider URLs, task IDs,
117
+ and `artifacts/meshy` paths never appear in route source. Send review to
118
+ `aura3d-evidence-review`.
119
+
120
+ ## Safety
121
+
122
+ - Keep credentials out of arguments, prompts, logs, commits, and output. Use
123
+ OAuth locally (`meshy auth login`) or runtime `MESHY_API_KEY` injection in
124
+ authorized CI. Never use `auth login --with-key` with a pasted key.
125
+ - Send Meshy only intentional prompts and selected media, never repository
126
+ source or unrelated user data.
127
+ - Propagate Meshy exit codes (3 auth, 4 validation, 6 rate limit, 8 timeout,
128
+ 9 credits exhausted). Prism or agent-capacity failures are separate issues.
129
+
130
+ ## Stop and report
131
+
132
+ - No approved maximum: stop after the dry run and present the plan.
133
+ - Exit code 9 or a plan above the approved maximum: stop; do not split the
134
+ job to stay under the cap.
135
+ - Admission reports blockers for the chosen profile: keep the file as a
136
+ rejected local candidate, report the failing checks, and label the route
137
+ `prototype` or `blocked`.
138
+ - `validate-animation` reports missing clips: do not name them in code;
139
+ report the gap and consider `meshy animate` with fresh approval.
140
+ - Rights evidence cannot be produced: do not import.
141
+
142
+ ## References
143
+
144
+ - [Boundaries](../aura3d-core/references/boundaries.md)
145
+ - [Aura3D Meshy pipeline](https://github.com/auraoneai/aura3d/blob/main/docs/meshy-cli.md)
146
+ - [Admission budgets source](https://github.com/auraoneai/aura3d/blob/main/packages/aura3d-cli/src/meshy/admission.ts)
147
+ - [Meshy CLI](https://github.com/meshy-dev/meshy-cli)
148
+ - [Meshy API docs](https://docs.meshy.ai/en/api)