@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,96 @@
1
+ # Remote Config Reference
2
+
3
+ ## Table of Contents
4
+
5
+ - [Overview](#overview)
6
+ - [How It Works](#how-it-works)
7
+ - [FetchConfigsAsync API](#fetchconfigsasync-api)
8
+ - [.rc File Format](#rc-file-format)
9
+ - [Game Overrides](#game-overrides)
10
+ - [Common Patterns](#common-patterns)
11
+ - [Code Template -- Load JSON Config](#code-template--load-json-config)
12
+
13
+ ## Overview
14
+
15
+ Server-side game configuration. Store game definitions (achievement lists, battle pass tiers, shop catalogs) as JSON entries updatable without a client build. Accessed via `RemoteConfigService.Instance`.
16
+
17
+ - **Namespace:** `Unity.Services.RemoteConfig`
18
+ - **Package:** `com.unity.remote-config`
19
+
20
+ ## How It Works
21
+
22
+ - Configuration is stored as key-value entries in the Unity Dashboard or deployed via `.rc` files through the Deployment Window.
23
+ - The client fetches all config at once using `FetchConfigsAsync`.
24
+ - Values are strongly typed: `string`, `bool`, `int`, `float`, `long`, and `JSON`.
25
+
26
+ ## FetchConfigsAsync API
27
+
28
+ ```csharp
29
+ struct UserAttributes {}
30
+ struct AppAttributes {}
31
+ var result = await RemoteConfigService.Instance.FetchConfigsAsync(
32
+ new UserAttributes(), new AppAttributes());
33
+ // Access values:
34
+ string val = result.config.GetString("key");
35
+ int num = result.config.GetInt("key");
36
+ bool flag = result.config.GetBool("key");
37
+ // For JSON values:
38
+ var token = result.config["key"]; // JToken
39
+ var obj = token.ToObject<MyType>();
40
+ ```
41
+
42
+ - `UserAttributes` and `AppAttributes` are empty structs unless you use Game Overrides (audience targeting).
43
+ - Results are cached locally; subsequent calls return cached data unless you call with different attributes.
44
+
45
+ ## .rc File Format
46
+
47
+ ```json
48
+ {
49
+ "$schema": "https://ugs-config-schemas.unity3d.com/v1/remote-config.schema.json",
50
+ "entries": {
51
+ "my_string_key": "hello",
52
+ "my_int_key": 42,
53
+ "my_json_key": { "nested": true }
54
+ },
55
+ "types": {
56
+ "my_json_key": "JSON"
57
+ }
58
+ }
59
+ ```
60
+
61
+ - **Create via:** Right-click in Project window > Assets > Create > Services > Remote Config
62
+ - **Deploy via:** the Deployment Window (Services > Deployment)
63
+ - The `types` block is needed only for JSON entries; `string`, `int`, `bool`, `float`, and `long` are auto-detected.
64
+
65
+ ## Game Overrides
66
+
67
+ Game Overrides (via `com.unity.services.tooling`) override Remote Config values for specific player segments. Remote Config itself does not provide A/B testing -- Game Overrides layer on top of it.
68
+
69
+ - Game Overrides are defined as `.ugo` files.
70
+ - Used for A/B testing and audience targeting.
71
+ - Configured in the Unity Dashboard or deployed via `.ugo` files through the Deployment Window.
72
+ - When active, `FetchConfigsAsync` returns the overridden values automatically.
73
+
74
+ ## Common Patterns
75
+
76
+ - **Game definitions** (achievements, battle pass tiers) stored as JSON arrays under a single key.
77
+ - **Feature flags** stored as booleans for toggling game features server-side.
78
+ - **Version-specific config** with server-side updates -- change game balance without shipping a new client build.
79
+
80
+ ## Code Template -- Load JSON Config
81
+
82
+ ```csharp
83
+ using Unity.Services.RemoteConfig;
84
+ using Newtonsoft.Json.Linq;
85
+
86
+ struct UserAttributes {}
87
+ struct AppAttributes {}
88
+
89
+ async Task<List<T>> LoadJsonConfigAsync<T>(string key)
90
+ {
91
+ var result = await RemoteConfigService.Instance.FetchConfigsAsync(
92
+ new UserAttributes(), new AppAttributes());
93
+ var token = result.config[key];
94
+ return token.ToObject<List<T>>();
95
+ }
96
+ ```
@@ -0,0 +1,76 @@
1
+ # Core Services — Quick Reference
2
+
3
+ ## Authentication
4
+
5
+ **Package:** `com.unity.services.authentication` (>= 3.6.1)
6
+
7
+ Handles player identity; [How Authentication works](https://docs.unity.com/en-us/authentication/how-authentication-works.md) covers the sign-in methods. After sign-in `PlayerId` is available and the `SignedIn` event fires. `PlayerAccountService` (Unity browser sign-in) lives in a **separate assembly**: `Unity.Services.Authentication.PlayerAccounts`.
8
+
9
+ - **Full reference:** [references/authentication.md](authentication.md)
10
+
11
+ ## Cloud Code
12
+
13
+ **Package:** `com.unity.services.cloudcode` **`3.0.0`** for native `.ccmu` authoring (Unity 6000.5+); `>= 2.10.3` maintains legacy `.ccmr` modules. Before you author a `.ccmu`, bump a manifest that pins `2.10.x` to `3.0.0` or later.
14
+
15
+ Runs server-side C# modules (.NET 8; .NET 10 on Unity 6.7+) for trusted operations. Check the project's Editor version, then **author new modules as `.ccmu` on Unity 6000.5+**: create the module inside the Unity project with **Create > Services > Cloud Code Module Script**. Unity compiles it with the project and generates its client bindings at compile time. `.ccmr` is legacy: on 6000.5+ maintain existing ones only; on an older Editor, author new modules as `.ccmr`.
16
+ Call a `.ccmu` module from the client only through its generated bindings, never with `CallModuleEndpointAsync`. Use `CloudCodeService.Instance.CallModuleEndpointAsync` for legacy `.ccmr` modules only.
17
+ Write new JavaScript scripts only when the user asks for them; maintain existing ones.
18
+
19
+ - **Full reference:** [references/cloud-code-modules.md](cloud-code-modules.md)
20
+
21
+ **CloudBehaviours** (experimental) generate a module's client bindings — RPCs, synchronized state, push
22
+ events — from one C# class. Use them for shared match state, per-player secret state or a server-owned
23
+ timer; otherwise use a plain Cloud Code module. Requires `com.unity.services.cloudcode` `3.1.0-exp.1`+
24
+ and Unity 6000.5+. Check the installed package first: if CloudBehaviours are unavailable, use a plain
25
+ stateful module (`[StateScope]`, see the modules reference) instead of stopping, unless the user asks for
26
+ the experimental package.
27
+
28
+ - **Full reference:** [references/cloud-code-cloudbehaviours.md](cloud-code-cloudbehaviours.md)
29
+
30
+ ## Cloud Save
31
+
32
+ **Package:** `com.unity.services.cloudsave` (>= 3.4.0)
33
+
34
+ Per-player key-value storage in three access classes (Default, Public, Protected), plus game-wide Custom data. Protected and Custom data can be written only by server code, so store anti-cheat and server-awarded state there. See [Player Data](https://docs.unity.com/en-us/cloud-save/concepts/player-data.md) and [Game Data](https://docs.unity.com/en-us/cloud-save/concepts/game-data.md) for the read and write rules of each class.
35
+
36
+ - **Full reference:** [references/cloud-save.md](cloud-save.md)
37
+
38
+ ## Remote Config
39
+
40
+ **Package:** `com.unity.services.remote-config` (>= 4.2.5)
41
+
42
+ Server-side game configuration. Store game definitions (achievement lists, battle pass tiers, shop catalogs) as JSON entries updatable without a client build. Deployed via `.rc` files through the Deployment Window.
43
+
44
+ For A/B testing and audience targeting, use Game Overrides (`.ugo`) via the Tooling package.
45
+
46
+ - **Full reference:** [references/remote-config.md](remote-config.md)
47
+
48
+ ## Tooling
49
+
50
+ **Package:** `com.unity.services.tooling` (>= 1.4.1)
51
+
52
+ Editor-only package. Registers **Access Control** (`.ac`) and **Game Overrides** (`.ugo`) file types with the Deployment Window. Use Access Control to deny direct player writes to protected keys; Deny takes precedence over Allow.
53
+
54
+ - **Full reference:** [references/tooling.md](tooling.md)
55
+
56
+ ## Deployment
57
+
58
+ **Package:** `com.unity.services.deployment` (>= 1.7.2)
59
+
60
+ Editor-only package providing the **Deployment Window** (Services > Deployment). Deploys cloud resources to a target environment:
61
+
62
+ The Deployment Window deploys the cloud resource files: `.rc` (Remote Config), `.ac` (Access Control), `.ccmu` (in-project Cloud Code module, preferred), `.ccmr` (legacy module reference), `.lb` (Leaderboard) and `.ugo` (Game Overrides).
63
+
64
+ - **Full reference:** [references/deployment.md](deployment.md)
65
+
66
+ ## UGS CLI
67
+
68
+ The UGS CLI ships as a Unity CLI plugin, run as `unity ugs <command>`, to deploy and fetch cloud resources outside the Editor. Install, auth/setup and which file types it deploys: [references/ugs-cli.md](ugs-cli.md). Plugin system: the **unity-cli** skill.
69
+
70
+ ## Services APIs
71
+
72
+ **Package:** `com.unity.services.apis` (>= 1.1.1)
73
+
74
+ Auto-generated REST clients for all UGS services, in four client types (`IGameClient`, `IAdminClient`, `IServerClient`, `ITrustedClient`). Use the high-level package SDKs by default; use Services APIs only for admin API access or when no package SDK covers the call.
75
+
76
+ - **Full reference:** [references/apis.md](apis.md)
@@ -0,0 +1,375 @@
1
+ # Tooling Reference
2
+
3
+ ## Table of Contents
4
+
5
+ - [Overview](#overview)
6
+ - [Access Control](#access-control)
7
+ - [`.ac` File Format](#ac-file-format)
8
+ - [URN Pattern Format](#urn-pattern-format)
9
+ - [URN Reference by Service](#urn-reference-by-service)
10
+ - [Recommended Pattern: Deny-All-Then-Allow](#recommended-pattern-deny-all-then-allow)
11
+ - [Game Overrides](#game-overrides)
12
+ - [`.ugo` File Format](#ugo-file-format)
13
+ - [Editor API Models](#editor-api-models)
14
+
15
+ Editor-only package. Registers **Access Control** (`.ac`) and **Game Overrides** (`.ugo`) file types with the Deployment Window (`com.unity.services.deployment`).
16
+
17
+ - **Package:** `com.unity.services.tooling`
18
+ - **Namespace:** `Unity.Services.Tooling.Editor.AccessControl.Authoring.Core.Model` / `Unity.Services.Tooling.Editor.GameOverrides.Authoring.Core.Model`
19
+
20
+ ---
21
+
22
+ ## Overview
23
+
24
+ Tooling provides two cloud resource file types deployed through the Deployment Window:
25
+
26
+ | File Type | Extension | Purpose |
27
+ |---|---|---|
28
+ | Access Control | `.ac` | Permit or deny player/service-account access to UGS services on a URN basis |
29
+ | Game Overrides | `.ugo` | A/B testing and audience targeting by overriding Remote Config values for player segments |
30
+
31
+ Both file types are created via right-click in the Project window → **Create > Unity Gaming Services** and deployed via **Services > Deployment**.
32
+
33
+ ---
34
+
35
+ ## Access Control
36
+
37
+ Access Control policies permit or deny access to UGS services on a **URN basis**. Each statement targets a resource URN pattern and applies a `Read`, `Write`, or `*` action for a principal (`Player` or `ServiceAccount`). **Deny takes precedence over Allow.**
38
+
39
+ | Concept | Description |
40
+ |---|---|
41
+ | **Effect** | `"Allow"` or `"Deny"` — Deny takes precedence over Allow |
42
+ | **Action** | `"Read"`, `"Write"`, or `"*"` (both) |
43
+ | **Principal** | `"Player"` (end user) or `"ServiceAccount"` (server/admin) |
44
+ | **Resource** | URN pattern — `urn:ugs:<service>:/<path>` with `*` and `**` wildcards |
45
+
46
+ Common use cases:
47
+ - Deny direct player writes to Cloud Save (force writes through Cloud Code)
48
+ - Restrict Cloud Code module/script invocation to specific endpoints
49
+ - Deny player account deletion or identity unlinking
50
+
51
+ ### `.ac` File Format
52
+
53
+ **Create via:** Right-click in Project window → **Create > Unity Gaming Services > Access Control**
54
+
55
+ ```json
56
+ {
57
+ "$schema": "https://ugs-config-schemas.unity3d.com/v1/project-access-policy.schema.json",
58
+ "statements": [
59
+ {
60
+ "Sid": "DenyPlayerCloudSaveWrites",
61
+ "Effect": "Deny",
62
+ "Action": ["Write"],
63
+ "Principal": "Player",
64
+ "Resource": "urn:ugs:cloud-save:/**"
65
+ }
66
+ ]
67
+ }
68
+ ```
69
+
70
+ | Field | Type | Description |
71
+ |---|---|---|
72
+ | `Sid` | `string` | Unique statement ID within the file |
73
+ | `Effect` | `string` | `"Allow"` or `"Deny"` — Deny wins over Allow |
74
+ | `Action` | `string` or `string[]` | `"Read"`, `"Write"`, or `"*"` (both) |
75
+ | `Principal` | `string` or `string[]` | `"Player"` (end user) or `"ServiceAccount"` (server/admin) |
76
+ | `Resource` | `string` or `string[]` | URN pattern — `urn:ugs:<service>:/<path>` |
77
+
78
+ ### URN Pattern Format
79
+
80
+ ```
81
+ urn:ugs:<service>:/<path>
82
+ ```
83
+
84
+ - `*` matches a single path segment
85
+ - `**` matches zero or more path segments (including nested)
86
+ - `/**/` is commonly used to skip environment/version segments in the URL
87
+
88
+ ### URN Reference by Service
89
+
90
+ #### Authentication (`player-auth`)
91
+
92
+ | URN Pattern | Description |
93
+ |---|---|
94
+ | `urn:ugs:player-auth:/*/authentication/anonymous**` | Anonymous sign-up |
95
+ | `urn:ugs:player-auth:/*/authentication/external-token**` | External token sign-in (social, platform) |
96
+ | `urn:ugs:player-auth:/*/authentication/session-token**` | Session token sign-in |
97
+ | `urn:ugs:player-auth:/*/authentication/link/**` | Link external identity |
98
+ | `urn:ugs:player-auth:/*/authentication/unlink/**` | Unlink external identity |
99
+ | `urn:ugs:player-auth:/*/users**` | Player info (Read) / Delete player (Write) |
100
+ | `urn:ugs:player-auth:/.well-known/**` | JWKS public keys |
101
+
102
+ #### Cloud Save (`cloud-save`)
103
+
104
+ | URN Pattern | Description |
105
+ |---|---|
106
+ | `urn:ugs:cloud-save:/**` | All Cloud Save (blanket) |
107
+ | `urn:ugs:cloud-save:/**/players/*/keys**` | List player data keys |
108
+ | `urn:ugs:cloud-save:/**/players/*/items**` | Read/write player data items (own data only) |
109
+ | `urn:ugs:cloud-save:/**/players/*/item-batch**` | Batch write player data items |
110
+ | `urn:ugs:cloud-save:/**/players/query**` | Query Default player data |
111
+ | `urn:ugs:cloud-save:/**/players/*/public/keys**` | Read another player's public keys |
112
+ | `urn:ugs:cloud-save:/**/players/*/public/items**` | Read another player's public items |
113
+ | `urn:ugs:cloud-save:/**/players/public/query**` | Query Public player data |
114
+ | `urn:ugs:cloud-save:/**/custom/*/items**` | Read game-wide (Custom) data items |
115
+
116
+ #### Leaderboards (`leaderboards`)
117
+
118
+ | URN Pattern | Description |
119
+ |---|---|
120
+ | `urn:ugs:leaderboards:/**/leaderboards/**` | All leaderboard operations |
121
+
122
+ #### Cloud Code (`cloud-code`)
123
+
124
+ | URN Pattern | Description |
125
+ |---|---|
126
+ | `urn:ugs:cloud-code:/**/modules/**` | Cloud Code module endpoints |
127
+ | `urn:ugs:cloud-code:/**/scripts/**` | Cloud Code scripts (legacy JS) |
128
+ | `urn:ugs:cloud-code:/**/subscriptions/tokens/**` | Subscription tokens |
129
+
130
+ ### Recommended Pattern: Deny-All-Then-Allow
131
+
132
+ Start with a blanket deny, then explicitly allow only what the player needs. This ensures new services are locked down by default.
133
+
134
+ ```json
135
+ {
136
+ "$schema": "https://ugs-config-schemas.unity3d.com/v1/project-access-policy.schema.json",
137
+ "statements": [
138
+ {
139
+ "Sid": "Deny-all-ugs-access",
140
+ "Effect": "Deny",
141
+ "Action": ["*"],
142
+ "Principal": "Player",
143
+ "Resource": "urn:ugs:*:/**"
144
+ },
145
+ {
146
+ "Sid": "Allow-Anonymous-SignUp",
147
+ "Effect": "Allow",
148
+ "Action": ["Write"],
149
+ "Principal": "Player",
150
+ "Resource": "urn:ugs:player-auth:/*/authentication/anonymous**"
151
+ },
152
+ {
153
+ "Sid": "Allow-External-Token-SignIn",
154
+ "Effect": "Allow",
155
+ "Action": ["Write"],
156
+ "Principal": "Player",
157
+ "Resource": "urn:ugs:player-auth:/*/authentication/external-token**"
158
+ },
159
+ {
160
+ "Sid": "Allow-Session-Token-SignIn",
161
+ "Effect": "Allow",
162
+ "Action": ["Write"],
163
+ "Principal": "Player",
164
+ "Resource": "urn:ugs:player-auth:/*/authentication/session-token**"
165
+ },
166
+ {
167
+ "Sid": "Allow-Link-External-Id",
168
+ "Effect": "Allow",
169
+ "Action": ["Write"],
170
+ "Principal": "Player",
171
+ "Resource": "urn:ugs:player-auth:/*/authentication/link/**"
172
+ },
173
+ {
174
+ "Sid": "Allow-Get-PlayerInfo",
175
+ "Effect": "Allow",
176
+ "Action": ["Read"],
177
+ "Principal": "Player",
178
+ "Resource": "urn:ugs:player-auth:/*/users**"
179
+ },
180
+ {
181
+ "Sid": "Allow-Get-JWKS",
182
+ "Effect": "Allow",
183
+ "Action": ["Read"],
184
+ "Principal": "Player",
185
+ "Resource": "urn:ugs:player-auth:/.well-known/**"
186
+ },
187
+ {
188
+ "Sid": "Allow-Read-Leaderboards",
189
+ "Effect": "Allow",
190
+ "Action": ["Read"],
191
+ "Principal": "Player",
192
+ "Resource": "urn:ugs:leaderboards:/**/leaderboards/**"
193
+ },
194
+ {
195
+ "Sid": "Allow-Read-CloudSave-PlayerKeys",
196
+ "Effect": "Allow",
197
+ "Action": ["Read"],
198
+ "Principal": "Player",
199
+ "Resource": "urn:ugs:cloud-save:/**/players/*/keys**"
200
+ },
201
+ {
202
+ "Sid": "Allow-CloudSave-PlayerItems",
203
+ "Effect": "Allow",
204
+ "Action": ["*"],
205
+ "Principal": "Player",
206
+ "Resource": "urn:ugs:cloud-save:/**/players/*/items**"
207
+ },
208
+ {
209
+ "Sid": "Allow-CloudSave-PlayerItemBatch",
210
+ "Effect": "Allow",
211
+ "Action": ["Write"],
212
+ "Principal": "Player",
213
+ "Resource": "urn:ugs:cloud-save:/**/players/*/item-batch**"
214
+ },
215
+ {
216
+ "Sid": "Allow-Query-Default-PlayerData",
217
+ "Effect": "Allow",
218
+ "Action": ["Write"],
219
+ "Principal": "Player",
220
+ "Resource": "urn:ugs:cloud-save:/**/players/query**"
221
+ },
222
+ {
223
+ "Sid": "Allow-Read-Public-PlayerKeys",
224
+ "Effect": "Allow",
225
+ "Action": ["Read"],
226
+ "Principal": "Player",
227
+ "Resource": "urn:ugs:cloud-save:/**/players/*/public/keys**"
228
+ },
229
+ {
230
+ "Sid": "Allow-Read-Public-PlayerItems",
231
+ "Effect": "Allow",
232
+ "Action": ["Read"],
233
+ "Principal": "Player",
234
+ "Resource": "urn:ugs:cloud-save:/**/players/*/public/items**"
235
+ },
236
+ {
237
+ "Sid": "Allow-Query-Public-PlayerData",
238
+ "Effect": "Allow",
239
+ "Action": ["Write"],
240
+ "Principal": "Player",
241
+ "Resource": "urn:ugs:cloud-save:/**/players/public/query**"
242
+ },
243
+ {
244
+ "Sid": "Allow-Read-GameData",
245
+ "Effect": "Allow",
246
+ "Action": ["Read"],
247
+ "Principal": "Player",
248
+ "Resource": "urn:ugs:cloud-save:/**/custom/*/items**"
249
+ },
250
+ {
251
+ "Sid": "Allow-CloudCode-Modules",
252
+ "Effect": "Allow",
253
+ "Action": ["*"],
254
+ "Principal": "Player",
255
+ "Resource": "urn:ugs:cloud-code:/**/modules/**"
256
+ },
257
+ {
258
+ "Sid": "Allow-CloudCode-Scripts",
259
+ "Effect": "Allow",
260
+ "Action": ["*"],
261
+ "Principal": "Player",
262
+ "Resource": "urn:ugs:cloud-code:/**/scripts/**"
263
+ },
264
+ {
265
+ "Sid": "Allow-Subscription-Tokens",
266
+ "Effect": "Allow",
267
+ "Action": ["*"],
268
+ "Principal": "Player",
269
+ "Resource": "urn:ugs:cloud-code:/**/subscriptions/tokens/**"
270
+ }
271
+ ]
272
+ }
273
+ ```
274
+
275
+ This policy:
276
+ - **Denies** all UGS access by default
277
+ - **Allows** authentication (anonymous, external, session token sign-in; link external ID; read player info)
278
+ - **Denies** identity unlinking and player deletion (inherited from blanket deny)
279
+ - **Allows** leaderboard reads
280
+ - **Allows** Cloud Save player data reads/writes for own data (Default items), public data reads, game-wide data reads
281
+ - **Denies** Cloud Save blanket writes (Protected data only writable via Cloud Code)
282
+ - **Allows** Cloud Code module, script, and subscription token access
283
+
284
+ ---
285
+
286
+ ## Game Overrides
287
+
288
+ Game Overrides are the A/B testing and audience targeting mechanism for UGS. They override **Remote Config** values for specific player segments (audiences). Remote Config itself does not provide A/B testing — Game Overrides layer on top of it.
289
+
290
+ Use cases:
291
+ - A/B test different XP multipliers for player segments
292
+ - Roll out features gradually to targeted audiences
293
+ - Run time-limited promotions with different reward values
294
+
295
+ ### `.ugo` File Format
296
+
297
+ **Create via:** Right-click in Project window → **Create > Unity Gaming Services > Game Override**
298
+
299
+ ```json
300
+ {
301
+ "GameOverrides": [
302
+ {
303
+ "id": "double-xp-weekend",
304
+ "name": "Double XP Weekend",
305
+ "enabled": true,
306
+ "audiences": ["high_engagement_players"],
307
+ "overrides": [
308
+ {
309
+ "key": "xp_multiplier",
310
+ "value": 2.0
311
+ }
312
+ ]
313
+ }
314
+ ]
315
+ }
316
+ ```
317
+
318
+ | Field | Type | Description |
319
+ |---|---|---|
320
+ | `id` | `string` | Unique override ID |
321
+ | `name` | `string` | Human-readable name |
322
+ | `enabled` | `bool` | Whether this override is active |
323
+ | `audiences` | `string[]` | Segment IDs from Unity Segmentation |
324
+ | `overrides[].key` | `string` | Remote Config key to override |
325
+ | `overrides[].value` | `any` | Replacement value |
326
+
327
+ ---
328
+
329
+ ## Editor API Models
330
+
331
+ ### Access Control
332
+
333
+ ```csharp
334
+ namespace Unity.Services.Tooling.Editor.AccessControl.Authoring.Core.Model
335
+ {
336
+ interface IProjectAccessFile
337
+ {
338
+ string Path { get; }
339
+ string Name { get; }
340
+ List<IAccessControlStatement> Statements { get; }
341
+ }
342
+
343
+ interface IAccessControlStatement
344
+ {
345
+ string Sid { get; } // Statement ID — unique within the file
346
+ string Effect { get; } // "Allow" or "Deny" — Deny takes precedence
347
+ List<string> Action { get; } // "Read", "Write", or "*" (both)
348
+ List<string> Principal { get; } // "Player" or "ServiceAccount"
349
+ List<string> Resource { get; } // URN pattern(s) the rule applies to
350
+ }
351
+ }
352
+ ```
353
+
354
+ ### Game Overrides
355
+
356
+ ```csharp
357
+ namespace Unity.Services.Tooling.Editor.GameOverrides.Authoring.Core.Model
358
+ {
359
+ interface IGameOverride
360
+ {
361
+ string Id { get; }
362
+ string Name { get; }
363
+ bool Enabled { get; }
364
+ List<string> Audiences { get; }
365
+ List<OverrideConfig> Overrides { get; }
366
+ }
367
+
368
+ class GameOverridesConfigFile
369
+ {
370
+ public List<IGameOverride> GameOverrides { get; }
371
+ }
372
+ }
373
+ ```
374
+
375
+ Both file types are discovered automatically by the Deployment Window when `com.unity.services.deployment` is installed.
@@ -0,0 +1,86 @@
1
+ # UGS CLI Reference
2
+
3
+ ## Table of Contents
4
+
5
+ - [Overview](#overview)
6
+ - [Install and Update](#install-and-update)
7
+ - [If the Unity CLI Itself Is Missing](#if-the-unity-cli-itself-is-missing)
8
+ - [Auth and Project Setup](#auth-and-project-setup)
9
+ - [Running Commands](#running-commands)
10
+ - [Headless Deploy by File Type](#headless-deploy-by-file-type)
11
+ - [Credentials and Environment](#credentials-and-environment)
12
+
13
+ ## Overview
14
+
15
+ The [Unity Gaming Services CLI](https://github.com/Unity-Technologies/unity-gaming-services-cli/) manages UGS resources outside the Unity Editor: deploy and fetch cloud resource files, manage triggers and schedules, and reach admin functionality across all UGS services. Every command in this reference is invoked as `unity ugs <command>` — there is no standalone `ugs` form.
16
+
17
+ ## Install and Update
18
+
19
+ **It ships as a Unity CLI plugin**, so install and update it through the Unity CLI rather than downloading it separately. Before running any `unity ugs` command, confirm the plugin is installed and install it if it's missing:
20
+
21
+ ```bash
22
+ unity plugin list # every component, its state, and where it resolved from — check ugs is "resolved"
23
+ unity plugin install ugs # install the managed copy, if missing
24
+ unity plugin upgrade ugs # re-install when the pinned build changes
25
+ ```
26
+
27
+ If `unity plugin list` shows `ugs` resolved from `path` rather than `managed`, a UGS CLI already on PATH is used instead of the plugin, and may be an older version without the features above (e.g. Hub sign-in needs 2.0.0+). Check `unity ugs --version`; remove the other install or upgrade it.
28
+
29
+ For the plugin system itself (what a managed tool is, `unity plugin remove` / `changelog`), see the **unity-cli** skill.
30
+
31
+ ## If the Unity CLI Itself Is Missing
32
+
33
+ If `unity` is not on PATH at all, `unity plugin install ugs` can't run. Don't stop at a raw "command not found" — tell the user to install the Unity CLI first, following the **unity-cli** skill's own install instructions (its own `--help`/docs are the source of truth for the current install command).
34
+
35
+ ## Auth and Project Setup
36
+
37
+ Before any `unity ugs` command that talks to the backend, the CLI needs credentials and a target project/environment:
38
+
39
+ ```bash
40
+ unity ugs config set project-id <project-id>
41
+ unity ugs config set environment-name <environment-name>
42
+ ```
43
+
44
+ **Developer sign-in — Unity Hub (requires UGS CLI 2.0.0+):** with Unity Hub running and signed in, either run `unity ugs login` with its Hub option (see `unity ugs login --help`) to persist Hub auth, or set `UGS_CLI_USE_HUB_AUTH=true` (also accepts `1`/`yes`/`y`/`t`) to use it for one invocation without logging in — it takes priority over any saved `unity ugs login` and the service-account env vars below for that call. Hub sign-in reads the currently-running Hub's session over its local IPC socket (`/tmp/Unity-hubIPCService.sock` on macOS/Linux, a named pipe on Windows), not a file or keychain, so Hub has to actually be running and signed in on the machine the CLI runs on. The CLI prints bare `ugs` in its messages; run the equivalent as `unity ugs logout` then `unity ugs login`. Hub sign-in failures:
45
+
46
+ | Error string | Cause | Fix |
47
+ | :-- | :-- | :-- |
48
+ | ``Unity Hub is not running. Start Hub or run `ugs logout` then `ugs login` to switch to service account authentication.`` | Hub is not running on this machine | Start Hub and sign in, or switch to a service account |
49
+ | ``Unity Hub user is not signed in. Sign in through Unity Hub or run `ugs logout` then `ugs login` to switch to service account authentication.`` | Hub is running but nobody is signed in | Sign in through Hub, or switch to a service account |
50
+
51
+ Run `unity ugs --version` first — v1.9.0 predates Hub auth; `unity plugin upgrade ugs` if it reports lower than 2.0.0. Note `unity ugs status` does **not** reflect `UGS_CLI_USE_HUB_AUTH` — it only detects a persisted Hub login, so it can still report "no credentials" while a command using the env var succeeds.
52
+
53
+ **Service account — CI / headless:**
54
+
55
+ ```bash
56
+ unity ugs login --service-key-id <id> --secret-key-stdin # prompts for the secret key on stdin
57
+ # or set UGS_CLI_SERVICE_KEY_ID / UGS_CLI_SERVICE_SECRET_KEY instead of logging in
58
+ ```
59
+
60
+ `unity ugs status` reports whether a service account is currently stored. Run `unity ugs login --help` / `unity ugs config --help` to confirm flags against the installed CLI version before relying on this from memory.
61
+
62
+ ## Running Commands
63
+
64
+ Invoke it as `unity ugs <command>`:
65
+
66
+ ```bash
67
+ unity ugs login # or UGS_CLI_SERVICE_KEY_ID / UGS_CLI_SERVICE_SECRET_KEY
68
+ unity ugs deploy . --dry-run
69
+ unity ugs fetch . -s remote-config -e production
70
+ ```
71
+
72
+ ## Headless Deploy by File Type
73
+
74
+ `unity ugs deploy` picks files up by extension and silently skips the rest. A skipped file does not show up in the result at all, so a dry run that lists nothing means nothing was recognised.
75
+
76
+ | Resource | Headless path |
77
+ |---|---|
78
+ | `.ccmu` (native C# module) | **Not the UGS CLI** — `unity ugs deploy` skips `.ccmu`. The Editor compiles the module and deploys it: the Deployment Window, or headlessly the `Deploy.cs` template in `references/deployment.md`. |
79
+ | `.ccmr` (legacy module) | `unity ugs deploy` skips the `.ccmr` itself — pass the `.sln` it points at: `unity ugs deploy Module~/Module.sln`. The CLI runs `dotnet publish` (needs a .NET SDK on PATH). The Deployment Window deploys the `.ccmr` directly. |
80
+ | `.ccm` (packaged module) | `unity ugs deploy <file>.ccm` |
81
+ | `.rc`, `.ac`, `.lb`, `.js`, `.tr`, `.sched` | `unity ugs deploy <paths>` and `unity ugs fetch <path>`, or the Deployment Window. `--dry-run` first; `--reconcile` deletes remote content not in the deploy. `unity ugs tr new-file <name>` / `unity ugs sched new-file <name>` generate a default trigger / schedule config. |
82
+ | `.ugo` (Game Overrides) | **Not the UGS CLI** — `unity ugs deploy` skips `.ugo`. Deploy through the Deployment Window, or headlessly the `Deploy.cs` template in `references/deployment.md`. |
83
+
84
+ ## Credentials and Environment
85
+
86
+ `unity ugs deploy`/`fetch` authenticate using whichever CLI credential is active — a service account (`unity ugs login` or its env vars) or, from 2.0.0+, Unity Hub sign-in (see [Auth and Project Setup](#auth-and-project-setup)) — never as the signed-in Editor user, and take the environment as an argument (`-e <name>`). An Editor deploy uses the Editor's own credentials and the project's *active* environment — except that while the local Cloud Code server runs, a Cloud Code module deploy goes to that server instead. Stop the local server before deploying a module remotely.
@@ -0,0 +1,23 @@
1
+ # Security notes: craft-game-floors
2
+
3
+ This skill has the agent run C# inside the user's open Unity Editor (applying the craft floors:
4
+ materials, lighting, UI, audio, captures) and, for the live floor, wire Unity Gaming Services
5
+ calls in the user's own project. Automated skill scanners flag these as powerful capabilities.
6
+ They are intentional, and limited by the safeguards below.
7
+
8
+ ## Accepted risks
9
+
10
+ | Risk | Capability | Why it is accepted |
11
+ |---|---|---|
12
+ | `SEC_POWER_CAP` | Runs C# in the user's open Editor | It only reaches the Editor the user already has open, on their own machine, as that user, behind the Pipeline capability gate. No code fetched from a remote source is run — the agent runs C# written from this skill's own references, which also require a restore point before project changes. |
13
+ | `SEC_CLOUD` | Wires Cloud Save / Leaderboards / Remote Config client calls (the live floor) | Only against the project's own cloud id, only when a live identity probe succeeds, and declining any floor is one word. Provisioning that needs credentials or the Editor UI is named as a human step, never automated. |
14
+
15
+ ## Mitigations
16
+
17
+ - **Restore point first.** The skill requires a rollback point (a clean commit, or one it creates)
18
+ before changing the project.
19
+ - **Floors are declinable.** Every floor reverses on a word; declines are recorded, not argued.
20
+ - **Only the user's own Editor and project.** Everything runs on this machine as this user.
21
+ - **No remote code.** All executed C# comes from this skill's references.
22
+ - **Mechanics route to their owners.** Mixer routing, UI construction, backend integration, and
23
+ import settings go to their dedicated skills rather than being improvised here.