nccgs 2.1.1 → 3.0.0-rc.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 (705) hide show
  1. package/CHANGELOG.md +76 -235
  2. package/LICENSE +1 -1
  3. package/README.md +87 -206
  4. package/THIRD_PARTY_NOTICES.md +6 -34
  5. package/bin/nccgs.mjs +96 -0
  6. package/cli/doctor.mjs +82 -0
  7. package/cli/feedback.mjs +13 -0
  8. package/cli/install.mjs +111 -0
  9. package/cli/release.mjs +59 -0
  10. package/cli/run.mjs +35 -0
  11. package/cli/spawn.mjs +20 -0
  12. package/cli/uninstall.mjs +43 -0
  13. package/cli/update-check.mjs +66 -0
  14. package/docs/EVIDENCE-VERIFICATION.md +22 -0
  15. package/package.json +23 -30
  16. package/runtime/core/diag.mjs +43 -0
  17. package/runtime/core/feedback-policy.mjs +54 -0
  18. package/runtime/core/fs.mjs +80 -0
  19. package/runtime/core/job-object.mjs +73 -0
  20. package/runtime/core/modes.mjs +87 -0
  21. package/runtime/core/process-tree.mjs +109 -0
  22. package/runtime/core/project.mjs +113 -0
  23. package/runtime/core/snapshot.mjs +114 -0
  24. package/runtime/hooks/common.mjs +22 -0
  25. package/runtime/hooks/done-guard.mjs +15 -0
  26. package/runtime/hooks/guard-mcp.mjs +8 -0
  27. package/runtime/hooks/guard-shell.mjs +16 -0
  28. package/runtime/hooks/guard-write.mjs +25 -0
  29. package/runtime/hooks/session-log.mjs +7 -0
  30. package/runtime/hooks/session-start.mjs +40 -0
  31. package/runtime/hooks/unity-transport.mjs +12 -0
  32. package/runtime/modes.json +39 -0
  33. package/runtime/task/cost.mjs +103 -0
  34. package/runtime/task/criteria.mjs +128 -0
  35. package/runtime/task/feedback.mjs +136 -0
  36. package/runtime/task/ledger.mjs +109 -0
  37. package/runtime/task/plan.mjs +69 -0
  38. package/runtime/task/project.mjs +79 -0
  39. package/runtime/task/report.mjs +252 -0
  40. package/runtime/task/task.mjs +238 -0
  41. package/runtime/unity/assets.mjs +51 -0
  42. package/runtime/unity/playtest.mjs +145 -0
  43. package/runtime/unity/unity.mjs +350 -0
  44. package/scripts/check-job-object.mjs +18 -0
  45. package/scripts/sync-unity-skills.mjs +35 -119
  46. package/template/CLAUDE.md +39 -0
  47. package/template/agents/fast-fix.md +9 -0
  48. package/template/agents/implementer.md +19 -0
  49. package/template/agents/playtester.md +15 -0
  50. package/template/agents/reviewer.md +19 -0
  51. package/template/agents/scout.md +9 -0
  52. package/template/ponytail/README.md +8 -0
  53. package/{.claude/nccgs/packages → template}/ponytail/engineering.md +10 -0
  54. package/template/protocols/evidence.md +52 -0
  55. package/template/protocols/playtest.md +45 -0
  56. package/template/protocols/review.md +34 -0
  57. package/template/protocols/unity-cli-notes.md +56 -0
  58. package/template/settings.fragment.json +33 -0
  59. package/template/skills/art-bible/SKILL.md +19 -0
  60. package/template/skills/asset-spec/SKILL.md +19 -0
  61. package/template/skills/brainstorm/SKILL.md +17 -0
  62. package/template/skills/feedback/SKILL.md +16 -0
  63. package/template/skills/map-systems/SKILL.md +25 -0
  64. package/template/skills/playtest/SKILL.md +17 -0
  65. package/template/skills/status/SKILL.md +18 -0
  66. package/template/skills/test/SKILL.md +34 -0
  67. package/template/skills/unity-foundation/SKILL.md +17 -0
  68. package/template/skills/vertical-slice/SKILL.md +17 -0
  69. package/template/skills/work/SKILL.md +65 -0
  70. package/tools/feedback-worker/README.md +12 -0
  71. package/tools/feedback-worker/worker.js +39 -0
  72. package/tools/feedback-worker/wrangler.toml +12 -0
  73. package/unity-skills/2d-pixel-perfect/SKILL.md +208 -0
  74. package/unity-skills/2d-pixel-perfect/references/api-reference.md +81 -0
  75. package/unity-skills/2d-pixel-perfect/references/camera-setup-builtin.cs +40 -0
  76. package/unity-skills/2d-pixel-perfect/references/camera-setup-urp.cs +49 -0
  77. package/unity-skills/2d-pixel-perfect/references/pipeline-detection.cs +50 -0
  78. package/unity-skills/2d-pixel-perfect/references/sprite-settings.cs +37 -0
  79. package/unity-skills/asset-transformer-toolkit/SECURITY.md +15 -0
  80. package/unity-skills/asset-transformer-toolkit/SKILL.md +39 -0
  81. package/unity-skills/asset-transformer-toolkit/references/create-importer.md +121 -0
  82. package/unity-skills/asset-transformer-toolkit/references/lods.md +61 -0
  83. package/unity-skills/asset-transformer-toolkit/references/rule-api.md +154 -0
  84. package/unity-skills/asset-transformer-toolkit/references/ruleblock-api.md +37 -0
  85. package/unity-skills/asset-transformer-toolkit/references/ruleset-api.md +138 -0
  86. package/unity-skills/asset-transformer-toolkit/references/rulesets-and-actions.md +227 -0
  87. package/unity-skills/audio-setup-mixers/SECURITY.md +16 -0
  88. package/unity-skills/audio-setup-mixers/SKILL.md +127 -0
  89. package/unity-skills/audio-setup-mixers/references/api.md +162 -0
  90. package/unity-skills/build-gtk/SKILL.md +242 -0
  91. package/unity-skills/build-gtk/references/graph-api.md +324 -0
  92. package/unity-skills/build-gtk/references/pitfalls.md +86 -0
  93. package/unity-skills/build-gtk/references/runtime-and-visualization.md +196 -0
  94. package/unity-skills/build-gtk/references/state-machine-api.md +286 -0
  95. package/unity-skills/build-live-game/SKILL.md +255 -0
  96. package/{.claude/skills → unity-skills}/build-live-game/references/achievements.md +132 -154
  97. package/{.claude/skills → unity-skills}/build-live-game/references/apis.md +10 -19
  98. package/{.claude/skills → unity-skills}/build-live-game/references/authentication.md +14 -20
  99. package/{.claude/skills → unity-skills}/build-live-game/references/battlepass.md +269 -225
  100. package/unity-skills/build-live-game/references/blueprints-and-samples.md +75 -0
  101. package/unity-skills/build-live-game/references/cloud-code-cloudbehaviours.md +1111 -0
  102. package/unity-skills/build-live-game/references/cloud-code-modules.md +1276 -0
  103. package/unity-skills/build-live-game/references/cloud-code.md +58 -0
  104. package/{.claude/skills → unity-skills}/build-live-game/references/cloud-save.md +15 -25
  105. package/{.claude/skills → unity-skills}/build-live-game/references/deployment.md +33 -18
  106. package/{.claude/skills → unity-skills}/build-live-game/references/player-account.md +31 -23
  107. package/{.claude/skills → unity-skills}/build-live-game/references/tooling.md +0 -56
  108. package/unity-skills/build-live-game/references/ugs-cli.md +86 -0
  109. package/unity-skills/craft-game-floors/SECURITY.md +23 -0
  110. package/unity-skills/craft-game-floors/SKILL.md +134 -0
  111. package/unity-skills/craft-game-floors/references/art-direction.md +85 -0
  112. package/unity-skills/craft-game-floors/references/camera-rigs.md +51 -0
  113. package/unity-skills/craft-game-floors/references/character-motion.md +35 -0
  114. package/unity-skills/craft-game-floors/references/game-audio.md +47 -0
  115. package/unity-skills/craft-game-floors/references/game-feel.md +68 -0
  116. package/unity-skills/craft-game-floors/references/game-shell.md +45 -0
  117. package/unity-skills/craft-game-floors/references/live-floor.md +35 -0
  118. package/unity-skills/craft-game-floors/references/placeholder-assets.md +35 -0
  119. package/unity-skills/craft-game-floors/references/scene-lighting.md +52 -0
  120. package/unity-skills/craft-game-floors/references/toon-shading.md +34 -0
  121. package/unity-skills/craft-game-floors/references/vfx.md +40 -0
  122. package/unity-skills/craft-game-floors/references/visual-scorecard.md +43 -0
  123. package/unity-skills/create-2d-physics/SECURITY.md +16 -0
  124. package/unity-skills/create-2d-physics/SKILL.md +128 -0
  125. package/unity-skills/create-2d-physics/references/2d-physics-core.md +155 -0
  126. package/unity-skills/create-2d-physics/references/legacy-2d-physics.md +45 -0
  127. package/unity-skills/create-tile-palette-or-rule-tiles/SKILL.md +12 -0
  128. package/unity-skills/create-tile-palette-or-rule-tiles/references/hexagonalruletile.md +71 -0
  129. package/unity-skills/create-tile-palette-or-rule-tiles/references/palette-create.md +38 -0
  130. package/unity-skills/create-tile-palette-or-rule-tiles/references/ruletile-createempty.md +35 -0
  131. package/unity-skills/create-tile-palette-or-rule-tiles/references/ruletile-createfromsegment.md +212 -0
  132. package/unity-skills/create-tile-palette-or-rule-tiles/references/ruletile.md +90 -0
  133. package/unity-skills/create-tile-palette-or-rule-tiles/scripts/CreatePaletteTemplate.cs +148 -0
  134. package/unity-skills/create-tile-palette-or-rule-tiles/scripts/ManualWorkflowExample.cs +63 -0
  135. package/unity-skills/create-tile-palette-or-rule-tiles/scripts/RuleTileGenerator.cs +61 -0
  136. package/unity-skills/create-tile-palette-or-rule-tiles/scripts/TilemapRuleTileCreateFromSegment.cs +225 -0
  137. package/unity-skills/generate-editor-search-query/SECURITY.md +17 -0
  138. package/unity-skills/generate-editor-search-query/SKILL.md +117 -0
  139. package/unity-skills/generate-editor-search-query/references/open-search-window.md +70 -0
  140. package/unity-skills/generate-editor-search-query/references/query-patterns.md +124 -0
  141. package/{.claude/skills → unity-skills}/implement-in-app-purchases/SKILL.md +1 -2
  142. package/{.claude/skills → unity-skills}/implement-in-app-purchases/references/api-notes.md +25 -28
  143. package/{.claude/skills → unity-skills}/implement-in-app-purchases/references/path-convert-native-google-billing.md +1 -1
  144. package/{.claude/skills → unity-skills}/implement-in-app-purchases/references/path-implement-iap-d2c.md +40 -5
  145. package/{.claude/skills → unity-skills}/initialize-ai-navigation/SKILL.md +4 -4
  146. package/{.claude/skills → unity-skills}/initialize-ai-navigation/references/navigation-system.md +3 -3
  147. package/{.claude/skills → unity-skills}/levelplay-unity-integration/CHANGELOG.md +12 -0
  148. package/{.claude/skills → unity-skills}/levelplay-unity-integration/README.md +9 -5
  149. package/unity-skills/levelplay-unity-integration/SKILL.md +442 -0
  150. package/{.claude/skills → unity-skills}/levelplay-unity-integration/references/banner-api.md +15 -8
  151. package/{.claude/skills → unity-skills}/levelplay-unity-integration/references/best-practices.md +604 -536
  152. package/unity-skills/levelplay-unity-integration/references/dependency-resolution.md +94 -0
  153. package/{.claude/skills → unity-skills}/levelplay-unity-integration/references/ilrd-api.md +2 -2
  154. package/{.claude/skills → unity-skills}/levelplay-unity-integration/references/initialization-api.md +221 -0
  155. package/{.claude/skills → unity-skills}/levelplay-unity-integration/references/interstitial-api.md +11 -3
  156. package/{.claude/skills → unity-skills}/levelplay-unity-integration/references/ios-setup.md +6 -34
  157. package/{.claude/skills → unity-skills}/levelplay-unity-integration/references/migration-sdk-9.md +1 -1
  158. package/{.claude/skills → unity-skills}/levelplay-unity-integration/references/privacy-settings.md +14 -29
  159. package/{.claude/skills → unity-skills}/levelplay-unity-integration/references/rewarded-api.md +20 -4
  160. package/unity-skills/levelplay-unity-integration/references/testing-and-validation.md +222 -0
  161. package/unity-skills/levelplay-unity-integration/references/troubleshooting.md +99 -0
  162. package/unity-skills/localization/SKILL.md +347 -0
  163. package/{.claude/skills → unity-skills}/localization/references/api-notes.md +4 -0
  164. package/unity-skills/localization/resources/L10nBatchProcessor.cs +191 -0
  165. package/unity-skills/manage-sprite-atlas/SKILL.md +351 -0
  166. package/unity-skills/manage-sprite-atlas/references/addressables-delivery.md +58 -0
  167. package/unity-skills/manage-sprite-atlas/references/api.md +382 -0
  168. package/unity-skills/manage-sprite-atlas/references/best-practices.md +183 -0
  169. package/unity-skills/manage-sprite-atlas/references/common-errors.md +123 -0
  170. package/unity-skills/manage-sprite-atlas/references/custom-packing.md +147 -0
  171. package/unity-skills/manage-sprite-atlas/references/manual-authoring.md +39 -0
  172. package/unity-skills/manage-sprite-atlas/resources/authoringvsruntime.cs +176 -0
  173. package/unity-skills/manage-sprite-atlas/resources/buildaddressablespostprocess.cs +59 -0
  174. package/unity-skills/manage-sprite-atlas/resources/cacheloadedatlases.cs +145 -0
  175. package/unity-skills/manage-sprite-atlas/resources/cleanupbatchoperations.cs +119 -0
  176. package/unity-skills/manage-sprite-atlas/resources/createandconfiguremasteratlas.cs +57 -0
  177. package/unity-skills/manage-sprite-atlas/resources/custompackersetup.cs +88 -0
  178. package/unity-skills/manage-sprite-atlas/resources/deprecatedmethods.cs +142 -0
  179. package/unity-skills/manage-sprite-atlas/resources/dontmodifywithoutsaving.cs +120 -0
  180. package/unity-skills/manage-sprite-atlas/resources/dontpackinruntimebuilds.cs +190 -0
  181. package/unity-skills/manage-sprite-atlas/resources/dontscriptspriteatlasineditor.cs +114 -0
  182. package/unity-skills/manage-sprite-atlas/resources/editorconfiguration.cs +95 -0
  183. package/unity-skills/manage-sprite-atlas/resources/enablespritepacking.cs +172 -0
  184. package/unity-skills/manage-sprite-atlas/resources/gridspritepacker.cs +50 -0
  185. package/unity-skills/manage-sprite-atlas/resources/handlelatebinding.cs +147 -0
  186. package/unity-skills/manage-sprite-atlas/resources/handlenullcases.cs +141 -0
  187. package/unity-skills/manage-sprite-atlas/resources/migratev1tov2.cs +335 -0
  188. package/unity-skills/manage-sprite-atlas/resources/multipagepacker.cs +80 -0
  189. package/unity-skills/manage-sprite-atlas/resources/optimizetexturesettings.cs +191 -0
  190. package/unity-skills/manage-sprite-atlas/resources/packerdebugging.cs +158 -0
  191. package/unity-skills/manage-sprite-atlas/resources/packtransform.cs +51 -0
  192. package/unity-skills/manage-sprite-atlas/resources/platformnames.cs +127 -0
  193. package/unity-skills/manage-sprite-atlas/resources/queryspritesefficiently.cs +222 -0
  194. package/unity-skills/manage-sprite-atlas/resources/registercallbacks.cs +152 -0
  195. package/unity-skills/manage-sprite-atlas/resources/runtimeatlasloader.cs +15 -0
  196. package/unity-skills/manage-sprite-atlas/resources/runtimespriteaccess.cs +19 -0
  197. package/unity-skills/manage-sprite-atlas/resources/savespriteatlasasset.cs +107 -0
  198. package/unity-skills/manage-sprite-atlas/resources/scriptablepacker.cs +81 -0
  199. package/unity-skills/manage-sprite-atlas/resources/setincludeinbuild.cs +164 -0
  200. package/unity-skills/manage-sprite-atlas/resources/sizeoptimizedpacker.cs +88 -0
  201. package/unity-skills/manage-sprite-atlas/resources/spriteatlaslatebinding.cs +123 -0
  202. package/unity-skills/manage-sprite-atlas/resources/spriteatlasprebuildgenerator.cs +219 -0
  203. package/unity-skills/manage-sprite-atlas/resources/spritedata.cs +35 -0
  204. package/unity-skills/manage-sprite-atlas/resources/spritepack.cs +39 -0
  205. package/unity-skills/manage-sprite-atlas/resources/texturedata.cs +15 -0
  206. package/unity-skills/manage-sprite-atlas/resources/updatebuildscripts.cs +357 -0
  207. package/unity-skills/manage-sprite-atlas/resources/updatesettingsconfiguration.cs +135 -0
  208. package/unity-skills/manage-sprite-atlas/resources/usevariantswisely.cs +179 -0
  209. package/unity-skills/manage-sprite-atlas/resources/variantatlas.cs +39 -0
  210. package/unity-skills/manifest.json +1155 -0
  211. package/unity-skills/migrate-birp-to-urp/SECURITY.md +16 -0
  212. package/unity-skills/migrate-birp-to-urp/SKILL.md +543 -0
  213. package/unity-skills/migrate-birp-to-urp/references/capturing-the-editor.md +66 -0
  214. package/unity-skills/migrate-birp-to-urp/references/complex-shader-situations.md +272 -0
  215. package/unity-skills/migrate-birp-to-urp/references/custom-shader-triage.md +123 -0
  216. package/unity-skills/migrate-birp-to-urp/references/implementation-patterns.md +529 -0
  217. package/unity-skills/migrate-birp-to-urp/references/migration-workflow.md +265 -0
  218. package/unity-skills/migrate-birp-to-urp/references/quality-settings-map.md +69 -0
  219. package/unity-skills/new-unity-project/SECURITY.md +26 -0
  220. package/unity-skills/new-unity-project/SKILL.md +386 -0
  221. package/unity-skills/new-unity-project/references/skill-setup.md +66 -0
  222. package/unity-skills/optimize-audio/SECURITY.md +16 -0
  223. package/{.claude/skills → unity-skills}/optimize-audio/SKILL.md +17 -17
  224. package/{.claude/skills → unity-skills}/optimize-audio/resources/audio-import-api.md +8 -5
  225. package/{.claude/skills → unity-skills}/optimize-text-mesh-pro/SKILL.md +1 -11
  226. package/unity-skills/optimize-web/SECURITY.md +16 -0
  227. package/{.claude/skills → unity-skills}/optimize-web/SKILL.md +164 -27
  228. package/unity-skills/optimize-web/scripts/WebOptimizer.cs +46 -0
  229. package/unity-skills/optimize-web/scripts/toktx-examples.sh +11 -0
  230. package/{.claude/skills → unity-skills}/physics-3d-collision/SKILL.md +2 -2
  231. package/unity-skills/physics-3d-collision/references/troubleshooting.md +8 -0
  232. package/unity-skills/project-auditor-fixes/SKILL.md +64 -0
  233. package/{.claude/skills → unity-skills}/setup-multiplayer-services/SKILL.md +1 -4
  234. package/{.claude/skills → unity-skills}/setup-vivox-voice-chat/SKILL.md +1 -1
  235. package/{.claude/skills → unity-skills}/shader-graph-create-custom-node/SKILL.md +1 -1
  236. package/unity-skills/sprite-editor/SECURITY.md +16 -0
  237. package/{.claude/skills → unity-skills}/sprite-editor/SKILL.md +9 -9
  238. package/{.claude/skills → unity-skills}/sprite-editor/references/templates.md +1 -1
  239. package/unity-skills/sprite-segment-3x3grid/SKILL.md +136 -0
  240. package/unity-skills/sprite-segment-3x3grid/scripts/SpriteGridAnalysis.cs +119 -0
  241. package/{.claude/skills → unity-skills}/ui/SKILL.md +1 -1
  242. package/{.claude/skills → unity-skills}/ui-imgui/SKILL.md +1 -7
  243. package/{.claude/skills → unity-skills}/ui-ugui/SKILL.md +3 -9
  244. package/{.claude/skills → unity-skills}/ui-uitk/SKILL.md +8 -14
  245. package/{.claude/skills → unity-skills}/ui-uitk/references/custom-elements.md +1 -1
  246. package/unity-skills/unity-cli/CHANGELOG.md +515 -0
  247. package/unity-skills/unity-cli/SECURITY.md +68 -0
  248. package/unity-skills/unity-cli/SKILL.md +723 -0
  249. package/unity-skills/unity-cli/references/auth-license-cloud.md +318 -0
  250. package/unity-skills/unity-cli/references/build-run-test.md +555 -0
  251. package/unity-skills/unity-cli/references/cloud-automation.md +736 -0
  252. package/{.claude/skills → unity-skills}/unity-cli/references/collaboration.md +166 -105
  253. package/unity-skills/unity-cli/references/config-hub.md +239 -0
  254. package/unity-skills/unity-cli/references/diagnostics-maintenance.md +720 -0
  255. package/unity-skills/unity-cli/references/docs-workflow.md +179 -0
  256. package/unity-skills/unity-cli/references/editors-install.md +476 -0
  257. package/unity-skills/unity-cli/references/integration-advanced.md +1130 -0
  258. package/unity-skills/unity-cli/references/playmode-verification-loop.md +279 -0
  259. package/unity-skills/unity-cli/references/projects-templates.md +996 -0
  260. package/unity-skills/unity-cli/references/version-control.md +612 -0
  261. package/{.claude/skills → unity-skills}/unity-package-management/SKILL.md +60 -12
  262. package/{.claude/skills → unity-skills}/unity-package-management/references/select-packages.md +39 -21
  263. package/unity-skills/unity-pipeline/SECURITY.md +17 -0
  264. package/unity-skills/unity-pipeline/SKILL.md +335 -0
  265. package/unity-skills/urp-postprocessing/SECURITY.md +16 -0
  266. package/{.claude/skills → unity-skills}/urp-postprocessing/SKILL.md +12 -12
  267. package/{.claude/skills → unity-skills}/urp-postprocessing/references/code-templates.md +39 -8
  268. package/{.claude/skills → unity-skills}/validate-urp-render-graph-renderer-feature/SKILL.md +1 -1
  269. package/.claude/agents/nccgs-adversarial-reviewer.md +0 -43
  270. package/.claude/agents/nccgs-engine-programmer.md +0 -27
  271. package/.claude/agents/nccgs-fast-implementer.md +0 -30
  272. package/.claude/agents/nccgs-game-designer.md +0 -26
  273. package/.claude/agents/nccgs-gameplay-programmer.md +0 -26
  274. package/.claude/agents/nccgs-qa-engineer.md +0 -27
  275. package/.claude/agents/nccgs-task-scout.md +0 -24
  276. package/.claude/agents/nccgs-ui-programmer.md +0 -27
  277. package/.claude/agents/nccgs-unity-build-specialist.md +0 -27
  278. package/.claude/agents/nccgs-unity-implementer.md +0 -28
  279. package/.claude/agents/nccgs-unity-systems-specialist.md +0 -27
  280. package/.claude/agents/nccgs-unity-ui-specialist.md +0 -27
  281. package/.claude/agents/nccgs-verification-engineer.md +0 -27
  282. package/.claude/nccgs/MEMORY.md +0 -66
  283. package/.claude/nccgs/THIRD_PARTY_NOTICES.md +0 -29
  284. package/.claude/nccgs/VERSION +0 -1
  285. package/.claude/nccgs/agent-library/nccgs-accessibility-specialist.md +0 -25
  286. package/.claude/nccgs/agent-library/nccgs-adversarial-reviewer.md +0 -41
  287. package/.claude/nccgs/agent-library/nccgs-ai-programmer.md +0 -25
  288. package/.claude/nccgs/agent-library/nccgs-analytics-engineer.md +0 -25
  289. package/.claude/nccgs/agent-library/nccgs-art-direction-lead.md +0 -25
  290. package/.claude/nccgs/agent-library/nccgs-audio-direction-lead.md +0 -25
  291. package/.claude/nccgs/agent-library/nccgs-creative-director.md +0 -25
  292. package/.claude/nccgs/agent-library/nccgs-documentation-manager.md +0 -25
  293. package/.claude/nccgs/agent-library/nccgs-economy-designer.md +0 -25
  294. package/.claude/nccgs/agent-library/nccgs-engine-programmer.md +0 -25
  295. package/.claude/nccgs/agent-library/nccgs-fast-implementer.md +0 -28
  296. package/.claude/nccgs/agent-library/nccgs-game-design-lead.md +0 -25
  297. package/.claude/nccgs/agent-library/nccgs-game-designer.md +0 -24
  298. package/.claude/nccgs/agent-library/nccgs-gameplay-programmer.md +0 -24
  299. package/.claude/nccgs/agent-library/nccgs-level-designer.md +0 -25
  300. package/.claude/nccgs/agent-library/nccgs-live-ops-designer.md +0 -25
  301. package/.claude/nccgs/agent-library/nccgs-localization-lead.md +0 -25
  302. package/.claude/nccgs/agent-library/nccgs-narrative-lead.md +0 -25
  303. package/.claude/nccgs/agent-library/nccgs-network-programmer.md +0 -25
  304. package/.claude/nccgs/agent-library/nccgs-performance-analyst.md +0 -25
  305. package/.claude/nccgs/agent-library/nccgs-producer.md +0 -25
  306. package/.claude/nccgs/agent-library/nccgs-production-coordinator.md +0 -22
  307. package/.claude/nccgs/agent-library/nccgs-programming-lead.md +0 -25
  308. package/.claude/nccgs/agent-library/nccgs-prototyper.md +0 -25
  309. package/.claude/nccgs/agent-library/nccgs-qa-engineer.md +0 -25
  310. package/.claude/nccgs/agent-library/nccgs-qa-lead.md +0 -25
  311. package/.claude/nccgs/agent-library/nccgs-release-engineer.md +0 -25
  312. package/.claude/nccgs/agent-library/nccgs-release-lead.md +0 -25
  313. package/.claude/nccgs/agent-library/nccgs-security-engineer.md +0 -25
  314. package/.claude/nccgs/agent-library/nccgs-sound-designer.md +0 -25
  315. package/.claude/nccgs/agent-library/nccgs-systems-designer.md +0 -25
  316. package/.claude/nccgs/agent-library/nccgs-task-scout.md +0 -22
  317. package/.claude/nccgs/agent-library/nccgs-technical-architect.md +0 -25
  318. package/.claude/nccgs/agent-library/nccgs-technical-artist.md +0 -25
  319. package/.claude/nccgs/agent-library/nccgs-technical-director.md +0 -25
  320. package/.claude/nccgs/agent-library/nccgs-tools-programmer.md +0 -25
  321. package/.claude/nccgs/agent-library/nccgs-ui-programmer.md +0 -25
  322. package/.claude/nccgs/agent-library/nccgs-unity-build-specialist.md +0 -25
  323. package/.claude/nccgs/agent-library/nccgs-unity-content-specialist.md +0 -25
  324. package/.claude/nccgs/agent-library/nccgs-unity-implementer.md +0 -26
  325. package/.claude/nccgs/agent-library/nccgs-unity-rendering-specialist.md +0 -25
  326. package/.claude/nccgs/agent-library/nccgs-unity-systems-specialist.md +0 -25
  327. package/.claude/nccgs/agent-library/nccgs-unity-ui-specialist.md +0 -25
  328. package/.claude/nccgs/agent-library/nccgs-ux-designer.md +0 -25
  329. package/.claude/nccgs/agent-library/nccgs-verification-engineer.md +0 -25
  330. package/.claude/nccgs/agent-library/nccgs-world-builder.md +0 -25
  331. package/.claude/nccgs/agent-library/nccgs-writer.md +0 -25
  332. package/.claude/nccgs/constitution.md +0 -187
  333. package/.claude/nccgs/hooks/agent-audit.mjs +0 -16
  334. package/.claude/nccgs/hooks/closure-guard.mjs +0 -59
  335. package/.claude/nccgs/hooks/common.mjs +0 -42
  336. package/.claude/nccgs/hooks/post-compact.mjs +0 -1
  337. package/.claude/nccgs/hooks/pre-compact.mjs +0 -8
  338. package/.claude/nccgs/hooks/protect-git.mjs +0 -22
  339. package/.claude/nccgs/hooks/protect-write.mjs +0 -17
  340. package/.claude/nccgs/hooks/runtime-observation.mjs +0 -11
  341. package/.claude/nccgs/hooks/session-start.mjs +0 -29
  342. package/.claude/nccgs/hooks/session-stop.mjs +0 -7
  343. package/.claude/nccgs/hooks/unity-transport-guard.mjs +0 -11
  344. package/.claude/nccgs/packages/ponytail/README.md +0 -46
  345. package/.claude/nccgs/packages/ponytail/manifest.json +0 -24
  346. package/.claude/nccgs/pipeline.json +0 -260
  347. package/.claude/nccgs/protocols/agent-contract.md +0 -101
  348. package/.claude/nccgs/protocols/astra-claude.md +0 -111
  349. package/.claude/nccgs/protocols/bounded-repair.md +0 -246
  350. package/.claude/nccgs/protocols/context-packets.md +0 -23
  351. package/.claude/nccgs/protocols/delivery-acceptance.md +0 -105
  352. package/.claude/nccgs/protocols/design-lifecycle.md +0 -139
  353. package/.claude/nccgs/protocols/editor-session-evidence.md +0 -52
  354. package/.claude/nccgs/protocols/evidence.md +0 -31
  355. package/.claude/nccgs/protocols/model-routing.md +0 -46
  356. package/.claude/nccgs/protocols/orchestration.md +0 -74
  357. package/.claude/nccgs/protocols/review-handoff.md +0 -101
  358. package/.claude/nccgs/protocols/shared-workflow-context.md +0 -33
  359. package/.claude/nccgs/protocols/standalone-gates.md +0 -329
  360. package/.claude/nccgs/protocols/standalone-pilot.md +0 -144
  361. package/.claude/nccgs/protocols/standalone.md +0 -207
  362. package/.claude/nccgs/protocols/task-autonomy.md +0 -55
  363. package/.claude/nccgs/protocols/task-gates.md +0 -144
  364. package/.claude/nccgs/protocols/task-slices.md +0 -106
  365. package/.claude/nccgs/protocols/unity-boundary.md +0 -31
  366. package/.claude/nccgs/routing.generated.md +0 -49
  367. package/.claude/nccgs/settings.fragment.json +0 -213
  368. package/.claude/nccgs/studio.json +0 -472
  369. package/.claude/nccgs/tools/approve-overrides.mjs +0 -81
  370. package/.claude/nccgs/tools/autonomy.mjs +0 -40
  371. package/.claude/nccgs/tools/command-process.mjs +0 -50
  372. package/.claude/nccgs/tools/command-tokens.mjs +0 -22
  373. package/.claude/nccgs/tools/compile-policy.mjs +0 -121
  374. package/.claude/nccgs/tools/configure-models.mjs +0 -96
  375. package/.claude/nccgs/tools/criteria.mjs +0 -121
  376. package/.claude/nccgs/tools/delivery-budget.mjs +0 -52
  377. package/.claude/nccgs/tools/design-readiness.mjs +0 -158
  378. package/.claude/nccgs/tools/editor-session-evidence.mjs +0 -66
  379. package/.claude/nccgs/tools/evidence.mjs +0 -153
  380. package/.claude/nccgs/tools/gates.mjs +0 -297
  381. package/.claude/nccgs/tools/handoff.mjs +0 -51
  382. package/.claude/nccgs/tools/hook-transport.mjs +0 -34
  383. package/.claude/nccgs/tools/inputs.mjs +0 -108
  384. package/.claude/nccgs/tools/installation-guard.mjs +0 -55
  385. package/.claude/nccgs/tools/integrity.mjs +0 -69
  386. package/.claude/nccgs/tools/lifecycle.mjs +0 -542
  387. package/.claude/nccgs/tools/native-completion.mjs +0 -30
  388. package/.claude/nccgs/tools/orchestration.mjs +0 -680
  389. package/.claude/nccgs/tools/paths.mjs +0 -60
  390. package/.claude/nccgs/tools/policy.mjs +0 -107
  391. package/.claude/nccgs/tools/process-lock.mjs +0 -74
  392. package/.claude/nccgs/tools/repair-packet.mjs +0 -106
  393. package/.claude/nccgs/tools/returned-handoff.mjs +0 -47
  394. package/.claude/nccgs/tools/review-budget.mjs +0 -171
  395. package/.claude/nccgs/tools/review-handoff.mjs +0 -66
  396. package/.claude/nccgs/tools/runtime.mjs +0 -71
  397. package/.claude/nccgs/tools/session-budget.mjs +0 -67
  398. package/.claude/nccgs/tools/shared-context-guard.mjs +0 -60
  399. package/.claude/nccgs/tools/shared-context.mjs +0 -25
  400. package/.claude/nccgs/tools/task-slices.mjs +0 -147
  401. package/.claude/nccgs/tools/task.mjs +0 -145
  402. package/.claude/nccgs/tools/tool-guard.mjs +0 -120
  403. package/.claude/nccgs/tools/unity-repair.mjs +0 -128
  404. package/.claude/nccgs/tools/unity-transport.mjs +0 -170
  405. package/.claude/nccgs/tools/verification-jobs.mjs +0 -171
  406. package/.claude/nccgs/tools/verification-worker.mjs +0 -71
  407. package/.claude/nccgs/tools/windows-compiler-server.cs +0 -163
  408. package/.claude/nccgs/tools/windows-job.cs +0 -103
  409. package/.claude/nccgs/unity-skills-manifest.json +0 -727
  410. package/.claude/nccgs/workflow-catalog.json +0 -654
  411. package/.claude/rules/nccgs-canonical-docs.md +0 -19
  412. package/.claude/rules/nccgs-editor-tools.md +0 -12
  413. package/.claude/rules/nccgs-localization.md +0 -12
  414. package/.claude/rules/nccgs-networking.md +0 -13
  415. package/.claude/rules/nccgs-performance.md +0 -14
  416. package/.claude/rules/nccgs-rendering.md +0 -16
  417. package/.claude/rules/nccgs-security.md +0 -13
  418. package/.claude/rules/nccgs-tests.md +0 -18
  419. package/.claude/rules/nccgs-ui.md +0 -14
  420. package/.claude/rules/nccgs-unity-assets.md +0 -21
  421. package/.claude/rules/nccgs-unity-code.md +0 -22
  422. package/.claude/skills/accessibility-review/SKILL.md +0 -22
  423. package/.claude/skills/accessibility-review/references/astra.md +0 -17
  424. package/.claude/skills/accessibility-review/references/legacy.md +0 -7
  425. package/.claude/skills/architecture-decision/SKILL.md +0 -22
  426. package/.claude/skills/architecture-decision/references/astra.md +0 -12
  427. package/.claude/skills/architecture-decision/references/legacy.md +0 -7
  428. package/.claude/skills/asset-audit/SKILL.md +0 -22
  429. package/.claude/skills/asset-audit/references/astra.md +0 -17
  430. package/.claude/skills/asset-audit/references/legacy.md +0 -7
  431. package/.claude/skills/audit/SKILL.md +0 -22
  432. package/.claude/skills/audit/references/astra.md +0 -17
  433. package/.claude/skills/audit/references/dimensions.md +0 -46
  434. package/.claude/skills/audit/references/legacy.md +0 -9
  435. package/.claude/skills/balance-review/SKILL.md +0 -22
  436. package/.claude/skills/balance-review/references/astra.md +0 -17
  437. package/.claude/skills/balance-review/references/legacy.md +0 -7
  438. package/.claude/skills/bug-triage/SKILL.md +0 -22
  439. package/.claude/skills/bug-triage/references/astra.md +0 -27
  440. package/.claude/skills/bug-triage/references/legacy.md +0 -7
  441. package/.claude/skills/build-live-game/SKILL.md +0 -317
  442. package/.claude/skills/build-live-game/references/cloud-code.md +0 -563
  443. package/.claude/skills/closure/SKILL.md +0 -22
  444. package/.claude/skills/closure/references/astra.md +0 -15
  445. package/.claude/skills/closure/references/legacy.md +0 -7
  446. package/.claude/skills/compatibility-review/SKILL.md +0 -22
  447. package/.claude/skills/compatibility-review/references/astra.md +0 -17
  448. package/.claude/skills/compatibility-review/references/legacy.md +0 -7
  449. package/.claude/skills/context-pack/SKILL.md +0 -22
  450. package/.claude/skills/context-pack/references/astra.md +0 -12
  451. package/.claude/skills/context-pack/references/legacy.md +0 -7
  452. package/.claude/skills/dependency-review/SKILL.md +0 -22
  453. package/.claude/skills/dependency-review/references/astra.md +0 -17
  454. package/.claude/skills/dependency-review/references/legacy.md +0 -7
  455. package/.claude/skills/design/SKILL.md +0 -24
  456. package/.claude/skills/design/references/astra.md +0 -12
  457. package/.claude/skills/design/references/legacy.md +0 -13
  458. package/.claude/skills/design-review/SKILL.md +0 -24
  459. package/.claude/skills/design-review/references/astra.md +0 -17
  460. package/.claude/skills/design-review/references/legacy.md +0 -7
  461. package/.claude/skills/evidence-review/SKILL.md +0 -22
  462. package/.claude/skills/evidence-review/references/astra.md +0 -17
  463. package/.claude/skills/evidence-review/references/legacy.md +0 -7
  464. package/.claude/skills/hotfix/SKILL.md +0 -22
  465. package/.claude/skills/hotfix/references/astra.md +0 -30
  466. package/.claude/skills/hotfix/references/legacy.md +0 -7
  467. package/.claude/skills/incident-recovery/SKILL.md +0 -22
  468. package/.claude/skills/incident-recovery/references/astra.md +0 -27
  469. package/.claude/skills/incident-recovery/references/legacy.md +0 -7
  470. package/.claude/skills/levelplay-unity-integration/SKILL.md +0 -1126
  471. package/.claude/skills/localization/SKILL.md +0 -135
  472. package/.claude/skills/localization/resources/L10nBatchProcessor.cs +0 -69
  473. package/.claude/skills/localize-game/SKILL.md +0 -22
  474. package/.claude/skills/localize-game/references/astra.md +0 -27
  475. package/.claude/skills/localize-game/references/legacy.md +0 -7
  476. package/.claude/skills/migrate-project/SKILL.md +0 -22
  477. package/.claude/skills/migrate-project/references/astra.md +0 -30
  478. package/.claude/skills/migrate-project/references/legacy.md +0 -19
  479. package/.claude/skills/migrate-project/references/procedure.md +0 -96
  480. package/.claude/skills/milestone-review/SKILL.md +0 -22
  481. package/.claude/skills/milestone-review/references/astra.md +0 -12
  482. package/.claude/skills/milestone-review/references/legacy.md +0 -7
  483. package/.claude/skills/nccgs-code-review/SKILL.md +0 -22
  484. package/.claude/skills/nccgs-code-review/references/astra.md +0 -21
  485. package/.claude/skills/nccgs-code-review/references/legacy.md +0 -7
  486. package/.claude/skills/new-unity-project/SKILL.md +0 -179
  487. package/.claude/skills/performance-audit/SKILL.md +0 -22
  488. package/.claude/skills/performance-audit/references/astra.md +0 -17
  489. package/.claude/skills/performance-audit/references/legacy.md +0 -7
  490. package/.claude/skills/physics-3d-collision/references/troubleshooting.md +0 -41
  491. package/.claude/skills/plan-feature/SKILL.md +0 -22
  492. package/.claude/skills/plan-feature/references/astra.md +0 -12
  493. package/.claude/skills/plan-feature/references/legacy.md +0 -7
  494. package/.claude/skills/playtest/SKILL.md +0 -22
  495. package/.claude/skills/playtest/references/astra.md +0 -31
  496. package/.claude/skills/playtest/references/legacy.md +0 -7
  497. package/.claude/skills/project-stage/SKILL.md +0 -22
  498. package/.claude/skills/project-stage/references/astra.md +0 -12
  499. package/.claude/skills/project-stage/references/legacy.md +0 -7
  500. package/.claude/skills/prototype-feature/SKILL.md +0 -22
  501. package/.claude/skills/prototype-feature/references/astra.md +0 -31
  502. package/.claude/skills/prototype-feature/references/legacy.md +0 -7
  503. package/.claude/skills/qa-plan/SKILL.md +0 -22
  504. package/.claude/skills/qa-plan/references/astra.md +0 -12
  505. package/.claude/skills/qa-plan/references/legacy.md +0 -7
  506. package/.claude/skills/release/SKILL.md +0 -22
  507. package/.claude/skills/release/references/astra.md +0 -30
  508. package/.claude/skills/release/references/legacy.md +0 -11
  509. package/.claude/skills/release-readiness/SKILL.md +0 -22
  510. package/.claude/skills/release-readiness/references/astra.md +0 -17
  511. package/.claude/skills/release-readiness/references/legacy.md +0 -7
  512. package/.claude/skills/retrospective/SKILL.md +0 -22
  513. package/.claude/skills/retrospective/references/astra.md +0 -12
  514. package/.claude/skills/retrospective/references/legacy.md +0 -7
  515. package/.claude/skills/review/SKILL.md +0 -22
  516. package/.claude/skills/review/references/astra.md +0 -21
  517. package/.claude/skills/review/references/legacy.md +0 -9
  518. package/.claude/skills/security-audit/SKILL.md +0 -22
  519. package/.claude/skills/security-audit/references/astra.md +0 -17
  520. package/.claude/skills/security-audit/references/legacy.md +0 -7
  521. package/.claude/skills/sprint-plan/SKILL.md +0 -22
  522. package/.claude/skills/sprint-plan/references/astra.md +0 -12
  523. package/.claude/skills/sprint-plan/references/legacy.md +0 -7
  524. package/.claude/skills/status/SKILL.md +0 -22
  525. package/.claude/skills/status/references/astra.md +0 -19
  526. package/.claude/skills/status/references/legacy.md +0 -9
  527. package/.claude/skills/story-readiness/SKILL.md +0 -24
  528. package/.claude/skills/story-readiness/references/astra.md +0 -17
  529. package/.claude/skills/story-readiness/references/legacy.md +0 -7
  530. package/.claude/skills/test/SKILL.md +0 -22
  531. package/.claude/skills/test/references/astra.md +0 -27
  532. package/.claude/skills/test/references/legacy.md +0 -9
  533. package/.claude/skills/ui-review/SKILL.md +0 -22
  534. package/.claude/skills/ui-review/references/astra.md +0 -17
  535. package/.claude/skills/ui-review/references/legacy.md +0 -7
  536. package/.claude/skills/unity-cli/CHANGELOG.md +0 -233
  537. package/.claude/skills/unity-cli/SECURITY.md +0 -22
  538. package/.claude/skills/unity-cli/SKILL.md +0 -414
  539. package/.claude/skills/unity-cli/references/auth-license-cloud.md +0 -146
  540. package/.claude/skills/unity-cli/references/build-run-test.md +0 -349
  541. package/.claude/skills/unity-cli/references/config-hub.md +0 -103
  542. package/.claude/skills/unity-cli/references/diagnostics-maintenance.md +0 -326
  543. package/.claude/skills/unity-cli/references/editors-install.md +0 -327
  544. package/.claude/skills/unity-cli/references/integration-advanced.md +0 -472
  545. package/.claude/skills/unity-cli/references/projects-templates.md +0 -574
  546. package/.claude/skills/work/SKILL.md +0 -22
  547. package/.claude/skills/work/references/astra.md +0 -32
  548. package/.claude/skills/work/references/classification.md +0 -41
  549. package/.claude/skills/work/references/closure.md +0 -60
  550. package/.claude/skills/work/references/feature-contracts.md +0 -36
  551. package/.claude/skills/work/references/legacy.md +0 -29
  552. package/.claude/skills/work/references/verification.md +0 -26
  553. package/CLAUDE.md +0 -10
  554. package/MEMORY.md +0 -109
  555. package/UPGRADING.md +0 -130
  556. package/VERSION +0 -1
  557. package/docs/ARCHITECTURE.md +0 -131
  558. package/docs/ASSET-PRODUCTION-GRAPHIFY-PLAN.md +0 -230
  559. package/docs/BOUNDED-REPAIR.md +0 -80
  560. package/docs/EDITOR-SESSION-EVIDENCE.md +0 -52
  561. package/docs/HANDOFF-AUTOMATION.md +0 -144
  562. package/docs/HUONG-DAN-MIGRATE-VA-SU-DUNG.md +0 -117
  563. package/docs/MIGRATION-MATRIX.md +0 -23
  564. package/docs/NCCGS-1.3.md +0 -13
  565. package/docs/NCCGS-1.4.1.md +0 -149
  566. package/docs/NCCGS-1.4.md +0 -184
  567. package/docs/NCCGS-1.5-IMPLEMENTATION-PLAN.md +0 -378
  568. package/docs/NCCGS-1.5-PILOT.md +0 -130
  569. package/docs/NCCGS-1.5.md +0 -237
  570. package/docs/PHASE-1-OPERATIONS.md +0 -278
  571. package/docs/PHASE-2-OPERATIONS.md +0 -183
  572. package/docs/PROJECT-POLICY.md +0 -94
  573. package/docs/RELEASE-STATUS.md +0 -150
  574. package/docs/TASK-SLICING.md +0 -57
  575. package/docs/UNINSTALL.md +0 -134
  576. package/docs/UPGRADE-QUALIFICATION.md +0 -45
  577. package/docs/WFK17-HOOK-REPAIR.md +0 -71
  578. package/docs/WORKFLOWS.md +0 -85
  579. package/package-assets/nccgs-project.gitignore +0 -2
  580. package/package-assets/setup-vivox-voice-chat-evals.gitignore +0 -7
  581. package/scaffold/.nccgs/autonomy.json +0 -4
  582. package/scaffold/.nccgs/bugs/.gitkeep +0 -1
  583. package/scaffold/.nccgs/closures/.gitkeep +0 -1
  584. package/scaffold/.nccgs/context/.gitkeep +0 -1
  585. package/scaffold/.nccgs/decisions/.gitkeep +0 -1
  586. package/scaffold/.nccgs/evidence/.gitkeep +0 -1
  587. package/scaffold/.nccgs/execution.json +0 -10
  588. package/scaffold/.nccgs/features/.gitkeep +0 -1
  589. package/scaffold/.nccgs/gates.json +0 -7
  590. package/scaffold/.nccgs/inputs.json +0 -6
  591. package/scaffold/.nccgs/migrations/.gitkeep +0 -1
  592. package/scaffold/.nccgs/playtests/.gitkeep +0 -1
  593. package/scaffold/.nccgs/project.yaml +0 -109
  594. package/scaffold/.nccgs/requirements.yaml +0 -10
  595. package/scaffold/.nccgs/reviews/.gitkeep +0 -1
  596. package/scaffold/.nccgs/state.md +0 -40
  597. package/scaffold/.nccgs/templates/agent-handoff.md +0 -37
  598. package/scaffold/.nccgs/templates/architecture-decision.md +0 -27
  599. package/scaffold/.nccgs/templates/closure-record.md +0 -62
  600. package/scaffold/.nccgs/templates/context-packet.yaml +0 -17
  601. package/scaffold/.nccgs/templates/design-contract.json +0 -34
  602. package/scaffold/.nccgs/templates/evidence-record.md +0 -23
  603. package/scaffold/.nccgs/templates/feature-contract.md +0 -60
  604. package/scaffold/.nccgs/templates/implementation-report.md +0 -52
  605. package/scaffold/.nccgs/templates/migration-plan.md +0 -40
  606. package/scaffold/.nccgs/templates/repair-packet.json +0 -14
  607. package/scaffold/.nccgs/templates/repair-unity-code.json +0 -18
  608. package/scaffold/.nccgs/templates/repair-unity-editor.json +0 -21
  609. package/scaffold/.nccgs/templates/task-slices.json +0 -28
  610. package/scaffold/.nccgs/templates/waiver.md +0 -11
  611. package/scripts/benchmark-snapshot.mjs +0 -205
  612. package/scripts/benchmark-v15.mjs +0 -173
  613. package/scripts/cli.mjs +0 -205
  614. package/scripts/doctor.mjs +0 -261
  615. package/scripts/install.mjs +0 -530
  616. package/scripts/recover-session.mjs +0 -89
  617. package/scripts/run.mjs +0 -86
  618. package/scripts/supervise.mjs +0 -152
  619. package/scripts/uninstall.mjs +0 -292
  620. package/scripts/validate.mjs +0 -285
  621. package/scripts/work-handoff.mjs +0 -38
  622. package/tests/autonomy.test.mjs +0 -126
  623. package/tests/benchmark-v15.test.mjs +0 -65
  624. package/tests/design-readiness.test.mjs +0 -200
  625. package/tests/editor-session-evidence.test.mjs +0 -45
  626. package/tests/evidence.test.mjs +0 -186
  627. package/tests/fixtures/compiler-shutdown.cs +0 -67
  628. package/tests/fixtures/native-provider.mjs +0 -61
  629. package/tests/framework.test.mjs +0 -740
  630. package/tests/gates.test.mjs +0 -479
  631. package/tests/hook-repair.test.mjs +0 -106
  632. package/tests/lifecycle-v15.test.mjs +0 -346
  633. package/tests/native-completion-notices.test.mjs +0 -181
  634. package/tests/orchestration-v15.test.mjs +0 -596
  635. package/tests/phase1.test.mjs +0 -427
  636. package/tests/phase2.test.mjs +0 -250
  637. package/tests/policy-v15.test.mjs +0 -234
  638. package/tests/ponytail-package.test.mjs +0 -75
  639. package/tests/returned-handoff-notices.test.mjs +0 -170
  640. package/tests/review-budget.test.mjs +0 -177
  641. package/tests/runtime-v15.test.mjs +0 -1198
  642. package/tests/session-budget.test.mjs +0 -34
  643. package/tests/task-slices.test.mjs +0 -285
  644. package/tests/uninstall.test.mjs +0 -477
  645. package/tests/unity-generated.test.mjs +0 -140
  646. package/tests/unity-transport.test.mjs +0 -348
  647. /package/{.claude/nccgs/packages → template}/ponytail/LICENSE +0 -0
  648. /package/{.claude/nccgs/packages → template}/ponytail/NOTICE.md +0 -0
  649. /package/{.claude/nccgs/packages → template}/ponytail/complexity-review.md +0 -0
  650. /package/{.claude/skills → unity-skills}/build-live-game/references/remote-config.md +0 -0
  651. /package/{.claude/skills → unity-skills}/implement-in-app-purchases/README.md +0 -0
  652. /package/{.claude/skills → unity-skills}/implement-in-app-purchases/references/codeless-catalog.md +0 -0
  653. /package/{.claude/skills → unity-skills}/implement-in-app-purchases/references/convert-adapty.md +0 -0
  654. /package/{.claude/skills → unity-skills}/implement-in-app-purchases/references/convert-essentialkit.md +0 -0
  655. /package/{.claude/skills → unity-skills}/implement-in-app-purchases/references/convert-revenuecat.md +0 -0
  656. /package/{.claude/skills → unity-skills}/implement-in-app-purchases/references/convert-unipay.md +0 -0
  657. /package/{.claude/skills → unity-skills}/implement-in-app-purchases/references/migration-v4-to-v5.md +0 -0
  658. /package/{.claude/skills → unity-skills}/implement-in-app-purchases/references/path-add-iap-to-new-project.md +0 -0
  659. /package/{.claude/skills → unity-skills}/implement-in-app-purchases/references/path-convert-native-storekit.md +0 -0
  660. /package/{.claude/skills → unity-skills}/implement-in-app-purchases/references/platform-notes.md +0 -0
  661. /package/{.claude/skills → unity-skills}/implement-in-app-purchases/references/pre-check.md +0 -0
  662. /package/{.claude/skills → unity-skills}/localization/resources/LocalizedFontAsset.cs +0 -0
  663. /package/{.claude/skills → unity-skills}/optimize-audio/resources/platform-settings.md +0 -0
  664. /package/{.claude/skills → unity-skills}/optimize-web/resources/WebOptimizer.cs +0 -0
  665. /package/{.claude/skills → unity-skills}/optimize-web/resources/toktx-examples.sh +0 -0
  666. /package/{.claude/skills → unity-skills}/physics-3d-collision/resources/CollisionDebugger.cs +0 -0
  667. /package/{.claude/skills → unity-skills}/setup-multiplayer-services/references/dgs-entrypoint.md +0 -0
  668. /package/{.claude/skills → unity-skills}/setup-multiplayer-services/references/entrypoints.md +0 -0
  669. /package/{.claude/skills → unity-skills}/setup-multiplayer-services/references/examples.md +0 -0
  670. /package/{.claude/skills → unity-skills}/setup-multiplayer-services/references/implementation-fit.md +0 -0
  671. /package/{.claude/skills → unity-skills}/setup-multiplayer-services/references/underlying-services.md +0 -0
  672. /package/{.claude/skills → unity-skills}/setup-multiplayer-services/references/workflows-prerequisites.md +0 -0
  673. /package/{.claude/skills → unity-skills}/setup-vivox-voice-chat/evals/.env.example +0 -0
  674. /package/{.claude/skills → unity-skills}/setup-vivox-voice-chat/evals/README.md +0 -0
  675. /package/{.claude/skills → unity-skills}/setup-vivox-voice-chat/evals/promptfooconfig.yaml +0 -0
  676. /package/{.claude/skills → unity-skills}/setup-vivox-voice-chat/evals/tests/init-and-login.yaml +0 -0
  677. /package/{.claude/skills → unity-skills}/setup-vivox-voice-chat/evals/tests/text-chat.yaml +0 -0
  678. /package/{.claude/skills → unity-skills}/setup-vivox-voice-chat/evals/tests/voice-channels.yaml +0 -0
  679. /package/{.claude/skills → unity-skills}/setup-vivox-voice-chat/references/events-and-participants.md +0 -0
  680. /package/{.claude/skills → unity-skills}/setup-vivox-voice-chat/references/init-and-login.md +0 -0
  681. /package/{.claude/skills → unity-skills}/setup-vivox-voice-chat/references/text-chat.md +0 -0
  682. /package/{.claude/skills → unity-skills}/setup-vivox-voice-chat/references/troubleshooting.md +0 -0
  683. /package/{.claude/skills → unity-skills}/setup-vivox-voice-chat/references/voice-channels.md +0 -0
  684. /package/{.claude/skills → unity-skills}/shader-graph-create-custom-node/resources/all_hints.hlsl +0 -0
  685. /package/{.claude/skills → unity-skills}/sprite-editor/references/api_reference.md +0 -0
  686. /package/{.claude/skills → unity-skills}/sprite-editor/references/background.md +0 -0
  687. /package/{.claude/skills → unity-skills}/sprite-editor/scripts/AutomaticSliceTexture.cs +0 -0
  688. /package/{.claude/skills → unity-skills}/sprite-editor/scripts/GenerateNewSpriteRects.cs +0 -0
  689. /package/{.claude/skills → unity-skills}/sprite-editor/scripts/GetTextureSourceImageSize.cs +0 -0
  690. /package/{.claude/skills → unity-skills}/sprite-editor/scripts/GetTextureToSlice.cs +0 -0
  691. /package/{.claude/skills → unity-skills}/sprite-editor/scripts/GridSliceTexture.cs +0 -0
  692. /package/{.claude/skills → unity-skills}/sprite-editor/scripts/IsometricSliceTexture.cs +0 -0
  693. /package/{.claude/skills → unity-skills}/sprite-editor/scripts/README.md +0 -0
  694. /package/{.claude/skills → unity-skills}/sprite-editor/scripts/SetPivotExample.cs +0 -0
  695. /package/{.claude/skills → unity-skills}/sprite-editor/scripts/SpriteToPng.cs +0 -0
  696. /package/{.claude/skills → unity-skills}/ui-imgui/references/gui-elements.md +0 -0
  697. /package/{.claude/skills → unity-skills}/ui-imgui/references/templates.md +0 -0
  698. /package/{.claude/skills → unity-skills}/ui-ugui/references/scrollview-setup.md +0 -0
  699. /package/{.claude/skills → unity-skills}/ui-uitk/references/common-issues.md +0 -0
  700. /package/{.claude/skills → unity-skills}/ui-uitk/references/painter2d.md +0 -0
  701. /package/{.claude/skills → unity-skills}/ui-uitk/references/pointermanipulator-guide.md +0 -0
  702. /package/{.claude/skills → unity-skills}/ui-uitk/references/svg-icons.md +0 -0
  703. /package/{.claude/skills → unity-skills}/ui-uitk/references/ui-runtime-binding.md +0 -0
  704. /package/{.claude/skills → unity-skills}/ui-uitk/references/uss-guide.md +0 -0
  705. /package/{.claude/skills → unity-skills}/urp-postprocessing/references/effect-reference.md +0 -0
