@aqian0/dsh-unity 0.0.0-stage → 0.1.0

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 (360) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/LICENSE-UNITY-COMPANION.md +122 -0
  3. package/LICENSE.md +31 -0
  4. package/NOTICE.md +90 -0
  5. package/README.md +273 -2
  6. package/cordis.patch.yml +22 -0
  7. package/docs/design.md +297 -0
  8. package/icon.svg +16 -0
  9. package/lib/frontmatter.js +392 -0
  10. package/lib/gating.js +105 -0
  11. package/lib/harness.js +16 -0
  12. package/lib/index.js +171 -0
  13. package/lib/project.js +210 -0
  14. package/lib/registry.js +268 -0
  15. package/lib/requirements.js +214 -0
  16. package/lib/skills.js +191 -0
  17. package/lib/types/frontmatter.d.ts +84 -0
  18. package/lib/types/gating.d.ts +80 -0
  19. package/lib/types/harness.d.ts +152 -0
  20. package/lib/types/index.d.ts +75 -0
  21. package/lib/types/project.d.ts +93 -0
  22. package/lib/types/registry.d.ts +96 -0
  23. package/lib/types/requirements.d.ts +67 -0
  24. package/lib/types/skills.d.ts +54 -0
  25. package/lib/types/watch.d.ts +34 -0
  26. package/lib/watch.js +84 -0
  27. package/locale/en.json +6 -0
  28. package/locale/zh.json +6 -0
  29. package/package.json +70 -4
  30. package/skills/2d-pixel-perfect/SKILL.md +208 -0
  31. package/skills/2d-pixel-perfect/references/api-reference.md +81 -0
  32. package/skills/2d-pixel-perfect/references/camera-setup-builtin.cs +40 -0
  33. package/skills/2d-pixel-perfect/references/camera-setup-urp.cs +49 -0
  34. package/skills/2d-pixel-perfect/references/pipeline-detection.cs +50 -0
  35. package/skills/2d-pixel-perfect/references/sprite-settings.cs +37 -0
  36. package/skills/asset-transformer-toolkit/SECURITY.md +15 -0
  37. package/skills/asset-transformer-toolkit/SKILL.md +39 -0
  38. package/skills/asset-transformer-toolkit/references/create-importer.md +121 -0
  39. package/skills/asset-transformer-toolkit/references/lods.md +61 -0
  40. package/skills/asset-transformer-toolkit/references/rule-api.md +154 -0
  41. package/skills/asset-transformer-toolkit/references/ruleblock-api.md +37 -0
  42. package/skills/asset-transformer-toolkit/references/ruleset-api.md +138 -0
  43. package/skills/asset-transformer-toolkit/references/rulesets-and-actions.md +227 -0
  44. package/skills/audio-setup-mixers/SECURITY.md +16 -0
  45. package/skills/audio-setup-mixers/SKILL.md +127 -0
  46. package/skills/audio-setup-mixers/references/api.md +162 -0
  47. package/skills/build-gtk/SECURITY.md +16 -0
  48. package/skills/build-gtk/SKILL.md +200 -0
  49. package/skills/build-gtk/references/api-reference.md +33 -0
  50. package/skills/build-gtk/references/graph-api-gaps.md +96 -0
  51. package/skills/build-gtk/references/runtime-and-visualization.md +191 -0
  52. package/skills/build-gtk/references/state-machine-api.md +270 -0
  53. package/skills/build-gtk/references/where-the-docs-stop.md +49 -0
  54. package/skills/build-live-game/SKILL.md +159 -0
  55. package/skills/build-live-game/references/achievements.md +757 -0
  56. package/skills/build-live-game/references/apis.md +271 -0
  57. package/skills/build-live-game/references/authentication.md +431 -0
  58. package/skills/build-live-game/references/battlepass.md +904 -0
  59. package/skills/build-live-game/references/blueprints-and-samples.md +75 -0
  60. package/skills/build-live-game/references/cloud-code-cloudbehaviours.md +1111 -0
  61. package/skills/build-live-game/references/cloud-code-modules.md +1276 -0
  62. package/skills/build-live-game/references/cloud-code.md +58 -0
  63. package/skills/build-live-game/references/cloud-save.md +464 -0
  64. package/skills/build-live-game/references/deployment.md +231 -0
  65. package/skills/build-live-game/references/orientation.md +30 -0
  66. package/skills/build-live-game/references/player-account.md +821 -0
  67. package/skills/build-live-game/references/remote-config.md +96 -0
  68. package/skills/build-live-game/references/services-overview.md +76 -0
  69. package/skills/build-live-game/references/tooling.md +375 -0
  70. package/skills/build-live-game/references/ugs-cli.md +86 -0
  71. package/skills/craft-game-floors/SECURITY.md +23 -0
  72. package/skills/craft-game-floors/SKILL.md +134 -0
  73. package/skills/craft-game-floors/references/art-direction.md +85 -0
  74. package/skills/craft-game-floors/references/camera-rigs.md +51 -0
  75. package/skills/craft-game-floors/references/character-motion.md +35 -0
  76. package/skills/craft-game-floors/references/game-audio.md +47 -0
  77. package/skills/craft-game-floors/references/game-feel.md +68 -0
  78. package/skills/craft-game-floors/references/game-shell.md +45 -0
  79. package/skills/craft-game-floors/references/live-floor.md +35 -0
  80. package/skills/craft-game-floors/references/placeholder-assets.md +35 -0
  81. package/skills/craft-game-floors/references/scene-lighting.md +52 -0
  82. package/skills/craft-game-floors/references/toon-shading.md +34 -0
  83. package/skills/craft-game-floors/references/vfx.md +40 -0
  84. package/skills/craft-game-floors/references/visual-scorecard.md +43 -0
  85. package/skills/create-2d-physics/SECURITY.md +16 -0
  86. package/skills/create-2d-physics/SKILL.md +128 -0
  87. package/skills/create-2d-physics/references/2d-physics-core.md +155 -0
  88. package/skills/create-2d-physics/references/legacy-2d-physics.md +45 -0
  89. package/skills/create-tile-palette-or-rule-tiles/SKILL.md +95 -0
  90. package/skills/create-tile-palette-or-rule-tiles/references/hexagonalruletile.md +71 -0
  91. package/skills/create-tile-palette-or-rule-tiles/references/palette-create.md +38 -0
  92. package/skills/create-tile-palette-or-rule-tiles/references/ruletile-createempty.md +37 -0
  93. package/skills/create-tile-palette-or-rule-tiles/references/ruletile-createfromsegment.md +219 -0
  94. package/skills/create-tile-palette-or-rule-tiles/references/ruletile.md +95 -0
  95. package/skills/create-tile-palette-or-rule-tiles/scripts/CreatePaletteTemplate.cs +148 -0
  96. package/skills/create-tile-palette-or-rule-tiles/scripts/ManualWorkflowExample.cs +63 -0
  97. package/skills/create-tile-palette-or-rule-tiles/scripts/RuleTileGenerator.cs +61 -0
  98. package/skills/create-tile-palette-or-rule-tiles/scripts/TilemapRuleTileCreateFromSegment.cs +225 -0
  99. package/skills/fix-3d-physics-collisions/SECURITY.md +17 -0
  100. package/skills/fix-3d-physics-collisions/SKILL.md +139 -0
  101. package/skills/fix-3d-physics-collisions/references/collision-checklist.md +80 -0
  102. package/skills/fix-3d-physics-collisions/references/collision-debugger.md +18 -0
  103. package/skills/fix-3d-physics-collisions/references/console-errors-table.md +9 -0
  104. package/skills/fix-3d-physics-collisions/references/kinematic-trigger-facts.md +18 -0
  105. package/skills/fix-3d-physics-collisions/references/other-symptoms.md +29 -0
  106. package/skills/fix-3d-physics-collisions/references/raycast-checklist.md +8 -0
  107. package/skills/fix-3d-physics-collisions/references/topic-map.md +42 -0
  108. package/skills/fix-3d-physics-collisions/references/trigger-checklist.md +9 -0
  109. package/skills/fix-3d-physics-collisions/scripts/CollisionDebugger.cs +561 -0
  110. package/skills/generate-editor-search-query/SECURITY.md +17 -0
  111. package/skills/generate-editor-search-query/SKILL.md +117 -0
  112. package/skills/generate-editor-search-query/references/open-search-window.md +70 -0
  113. package/skills/generate-editor-search-query/references/query-patterns.md +124 -0
  114. package/skills/implement-in-app-purchases/SKILL.md +82 -0
  115. package/skills/implement-in-app-purchases/references/api-details.md +41 -0
  116. package/skills/implement-in-app-purchases/references/api-notes.md +105 -0
  117. package/skills/implement-in-app-purchases/references/codeless-catalog.md +197 -0
  118. package/skills/implement-in-app-purchases/references/convert-adapty.md +270 -0
  119. package/skills/implement-in-app-purchases/references/convert-essentialkit.md +239 -0
  120. package/skills/implement-in-app-purchases/references/convert-revenuecat.md +277 -0
  121. package/skills/implement-in-app-purchases/references/convert-unipay.md +145 -0
  122. package/skills/implement-in-app-purchases/references/migration-v4-to-v5.md +46 -0
  123. package/skills/implement-in-app-purchases/references/path-add-iap-to-new-project.md +197 -0
  124. package/skills/implement-in-app-purchases/references/path-convert-native-google-billing.md +302 -0
  125. package/skills/implement-in-app-purchases/references/path-convert-native-storekit.md +357 -0
  126. package/skills/implement-in-app-purchases/references/path-implement-iap-d2c.md +253 -0
  127. package/skills/implement-in-app-purchases/references/platform-notes.md +55 -0
  128. package/skills/implement-in-app-purchases/references/pre-check.md +207 -0
  129. package/skills/implement-in-app-purchases/references/topic-map.md +46 -0
  130. package/skills/initialize-ai-navigation/SKILL.md +109 -0
  131. package/skills/initialize-ai-navigation/references/navigation-system.md +793 -0
  132. package/skills/initialize-ai-navigation/references/topic-map.md +66 -0
  133. package/skills/levelplay-unity-integration/SKILL.md +122 -0
  134. package/skills/levelplay-unity-integration/references/adding-more-ad-formats.md +15 -0
  135. package/skills/levelplay-unity-integration/references/banner-api.md +927 -0
  136. package/skills/levelplay-unity-integration/references/best-practices.md +604 -0
  137. package/skills/levelplay-unity-integration/references/dependency-resolution.md +94 -0
  138. package/skills/levelplay-unity-integration/references/examples.md +10 -0
  139. package/skills/levelplay-unity-integration/references/ilrd-api.md +337 -0
  140. package/skills/levelplay-unity-integration/references/initialization-api.md +851 -0
  141. package/skills/levelplay-unity-integration/references/interstitial-api.md +907 -0
  142. package/skills/levelplay-unity-integration/references/ios-setup.md +463 -0
  143. package/skills/levelplay-unity-integration/references/migration-sdk-9.md +666 -0
  144. package/skills/levelplay-unity-integration/references/privacy-settings.md +593 -0
  145. package/skills/levelplay-unity-integration/references/production-release-checklist.md +22 -0
  146. package/skills/levelplay-unity-integration/references/rewarded-api.md +918 -0
  147. package/skills/levelplay-unity-integration/references/step-0-new-or-migration.md +8 -0
  148. package/skills/levelplay-unity-integration/references/step-1-verify-environment.md +4 -0
  149. package/skills/levelplay-unity-integration/references/step-10-testing.md +15 -0
  150. package/skills/levelplay-unity-integration/references/step-2-business-goals.md +12 -0
  151. package/skills/levelplay-unity-integration/references/step-3-install-sdk.md +55 -0
  152. package/skills/levelplay-unity-integration/references/step-4-native-dependencies.md +22 -0
  153. package/skills/levelplay-unity-integration/references/step-5-app-key-and-ad-units.md +18 -0
  154. package/skills/levelplay-unity-integration/references/step-6-5-privacy-and-regulation.md +51 -0
  155. package/skills/levelplay-unity-integration/references/step-6-admob-keys.md +16 -0
  156. package/skills/levelplay-unity-integration/references/step-7-initialize.md +50 -0
  157. package/skills/levelplay-unity-integration/references/step-8-ad-unit-strategy.md +16 -0
  158. package/skills/levelplay-unity-integration/references/step-9-implement-ad-units.md +66 -0
  159. package/skills/levelplay-unity-integration/references/testing-and-validation.md +222 -0
  160. package/skills/levelplay-unity-integration/references/troubleshooting.md +99 -0
  161. package/skills/localize-unity-project/SKILL.md +159 -0
  162. package/skills/localize-unity-project/references/api-notes.md +15 -0
  163. package/skills/localize-unity-project/references/cjk-fonts.md +83 -0
  164. package/skills/localize-unity-project/references/docs-map.md +42 -0
  165. package/skills/localize-unity-project/references/documentation-lookup.md +33 -0
  166. package/skills/localize-unity-project/references/locale-switching.md +17 -0
  167. package/skills/localize-unity-project/references/table-completeness-check.md +47 -0
  168. package/skills/localize-unity-project/references/translating-existing-project.md +47 -0
  169. package/skills/localize-unity-project/references/translation-strategy.md +41 -0
  170. package/skills/localize-unity-project/references/troubleshooting.md +12 -0
  171. package/skills/localize-unity-project/scripts/L10nBatchProcessor.cs +191 -0
  172. package/skills/localize-unity-project/scripts/LocalizedFontAsset.cs +18 -0
  173. package/skills/manage-sprite-atlas/SKILL.md +202 -0
  174. package/skills/manage-sprite-atlas/references/addressables-delivery.md +58 -0
  175. package/skills/manage-sprite-atlas/references/advanced-manual-authoring.md +19 -0
  176. package/skills/manage-sprite-atlas/references/api.md +382 -0
  177. package/skills/manage-sprite-atlas/references/best-practices.md +183 -0
  178. package/skills/manage-sprite-atlas/references/common-errors.md +123 -0
  179. package/skills/manage-sprite-atlas/references/complete-workflow.md +61 -0
  180. package/skills/manage-sprite-atlas/references/custom-packing.md +147 -0
  181. package/skills/manage-sprite-atlas/references/delivery-mechanism.md +30 -0
  182. package/skills/manage-sprite-atlas/references/key-requirements.md +21 -0
  183. package/skills/manage-sprite-atlas/references/manual-authoring.md +39 -0
  184. package/skills/manage-sprite-atlas/references/namespaces.md +15 -0
  185. package/skills/manage-sprite-atlas/references/v2-architecture.md +21 -0
  186. package/skills/manage-sprite-atlas/resources/authoringvsruntime.cs +176 -0
  187. package/skills/manage-sprite-atlas/resources/buildaddressablespostprocess.cs +59 -0
  188. package/skills/manage-sprite-atlas/resources/cacheloadedatlases.cs +145 -0
  189. package/skills/manage-sprite-atlas/resources/cleanupbatchoperations.cs +119 -0
  190. package/skills/manage-sprite-atlas/resources/createandconfiguremasteratlas.cs +57 -0
  191. package/skills/manage-sprite-atlas/resources/custompackersetup.cs +88 -0
  192. package/skills/manage-sprite-atlas/resources/deprecatedmethods.cs +142 -0
  193. package/skills/manage-sprite-atlas/resources/dontmodifywithoutsaving.cs +120 -0
  194. package/skills/manage-sprite-atlas/resources/dontpackinruntimebuilds.cs +190 -0
  195. package/skills/manage-sprite-atlas/resources/dontscriptspriteatlasineditor.cs +114 -0
  196. package/skills/manage-sprite-atlas/resources/editorconfiguration.cs +95 -0
  197. package/skills/manage-sprite-atlas/resources/enablespritepacking.cs +172 -0
  198. package/skills/manage-sprite-atlas/resources/gridspritepacker.cs +50 -0
  199. package/skills/manage-sprite-atlas/resources/handlelatebinding.cs +147 -0
  200. package/skills/manage-sprite-atlas/resources/handlenullcases.cs +141 -0
  201. package/skills/manage-sprite-atlas/resources/migratev1tov2.cs +335 -0
  202. package/skills/manage-sprite-atlas/resources/multipagepacker.cs +80 -0
  203. package/skills/manage-sprite-atlas/resources/optimizetexturesettings.cs +191 -0
  204. package/skills/manage-sprite-atlas/resources/packerdebugging.cs +158 -0
  205. package/skills/manage-sprite-atlas/resources/packtransform.cs +51 -0
  206. package/skills/manage-sprite-atlas/resources/platformnames.cs +127 -0
  207. package/skills/manage-sprite-atlas/resources/queryspritesefficiently.cs +222 -0
  208. package/skills/manage-sprite-atlas/resources/registercallbacks.cs +152 -0
  209. package/skills/manage-sprite-atlas/resources/runtimeatlasloader.cs +15 -0
  210. package/skills/manage-sprite-atlas/resources/runtimespriteaccess.cs +19 -0
  211. package/skills/manage-sprite-atlas/resources/savespriteatlasasset.cs +107 -0
  212. package/skills/manage-sprite-atlas/resources/scriptablepacker.cs +81 -0
  213. package/skills/manage-sprite-atlas/resources/setincludeinbuild.cs +164 -0
  214. package/skills/manage-sprite-atlas/resources/sizeoptimizedpacker.cs +88 -0
  215. package/skills/manage-sprite-atlas/resources/spriteatlaslatebinding.cs +123 -0
  216. package/skills/manage-sprite-atlas/resources/spriteatlasprebuildgenerator.cs +219 -0
  217. package/skills/manage-sprite-atlas/resources/spritedata.cs +35 -0
  218. package/skills/manage-sprite-atlas/resources/spritepack.cs +39 -0
  219. package/skills/manage-sprite-atlas/resources/texturedata.cs +15 -0
  220. package/skills/manage-sprite-atlas/resources/updatebuildscripts.cs +357 -0
  221. package/skills/manage-sprite-atlas/resources/updatesettingsconfiguration.cs +135 -0
  222. package/skills/manage-sprite-atlas/resources/usevariantswisely.cs +179 -0
  223. package/skills/manage-sprite-atlas/resources/variantatlas.cs +39 -0
  224. package/skills/migrate-birp-to-urp/SECURITY.md +16 -0
  225. package/skills/migrate-birp-to-urp/SKILL.md +167 -0
  226. package/skills/migrate-birp-to-urp/references/capturing-the-editor.md +66 -0
  227. package/skills/migrate-birp-to-urp/references/complex-shader-situations.md +272 -0
  228. package/skills/migrate-birp-to-urp/references/conversion-and-rendering-triage.md +113 -0
  229. package/skills/migrate-birp-to-urp/references/custom-shader-triage.md +123 -0
  230. package/skills/migrate-birp-to-urp/references/implementation-patterns.md +529 -0
  231. package/skills/migrate-birp-to-urp/references/migration-workflow.md +265 -0
  232. package/skills/migrate-birp-to-urp/references/parity-validation-and-troubleshooting.md +114 -0
  233. package/skills/migrate-birp-to-urp/references/preflight-and-urp-setup.md +195 -0
  234. package/skills/migrate-birp-to-urp/references/quality-settings-map.md +69 -0
  235. package/skills/new-unity-project/SECURITY.md +26 -0
  236. package/skills/new-unity-project/SKILL.md +171 -0
  237. package/skills/new-unity-project/references/checklist.md +18 -0
  238. package/skills/new-unity-project/references/common-mistakes.md +15 -0
  239. package/skills/new-unity-project/references/skill-setup.md +66 -0
  240. package/skills/new-unity-project/references/step-1-concept.md +13 -0
  241. package/skills/new-unity-project/references/step-2-platforms-and-create.md +31 -0
  242. package/skills/new-unity-project/references/step-3-join-and-reconcile.md +16 -0
  243. package/skills/new-unity-project/references/step-4-source-control.md +9 -0
  244. package/skills/new-unity-project/references/step-5-packages.md +18 -0
  245. package/skills/new-unity-project/references/step-6-identity-and-floors.md +20 -0
  246. package/skills/new-unity-project/references/step-7-visual-baseline.md +75 -0
  247. package/skills/new-unity-project/references/step-8-first-commit.md +21 -0
  248. package/skills/new-unity-project/references/step-9-handoff.md +23 -0
  249. package/skills/optimize-audio/SECURITY.md +16 -0
  250. package/skills/optimize-audio/SKILL.md +120 -0
  251. package/skills/optimize-audio/references/diagnostics.md +42 -0
  252. package/skills/optimize-audio/references/troubleshooting.md +41 -0
  253. package/skills/optimize-audio/resources/audio-import-api.md +149 -0
  254. package/skills/optimize-audio/resources/platform-settings.md +48 -0
  255. package/skills/optimize-text-mesh-pro/SKILL.md +181 -0
  256. package/skills/optimize-text-mesh-pro/references/dynamic-atlas-and-profiling.md +28 -0
  257. package/skills/optimize-text-mesh-pro/references/topic-map.md +36 -0
  258. package/skills/optimize-web/SECURITY.md +16 -0
  259. package/skills/optimize-web/SKILL.md +157 -0
  260. package/skills/optimize-web/references/editor-csharp.md +120 -0
  261. package/skills/optimize-web/references/topic-map.md +49 -0
  262. package/skills/optimize-web/references/troubleshooting.md +45 -0
  263. package/skills/optimize-web/references/understand-request.md +19 -0
  264. package/skills/optimize-web/references/web-assets-quality.md +59 -0
  265. package/skills/optimize-web/references/web-player-settings.md +39 -0
  266. package/skills/optimize-web/references/web-profiling-memory.md +71 -0
  267. package/skills/optimize-web/scripts/WebOptimizer.cs +46 -0
  268. package/skills/optimize-web/scripts/toktx-examples.sh +11 -0
  269. package/skills/setup-multiplayer-services/SKILL.md +36 -0
  270. package/skills/setup-multiplayer-services/references/dgs-entrypoint.md +79 -0
  271. package/skills/setup-multiplayer-services/references/entrypoints.md +213 -0
  272. package/skills/setup-multiplayer-services/references/examples.md +33 -0
  273. package/skills/setup-multiplayer-services/references/implementation-fit.md +30 -0
  274. package/skills/setup-multiplayer-services/references/underlying-services.md +11 -0
  275. package/skills/setup-multiplayer-services/references/workflows-prerequisites.md +17 -0
  276. package/skills/setup-vivox-voice-chat/SECURITY.md +16 -0
  277. package/skills/setup-vivox-voice-chat/SKILL.md +166 -0
  278. package/skills/setup-vivox-voice-chat/references/api-reference-lookup.md +28 -0
  279. package/skills/setup-vivox-voice-chat/references/docs-topic-map.md +13 -0
  280. package/skills/setup-vivox-voice-chat/references/events-and-participants.md +79 -0
  281. package/skills/setup-vivox-voice-chat/references/init-and-login.md +92 -0
  282. package/skills/setup-vivox-voice-chat/references/text-chat.md +93 -0
  283. package/skills/setup-vivox-voice-chat/references/troubleshooting.md +47 -0
  284. package/skills/setup-vivox-voice-chat/references/voice-channels.md +92 -0
  285. package/skills/shader-graph-create-custom-node/SKILL.md +25 -0
  286. package/skills/shader-graph-create-custom-node/resources/all_hints.hlsl +182 -0
  287. package/skills/sprite-editor/SECURITY.md +16 -0
  288. package/skills/sprite-editor/SKILL.md +66 -0
  289. package/skills/sprite-editor/references/api_reference.md +151 -0
  290. package/skills/sprite-editor/references/background.md +112 -0
  291. package/skills/sprite-editor/references/templates.md +72 -0
  292. package/skills/sprite-editor/scripts/AutomaticSliceTexture.cs +40 -0
  293. package/skills/sprite-editor/scripts/GenerateNewSpriteRects.cs +200 -0
  294. package/skills/sprite-editor/scripts/GetTextureSourceImageSize.cs +32 -0
  295. package/skills/sprite-editor/scripts/GetTextureToSlice.cs +55 -0
  296. package/skills/sprite-editor/scripts/GridSliceTexture.cs +40 -0
  297. package/skills/sprite-editor/scripts/IsometricSliceTexture.cs +141 -0
  298. package/skills/sprite-editor/scripts/README.md +134 -0
  299. package/skills/sprite-editor/scripts/SetPivotExample.cs +58 -0
  300. package/skills/sprite-editor/scripts/SpriteToPng.cs +88 -0
  301. package/skills/sprite-segment-3x3grid/SKILL.md +177 -0
  302. package/skills/sprite-segment-3x3grid/references/topic-map.md +37 -0
  303. package/skills/sprite-segment-3x3grid/scripts/SpriteGridAnalysis.cs +119 -0
  304. package/skills/ui/SKILL.md +142 -0
  305. package/skills/ui-imgui/SKILL.md +180 -0
  306. package/skills/ui-imgui/references/gui-elements.md +156 -0
  307. package/skills/ui-imgui/references/templates.md +141 -0
  308. package/skills/ui-ugui/SKILL.md +217 -0
  309. package/skills/ui-ugui/references/layout-and-anchors.md +61 -0
  310. package/skills/ui-ugui/references/scrollview-setup.md +29 -0
  311. package/skills/ui-uitk/SKILL.md +229 -0
  312. package/skills/ui-uitk/references/common-issues.md +74 -0
  313. package/skills/ui-uitk/references/custom-elements.md +241 -0
  314. package/skills/ui-uitk/references/painter2d.md +282 -0
  315. package/skills/ui-uitk/references/pointermanipulator-guide.md +94 -0
  316. package/skills/ui-uitk/references/svg-icons.md +136 -0
  317. package/skills/ui-uitk/references/ui-runtime-binding.md +234 -0
  318. package/skills/ui-uitk/references/uss-guide.md +138 -0
  319. package/skills/unity-cli/CHANGELOG.md +524 -0
  320. package/skills/unity-cli/SECURITY.md +68 -0
  321. package/skills/unity-cli/SKILL.md +160 -0
  322. package/skills/unity-cli/references/auth-license-cloud.md +318 -0
  323. package/skills/unity-cli/references/bootstrap-project.md +177 -0
  324. package/skills/unity-cli/references/build-run-test.md +555 -0
  325. package/skills/unity-cli/references/catalog-plugins.md +86 -0
  326. package/skills/unity-cli/references/ci-recipes.md +76 -0
  327. package/skills/unity-cli/references/cloud-automation.md +819 -0
  328. package/skills/unity-cli/references/cloud-workflows.md +19 -0
  329. package/skills/unity-cli/references/collaboration.md +533 -0
  330. package/skills/unity-cli/references/config-hub.md +239 -0
  331. package/skills/unity-cli/references/diagnostics-maintenance.md +718 -0
  332. package/skills/unity-cli/references/docs-workflow.md +179 -0
  333. package/skills/unity-cli/references/editor-targeting.md +29 -0
  334. package/skills/unity-cli/references/editors-install.md +490 -0
  335. package/skills/unity-cli/references/environment-variables.md +42 -0
  336. package/skills/unity-cli/references/exit-codes.md +47 -0
  337. package/skills/unity-cli/references/global-flags.md +32 -0
  338. package/skills/unity-cli/references/integration-advanced.md +1130 -0
  339. package/skills/unity-cli/references/notes.md +20 -0
  340. package/skills/unity-cli/references/notifications.md +39 -0
  341. package/skills/unity-cli/references/playmode-verification-loop.md +279 -0
  342. package/skills/unity-cli/references/projects-templates.md +997 -0
  343. package/skills/unity-cli/references/scene-editing-preflight.md +25 -0
  344. package/skills/unity-cli/references/setup-and-help.md +54 -0
  345. package/skills/unity-cli/references/version-control.md +612 -0
  346. package/skills/unity-package-management/SKILL.md +169 -0
  347. package/skills/unity-package-management/references/discovering-packages.md +66 -0
  348. package/skills/unity-package-management/references/headless-run.md +31 -0
  349. package/skills/unity-package-management/references/installer-script.md +92 -0
  350. package/skills/unity-package-management/references/select-packages.md +126 -0
  351. package/skills/unity-pipeline/SECURITY.md +17 -0
  352. package/skills/unity-pipeline/SKILL.md +205 -0
  353. package/skills/unity-pipeline/references/csharp-eval.md +23 -0
  354. package/skills/unity-pipeline/references/multiplayer-play-mode.md +103 -0
  355. package/skills/urp-postprocessing/SECURITY.md +16 -0
  356. package/skills/urp-postprocessing/SKILL.md +188 -0
  357. package/skills/urp-postprocessing/references/code-templates.md +150 -0
  358. package/skills/urp-postprocessing/references/effect-reference.md +86 -0
  359. package/skills/validate-urp-render-graph-renderer-feature/SKILL.md +92 -0
  360. package/skills/validate-urp-render-graph-renderer-feature/references/validation-checklist.md +179 -0
