@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,205 @@
1
+ ---
2
+ name: unity-pipeline
3
+ description: Control a Unity Editor or Player via the unity-pipeline package. Compile, run tests, eval, method-reload code, enter Play Mode, capture screenshots.
4
+ ---
5
+
6
+ # Unity Pipeline (agent control)
7
+
8
+ Invoke commands with `unity command <group> <name> [args]`. `unity command` lists the command
9
+ groups, `unity command <group>` one group's commands, and `--query <term>` filters by name,
10
+ description or tag. Two servers exist: **Editor** (`7800-7849`, auto-starts with the editor) and
11
+ **Runtime** (`7900-7949`, only in a dev Player build).
12
+
13
+ ## 1. Install & verify
14
+
15
+ ```bash
16
+ unity pipeline install # install into current project (or --project-path)
17
+ unity pipeline list # confirm the editor instance + server are reachable
18
+ unity status --until-ready # wait until the editor server is ready
19
+ unity command editor status # confirm the editor server answers
20
+ ```
21
+
22
+ An Editor that was already open picks up the package only on its next refresh, usually when its
23
+ window regains focus. Until then `unity status` reports `STATUS_PIPELINE_LOAD_PENDING`; if that
24
+ persists, ask the user to switch to the Unity Editor window, then re-run `unity status --until-ready`.
25
+
26
+ ## 2. Autonomous edit loop (Editor)
27
+
28
+ This is the core agent workflow: keep the editor alive, change code, recompile, test.
29
+
30
+ ```bash
31
+ # 1. Keep the editor ticking even when unfocused/minimized. REQUIRED before headless work —
32
+ # Unity otherwise throttles or stalls update/compile when it isn't the active app.
33
+ unity command editor set_auto_tick --enabled true
34
+
35
+ # 2. Edit C# source files on disk normally.
36
+
37
+ # 3. Recompile (async: triggers a domain reload, then poll until done).
38
+ unity command script recompile
39
+ unity command script recompile_status # repeat until "completed" or "up_to_date"
40
+ # Tolerate connection errors while the domain reload is in flight — that is expected.
41
+ # If script recompile_status reports failed=true, read its "errors" array and fix before testing.
42
+
43
+ # 4. (Optional) List available tests without running them.
44
+ unity command test list --mode editor # mode: all | editor | playmode
45
+
46
+ # 5. Run tests (filter to keep it fast).
47
+ unity command test run --mode editor --filter MyFixture.MyTest
48
+ ```
49
+
50
+ `filter-type`: `testName` | `assembly` | `category`. For long runs use `--async-tests true` and
51
+ poll `unity command test status` (abort with `test cancel`). When a selected test *fails*, `test run`
52
+ may return an opaque result: re-run a narrower `--filter`, or inspect the Test Runner / logs.
53
+
54
+ **Reading exit codes.** They separate "rewrite the invocation" from "the Editor failed", which
55
+ is the distinction this loop depends on:
56
+
57
+ | Exit | Meaning | What to do |
58
+ |------|---------|------------|
59
+ | `2` | Bad arguments — a misspelled flag, a wrong type, too many positionals. Nothing ran. | Fix the command line and retry. The error names the problem and often suggests the right flag. |
60
+ | `6` | The command ran and failed, or no Editor could be reached. | Read the error. If it says no Pipeline instance was found, the Editor isn't reachable: wait with `unity status --until-ready` (or check `unity pipeline list` for Safe Mode), then retry. Otherwise retrying the same invocation will not help. |
61
+
62
+ Do not retry an exit 2 unchanged, and do not rewrite a command line on an exit 6.
63
+
64
+ ## 3. Runtime method reload
65
+
66
+ Change gameplay code in a **running** game with no domain reload. The game must be live:
67
+ enter Editor Play Mode (`unity command editor.playmode start`) or run a dev Player. The runtime Pipeline driver (enabled via Project Settings > Pipeline > Runtime) auto-discovers tagged methods on `Awake` (no manual
68
+ registration). Mono only — Editor Play Mode and Mono desktop dev builds, not IL2CPP. The token
69
+ is auto-injected for local requests.
70
+
71
+ ### `script.methodreload reload`
72
+
73
+ Edit the method body directly; no separate file, no boilerplate.
74
+
75
+ 1. **Before entering Play Mode**, tag the method `[MethodReload]` on the MonoBehaviour and recompile.
76
+ The reload hook is compiled into the method, so tagging it while the game runs has no effect:
77
+ exit Play Mode, recompile, and enter it again.
78
+ 2. With the game running, edit the method body on disk.
79
+ 3. Apply (re-run to iterate):
80
+ ```bash
81
+ unity command script.methodreload reload --filename Assets/Spinner.cs
82
+ ```
83
+ Add `--pdb` to debug it: it emits a portable PDB mapped to your source so breakpoints bind
84
+ (attach the IDE + enable Editor Attaching; compiles unoptimized). Without it, no symbols.
85
+
86
+ Constraints: `void` instance methods only; **public** members only.
87
+
88
+ `unity command script.methodreload status` shows active overrides. `reload` options: `--timeout
89
+ <seconds>` (default 60; the CLI's `--timeout` is the command's own), `--assembly-dir <dir>` (persist
90
+ DLLs instead of in-memory); `script.methodreload cleanup --assembly-dir <dir>` clears old DLLs.
91
+
92
+ ## 4. Bulk construction: `script run` (the builder pattern)
93
+
94
+ For bulk work — creating many objects, wiring fields, generating content — put the code in a
95
+ **versioned project script** and run a named static entry point with `script run`. No domain
96
+ reload, no code carried through the protocol; iterating costs an in-memory compile (< ~2s), not
97
+ a 15–20s recompile.
98
+
99
+ ```bash
100
+ # 1. Write the builder OUTSIDE Assets/ (so the write triggers no asset import / domain reload),
101
+ # e.g. AgentScripts/Build.cs: public static class Build { public static int All() { ... } }
102
+ # 2. Run it — relative paths resolve against the project root (the parent of Assets/):
103
+ unity command script run --file AgentScripts/Build.cs --entry Build.All
104
+ # 3. Iterate: edit the file, re-run. Useful extras:
105
+ unity command script run --file AgentScripts/Build.cs --dry-run true # compile-only check: diagnostics, nothing loaded or executed
106
+ unity command script run --file AgentScripts/Build.cs --entry Build.All --args '[3, "Green"]'
107
+ ```
108
+
109
+ Rules of thumb:
110
+
111
+ - **Code goes in files on disk.** Never ship multi-line escaped C# strings through `script eval`:
112
+ write the file, then run it with `script run` (a named entry point, with arguments) or
113
+ `script eval --file` (a script: `using` lines, declarations, `await`; see §5).
114
+ - Compiles see the project's **active editor defines** (`UNITY_EDITOR`, version/platform symbols);
115
+ `--defines` appends extra symbols on top.
116
+ - Entry points may be `async Task`/`Task<T>` — they are awaited asynchronously (the editor keeps
117
+ pumping, so awaits resuming on Unity's context work naturally) and `Task<T>.Result` is returned.
118
+ The wait is bounded by `--timeout` (seconds, default 60); on expiry the task keeps running detached.
119
+ - Runtime exceptions come back with `file:line` mapped to your source (a source-mapped PDB is
120
+ always emitted for executing runs; they compile unoptimized).
121
+ - `--mode hotpatch` instead applies `[MethodReload]` in-place method replacements (delegates to
122
+ `script.methodreload reload`); `entry`/`args`/`dry-run` are rejected there and `references`/`defines` don't apply.
123
+
124
+ ## 5. C# eval (Editor or dev Player)
125
+
126
+ `script eval` syntax (inline, `--file`, `--runtime`, `--auto-import`, `--internals`) plus `Wait.*` and its error codes: [csharp-eval.md](references/csharp-eval.md).
127
+
128
+ ## 6. Play Mode vs. Multiplayer Play Mode (MPPM) scenarios
129
+
130
+ Single-player Play Mode, MPPM Play Mode Scenarios with virtual-player clones, and Multiplayer Roles. Read before entering Play Mode in a multiplayer project: [multiplayer-play-mode.md](references/multiplayer-play-mode.md).
131
+
132
+ ## 7. Screen capture (Editor)
133
+
134
+ Capture a view to a PNG to check a visual result.
135
+
136
+ ```bash
137
+ unity command capture game_view --output-path Screenshots/hud.png # what the Game window shows, incl. overlay UI
138
+ unity command capture scene_view --max-resolution 512 # the scene only (camera render), inline, longest edge capped
139
+ unity command capture scene_view --source screen --output-path Screenshots/scene.png # the Scene window with grid, gizmos, toolbars
140
+ unity command capture editor_window --window Inspector --output-path Screenshots/inspector.png # any open Editor window
141
+ ```
142
+
143
+ Without `--output-path` the image comes back inline (base64); `--include-inline-image true` gives
144
+ both. A relative path resolves from the project root (no `.meta` outside `Assets/`). `game_view`
145
+ opens a Game view if none is showing, in batchmode too. `game_view --source camera --camera <name>`
146
+ renders one camera; overlay UI is drawn on URP/HDRP (`--overlay auto|true|false`), not on Built-in.
147
+ `editor_window` and `scene_view --source screen` briefly front a background tab and don't work in
148
+ batchmode. `capture screenshot` is deprecated. On 6000.7+, `capture editor_element` /
149
+ `runtime_element` capture one UI Toolkit element by `--selector`.
150
+
151
+ ## Gotchas
152
+
153
+ - **A stuck command may mean a modal dialog is open**, not a hang — a dialog blocks the main
154
+ thread until dismissed. If a command runs long, check `unity command editor status` (answers
155
+ instantly even when blocked); `status: "blocked_by_dialog"` means stop retrying and tell the
156
+ human what's blocking (its `dialog.title`/`message`/`buttons`) — it can't be clicked over CLI.
157
+ - **Player-only commands need a dev Player.** `console write`, `runtime set_time_scale`, `runtime status`, etc. hit
158
+ the Runtime server, which does not run in the Editor.
159
+ - **Target a specific instance** when more than one is running: `--project-path <path>` selects an
160
+ Editor, `--runtime <process name>` or `--runtime-path <port file>` selects a dev Player.
161
+
162
+ ## Final checks
163
+
164
+ 1. Check that the project has zero console errors:
165
+ ```bash
166
+ unity command console status # groundTruth.consoleErrors must be 0, compilationFailed false
167
+ unity command console get --level error # read any errors it reports
168
+ ```
169
+ 2. If you changed runtime behaviour, enter Play Mode (`unity command editor.playmode start`), exercise
170
+ the change, and read back the `Debug.Log` lines you added with `unity command console get`. Confirm
171
+ they show the fix works, then stop Play Mode and remove those lines unless the user wants them kept.
172
+ 3. If the fix doesn't work, go back and reread the relevant [Topic map](#topic-map) pages before you
173
+ try again, rather than retrying from memory.
174
+
175
+ ## Final report
176
+
177
+ End with a short report to the user:
178
+
179
+ - What you changed, by file, and the commands that verified it (test results, console status).
180
+ - Side effects: auto tick left on, Play Mode or a scenario still running, files written outside
181
+ `Assets/` (such as `AgentScripts/` or screenshots), method-reload overrides still active.
182
+ - Anything the user must do or decide next, such as a failure you could not fix or a dialog only
183
+ they can dismiss.
184
+
185
+ ## Topic map
186
+
187
+ The Pipeline package ships its documentation in its `Documentation~` folder. For a registry install
188
+ that is `<project>/Library/PackageCache/com.unity.pipeline@*/Documentation~/`; the same pages are
189
+ published at `https://docs.unity3d.com/Packages/com.unity.pipeline@<VERSION>/`. Only read what you need.
190
+
191
+ Prefer the local copy: it matches the installed package. For the live pages, fetch the exact URL
192
+ rather than searching; `<VERSION>` is the major.minor of `com.unity.pipeline` in
193
+ `Packages/packages-lock.json`, e.g. `@0.9`.
194
+
195
+ | Topic | Page |
196
+ |-------|------|
197
+ | Connecting to an Editor or Player, ports, `--project-path` | `connectivity.md` |
198
+ | Dev Player and Runtime server setup | `runtime-setup.md` |
199
+ | Method reload (`[MethodReload]`, `script.methodreload`) | `method-reload.md` |
200
+ | `script run`, `script eval`, `script recompile` | `commands/scripts.md` |
201
+ | Compiling and running tests | `commands/build-and-compilation.md` |
202
+ | `editor status`, `editor set_auto_tick`, modal dialogs | `commands/editor-lifecycle-and-observability.md` |
203
+ | Play Mode scenarios, virtual players, clones | `commands/multiplayer-play-mode.md` |
204
+ | Screen capture | `commands/capture.md` |
205
+ | `console get` / `console status`, Runtime commands | `commands/runtime.md` |
@@ -0,0 +1,23 @@
1
+ # 5. C# eval (Editor or dev Player)
2
+
3
+ `script eval` compiles C# as a script: `using` lines, top-level methods and types, and `await`. The
4
+ value of `return x;` or of a trailing expression is the result. It targets the Editor by default;
5
+ add `--runtime <process name>` to run it in a dev Player. Put anything longer than a line or two in
6
+ a file.
7
+
8
+ ```bash
9
+ unity command script eval --caller plugin --skill unity-pipeline "return 2 + 2;"
10
+ unity command script eval --caller plugin --skill unity-pipeline "return UnityEngine.Time.timeScale;" --runtime MyGame
11
+ # A .cs file on disk. Keep it outside Assets/, where Unity would compile it as project source:
12
+ unity command script eval --caller plugin --skill unity-pipeline --file AgentScripts/Scratch.cs
13
+ unity command script eval --caller plugin --skill unity-pipeline --file AgentScripts/Scratch.cs --dry-run # compile only
14
+ unity command script eval --caller plugin --skill unity-pipeline "return EditorSceneManager.GetActiveScene().name;" --auto-import # adds missing usings
15
+ unity command script eval --caller plugin --skill unity-pipeline "return UnityEditor.LogEntries.GetCount();" --internals # Editor internal APIs
16
+ ```
17
+
18
+ - `await Wait.Until(() => condition)` waits without blocking the Editor; `Wait.For(asyncOperation)`
19
+ and `Wait.ForImport(assetPath)` cover operations and imports. Submit a long wait with `--detach`,
20
+ then `unity job wait <job-id>`.
21
+ - A failed eval exits 6 with an `errorCode`: `COMPILATION_ERROR` (each error with its line and
22
+ column), `RUNTIME_EXCEPTION` (exception and stack trace), `TIMEOUT` or `INVALID_COMMAND_ARGS`.
23
+ - `script eval_file` is deprecated; use `script eval --file`.
@@ -0,0 +1,103 @@
1
+ # 6. Play Mode vs. Multiplayer Play Mode (MPPM) scenarios
2
+
3
+ These are two different things — do not conflate them.
4
+
5
+ ## Single-player: normal Play Mode (main Editor only)
6
+
7
+ ```bash
8
+ unity command editor.playmode start # enter Play Mode
9
+ unity command editor.playmode pause # toggle pause
10
+ unity command editor.playmode stop # exit Play Mode
11
+ ```
12
+
13
+ `editor.playmode start` runs the main Editor's **open scene** in Play Mode: **one** instance, never
14
+ MPPM virtual players, even if configured. Use it for single-instance testing and method reload.
15
+
16
+ ## Multiplayer: Play Mode Scenarios (main Editor + virtual players)
17
+
18
+ A **Play Mode Scenario** is an asset (an `OrchestratedScenario`, e.g.
19
+ `Assets/Settings/PlayMode/2Players.asset`) describing the main Editor plus one or more virtual
20
+ players. Each virtual player (clone) is a **separate Unity project** at
21
+ `<project>/Library/VP/<vpId>` with its **own Library, port, and Pipeline server** — not a second
22
+ window of the main Editor. Run a scenario with the scenario commands (they drive MPPM's
23
+ `PlayModeScenarioManager`, which enters Play Mode itself), never with `editor.playmode start`,
24
+ which fights MPPM's play-mode guard:
25
+
26
+ ```bash
27
+ unity command editor.playmode list_scenarios # discover scenario assets
28
+ unity command editor.playmode list_players # players the active scenario declares
29
+ unity command editor.playmode set_active_scenario --path Assets/Settings/PlayMode/2Players.asset
30
+ unity command editor.playmode start_scenario # run the active scenario
31
+ unity command editor.playmode get_scenario_status # live scenario + play-mode state
32
+ unity command editor.playmode stop_scenario # stop it
33
+ ```
34
+
35
+ Authoring the asset (Edit Mode):
36
+
37
+ ```bash
38
+ unity command editor.playmode create_scenario --name MyScenario # auto-adds the Main Editor player
39
+ unity command editor.playmode add_player --path Assets/Settings/PlayMode/MyScenario.asset --type clone --name "Player 2"
40
+ unity command editor.playmode remove_player --id <playerId> --path Assets/Settings/PlayMode/MyScenario.asset --confirm true # id: GUID on 6000.5+, player name on 6000.3/6000.4
41
+ ```
42
+
43
+ MPPM has four player slots, and slot 0 (`Player 1`) is always the Main Editor. A scenario therefore
44
+ holds at most **3 clones** (`Player 2`–`Player 4`): a 4-player scenario is the Main Editor plus 3 clones,
45
+ and a fourth clone is refused. For more players, add built players with `--type local`.
46
+
47
+ The `editor.playmode` scenario commands need **Unity 6000.3+** *and* the `com.unity.multiplayer.playmode`
48
+ package. Without both they are compiled out and calling one fails as an unknown command, so run
49
+ `unity command editor.playmode` and check that `start_scenario` and the other scenario commands are listed
50
+ before using them. The group itself always exists: `editor.playmode list_instances` needs neither
51
+ and always works. You may only `editor.playmode set_active_scenario` while state is **Idle**.
52
+
53
+ Player editors launch **asynchronously**, so after `editor.playmode start_scenario` poll
54
+ `editor.playmode get_scenario_status`. Its `players` array has one entry per player the scenario declares — not
55
+ MPPM's fixed four slots — and each entry carries both `state` (`NotLaunched` / `Launching` /
56
+ `Launched` / `UnexpectedlyStopped`) and, once that player's Editor is up, `reachable: true` with the
57
+ `port` and `projectPath` you need to drive it. Wait for `reachable`, then address it with
58
+ `--project-path`. Watch `state` to tell a slow launch (`Launching`) from a dead one
59
+ (`UnexpectedlyStopped`) — a missing descriptor alone cannot distinguish those.
60
+
61
+ ## Discovering and driving the clones
62
+
63
+ The CLI folds a project's own clones into its main Editor, so a running scenario adds no
64
+ ambiguity by itself. But with another Unity project open, `unity command` with no `--project-path`
65
+ picks the Editor whose project contains the current directory (and fails as ambiguous outside
66
+ both). When more than one project is open, pass `--project-path <mainProject>` to the main Editor
67
+ commands above. Each clone runs its own server, so address one by its project directory:
68
+
69
+ ```bash
70
+ # List every running instance (main + clones): role, port, pid, vpId, projectPath
71
+ unity command editor.playmode list_instances
72
+
73
+ # Talk to a clone directly, using the projectPath that listed it
74
+ unity command --project-path <mainProject>/Library/VP/<vpId> editor status
75
+ # Each clone is its own Editor: keep it ticking before running tests on it
76
+ unity command --project-path <mainProject>/Library/VP/<vpId> editor set_auto_tick --enabled true
77
+ unity command --project-path <mainProject>/Library/VP/<vpId> test run --mode playmode
78
+ ```
79
+
80
+ `unity pipeline list` also reports clones, named by player ("Player 2") against the project they're
81
+ playing. There is no forwarding command — talk to the clone. That way you get its full command
82
+ surface and its own status, and nothing queues behind the main Editor.
83
+
84
+ ## Multiplayer Roles (client / server stripping)
85
+
86
+ Multiplayer Roles decide what is stripped from a client or a server: the Editor runs as one role in
87
+ Play Mode, and each GameObject or component is kept for some roles and stripped from the others.
88
+ Use the `multiplayer.role` commands rather than reflecting over `EditorMultiplayerRolesManager` in
89
+ `script eval`:
90
+
91
+ ```bash
92
+ unity command settings.multiplayer_roles get # enabled? safety checks, server stripping
93
+ unity command settings.multiplayer_roles set --settings '{"enabled":true}' --confirm true # nothing is stripped until roles are enabled
94
+ unity command multiplayer.role get_active # Editor role, and whether roles are enabled
95
+ unity command multiplayer.role set_active --role server # role the Editor plays as (Edit Mode only)
96
+ unity command multiplayer.role set_game_object --target <go> --role server # the GameObject
97
+ unity command multiplayer.role set_component --target <go> --type AudioSource --role client # one of its components
98
+ unity command multiplayer.role set_component --target <component handle> --role client # a component by handle
99
+ unity command multiplayer.role set_build --role server # role the active build profile builds for
100
+ ```
101
+
102
+ `role` is `client`, `server` or `client_and_server`. The group needs **Unity 6000.6+**; on older
103
+ Editors it is compiled out, so run `unity command multiplayer.role` to check it is listed.
@@ -0,0 +1,16 @@
1
+ # Security notes: urp-postprocessing
2
+
3
+ This skill has the agent run C# inside the user's open Unity Editor through `unity command script eval`. Automated skill scanners flag that as a powerful capability. It is intentional, and it is limited by the safeguards below.
4
+
5
+ ## Accepted risks
6
+
7
+ | Risk | Capability | Why it is accepted |
8
+ |---|---|---|
9
+ | `SEC_POWER_CAP` | Runs C# in the user's open Editor through `unity command script eval` | It only reaches the Editor the user already has open, on their own machine, as that user, so it grants nothing they couldn't do themselves. `script eval` sits behind the Pipeline capability gate. No code fetched from a remote source is run. Where a named `unity command` covers a step, the skill uses that instead of `script eval`. |
10
+
11
+ ## Mitigations
12
+
13
+ - **Only the user's own Editor.** `unity command script eval` talks to the Editor open on this machine. It can't reach another machine or another user's Editor.
14
+ - **Capability gate.** `script eval` is only available when the project's Pipeline package provides it.
15
+ - **No remote code.** The agent runs C# it writes from this skill's own recipes. Nothing downloaded from outside is executed.
16
+ - **Named commands first.** When a dedicated `unity command` covers a step, the skill uses it instead of `script eval`.
@@ -0,0 +1,188 @@
1
+ ---
2
+ name: urp-postprocessing
3
+ description: Sets up, configures, and debugs URP post-processing with the Volume framework. Use for bloom, tonemapping, color adjustments, depth of field, vignette, or other Volume overrides.
4
+ required_packages:
5
+ com.unity.render-pipelines.universal: ">=14.0.0"
6
+ ---
7
+
8
+ Help the user set up, configure, and debug post-processing effects using URP's Volume framework.
9
+
10
+ **Goal: The user should have a working visual result with zero console errors after setup.**
11
+
12
+ ## 0. Prerequisite: an Editor you can run C# in
13
+
14
+ Volume profiles, `VolumeParameter.overrideState`, and the camera's post-processing flags are
15
+ Editor/runtime object state — the checks and edits below all run C# inside a live Editor.
16
+
17
+ **The `unity-cli` skill owns getting you there** — installing the CLI, confirming a connected
18
+ Editor, adding the project's `com.unity.pipeline` package, telling a genuinely absent Editor
19
+ apart from one stuck in Safe Mode, and discovering the Editor's command catalog. Follow it
20
+ first; don't re-derive any of it here. You need `script eval` in particular, not just a reachable
21
+ Editor: its presence depends on the Pipeline package version, not on the CLI. If it's
22
+ missing, say so and stop.
23
+
24
+ Run C# through the connected Editor with the `script eval` command. Discover its parameter shape
25
+ from `unity command --format json` rather than assuming one — the inline form is
26
+ `unity command script eval --caller plugin --skill urp-postprocessing --code '<snippet>'`, and some Pipeline versions also register
27
+ `script eval_file` for running a snippet from a file. **Check the catalog before reaching for
28
+ `script eval_file`; it is frequently absent.** `unity command` defaults to a 30 second timeout.
29
+
30
+ ### Passing C# to `script eval`
31
+
32
+ `script eval` compiles a **statement block, not a file**. Two consequences, both of which cause a
33
+ compile error rather than a warning:
34
+
35
+ - **No `using` directives.** The compiler reads `using UnityEngine;` as a resource-disposal
36
+ statement and rejects it (`CS0210`).
37
+ - **Types must be fully qualified.** A bare `AssetDatabase` or `Volume` does not resolve
38
+ (`CS0246` / `CS0103`), and a bare `Object` is ambiguous with `object` (`CS0104`).
39
+
40
+ Where a snippet below is written as a file — with usings, for readability, or because it is
41
+ meant to be saved into the project — qualify the types before passing it to `script eval`.
42
+
43
+ ## 0. Pre-Flight Checks
44
+
45
+ Before configuring any effect, **verify all checks**. Fix failures first.
46
+
47
+ 1. **URP is the active render pipeline** — If not, inform the user and stop.
48
+ 2. **HDR is enabled on the URP Asset** — Required for Tonemapping. Bloom works best with HDR; in SDR it still works but `threshold` must be < 1.
49
+ 3. **Camera has post-processing enabled** — `renderPostProcessing` must be `true` (defaults to `false`). Camera Stacking: only a `CameraRenderType.Base` camera (or the last `Overlay` in the stack) should enable post-processing. Also verify the Renderer's PostProcessData asset is not null — if it is, the post-process pass won't exist.
50
+ 4. **The Volume's GameObject layer is in the Camera's Volume Layer Mask** — `volumeLayerMask` defaults to layer 0 "Default" only. The Volume's `GameObject.layer` must be included, otherwise the camera ignores it.
51
+ 5. **Volume exists with `enabled = true`, a valid Profile, and at least one override** — The `Volume` component must be enabled, have a non-null `profile` (or `sharedProfile`), and at least one `VolumeComponent` with `overrideState = true` on its properties.
52
+
53
+ ### Pre-Flight Check Snippet
54
+
55
+ Run this to verify the setup programmatically:
56
+
57
+ ```csharp
58
+ // `script eval` compiles a statement block, not a file: no `using` directives are
59
+ // allowed, so every type is fully qualified.
60
+ var report = new System.Text.StringBuilder();
61
+
62
+ // 1. Check URP is active — a hard stop, so throw: it fails the eval loudly
63
+ var urpAsset = UnityEngine.Rendering.Universal.UniversalRenderPipeline.asset;
64
+ if (urpAsset == null)
65
+ throw new System.Exception("URP is not the active render pipeline.");
66
+
67
+ // 2. Check HDR
68
+ if (!urpAsset.supportsHDR)
69
+ report.AppendLine("Warning: HDR is disabled on the URP Asset. Tonemapping won't work; Bloom requires threshold < 1.");
70
+
71
+ // 3. Check camera post-processing
72
+ var cam = UnityEngine.Camera.main;
73
+ if (cam == null)
74
+ throw new System.Exception("No Main Camera found.");
75
+ if (!cam.TryGetComponent<UnityEngine.Rendering.Universal.UniversalAdditionalCameraData>(out var camData))
76
+ throw new System.Exception("Missing UniversalAdditionalCameraData on camera. Is URP active?");
77
+ if (!camData.renderPostProcessing)
78
+ report.AppendLine("Warning: Post-processing is disabled on the camera. Enable via camData.renderPostProcessing = true.");
79
+
80
+ // 4. Check volume layer mask
81
+ var volumes = UnityEngine.Object.FindObjectsByType<UnityEngine.Rendering.Volume>(UnityEngine.FindObjectsSortMode.None);
82
+ foreach (var vol in volumes)
83
+ {
84
+ if (!vol.enabled) { report.AppendLine($"Warning: Volume '{vol.name}' is disabled."); continue; }
85
+ if ((camData.volumeLayerMask & (1 << vol.gameObject.layer)) == 0)
86
+ report.AppendLine($"Warning: Volume '{vol.name}' on layer {vol.gameObject.layer} is not in camera's volumeLayerMask.");
87
+ // 5. Check profile and overrides
88
+ var profile = vol.sharedProfile;
89
+ if (profile == null) { report.AppendLine($"Warning: Volume '{vol.name}' has no profile assigned."); continue; }
90
+ if (profile.components.Count == 0)
91
+ report.AppendLine($"Warning: Volume '{vol.name}' profile has no overrides.");
92
+ }
93
+
94
+ // Return the findings: logs land in the Editor console, the returned value comes back to you
95
+ return report.Length == 0 ? "Post-processing setup looks correct." : report.ToString();
96
+ ```
97
+
98
+ ## 1. Volume Setup
99
+
100
+ Effects are added as **VolumeComponent overrides** on a **VolumeProfile** (a `ScriptableObject`).
101
+
102
+ **Global Volume** (most common): GameObject with `Volume` component, `isGlobal = true`, `profile` assigned. Affects every camera whose `volumeLayerMask` includes the Volume's layer.
103
+
104
+ **Local Volume (optional, but takes precedence)**: GameObject with trigger `Collider` + `Volume` component, `isGlobal = false`. Properties:
105
+ - `priority` (float) — higher values override lower when volumes overlap.
106
+ - `blendDistance` (float) — outer distance in world units to start blending from (0 = no blend, instant transition at collider boundary).
107
+ - `weight` (float, 0–1) — scales the volume's overall influence.
108
+
109
+ ## 2. Post-Processing Effects
110
+
111
+ All effects are `VolumeComponent` subclasses added as overrides on a `VolumeProfile` via `profile.Add<T>()`. Check existence with `profile.Has<T>()` or `profile.TryGet<T>(out var t)`. Remove with `profile.Remove<T>()`.
112
+
113
+ Every property is a `VolumeParameter`. You **must** set `overrideState = true` before setting `value`, otherwise the Volume system ignores it.
114
+
115
+ When configuring a specific effect, load the full API reference:
116
+ - [references/effect-reference.md](references/effect-reference.md) — All VolumeComponent properties by effect (Bloom, Tonemapping, ColorAdjustments, DepthOfField, Vignette, MotionBlur, FilmGrain, ChromaticAberration, SplitToning, LensDistortion, WhiteBalance, PaniniProjection, LiftGammaGain, ShadowsMidtonesHighlights, ColorCurves, ChannelMixer)
117
+
118
+ For code templates:
119
+ - [references/code-templates.md](references/code-templates.md) — Global Volume setup, camera post-processing, and profile modification templates
120
+
121
+ ## 3. Anti-Hallucination Rules
122
+
123
+ ### Required Usings
124
+
125
+ These apply when you write a `.cs` file into the project. **A snippet passed to `script eval` cannot
126
+ carry them** — qualify the types instead (see "Passing C# to `script eval`" above).
127
+
128
+ ```csharp
129
+ using UnityEngine.Rendering; // Volume, VolumeProfile, VolumeComponent, VolumeParameter
130
+ using UnityEngine.Rendering.Universal; // Bloom, Tonemapping, ColorAdjustments, UniversalRenderPipeline, etc.
131
+ ```
132
+
133
+ ### Wrong → Correct API Mapping
134
+
135
+ | WRONG | CORRECT |
136
+ |-------|---------|
137
+ | `PostProcessVolume` | `Volume` (from `UnityEngine.Rendering`) |
138
+ | `PostProcessLayer` | `UniversalAdditionalCameraData.renderPostProcessing` (bool) |
139
+ | `UnityEngine.Rendering.PostProcessing` | `UnityEngine.Rendering.Universal` |
140
+ | `profile.GetSetting<T>()` | `profile.TryGet<T>(out var t)` (returns bool) |
141
+ | `profile.AddSettings<T>()` | `profile.Add<T>()` (returns T; throws if already exists — check `profile.Has<T>()` first) |
142
+ | `volume.sharedProfile` (to modify at runtime) | `volume.profile` (auto-clones the asset into an instance) |
143
+ | `VolumeManager.instance.stack.GetComponent<T>()` | `volume.profile.TryGet<T>(out var t)` |
144
+
145
+ ### Key Facts
146
+ - **`overrideState = true`** is required on every `VolumeParameter` you set. The volume system skips parameters where `overrideState` is `false`. This is the #1 scripting mistake.
147
+ - **`sharedProfile`** = returns the asset directly (edits persist to disk). **`profile`** = auto-clones into an instance if needed (safe for runtime edits). Check with `volume.HasInstantiatedProfile()`.
148
+ - **`profile.Add<T>(bool overrides = false)`** — pass `true` to auto-enable `overrideState` on all parameters of the added component.
149
+
150
+ ## 4. Debugging Checklist
151
+
152
+ When post-processing isn't working, check in order:
153
+
154
+ 1. `cam.TryGetComponent<UniversalAdditionalCameraData>(out var data)` succeeds and `data.renderPostProcessing` is `true`?
155
+ 2. Volume exists in scene with a non-null `profile` (or `sharedProfile`) assigned?
156
+ 3. Overrides added via `profile.Add<T>()` AND `overrideState = true` on each property you set?
157
+ 4. Volume's `GameObject.layer` is included in camera's `data.volumeLayerMask`? (Default mask is layer 0 "Default" only.)
158
+ 5. `volume.isGlobal = true` (for global), or camera is inside the Volume's trigger `Collider` (for local)?
159
+ 6. Camera `data.renderType` is `CameraRenderType.Base`, not `Overlay`? (Overlay cameras composite onto the Base camera's output.)
160
+ 7. `UniversalRenderPipeline.asset.supportsHDR` is `true`? Required for Bloom and Tonemapping.
161
+ 8. Viewing in **Game view**? Scene view has a separate post-processing toggle in its toolbar.
162
+
163
+ ## 5. Common Recipes
164
+
165
+ Format: Effect property=value. Bloom values are threshold/intensity/scatter.
166
+
167
+ **Cinematic (Film):** Tonemapping mode=ACES, ColorAdjustments contrast=15 saturation=-10, Bloom threshold=0.9 intensity=0.5 scatter=0.7, Vignette intensity=0.3 smoothness=0.4, FilmGrain type=Medium1 intensity=0.2
168
+
169
+ **Stylized/Vibrant:** Tonemapping mode=Neutral, ColorAdjustments saturation=20 contrast=10, Bloom threshold=0.8 intensity=1.5 scatter=0.6, SplitToning highlights=warm shadows=cool
170
+
171
+ **Horror/Dark:** ColorAdjustments postExposure=-0.5 saturation=-30 contrast=20, Vignette intensity=0.5 smoothness=0.3 color=dark-red, FilmGrain type=Large01 intensity=0.4, ChromaticAberration intensity=0.15
172
+
173
+ **Clean/Mobile:** Tonemapping mode=Neutral, ColorAdjustments postExposure=0.2, Bloom threshold=1.0 intensity=0.3 (subtle). Avoid FilmGrain, MotionBlur, DepthOfField on mobile.
174
+
175
+ ## 6. Final Confirmation
176
+
177
+ After setup, report to user:
178
+
179
+ ```
180
+ Post-Processing Setup Complete
181
+ - Volume: [Global/Local] on "[GameObject Name]"
182
+ - Profile: [Asset Path]
183
+ - Effects: [List with key property=value pairs]
184
+ - Camera: [Name] — renderPostProcessing=true, volumeLayerMask includes layer [N]
185
+
186
+ View results in Game view (not Scene view).
187
+ Undo all changes with Edit > Undo (Ctrl+Z).
188
+ ```