@@ -0,0 +1,147 @@
1
+ # Custom Sprite Packing with ScriptablePacker
2
+
3
+ Guide for implementing custom sprite packing algorithms in SpriteAtlas V2.
4
+
5
+ ## Table of Contents
6
+
7
+ - [Overview](#overview)
8
+ - [Use Cases](#use-cases)
9
+ - [ScriptablePacker API](#scriptablepacker-api)
10
+ - [Abstract Methods](#abstract-methods)
11
+ - [PackerData Structure](#packerdata-structure)
12
+ - [SpriteData Structure](#spritedata-structure)
13
+ - [SpritePack Output Structure](#spritepack-output-structure)
14
+ - [TextureData Structure](#texturedata-structure)
15
+ - [PackTransform Options](#packtransform-options)
16
+ - [Example: Grid-Based Packer](#example-grid-based-packer)
17
+ - [Example: Multi-Page Packer](#example-multi-page-packer)
18
+ - [Example: Size-Optimized Packer](#example-size-optimized-packer)
19
+ - [Assigning Custom Packer to Atlas](#assigning-custom-packer-to-atlas)
20
+ - [Best Practices](#best-practices)
21
+ - [Performance](#performance)
22
+ - [Correctness](#correctness)
23
+ - [Maintainability](#maintainability)
24
+ - [Common Pitfalls](#common-pitfalls)
25
+ - [Debugging Tips](#debugging-tips)
26
+
27
+ ## Overview
28
+
29
+ `ScriptablePacker` is an abstract base class for creating custom packing algorithms. Extend it to implement specialized packing strategies beyond Unity's default algorithms.
30
+
31
+ **Namespace:** `UnityEditor.U2D`
32
+ **Location:** `SpriteAtlasAsset.bindings.cs`
33
+
34
+ ## Use Cases
35
+
36
+ Custom packers are useful for:
37
+ - Non-standard sprite arrangements (circular, grid-based, specific patterns)
38
+ - Multi-page atlas generation with custom page selection
39
+ - Sprite preprocessing and optimization before packing
40
+ - Platform-specific packing strategies
41
+ - Domain-specific packing requirements (UI layouts, sprite sheets)
42
+
43
+ ## ScriptablePacker API
44
+
45
+ ### Abstract Methods
46
+
47
+ See [resources/scriptablepacker.cs](../resources/scriptablepacker.cs).
48
+
49
+ ### PackerData Structure
50
+
51
+ Contains all input data for packing:
52
+
53
+ ```csharp
54
+ struct PackerData
55
+ {
56
+ NativeArray<Color32> colorData; // Pixel data from source textures
57
+ NativeArray<SpriteData> spriteData; // Sprite information
58
+ NativeArray<TextureData> textureData; // Texture dimensions
59
+ NativeArray<int> indexData; // Sprite mesh indices
60
+ NativeArray<Vector2> vertexData; // Sprite mesh vertices
61
+ }
62
+ ```
63
+
64
+ **Important:** Do NOT dispose these arrays - they're managed externally by Unity.
65
+
66
+ ### SpriteData Structure
67
+
68
+ Information about each sprite:
69
+
70
+ See [resources/spritedata.cs](../resources/spritedata.cs).
71
+
72
+ ### SpritePack Output Structure
73
+
74
+ Set this on each `SpriteData` to specify packing result:
75
+
76
+ See [resources/spritepack.cs](../resources/spritepack.cs).
77
+
78
+ ### TextureData Structure
79
+
80
+ Source texture information:
81
+
82
+ See [resources/texturedata.cs](../resources/texturedata.cs).
83
+
84
+ ### PackTransform Options
85
+
86
+ Sprite transformations during packing:
87
+
88
+ See [resources/packtransform.cs](../resources/packtransform.cs).
89
+
90
+ ## Example: Grid-Based Packer
91
+
92
+ Simple example that arranges sprites in a grid pattern.
93
+
94
+ See [resources/gridspritepacker.cs](../resources/gridspritepacker.cs).
95
+
96
+ ## Example: Multi-Page Packer
97
+
98
+ Distributes sprites across multiple atlas pages.
99
+
100
+ See [resources/multipagepacker.cs](../resources/multipagepacker.cs).
101
+
102
+ ## Example: Size-Optimized Packer
103
+
104
+ Packs larger sprites first for better space utilization.
105
+
106
+ See [resources/sizeoptimizedpacker.cs](../resources/sizeoptimizedpacker.cs).
107
+
108
+ ## Assigning Custom Packer to Atlas
109
+
110
+ Use `SpriteAtlasAsset.SetScriptablePacker()` to assign your custom packer.
111
+
112
+ See [resources/custompackersetup.cs](../resources/custompackersetup.cs).
113
+
114
+ ## Best Practices
115
+
116
+ ### Performance
117
+
118
+ 1. **Minimize array access**: Cache NativeArray values when accessing multiple times
119
+ 2. **Avoid allocations**: Don't create new arrays or collections in hot paths
120
+ 3. **Use simple algorithms**: Complex packing algorithms can slow down import times
121
+
122
+ ### Correctness
123
+
124
+ 1. **Don't dispose input arrays**: Unity manages these - don't dispose them
125
+ 2. **Validate output bounds**: Ensure sprites fit within atlas dimensions
126
+ 3. **Handle edge cases**: Empty sprite lists, oversized sprites, etc.
127
+ 4. **Return false on failure**: Let Unity know packing failed
128
+
129
+ ### Maintainability
130
+
131
+ 1. **Make packer configurable**: Add public properties for tweaking behavior
132
+ 2. **Add debug logging**: Log packing statistics and warnings
133
+ 3. **Document algorithm**: Explain packing strategy in comments
134
+ 4. **Test with various inputs**: Different sprite sizes, counts, and arrangements
135
+
136
+ ## Common Pitfalls
137
+
138
+ 1. **Disposing input arrays**: Unity manages these - don't dispose them
139
+ 2. **Forgetting to set `sprite.output`**: Each sprite needs output position
140
+ 3. **Exceeding atlas bounds**: Validate that packed sprites fit within max texture size
141
+ 4. **Not handling multi-page**: Set `sprite.output.page` correctly for multi-page atlases
142
+ 5. **Modifying read-only fields**: Some fields like texture dimensions are read-only
143
+ 6. **Forgetting to assign packer**: Use `SetScriptablePacker()` before saving atlas
144
+
145
+ ## Debugging Tips
146
+
147
+ See [resources/packerdebugging.cs](../resources/packerdebugging.cs).
@@ -0,0 +1,39 @@
1
+ # Manual Authoring (Advanced - Not Default)
2
+
3
+ > ⚠ **WARNING**: Manual authoring is NOT the default approach. Only use these patterns when the user EXPLICITLY requests manual control or editor preview during development.
4
+
5
+ > 🚨 **DEFAULT APPROACH**: Use prebuild generation with `IPreprocessBuildWithReport` instead. See the main SKILL.md Quick Start section.
6
+
7
+ ## When to Use Manual Authoring
8
+
9
+ **Manual authoring is appropriate ONLY for:**
10
+ - Hand-optimized sprite layouts where exact positioning matters
11
+ - Custom sprite ordering requirements
12
+ - Editor preview during authoring workflow
13
+ - Explicitly requested by user
14
+
15
+ **DO NOT use manual authoring when:**
16
+ - User asks to "create sprite atlas" (use prebuild)
17
+ - User asks to "optimize sprites" (use prebuild)
18
+ - User asks for automated workflow (use prebuild)
19
+ - No specific manual control requirement mentioned
20
+
21
+ ## Create and Configure Master Atlas (Manual Pattern)
22
+
23
+ > 🚨 **REMINDER**: Only use this if explicitly requested. Default is prebuild with `IPreprocessBuildWithReport`.
24
+
25
+ See [resources/createandconfiguremasteratlas.cs](../resources/createandconfiguremasteratlas.cs).
26
+
27
+ ## Create Variant Atlas (Manual Pattern)
28
+
29
+ > 🚨 **REMINDER**: Only use this if explicitly requested. Default is prebuild with `IPreprocessBuildWithReport`.
30
+
31
+ See [resources/variantatlas.cs](../resources/variantatlas.cs).
32
+
33
+ ## Runtime Dynamic Loading
34
+
35
+ See [resources/runtimeatlasloader.cs](../resources/runtimeatlasloader.cs).
36
+
37
+ ## Runtime Sprite Access
38
+
39
+ See [resources/runtimespriteaccess.cs](../resources/runtimespriteaccess.cs).
@@ -0,0 +1,176 @@
1
+ // [UNITY-SKILL:SPRITEATLAS]
2
+ using UnityEditor;
3
+ using UnityEditor.U2D;
4
+ using UnityEngine;
5
+ using UnityEngine.U2D;
6
+
7
+ /// <summary>
8
+ /// Explains the critical distinction between editor authoring and runtime access.
9
+ /// SpriteAtlasAsset (editor) vs SpriteAtlas (runtime) - never mix them!
10
+ /// </summary>
11
+ public static class AuthoringVsRuntimeDocumentation
12
+ {
13
+ /// <summary>
14
+ /// SPRITEATLASASSET - Editor-Only Type
15
+ /// Used for creating, modifying, and configuring atlases in the editor.
16
+ /// Cannot be used at runtime.
17
+ /// </summary>
18
+ public static void Use_SpriteAtlasAsset_Editor()
19
+ {
20
+ // ✅ CORRECT: Using SpriteAtlasAsset in editor code
21
+
22
+ // Create new atlas asset
23
+ SpriteAtlasAsset asset = new SpriteAtlasAsset();
24
+
25
+ // Add sprites for authoring
26
+ Object[] sprites = AssetDatabase.LoadAllAssetsAtPath("Assets/Sprites/mySprite.png");
27
+ asset.Add(sprites);
28
+
29
+ // Save to disk
30
+ SpriteAtlasAsset.Save(asset, "Assets/MyAtlas.spriteatlasv2");
31
+
32
+ // Configure via importer (editor-only)
33
+ AssetDatabase.ImportAsset("Assets/MyAtlas.spriteatlasv2");
34
+ SpriteAtlasImporter importer = AssetImporter.GetAtPath("Assets/MyAtlas.spriteatlasv2") as SpriteAtlasImporter;
35
+ importer.includeInBuild = true;
36
+ importer.SaveAndReimport();
37
+ }
38
+
39
+ /// <summary>
40
+ /// SPRITEATLAS - Runtime-Only Type
41
+ /// Used for querying packed sprites at runtime.
42
+ /// Cannot be created or modified in editor code.
43
+ /// </summary>
44
+ public static void Use_SpriteAtlas_Runtime()
45
+ {
46
+ // ✅ CORRECT: Using SpriteAtlas at runtime
47
+
48
+ // Register for late-binding to load atlases on-demand
49
+ SpriteAtlasManager.atlasRegistered += OnAtlasLoaded;
50
+ }
51
+
52
+ private static void OnAtlasLoaded(SpriteAtlas atlas)
53
+ {
54
+ // Query sprites from loaded atlas (runtime only)
55
+ Object[] packables = atlas.GetPackables();
56
+ // ... use sprites ...
57
+ }
58
+
59
+ /// <summary>
60
+ /// ❌ WRONG: Using SpriteAtlas in editor code.
61
+ /// SpriteAtlas is a runtime type and cannot be constructed in editor.
62
+ /// </summary>
63
+ public static void Wrong_UseSpriteAtlasInEditor()
64
+ {
65
+ // ❌ WRONG: Cannot construct SpriteAtlas in editor
66
+ // SpriteAtlas atlas = new SpriteAtlas(); // Compile error!
67
+
68
+ // ❌ WRONG: Cannot load SpriteAtlas in editor
69
+ // SpriteAtlas atlas = AssetDatabase.LoadAssetAtPath<SpriteAtlas>("path"); // Runtime error!
70
+ }
71
+
72
+ /// <summary>
73
+ /// ❌ WRONG: Using SpriteAtlasAsset at runtime.
74
+ /// SpriteAtlasAsset is an asset file, not a runtime object.
75
+ /// </summary>
76
+ public static void Wrong_UseSpriteAtlasAssetRuntime()
77
+ {
78
+ // ❌ WRONG: Cannot use SpriteAtlasAsset in runtime code
79
+ // SpriteAtlasAsset asset = someReference; // This is an editor type!
80
+ }
81
+
82
+ /// <summary>
83
+ /// ✅ CORRECT: Two-step V2 pattern for atlas creation.
84
+ /// Step 1: Create with SpriteAtlasAsset (editor)
85
+ /// Step 2: Use at runtime via SpriteAtlas
86
+ /// </summary>
87
+ public static void Correct_TwoStepPattern()
88
+ {
89
+ // ===== STEP 1: EDITOR AUTHORING (SpriteAtlasAsset) =====
90
+
91
+ // In editor script or prebuild processor:
92
+ SpriteAtlasAsset asset = new SpriteAtlasAsset();
93
+ asset.Add(AssetDatabase.LoadAllAssetsAtPath("Assets/Sprites/mySprite.png"));
94
+ SpriteAtlasAsset.Save(asset, "Assets/MyAtlas.spriteatlasv2");
95
+ AssetDatabase.ImportAsset("Assets/MyAtlas.spriteatlasv2");
96
+
97
+ // Configure via importer
98
+ SpriteAtlasImporter importer = AssetImporter.GetAtPath("Assets/MyAtlas.spriteatlasv2") as SpriteAtlasImporter;
99
+ importer.includeInBuild = true; // Include in build for immediate loading
100
+ importer.SaveAndReimport();
101
+
102
+ // ===== STEP 2: RUNTIME ACCESS (SpriteAtlas) =====
103
+
104
+ // In runtime script:
105
+ /*
106
+ public class MyRuntimeScript : MonoBehaviour
107
+ {
108
+ private void Awake()
109
+ {
110
+ // Register for late-binding if using Addressables
111
+ SpriteAtlasManager.atlasRegistrationNeeded += OnAtlasRegistrationNeeded;
112
+ }
113
+
114
+ private void OnAtlasRegistrationNeeded(Sprite sprite)
115
+ {
116
+ // Load atlas via Addressables/AssetBundles
117
+ // The loaded SpriteAtlas is what you query at runtime
118
+ }
119
+ }
120
+ */
121
+ }
122
+
123
+ /// <summary>
124
+ /// Summary table of when to use each type:
125
+ ///
126
+ /// | Context | Type | Purpose |
127
+ /// |--------------|-------------------|--------------------------------------|
128
+ /// | Editor | SpriteAtlasAsset | Create, modify, configure atlases |
129
+ /// | Editor | SpriteAtlasImporter | Set texture, packing, platform settings |
130
+ /// | Runtime | SpriteAtlas | Query packed sprites (read-only) |
131
+ /// | Runtime | SpriteAtlasManager| Dynamic loading callbacks |
132
+ /// </summary>
133
+ public static void Summary_Table()
134
+ {
135
+ /*
136
+ +------------------+-------------------+--------------------------------------+
137
+ | Context | Type | Purpose |
138
+ +------------------+-------------------+--------------------------------------+
139
+ | Editor | SpriteAtlasAsset | Create, modify, configure atlases |
140
+ | Editor | SpriteAtlasImporter | Set texture, packing, platform settings |
141
+ | Runtime | SpriteAtlas | Query packed sprites (read-only) |
142
+ | Runtime | SpriteAtlasManager| Dynamic loading callbacks |
143
+ +------------------+-------------------+--------------------------------------+
144
+ */
145
+ }
146
+ }
147
+
148
+ /// <summary>
149
+ /// Example: Editor script that creates an atlas using the correct types.
150
+ /// </summary>
151
+ public static class CorrectEditorScript
152
+ {
153
+ [MenuItem("Tools/Create Atlas")]
154
+ public static void CreateAtlas()
155
+ {
156
+ // Use SpriteAtlasAsset for editor authoring
157
+ SpriteAtlasAsset asset = new SpriteAtlasAsset();
158
+
159
+ // Add sprites from a folder
160
+ string[] guids = AssetDatabase.FindAssets("t:Sprite", new[] { "Assets/Sprites" });
161
+ Object[] sprites = new Object[guids.Length];
162
+ for (int i = 0; i < guids.Length; i++)
163
+ {
164
+ sprites[i] = AssetDatabase.LoadAssetAtPath<Sprite>(
165
+ AssetDatabase.GUIDToAssetPath(guids[i]));
166
+ }
167
+ asset.Add(sprites);
168
+
169
+ // Save and import
170
+ string path = "Assets/Atlases/MyAtlas.spriteatlasv2";
171
+ SpriteAtlasAsset.Save(asset, path);
172
+ AssetDatabase.ImportAsset(path);
173
+
174
+ Debug.Log($"Created atlas at {path}");
175
+ }
176
+ }
@@ -0,0 +1,59 @@
1
+ // [UNITY-SKILL:SPRITEATLAS]
2
+ // [TYPE:POSTPROCESS-ADDRESSABLES]
3
+ // Generated by SpriteAtlas V2 Skill
4
+ // This script builds Addressables content after atlas generation
5
+
6
+ using UnityEditor;
7
+ using UnityEditor.Build;
8
+ using UnityEditor.Build.Reporting;
9
+ using UnityEngine;
10
+
11
+ #if UNITY_ADDRESSABLES
12
+ using UnityEditor.AddressableAssets;
13
+ using UnityEditor.AddressableAssets.Settings;
14
+ using UnityEditor.AddressableAssets.Build;
15
+ #endif
16
+
17
+ /// <summary>
18
+ /// Builds Addressables content after atlas generation
19
+ /// This ensures atlases are available for on-demand loading
20
+ /// </summary>
21
+ public class BuildAddressablesPostprocess : IPostprocessBuildWithReport
22
+ {
23
+ public int callbackOrder => 1; // Run after atlas generation (callbackOrder 0)
24
+
25
+ public void OnPostprocessBuild(BuildReport report)
26
+ {
27
+ #if UNITY_ADDRESSABLES
28
+ Debug.Log("[Addressables] Building Addressables content...");
29
+
30
+ var settings = AddressableAssetSettingsDefaultObject.Settings;
31
+ if (settings == null)
32
+ {
33
+ Debug.LogError("[Addressables] Addressables settings not found. Cannot build addressables content.");
34
+ return;
35
+ }
36
+
37
+ try
38
+ {
39
+ // Build addressables content
40
+ AddressableAssetSettings.BuildPlayerContent(out AddressablesPlayerBuildResult result);
41
+
42
+ if (!string.IsNullOrEmpty(result.Error))
43
+ {
44
+ Debug.LogError($"[Addressables] Build failed: {result.Error}");
45
+ }
46
+ else
47
+ {
48
+ Debug.Log($"[Addressables] Build completed successfully. Duration: {result.Duration}");
49
+ }
50
+ }
51
+ catch (System.Exception ex)
52
+ {
53
+ Debug.LogError($"[Addressables] Build exception: {ex.Message}");
54
+ }
55
+ #else
56
+ Debug.LogWarning("[Addressables] Addressables package not installed. Skipping addressables build.");
57
+ #endif
58
+ }
59
+ }
@@ -0,0 +1,145 @@
1
+ // [UNITY-SKILL:SPRITEATLAS]
2
+ using UnityEngine;
3
+ using UnityEngine.U2D;
4
+ using System.Collections.Generic;
5
+
6
+ /// <summary>
7
+ /// Demonstrates caching loaded SpriteAtlases for efficient reuse.
8
+ /// Avoid reloading the same atlas multiple times by caching loaded instances.
9
+ /// </summary>
10
+ public class CacheLoadedAtlases : MonoBehaviour
11
+ {
12
+ /// <summary>Cached dictionary of loaded atlases</summary>
13
+ private readonly Dictionary<string, SpriteAtlas> _loadedAtlases = new Dictionary<string, SpriteAtlas>();
14
+
15
+ /// <summary>Reference to SpriteAtlasManager for loading</summary>
16
+ private SpriteAtlasManager _atlasManager;
17
+
18
+ private void Awake()
19
+ {
20
+ RegisterCallbacks();
21
+ }
22
+
23
+ private void OnDestroy()
24
+ {
25
+ UnregisterCallbacks();
26
+ ClearCache();
27
+ }
28
+
29
+ private void RegisterCallbacks()
30
+ {
31
+ SpriteAtlasManager.atlasRegistered += OnAtlasLoaded;
32
+ }
33
+
34
+ private void UnregisterCallbacks()
35
+ {
36
+ SpriteAtlasManager.atlasRegistered -= OnAtlasLoaded;
37
+ }
38
+
39
+ /// <summary>
40
+ /// Gets an atlas by name, loading it if not already cached.
41
+ /// Returns true if the atlas was found (cached or newly loaded).
42
+ /// </summary>
43
+ public bool GetAtlas(string atlasName, out SpriteAtlas atlas)
44
+ {
45
+ // Check cache first
46
+ if (_loadedAtlases.TryGetValue(atlasName, out atlas))
47
+ {
48
+ return true;
49
+ }
50
+
51
+ // Not cached - load it
52
+ return LoadAndCacheAtlas(atlasName);
53
+ }
54
+
55
+ /// <summary>
56
+ /// Loads an atlas and adds it to the cache.
57
+ /// </summary>
58
+ private bool LoadAndCacheAtlas(string atlasName)
59
+ {
60
+ // Example: Load from Resources (not recommended for production)
61
+ // SpriteAtlas atlas = Resources.Load<SpriteAtlas>($"Atlases/{atlasName}");
62
+
63
+ // For production, use Addressables or AssetBundle loading
64
+ // SpriteAtlas atlas = await Addressables.LoadAssetAsync<SpriteAtlas>($"Atlases/{atlasName}").Task;
65
+
66
+ Debug.Log($"Loading and caching atlas: {atlasName}");
67
+
68
+ // Placeholder - replace with actual loading logic
69
+ SpriteAtlas atlas = null; // Replace with actual loaded atlas
70
+
71
+ if (atlas != null)
72
+ {
73
+ _loadedAtlases[atlasName] = atlas;
74
+ return true;
75
+ }
76
+
77
+ return false;
78
+ }
79
+
80
+ /// <summary>
81
+ /// Gets a cached atlas without attempting to load it.
82
+ /// Returns false if not found in cache.
83
+ /// </summary>
84
+ public bool TryGetCachedAtlas(string atlasName, out SpriteAtlas atlas)
85
+ {
86
+ return _loadedAtlases.TryGetValue(atlasName, out atlas);
87
+ }
88
+
89
+ /// <summary>
90
+ /// Checks if an atlas is currently cached.
91
+ /// </summary>
92
+ public bool IsAtlasCached(string atlasName)
93
+ {
94
+ return _loadedAtlases.ContainsKey(atlasName);
95
+ }
96
+
97
+ /// <summary>
98
+ /// Removes an atlas from the cache without destroying it.
99
+ /// The atlas can still be used, but will need to be reloaded if requested again.
100
+ /// </summary>
101
+ public bool RemoveFromCache(string atlasName)
102
+ {
103
+ return _loadedAtlases.Remove(atlasName);
104
+ }
105
+
106
+ /// <summary>
107
+ /// Clears all cached atlases.
108
+ /// Use this when switching scenes or cleaning up.
109
+ /// </summary>
110
+ public void ClearCache()
111
+ {
112
+ _loadedAtlases.Clear();
113
+ Debug.Log("Atlas cache cleared");
114
+ }
115
+
116
+ /// <summary>
117
+ /// Gets the number of atlases currently in the cache.
118
+ /// </summary>
119
+ public int CachedAtlasCount => _loadedAtlases.Count;
120
+
121
+ /// <summary>
122
+ /// Logs all cached atlas names.
123
+ /// </summary>
124
+ public void LogCachedAtlases()
125
+ {
126
+ Debug.Log("Cached atlases:");
127
+ foreach (var kvp in _loadedAtlases)
128
+ {
129
+ Debug.Log($" - {kvp.Key}");
130
+ }
131
+ }
132
+
133
+ /// <summary>
134
+ /// Callback when an atlas is loaded by SpriteAtlasManager.
135
+ /// Adds the loaded atlas to our cache for future use.
136
+ /// </summary>
137
+ private void OnAtlasLoaded(SpriteAtlas atlas)
138
+ {
139
+ if (atlas != null && !_loadedAtlases.ContainsKey(atlas.name))
140
+ {
141
+ _loadedAtlases[atlas.name] = atlas;
142
+ Debug.Log($"Atlas cached: {atlas.name}");
143
+ }
144
+ }
145
+ }
@@ -0,0 +1,119 @@
1
+ // [UNITY-SKILL:SPRITEATLAS]
2
+ using UnityEditor;
3
+ using UnityEditor.U2D;
4
+ using UnityEngine;
5
+
6
+ /// <summary>
7
+ /// Demonstrates proper cleanup after batch operations on SpriteAtlases.
8
+ /// Always use try/finally blocks to ensure cleanup happens even on errors.
9
+ /// </summary>
10
+ public static class CleanupBatchOperationsExample
11
+ {
12
+ /// <summary>
13
+ /// Creates multiple atlases in a batch with proper cleanup.
14
+ /// Uses try/finally to ensure AssetDatabase.ImportAsset is called for each atlas.
15
+ /// </summary>
16
+ public static void BatchCreateAtlases()
17
+ {
18
+ var atlasConfigs = new[]
19
+ {
20
+ new { Folder = "Assets/Sprites/UI", Output = "Assets/Atlases/UI.spriteatlasv2" },
21
+ new { Folder = "Assets/Sprites/Characters", Output = "Assets/Atlases/Characters.spriteatlasv2" },
22
+ new { Folder = "Assets/Sprites/Items", Output = "Assets/Atlases/Items.spriteatlasv2" }
23
+ };
24
+
25
+ for (int i = 0; i < atlasConfigs.Length; i++)
26
+ {
27
+ try
28
+ {
29
+ CreateAtlasFromFolder(atlasConfigs[i].Folder, atlasConfigs[i].Output);
30
+ }
31
+ catch (System.Exception ex)
32
+ {
33
+ Debug.LogError($"Failed to create atlas {atlasConfigs[i].Output}: {ex.Message}");
34
+ }
35
+ }
36
+
37
+ // Final cleanup - refresh asset database
38
+ AssetDatabase.Refresh();
39
+ Debug.Log("Batch atlas creation completed");
40
+ }
41
+
42
+ /// <summary>
43
+ /// Creates an atlas from a folder and configures it.
44
+ /// </summary>
45
+ private static void CreateAtlasFromFolder(string folderPath, string outputPath)
46
+ {
47
+ // Find sprites in folder
48
+ string[] guids = AssetDatabase.FindAssets("t:Sprite", new[] { folderPath });
49
+
50
+ Object[] sprites = new Object[guids.Length];
51
+ for (int i = 0; i < guids.Length; i++)
52
+ {
53
+ sprites[i] = AssetDatabase.LoadAssetAtPath<Sprite>(
54
+ AssetDatabase.GUIDToAssetPath(guids[i])
55
+ );
56
+ }
57
+
58
+ // Create and save atlas
59
+ SpriteAtlasAsset atlasAsset = new SpriteAtlasAsset();
60
+ atlasAsset.Add(sprites);
61
+ SpriteAtlasAsset.Save(atlasAsset, outputPath);
62
+
63
+ // Import and configure via importer
64
+ AssetDatabase.ImportAsset(outputPath);
65
+
66
+ SpriteAtlasImporter importer = AssetImporter.GetAtPath(outputPath) as SpriteAtlasImporter;
67
+ if (importer != null)
68
+ {
69
+ importer.includeInBuild = true;
70
+ var packingSettings = importer.packingSettings;
71
+ packingSettings.enableTightPacking = true;
72
+ importer.packingSettings = packingSettings;
73
+ importer.SaveAndReimport();
74
+ }
75
+ }
76
+
77
+ /// <summary>
78
+ /// Processes multiple atlases with progress bar and proper cleanup.
79
+ /// </summary>
80
+ public static void ProcessAtlasesWithProgress(string[] atlasPaths)
81
+ {
82
+ for (int i = 0; i < atlasPaths.Length; i++)
83
+ {
84
+ string path = atlasPaths[i];
85
+ float progress = (float)i / atlasPaths.Length;
86
+
87
+ if (EditorUtility.DisplayCancelableProgressBar(
88
+ "Processing Atlases",
89
+ $"Processing: {path}",
90
+ progress))
91
+ {
92
+ break; // User cancelled
93
+ }
94
+
95
+ try
96
+ {
97
+ ProcessSingleAtlas(path);
98
+ }
99
+ finally
100
+ {
101
+ // Ensure progress bar is cleared even on error
102
+ EditorUtility.ClearProgressBar();
103
+ }
104
+ }
105
+ }
106
+
107
+ /// <summary>
108
+ /// Processes a single atlas.
109
+ /// </summary>
110
+ private static void ProcessSingleAtlas(string path)
111
+ {
112
+ SpriteAtlasImporter importer = AssetImporter.GetAtPath(path) as SpriteAtlasImporter;
113
+ if (importer != null)
114
+ {
115
+ // Reimport to update
116
+ importer.SaveAndReimport();
117
+ }
118
+ }
119
+ }