@@ -0,0 +1,463 @@
1
+ # iOS-Specific Setup for LevelPlay
2
+
3
+ ## Contents
4
+ - [Overview](#overview)
5
+ - [Prerequisites](#prerequisites)
6
+ - [SKAdNetwork Configuration](#skadnetwork-configuration)
7
+ - [App Tracking Transparency (ATT)](#app-tracking-transparency-att)
8
+ - [Privacy Manifest](#privacy-manifest)
9
+ - [Xcode Build Settings](#xcode-build-settings)
10
+ - [Testing on iOS](#testing-on-ios)
11
+ - [Common iOS Issues](#common-ios-issues)
12
+ - [iOS Privacy Checklist](#ios-privacy-checklist)
13
+ - [Version-Specific Notes](#version-specific-notes)
14
+ - [Best Practices](#best-practices)
15
+
16
+ ## Overview
17
+
18
+ LevelPlay SDK on iOS requires additional configuration beyond the basic Unity integration. This guide covers iOS-specific setup, including SKAdNetwork, App Tracking Transparency (ATT), and privacy manifest requirements.
19
+
20
+ ## Prerequisites
21
+
22
+ For the current supported Unity, iOS deployment target, and Xcode versions, see the [LevelPlay iOS SDK integration guide](https://docs.unity.com/en-us/grow/levelplay/sdk/ios/sdk-integration).
23
+
24
+ ## SKAdNetwork Configuration
25
+
26
+ ### What is SKAdNetwork?
27
+
28
+ SKAdNetwork is Apple's privacy-preserving ad attribution framework. It allows advertisers to measure campaign effectiveness without accessing user-level data.
29
+
30
+ ### Setup Steps
31
+
32
+ LevelPlay SDK automatically includes the required SKAdNetwork IDs in your app's Info.plist during the build process. However, you should verify this after building:
33
+
34
+ 1. Build your Unity project for iOS
35
+ 2. Open the generated Xcode project
36
+ 3. Check `Info.plist` for the `SKAdNetworkItems` array
37
+ 4. Verify it contains multiple SKAdNetwork IDs (format: `XXXX1234abc.skadnetwork`)
38
+
39
+ **If SKAdNetwork IDs are missing:**
40
+
41
+ The LevelPlay Unity Package should handle this automatically. If you notice missing IDs:
42
+ - Ensure you're using the latest LevelPlay Unity Package version
43
+ - Check the Unity console for any import warnings
44
+ - Manually add the SKAdNetwork IDs if necessary (see Unity documentation)
45
+
46
+ ### Verifying SKAdNetwork Setup
47
+
48
+ After building to Xcode, you should see entries like this in Info.plist:
49
+
50
+ ```xml
51
+ <key>SKAdNetworkItems</key>
52
+ <array>
53
+ <dict>
54
+ <key>SKAdNetworkIdentifier</key>
55
+ <string>cstr6suwn9.skadnetwork</string>
56
+ </dict>
57
+ <dict>
58
+ <key>SKAdNetworkIdentifier</key>
59
+ <string>4fzdc2evr5.skadnetwork</string>
60
+ </dict>
61
+ <!-- Many more entries... -->
62
+ </array>
63
+ ```
64
+
65
+ ## App Tracking Transparency (ATT)
66
+
67
+ ### What is ATT?
68
+
69
+ Apple requires ATT authorization before your app tracks users or accesses the device's advertising identifier on iOS 14.5+. Request ATT authorization before calling `LevelPlay.Init()` — this is both an Apple platform requirement and necessary for personalized ads (which also affects fill rate).
70
+
71
+ ### Implementation
72
+
73
+ ATT requires two parts: a post-build script that writes the permission description string into `Info.plist`, and a native plugin that performs the actual permission request.
74
+
75
+ ### Part 1: Permission Description (Post-Build Script)
76
+
77
+ Apple requires a user-facing description explaining why your app requests tracking permission. Add it via a post-build script — this is the reliable approach across all Unity versions. The **User Tracking Usage Description** field in Player Settings is not present in Unity 6.
78
+
79
+ Create `Assets/Editor/iOSPostBuild.cs`:
80
+
81
+ ```csharp
82
+ using UnityEngine;
83
+ using UnityEditor;
84
+ using UnityEditor.Callbacks;
85
+
86
+ #if UNITY_IOS
87
+ using UnityEditor.iOS.Xcode;
88
+ using System.IO;
89
+ #endif
90
+
91
+ public class iOSPostBuild
92
+ {
93
+ #if UNITY_IOS
94
+ [PostProcessBuild(999)]
95
+ public static void OnPostProcessBuild(BuildTarget target, string buildPath)
96
+ {
97
+ if (target != BuildTarget.iOS) return;
98
+
99
+ var plistPath = Path.Combine(buildPath, "Info.plist");
100
+ var plist = new PlistDocument();
101
+ plist.ReadFromFile(plistPath);
102
+
103
+ // Required for ATT prompt — shown to users in the system dialog
104
+ plist.root.SetString(
105
+ "NSUserTrackingUsageDescription",
106
+ "We use tracking to show you relevant ads and support free gameplay."
107
+ );
108
+
109
+ plist.WriteToFile(plistPath);
110
+ Debug.Log("iOSPostBuild: NSUserTrackingUsageDescription added to Info.plist");
111
+ }
112
+ #endif
113
+ }
114
+ ```
115
+
116
+ **Customise the description** to match your app's purpose. Apple reviews this text and may reject vague descriptions.
117
+
118
+ ### Part 2: Native Plugin for the Permission Request
119
+
120
+ Create `Assets/Plugins/iOS/ATTRequester.mm`:
121
+
122
+ ```objc
123
+ #import <AppTrackingTransparency/AppTrackingTransparency.h>
124
+
125
+ typedef void (*ATTCallback)(int status);
126
+
127
+ extern "C"
128
+ {
129
+ // Returns current ATT status without prompting:
130
+ // 0 = Not Determined, 1 = Restricted, 2 = Denied, 3 = Authorized
131
+ int _ATT_GetStatus()
132
+ {
133
+ if (@available(iOS 14, *))
134
+ {
135
+ return (int)[ATTrackingManager trackingAuthorizationStatus];
136
+ }
137
+ return 3; // Pre-iOS 14: treat as Authorized
138
+ }
139
+
140
+ // Requests ATT permission and invokes callback with the resulting status.
141
+ // On pre-iOS 14 devices, immediately calls back with Authorized (3).
142
+ void _ATT_RequestPermission(ATTCallback callback)
143
+ {
144
+ if (@available(iOS 14, *))
145
+ {
146
+ [ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status)
147
+ {
148
+ dispatch_async(dispatch_get_main_queue(), ^{
149
+ if (callback) callback((int)status);
150
+ });
151
+ }];
152
+ }
153
+ else
154
+ {
155
+ if (callback) callback(3);
156
+ }
157
+ }
158
+ }
159
+ ```
160
+
161
+ **Note:** `dispatch_async(dispatch_get_main_queue(), ...)` returns the callback to Unity's main thread, which is required for safe IL2CPP interop.
162
+
163
+ ### Part 3: Integrating ATT into LevelPlayInitializer
164
+
165
+ ATT must complete before `LevelPlay.Init()`. Modify your `LevelPlayInitializer.cs` from Step 7 to use a coroutine `Start()`:
166
+
167
+ ```csharp
168
+ using System.Collections;
169
+ using System.Runtime.InteropServices;
170
+ using UnityEngine;
171
+ using Unity.Services.LevelPlay;
172
+
173
+ public class LevelPlayInitializer : MonoBehaviour
174
+ {
175
+ [SerializeField] private string appKey;
176
+
177
+ #if UNITY_IOS && !UNITY_EDITOR
178
+ private delegate void ATTCallbackDelegate(int status);
179
+
180
+ [DllImport("__Internal")] private static extern int _ATT_GetStatus();
181
+ [DllImport("__Internal")] private static extern void _ATT_RequestPermission(ATTCallbackDelegate callback);
182
+
183
+ private const int ATT_NOT_DETERMINED = 0;
184
+ private static bool _attDone = false;
185
+
186
+ [AOT.MonoPInvokeCallback(typeof(ATTCallbackDelegate))]
187
+ private static void OnATTCallback(int status)
188
+ {
189
+ Debug.Log($"ATT: user responded — status {status}");
190
+ _attDone = true;
191
+ }
192
+
193
+ private IEnumerator RequestATT()
194
+ {
195
+ // Skip prompt if user has already responded (e.g. returning user)
196
+ if (_ATT_GetStatus() != ATT_NOT_DETERMINED)
197
+ {
198
+ Debug.Log($"ATT: already determined (status {_ATT_GetStatus()})");
199
+ yield break;
200
+ }
201
+
202
+ _attDone = false;
203
+ _ATT_RequestPermission(OnATTCallback);
204
+ yield return new WaitUntil(() => _attDone);
205
+ }
206
+ #endif
207
+
208
+ void Awake()
209
+ {
210
+ DontDestroyOnLoad(gameObject);
211
+ }
212
+
213
+ IEnumerator Start()
214
+ {
215
+ #if UNITY_IOS && !UNITY_EDITOR
216
+ // Request ATT before initializing LevelPlay to maximise ad fill rate
217
+ yield return RequestATT();
218
+ #else
219
+ yield return null; // Editor / Android: skip ATT
220
+ #endif
221
+ InitializeLevelPlay();
222
+ }
223
+
224
+ private void InitializeLevelPlay()
225
+ {
226
+ // Add privacy settings here before Init (see Step 6.5)
227
+ LevelPlay.OnInitSuccess += OnInitSuccess;
228
+ LevelPlay.OnInitFailed += OnInitFailed;
229
+ LevelPlay.Init(appKey);
230
+ }
231
+
232
+ private void OnInitSuccess(LevelPlayConfiguration config)
233
+ {
234
+ Debug.Log("LevelPlay SDK initialized successfully");
235
+ }
236
+
237
+ private void OnInitFailed(LevelPlayInitError error)
238
+ {
239
+ Debug.LogError($"LevelPlay initialization failed: {error.ErrorMessage}");
240
+ }
241
+
242
+ void OnDestroy()
243
+ {
244
+ LevelPlay.OnInitSuccess -= OnInitSuccess;
245
+ LevelPlay.OnInitFailed -= OnInitFailed;
246
+ }
247
+ }
248
+ ```
249
+
250
+ **Key points:**
251
+ - `[AOT.MonoPInvokeCallback]` is required for IL2CPP builds — without it the native callback will crash on device
252
+ - `[DllImport("__Internal")]` binds to the native plugin functions
253
+ - `_ATT_GetStatus()` prevents re-prompting users who have already responded
254
+ - `IEnumerator Start()` with `WaitUntil(() => _attDone)` pauses until the user responds to the ATT dialog
255
+ - `#if UNITY_IOS && !UNITY_EDITOR` guards ensure ATT code only compiles for iOS device builds
256
+
257
+ ## Privacy Manifest
258
+
259
+ ### iOS 17+ Requirements
260
+
261
+ Apple requires apps to declare data types collected and the reasons for using certain APIs. LevelPlay SDK includes a privacy manifest, but you should be aware of what it declares.
262
+
263
+ ### What LevelPlay Declares
264
+
265
+ The LevelPlay SDK's privacy manifest typically declares:
266
+ - **Data Collection**: Device identifiers (IDFA), usage data, location (if used)
267
+ - **Required Reason APIs**: User defaults, file timestamp, system boot time, disk space
268
+ - **Tracking**: Yes (for personalized advertising)
269
+
270
+ ### Your App's Privacy Manifest
271
+
272
+ Ensure your app's privacy manifest (if you have one) aligns with LevelPlay's declarations:
273
+
274
+ 1. Check for `PrivacyInfo.xcprivacy` in your Xcode project
275
+ 2. Verify it includes LevelPlay's data types
276
+ 3. Update your App Store privacy declarations accordingly
277
+
278
+ ## Xcode Build Settings
279
+
280
+ ### Required iOS Capabilities
281
+
282
+ LevelPlay SDK requires certain capabilities to function properly:
283
+
284
+ 1. Open your Xcode project after building from Unity
285
+ 2. Select your target > **Signing & Capabilities**
286
+ 3. Verify these frameworks are included (LevelPlay should add them automatically):
287
+ - **AdSupport.framework**: For IDFA access
288
+ - **AppTrackingTransparency.framework**: For ATT (iOS 14+)
289
+ - **StoreKit.framework**: For SKAdNetwork
290
+
291
+ ### App Transport Security (ATS) Configuration
292
+
293
+ **No ATS configuration is needed. Leave App Transport Security at its iOS default.** With ATS on, the LevelPlay SDK tells the auction to return secure ads only, so ads load without any `Info.plist` changes.
294
+
295
+ **Do not add ATS exceptions for ads:**
296
+ - **Never set `NSAllowsArbitraryLoads` to `true`.** It turns off transport security for every connection the app makes, including its own backend and login traffic, not just ads, and App Review commonly rejects it without a justification. If the user asks for it, explain this and leave ATS at the default.
297
+ - **Don't set `NSAllowsArbitraryLoadsInWebContent` either.** On its own it makes the SDK request insecure ads, which iOS still blocks outside web views.
298
+ - **Don't add `NSExceptionDomains` entries for ad networks.** The SDK doesn't read them.
299
+
300
+ **Expected validation warning:** LevelPlay's integration validation reports "App Transport Security settings MISSING" when these keys are absent. That warning is expected with the default configuration. Don't resolve it by adding `NSAllowsArbitraryLoads`.
301
+
302
+ ### Recommended Xcode Build Settings
303
+
304
+ In Xcode, verify these settings:
305
+
306
+ - **Deployment Target**: see the [LevelPlay iOS SDK integration guide](https://docs.unity.com/en-us/grow/levelplay/sdk/ios/sdk-integration) for the currently supported minimum
307
+ - **Enable Bitcode**: No
308
+ - **Other Linker Flags**: Should include `-ObjC` (automatically added by Unity)
309
+
310
+ ## Testing on iOS
311
+
312
+ ### Test Device Setup
313
+
314
+ 1. Build and run on a physical iOS device (simulators have limitations)
315
+ 2. For ATT testing:
316
+ - Go to **Settings > Privacy & Security > Tracking**
317
+ - You can reset ATT prompt status by going to **Settings > General > Transfer or Reset iPhone > Reset > Reset Location & Privacy**
318
+
319
+ ### Integration Validation
320
+
321
+ After building to iOS:
322
+
323
+ ```csharp
324
+ void Start()
325
+ {
326
+ #if UNITY_IOS
327
+ LevelPlay.OnInitSuccess += OnInitSuccess;
328
+ LevelPlay.OnInitFailed += OnInitFailed;
329
+ LevelPlay.Init("YOUR_APP_KEY");
330
+ #endif
331
+ }
332
+
333
+ void OnInitSuccess(LevelPlayConfiguration config)
334
+ {
335
+ Debug.Log("LevelPlay initialized successfully on iOS");
336
+ }
337
+
338
+ void OnInitFailed(LevelPlayInitError error)
339
+ {
340
+ Debug.LogError($"LevelPlay init failed on iOS: {error.ErrorMessage}");
341
+ }
342
+ ```
343
+
344
+ Check the Xcode console for initialization output. Look for:
345
+ - ✅ "LevelPlay initialized successfully on iOS"
346
+ - ❌ Any initialization errors or warnings
347
+
348
+ ### Testing Ads on iOS
349
+
350
+ 1. **Test mode**: Enable test mode in your LevelPlay dashboard
351
+ 2. **Real ads**: Disable test mode and test with real ads (use low-value test account)
352
+ 3. **Different ATT states**: Test with:
353
+ - ATT granted (tracking allowed)
354
+ - ATT denied (tracking disallowed)
355
+ - ATT restricted (device-level restriction)
356
+
357
+ ## Common iOS Issues
358
+
359
+ ### Issue: ATT prompt not showing
360
+
361
+ **Causes:**
362
+ - Missing `NSUserTrackingUsageDescription` in Info.plist
363
+ - ATT already determined on device
364
+ - Testing on iOS Simulator (use real device)
365
+
366
+ **Solutions:**
367
+ - Verify `iOSPostBuild.cs` exists in `Assets/Editor/` and ran successfully (check console for "iOSPostBuild: NSUserTrackingUsageDescription added to Info.plist")
368
+ - Reset privacy settings on device: **Settings > General > Transfer or Reset iPhone > Reset > Reset Location & Privacy**
369
+ - Test on physical iOS device
370
+
371
+ ### Issue: Ads not loading after ATT denial
372
+
373
+ **This is expected behavior:**
374
+ - When users deny tracking, personalized ads are limited
375
+ - Non-personalized ads may still serve
376
+ - Revenue may be lower for users who deny tracking
377
+
378
+ **What to do:**
379
+ - Continue with LevelPlay initialization regardless of ATT response
380
+ - Don't block features if tracking is denied
381
+ - Comply with Apple's guidelines
382
+
383
+ ### Issue: SKAdNetwork IDs missing
384
+
385
+ **Causes:**
386
+ - Outdated LevelPlay package
387
+ - Custom build postprocessor conflict
388
+ - Manual Info.plist modifications
389
+
390
+ **Solutions:**
391
+ - Update to latest LevelPlay Unity Package
392
+ - Check for conflicting build scripts
393
+ - Let LevelPlay handle SKAdNetwork IDs automatically
394
+
395
+ ### Issue: App rejected for privacy reasons
396
+
397
+ **Common causes:**
398
+ - Missing privacy manifest declarations
399
+ - Incorrect ATT usage description
400
+ - Data collection not properly declared
401
+
402
+ **Solutions:**
403
+ - Review Apple's App Privacy Details guidelines
404
+ - Ensure ATT description is clear and user-friendly
405
+ - Declare all data types collected in App Store Connect
406
+ - Keep LevelPlay SDK updated (includes privacy manifest updates)
407
+
408
+ ## iOS Privacy Checklist
409
+
410
+ Before submitting to App Store:
411
+
412
+ - [ ] ATT prompt implemented: `ATTRequester.mm` in `Assets/Plugins/iOS/`, `iOSPostBuild.cs` in `Assets/Editor/`, `LevelPlayInitializer.cs` updated to `IEnumerator Start()`
413
+ - [ ] SKAdNetwork IDs included in Info.plist
414
+ - [ ] Privacy manifest present and accurate
415
+ - [ ] App Store privacy declarations filled out
416
+ - [ ] Data collection disclosed transparently
417
+ - [ ] Tested on real iOS devices
418
+ - [ ] Verified ads load and show correctly
419
+ - [ ] Tested both ATT granted and denied scenarios
420
+ - [ ] No tracking of users who denied ATT
421
+ - [ ] Compliant with Apple's advertising policies
422
+
423
+ ## Additional Resources
424
+
425
+ ### Apple Documentation
426
+ - [App Tracking Transparency Guide](https://developer.apple.com/documentation/apptrackingtransparency)
427
+ - [SKAdNetwork Documentation](https://developer.apple.com/documentation/storekit/skadnetwork)
428
+ - [User Privacy and Data Use](https://developer.apple.com/app-store/user-privacy-and-data-use/)
429
+
430
+ ### LevelPlay Documentation
431
+ - Refer to LevelPlay's Unity documentation for the latest iOS setup requirements
432
+ - Check for SDK update notes regarding iOS changes
433
+ - Review LevelPlay's privacy manifest documentation
434
+
435
+ ## Version-Specific Notes
436
+
437
+ ### iOS 14.5+
438
+ - ATT required for IDFA access
439
+ - Personalized ads limited without tracking permission
440
+
441
+ ### iOS 15+
442
+ - Custom product pages support
443
+ - App privacy report visible to users
444
+
445
+ ### iOS 16+
446
+ - Additional privacy enhancements
447
+ - More granular location privacy
448
+
449
+ ### iOS 17+
450
+ - Privacy manifest required
451
+ - Increased API usage disclosure requirements
452
+ - SDK transparency requirements
453
+
454
+ ## Best Practices
455
+
456
+ 1. **Request ATT at an appropriate time**: Not immediately on first launch, but before showing ads
457
+ 2. **Explain value to users**: Help users understand why you're requesting tracking
458
+ 3. **Respect user choice**: Never block app functionality if tracking is denied
459
+ 4. **Keep SDK updated**: Apple requirements change frequently
460
+ 5. **Test thoroughly**: Test on real devices with different iOS versions
461
+ 6. **Monitor metrics**: Track opt-in rates and ad performance post-iOS 14.5
462
+ 7. **Stay compliant**: Follow Apple's Human Interface Guidelines for ATT
463
+ 8. **Prepare for rejections**: Have documentation ready if Apple requests clarification