@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,20 @@
1
+ # Notes
2
+
3
+ - `--non-interactive` and `--yes` together suppress all prompts — use both in CI.
4
+ - A short flag means one thing on every command: `-y` is `--yes` wherever `--yes` exists, `-a` is `--architecture`, `-e` is `--editor-path`, `-f` is `--force`, `-i` is `--installed`, `-l` is `--list`, `-m` is `--module`, `-o` is `--output` and `-r` is `--releases`. Every other option takes its long name: `unity projects` and `unity projects size` spell "every project" `--all`, `logs` and `projects logs` spell `--follow`, `projects import` spells `--input`, `build` and `run` spell `--log-file`, `projects` spells `--modified`, `templates location` spells `--reset`, `build` spells `--output-path` and `foundry get` spells `--out`. An old spelling the CLI still accepts (`-a`, `-m`, `-i`, `-l`, `-r`, `-f` or `-o` on those, `--project` on `status`, `--template-version`, `--hub-version`, `--package-version`, `--list-components`, `--install-dir`, `--childModules`, `--wait-timeout`, `--git-token-stdin`, `--group_by` on `command`, `--local-space` on `collaboration annotations`, `--project-id` and `--organization-id` on `collaboration`, `-v` on `projects`, `--since` on `releases` and `vcs git migrate-lfs`, `--project` on `assets export`, `assets import` and `auth default`, `--path` on `build run`, `--project-path` on `projects clone`, `--skip` on `releases` and `cloud projects`) prints a warning naming the spelling to use; so does `--verbose` on `editors` and `projects`, which still shows every column but now spells it `--long`; in `--format json` it is in the envelope's `warnings`. Use the new spelling, so the warning never lands in a log you parse.
5
+ - `--timeout` takes a whole number of seconds written as digits (`--timeout 600`) on every command, and so do `UNITY_BUILD_TIMEOUT`, `UNITY_RUN_TIMEOUT` and `UNITY_TEST_TIMEOUT`. A unit, fraction or exponent (`30s`, `5m`, `1.5`, `1e3`) is a usage error (exit `2`), so convert minutes to seconds yourself.
6
+ - `--format json` always produces machine-readable output; prefer it over parsing human text. Error envelopes are pretty-printed with the same 2-space indent as success envelopes. The envelope's `command` is the full command path (`projects list`, `cloud org list`), the same in json and ndjson and on success and failure; it is `""` when no command matched, such as an unknown one.
7
+ - **`success` is `true` exactly when the exit code is `0`.** A status command whose answer is no (`unity auth status` signed out, `unity license status` with no license, `unity status` with no ready Editor) is a failure: `success: false`, an `errors[0].code` naming the answer, and its report still in `data`. A listing that finds nothing (`unity editors running` with no Editor) succeeds with an empty list.
8
+ - **A streamed named command has no CLI envelope.** When the project's `com.unity.pipeline` formats a named command's output itself (see `references/integration-advanced.md`), `unity command <name> --format json` (or `--json`) prints the command's own result, one JSON value per line, with no `success`, `errors` or `data` wrapper, so its rows are not under `.data.items[]`. Branch on the exit code, which is the command's own, not one from the exit-code table above: `0` means it succeeded and any other code that it did not, such as `1` for a failed command, `102` when the Editor was busy and refused it (retry), or `106` when it was cancelled. A cancel that follows your Ctrl-C or a SIGTERM to the CLI exits `130` or `143` instead. With an older `com.unity.pipeline` the envelope and every rule in this list apply.
9
+ - **Read failures from stdout, not stderr.** A failed command still writes a complete document to stdout: under `--format json` an envelope with `success: false` and a populated `errors` array (`errors[0].code` is the stable token to branch on); under `--format ndjson` the usual terminal `{"type":"result","success":false,…}` frame. **Every ndjson stream ends with exactly one terminal `{"type":"result"}` frame, on success too**, so a stream without one was truncated. Table-shaped listings (`unity editors`, `unity editors upgrade --check`, `unity templates`, `unity releases`, `unity projects`, `unity contexts`, `unity auth accounts`, `unity modules`, `unity command`, `unity skills`, `unity logs`, `unity cloud orgs`, `unity cloud projects` and the like) write one row per line first, each starting with `"type":"row"` so you can tell a row from a `progress` or `result` frame, then a terminal frame whose `data` is `{count, total, nextPage|nextCursor, partial}` (some listings keep older keys there too). A `unity templates` row keeps its own `type` (the template type) with no `"row"` marker. A single-record answer (`unity version`, `unity language`, `unity env`, `unity doctor`, `unity config proxy`, `unity cache info`, `unity context current`, `unity editors default`, `unity install-path`, `unity diagnose update` and the like) is that frame alone, its `data` the same as `--format json`. `--quiet` never changes json output. It never changes ndjson output either, except that `unity editors upgrade`, `unity build --list-targets` and `unity build --list-profiles` still drop their rows under `--quiet` (the terminal frame stays), a known bug; leave `--quiet` off when you need those rows. A warning in either format appears only in `warnings`, never on stderr. A `--watch` or `--follow` stream, which only ends on Ctrl-C, writes its rows and no terminal frame. **Branch on `success`, never on `data`** — `data` is usually `null` on a failure, but not always: a partial `unity editors add` failure carries a row per path, and an ambiguous `unity auth switch` carries `data.candidates` for you to disambiguate with. Check `success` and the exit code — never treat empty stdout as a failure signal, and do not parse stderr, which carries only human diagnostics in these formats. If stdout is empty on a non-zero exit, that is a known bug in that command rather than a shape you should code against.
10
+ - **Never merge stderr into stdout when you parse (`2>&1`, or a tool that captures both as one stream).** Stdout alone is a complete, valid document under `--format json` and `--format ndjson`, but stderr carries human diagnostics and, for some agents, a one-line install hint (Claude Code gets a `<claude-code-hint … />` tag there). Merged in, those lines trail the JSON, and a parser fails with `Extra data` or a decoder needs `raw_decode`. Capture the two streams separately (`unity … --format json 2>err.txt >out.json`) and parse stdout only, or discard stderr with `2>/dev/null` (`2>NUL` on Windows cmd). `UNITY_NO_AGENT_HINTS=1` removes the hint line, but separate streams are the fix.
11
+ - `unity <version> [path]` is a shorthand for `unity open [path] --editor-version <version>`. Works with `lts`, `latest`, or a full version string like `6000.0.47f1`.
12
+ - The CLI supports kubectl-style plugins: any `unity-<name>` binary on PATH is callable as `unity <name>`.
13
+ - Terminal output is hardened against control-character / escape-sequence injection from server-provided values (project titles, editor versions, module names) — C0 controls and non-SGR escape sequences are stripped from table/list/tree output, and now also from Commander usage errors, the `unity bug` log-archive warning, and `unity projects add`/`remove` machine (tsv) output, while SGR color/style codes are preserved.
14
+ - The CLI reports anonymous crashes and errors via Sentry to help fix bugs (no IP address or hostname; home-directory paths and token-like values scrubbed before send), aligned with the Unity Hub. Opting in to analytics additionally attaches an anonymized machine id; opted-out users stay fully anonymous. Set `UNITY_NO_CRASH_REPORT`, or turn off "Send crash reports" in the Hub's settings, to disable reporting entirely. Separately again, every run sends one anonymous `cli telemetry` usage ping even when nobody answered the consent prompt; turning analytics off (in the CLI, or in the Hub while signed in), `DO_NOT_TRACK`, or `UNITY_NO_CLI_INVOKED_TELEMETRY` stops it — see [diagnostics-maintenance.md](diagnostics-maintenance.md#analytics--usagetelemetry-consent).
15
+ - `unity --version` prints the version you have. `unity self-update --check --format json` says whether a newer one exists on your installed channel (a beta follows betas). `unity self-update --check --channel stable --format json` checks for a stable release, for example when moving off a beta once GA ships.
16
+ - **Always use the latest version of the Unity CLI unless you are told to use a specific version.** A newer CLI regularly adds commands and output fields these docs describe, so an outdated one fails in ways that read like the docs being wrong.
17
+ - Since `0.1.0-beta.8` the CLI checks in the background for a newer version and prints an unobtrusive "update available" notice (interactive sessions only; never delays a command). Turn it off with `unity config update-check off` or the `UNITY_NO_UPDATE_CHECK` env var.
18
+ - The same check also covers plugins the CLI installed (`unity plugin install`): when one has a newer version, a notice names it and suggests `unity plugin upgrade`, at most once a day. The same two switches turn it off.
19
+ - **Under `--format json` and `--format ndjson` that same notice reaches you as a `notifications` array on the envelope** — see [Notifications](../SKILL.md#notifications) below. Over MCP it arrives once per session, as prose in the server's `initialize` `instructions`.
20
+ - Outbound HTTP from every CLI command honors the resolved proxy (see `unity config proxy`). An invalid `--proxy` value (malformed URL or unsupported scheme) fails with a usage error (exit 2) instead of being silently ignored. Inspect what the CLI actually resolved with `unity env --format json` or `unity doctor --format json` — both surface the active proxy URL, its source, and auth source.
@@ -0,0 +1,39 @@
1
+ # Notifications
2
+
3
+ A `--format json` or `--format ndjson` envelope may carry a `notifications`
4
+ array: advisories about the user's environment rather than about the command
5
+ you ran. **When one is present, tell the user** — they have no other way to see
6
+ it, because the human-facing equivalent is a terminal banner that never reaches
7
+ you.
8
+
9
+ The key is absent when there is nothing to report, so read it as
10
+ `envelope.notifications ?? []`.
11
+
12
+ ```jsonc
13
+ {
14
+ "code": "CLI_UPDATE_AVAILABLE",
15
+ "message": "A new version of the Unity CLI is available: 1.0.0-beta.8 → 1.0.0-beta.9",
16
+ "data": { "current": "1.0.0-beta.8", "latest": "1.0.0-beta.9" },
17
+ "remediation": { "command": "unity self-update", "requiresUserApproval": true }
18
+ }
19
+ ```
20
+
21
+ Branch on `code`; `message` is localized and meant for display. `data` is
22
+ shaped per `code`.
23
+
24
+ `PLUGIN_UPDATE_AVAILABLE` means an installed plugin has a newer version.
25
+ `data` is `{ "plugin": "<id>", "current": "…", "latest": "…" }`, and the
26
+ remediation is `unity plugin upgrade <id>`. There is one entry per outdated
27
+ plugin.
28
+
29
+ `remediation` says how the notification gets resolved. It may be absent, which
30
+ means the notification is informational and there is nothing to run.
31
+
32
+ `FEX_EMU_EXPERIMENTAL` means the command ran, or will run, the x86_64 Editor
33
+ through FEX-Emu on Linux arm64. Tell the user it is experimental and
34
+ unsupported and that C# script compilation is known to crash there.
35
+
36
+ **`requiresUserApproval: true` means do not run `remediation.command`
37
+ yourself.** Surface the notification and the command, and let the user decide.
38
+
39
+ ---
@@ -0,0 +1,279 @@
1
+ # Play-mode verification loop
2
+
3
+ Part of the **`unity-cli`** skill. See that skill's `SKILL.md` for CLI install, global flags,
4
+ environment variables, exit codes, and the general "drive a running Editor" workflow. All global
5
+ flags (`--format json`, `--non-interactive`, `--yes`, `--proxy`, ...) apply to every command below.
6
+ [integration-advanced.md](integration-advanced.md) covers the Pipeline command surface generally;
7
+ this page is the recipe for one specific loop: enter Play mode, confirm the game is actually
8
+ running (not frozen), look at it, read its console, and tune it, all without leaving the CLI.
9
+
10
+ Relative links in this file resolve to the skill directory's `references/` folder, so `../SKILL.md` is the skill's main page.
11
+
12
+ ## Contents
13
+
14
+ - Why this loop, and not `editor.playmode start` + a screenshot
15
+ - The recipe
16
+ - Summary: the ordered commands
17
+
18
+ ## Why this loop, and not `editor.playmode start` + a screenshot
19
+
20
+ A screenshot renders on demand: it can capture the last frame a frozen Game view drew and look
21
+ exactly like a live game. Treat "Play mode entered" and "a screenshot came back" as setup, not
22
+ proof. The loop below adds one cheap, server-side check (`job wait` on `Time.frameCount`) that
23
+ actually proves frames are advancing before you trust anything else you observe.
24
+
25
+ **Command names, parameters, and defaults below are the connected Editor's, not the CLI's own**:
26
+ they come from the project's `com.unity.pipeline` package and can change between package versions.
27
+ Confirm the exact set for your project with `unity command` before relying on any of
28
+ this, the same caution [integration-advanced.md](integration-advanced.md#available-in-production--the-common-live-commands)
29
+ already gives for `script eval`.
30
+
31
+ **Put pipeline-specific flags after a `--` fence.** `unity command` recognizes a small set of its
32
+ own flags (`--project-path`, `--runtime`, `--runtime-path`, `--timeout`, `--detach`,
33
+ `--result-only`, plus the global flags) anywhere in the tail, not just at the start, so a
34
+ same-named Editor parameter (`script eval`'s own `timeout`, in **milliseconds**, or `job wait`'s, in seconds) is swallowed by the CLI's
35
+ `--timeout` (**seconds**) unless it comes after `--`. Every multi-flag example below uses the
36
+ fence; a single positional argument (like a bare `script eval` call at its default timeout) does not need
37
+ one.
38
+
39
+ ## The recipe
40
+
41
+ ### 1. Confirm a connected Editor and discover its commands
42
+
43
+ ```bash
44
+ unity status --format json # look for state "ready"
45
+ unity command --format json # the full catalog, with each command's parameter schema
46
+ ```
47
+
48
+ If nothing is reachable, rule out Safe Mode and a sandboxed shell before concluding the Editor is
49
+ down: see [integration-advanced.md → Recovering from Safe Mode](integration-advanced.md#recovering-from-safe-mode-connection-fails-because-of-compile-errors)
50
+ and [integration-advanced.md → Sandboxed agent tooling can hide a running Editor](integration-advanced.md#sandboxed-agent-tooling-can-hide-a-running-editor).
51
+
52
+ Then read the play state before you change anything: `unity command editor status` reports it, and
53
+ its `playMode` reads `stopped` when the Editor is not playing. If the Editor is already playing or
54
+ paused, that session is the user's. Reading it is fine (steps 4 to 6 only read). Leave the settings in
55
+ step 2, `editor.playmode start` in step 3, the pause and step recipe in step 4, the tuning in step 7 and
56
+ `editor.playmode stop` in step 8 alone, and tell the user what you found.
57
+
58
+ ### 2. Keep the Editor ticking while it is unfocused
59
+
60
+ Unity throttles `EditorApplication.update` when the Editor window does not have focus, which is
61
+ the common case for an agent driving it headlessly or alongside other work. On an unfocused
62
+ Editor, entering Play mode can leave the game genuinely stuck at frame 1 while `unity status` still
63
+ reports it as playing, because the per-frame loop that would advance it is the thing being
64
+ throttled. `com.unity.pipeline` ships a command for exactly this, `editor set_auto_tick`, which forces a
65
+ tick at a throttled rate even while unfocused:
66
+
67
+ ```bash
68
+ unity command editor set_auto_tick # enabled=true, interval-ms=16 (~60 Hz), persist=true by default
69
+ ```
70
+
71
+ Call it before every `editor.playmode start` you drive, not once per Editor session: step 8 turns it off
72
+ when you are done, so a second request in the same Editor session must turn it on again or the game freezes
73
+ at frame 1. `persist=true` (the default) survives a domain reload, so you do not need to call it again after
74
+ a recompile within one Play Mode request; pass
75
+ `-- --persist false` for a one-off setting that should revert after the next unrelated recompile
76
+ instead of sticking for the rest of the session.
77
+
78
+ This is the confirmed, currently available fix for the freeze, not a temporary stand-in: it is a
79
+ real Pipeline command with its own doc entry (`Documentation~/commands/editor-lifecycle-and-observability.md`),
80
+ not something a future package release removes the need for. The CLI does not call it
81
+ automatically before `editor.playmode start`: it sends only the bare `editor.playmode start` command,
82
+ so call it yourself.
83
+
84
+ The player loop has a second switch: the project's Run In Background Player Setting
85
+ (`Application.runInBackground`). On macOS and Windows, with it off, Unity pauses the game while the
86
+ Editor is unfocused, and `editor set_auto_tick` can't undo that pause. The setting ships in builds, so
87
+ turn it on explicitly with the Pipeline command, which records the project's value and keeps it out
88
+ of builds:
89
+
90
+ ```bash
91
+ unity command editor.playmode set_run_in_background # on for this Editor session
92
+ unity command editor.playmode set_run_in_background -- --enabled false # put the project's value back
93
+ ```
94
+
95
+ The override doesn't touch the project's saved settings, so it lasts until you revert it or the
96
+ Editor restarts. After a restart, run the command again.
97
+
98
+ Alternatively, a project can turn on **Ensure editor runs in background in PlayMode** under
99
+ Project Settings > Pipeline > Editor, which applies it only while playing. Check that your package
100
+ has the command with `unity command --query set_run_in_background --detail full --format json`. On an older
101
+ package, set it with `script eval` before `editor.playmode start`, and put the project's value back after
102
+ `editor.playmode stop`, because nothing keeps it out of builds there:
103
+
104
+ ```bash
105
+ unity command script eval "return UnityEngine.Application.runInBackground;" # note the project's value
106
+ unity command script eval "UnityEngine.Application.runInBackground = true;"
107
+ ```
108
+
109
+ ### 3. Enter Play mode, then wait for the Pipeline server before the next command
110
+
111
+ ```bash
112
+ unity command editor.playmode start
113
+ unity status --until-ready --project-path <path> --format json
114
+ ```
115
+
116
+ `editor.playmode start` drops the Pipeline listener for a few seconds while the domain reloads. Sending the
117
+ next command immediately can hit `EDITOR_NOT_READY` or simply queue behind the reconnect. `unity
118
+ status --until-ready` is the documented fix, not a hand-rolled polling loop: it keeps checking
119
+ until a matching Editor reports `ready`, then returns. Full detail in
120
+ [integration-advanced.md → status](integration-advanced.md#status--live-state-of-connected-editors).
121
+
122
+ ### 4. Confirm the game is actually advancing, not frozen at frame 1
123
+
124
+ A `job wait` on `Time.frameCount` with `op: changed` proves the frame counter has moved since the
125
+ wait started, server-side, with no client polling loop:
126
+
127
+ ```bash
128
+ unity command job wait -- \
129
+ --condition '{"member":"UnityEngine.Time.frameCount","op":"changed"}' \
130
+ --timeout 10
131
+ ```
132
+
133
+ `op` is `equals` (the default), `notEquals`, `greaterThan`, `lessThan`, `contains` or `changed`, spelled in camelCase exactly like that (`not_equals` is an unknown op). `op: changed` needs no `value`: it is met the first time the member differs from the value observed
134
+ when the wait was armed. A `met: true` result with `framesObserved` > 0 is your proof; `timedOut:
135
+ true` with the frame count unmoved is the frozen-at-frame-1 symptom this whole step exists to
136
+ catch. On a session you started, step 2 (`editor set_auto_tick` and `runInBackground`) is the fix to check
137
+ first. On the user's session, leave step 2 alone and report the stall.
138
+
139
+ A package that has `editor.playmode set_run_in_background` also reports the player loop in
140
+ `unity status --format json` while in Play mode: `frameCount` and `playerLoopTicking` on the
141
+ instance row. `playerLoopTicking: false` outside a pause is the same frozen symptom, and it costs
142
+ one read instead of a wait. Keep the `job wait` above as the proof; the status fields are a quick
143
+ first check, and an older package omits them. `timeout` (`timeout_s` on `com.unity.pipeline` 0.8.x) defaults to 30 if omitted;
144
+ 10 seconds above is a shortened budget, since a ticking Editor should advance the frame count within
145
+ a couple of frames of the wait being armed.
146
+
147
+ `job wait` is one `/api/exec` request that holds the exec queue for its own duration, so a
148
+ synchronous call like the one above is only for a wait you expect to resolve in a few seconds. For
149
+ anything longer, or a condition that depends on a command you still need to issue, add `--async
150
+ true` and poll the result instead of blocking on it:
151
+
152
+ ```bash
153
+ unity command job wait -- --condition '{"member":"UnityEngine.Time.frameCount","op":"changed"}' \
154
+ --timeout 120 --async true # returns { "waitId": "..." } immediately
155
+ unity command job wait_status -- --wait-id <waitId>
156
+ ```
157
+
158
+ `job wait`'s own `--async` is unrelated to `unity command`'s `--detach`: the former is the
159
+ connected Editor evaluating the condition in the background and reporting through `job wait_status` /
160
+ `job wait_cancel`; the latter is the CLI's own client-side job tracking (`unity job status` /
161
+ `unity job wait`) for a command that runs long on the Editor's main thread. Don't conflate the two,
162
+ or `unity job wait <job-id>` (the CLI's own command) with `unity command job wait` (the Pipeline's).
163
+
164
+ `job wait` also accepts a `find-type`/`target` + instance member path instead of a static one (for
165
+ example a gameplay manager's own state field), and an `on-met.capture` follow-up that captures the
166
+ game view in the same frame the condition first holds, atomically, when a client-side "wait, then
167
+ screenshot" loop would risk missing a short-lived state. Discover the exact shape (and whether your
168
+ project's package version has it at all) with `unity command job --format json`
169
+ rather than assuming it: `job wait`/`job wait_status`/`job wait_cancel` are a comparatively new addition to
170
+ `com.unity.pipeline`.
171
+
172
+ **Still frozen with `editor set_auto_tick` and Run In Background on?** Check for a locked desktop. On Windows, a locked session can stop Play Mode from advancing even with Run In Background on, so every `job wait` times out and every observation reads frame 1. If nobody can unlock the machine, drive the frames yourself, but only on a session you started. That is one you entered with `editor.playmode start` from a stopped Editor, as step 1 showed. If the Editor was already playing, the session is the user's, so leave its settings alone too, and don't pause, step or stop it. A paused session is flat by design, so ask the user to resume it. If it is frozen, say so, name the likely causes (a locked desktop, or an unfocused Editor with Run In Background off), and ask the user to fix that. On your own session, pause it, then step it one frame per `script eval` call.
173
+
174
+ ```bash
175
+ unity command script eval -- --code 'UnityEditor.EditorApplication.isPaused = true;'
176
+ unity command script eval -- --code 'UnityEditor.EditorApplication.Step();' # one frame: repeat once per frame you need
177
+ unity command script eval -- --code 'return UnityEngine.Time.frameCount;' # read the count in its own call
178
+ ```
179
+
180
+ Each `Step()` advances one frame. Drive it from the host, one call per frame, because an `script eval` runs on the main thread and holds the player loop until it returns. Check that the count rose by exactly the number of steps. A frame is not a fixed span of game time. Read `UnityEngine.Time.time` before and after one step, then divide the time you need by the difference (one project measured 50 steps to a second, and yours can differ). If `Time.time` does not move because `Time.timeScale` is 0, no number of steps produces game time. Step by frame count for logic that runs per frame, and for anything timed, ask the user before you change `timeScale`, then put it back. Every step is an `script eval` call that the client may ask the user to approve, so keep the stepped window short and ask before a run that needs more than a few hundred steps. Set `UnityEditor.EditorApplication.isPaused = false;` when you are done, whatever the outcome. Stepping shows what happens frame by frame, not real-time timing or frame rate.
181
+
182
+ ### 5. Capture the game view without bloating the response
183
+
184
+ ```bash
185
+ unity command capture game_view -- --source screen --output-path Screenshots/playtest.png
186
+ ```
187
+
188
+ The flag here is `--output-path`, the same one `capture screenshot` takes. Pass it and the result is a file path, not an inline base64 image, which keeps an agent's
189
+ tool result small. The path is **project-relative** (the package's own docs give
190
+ `Screenshots/foo.png` as the example); nothing in the package documentation states a restriction to
191
+ paths under `Assets/`, so do not assume one. When you do need the image inline instead of, or as
192
+ well as, the file (for example to look at it yourself in this turn), add `--include-inline-image
193
+ true` and use `--max-resolution` to cap the inline copy's longest edge without touching the
194
+ resolution of the saved file:
195
+
196
+ ```bash
197
+ unity command capture game_view -- --max-resolution 512 # inline only, downscaled, no output-path
198
+ ```
199
+
200
+ `source=screen` captures the composited game view (including Screen Space - Overlay UI such as
201
+ HUDs); `source=camera` renders a single camera off-screen instead and never sees Screen Space -
202
+ Overlay canvases. Pass whichever you mean explicitly: the command's default value for `source` has
203
+ changed between package versions (`com.unity.pipeline` 0.8.0-exp.1 switched the default from
204
+ `camera` to `screen`), so relying on the default is one more thing to go stale as the project's
205
+ package updates.
206
+
207
+ `source=screen` needs an unlocked desktop (reported on Windows): a `screen` capture taken while the session was locked came back as a solid cyan image with no error. When the machine is unattended and may be locked, use `--source camera`. Treat a single-color capture as suspect and check that the frame count is rising before you rely on it, since a fade to black is a legitimate frame. A camera capture shows overlay UI only if its Canvas uses Screen Space - Camera, because no camera draws a Screen Space - Overlay canvas. If the UI you need is on an Overlay canvas, read its state with `script eval` instead of looking for it in the image.
208
+
209
+ ### 6. Read the console for exceptions before trusting a clean-looking capture
210
+
211
+ ```bash
212
+ unity command console get -- --tail 50 --level error
213
+ ```
214
+
215
+ `level` is a minimum-severity floor (`log` | `warn` | `error`, default `log`), not an exact match, so
216
+ `--level error` returns errors and exceptions only. Prefer `console status` (no arguments) when you
217
+ only need the compile-failure flag and entry counts, not the entries themselves, to poll cheaply
218
+ while something else runs.
219
+
220
+ Older `com.unity.pipeline` documentation names this command `get_console_logs`, and before command
221
+ groups it was `console` (with `console_status` and `clear_console` alongside it); the currently
222
+ shipping command is `console get` (with `console status` and `console clear`), which is a
223
+ case in point for confirming names against `unity command` rather than trusting any cached
224
+ documentation, this page included.
225
+
226
+ ### 7. Tune the running game with `script eval`, not edit, recompile, and re-enter Play mode
227
+
228
+ Once Play mode is confirmed live, prefer evaluating C# against the running instance over leaving
229
+ Play mode to edit a script, recompiling, and re-entering: it is one round trip instead of a
230
+ domain reload plus a fresh Play mode entry, and it does not lose whatever state you were verifying.
231
+
232
+ ```bash
233
+ unity command script eval "UnityEngine.Time.timeScale = 0.5f;"
234
+ ```
235
+
236
+ A bare positional string is `script eval`'s `code` parameter at its default 5-second timeout. Override the
237
+ timeout with the fully-named form (`timeout` is milliseconds on `script eval`, not the seconds `unity
238
+ command --timeout` takes, which is exactly the collision the `--` fence in this page's intro
239
+ exists for):
240
+
241
+ ```bash
242
+ unity command script eval -- --code 'return UnityEngine.Time.frameCount;' --timeout 15000
243
+ ```
244
+
245
+ Reach for `script create` → `unity recompile` → `script attach` (documented in
246
+ [integration-advanced.md → Authoring custom `[CliCommand]` tools](integration-advanced.md#authoring-custom-clicommand-tools))
247
+ only when the change genuinely needs a new type or a persistent script asset. For a one-off runtime
248
+ tweak inside a live Play mode session, `script eval` is cheaper and keeps the loop in this page intact.
249
+
250
+ ### 8. Exit Play mode when you are done
251
+
252
+ ```bash
253
+ unity command editor.playmode stop
254
+ unity command editor.playmode set_run_in_background -- --enabled false
255
+ unity command editor set_auto_tick -- --enabled false
256
+ ```
257
+
258
+ Stop only a session you started. One that was already playing when you read `editor status` in
259
+ step 1 is the user's. Then put back what step 2 changed: with `persist=true`, auto-tick otherwise
260
+ keeps the Editor ticking while unfocused for the rest of the session. Skip the `editor set_auto_tick`
261
+ revert if you'll keep driving the Editor, because an unfocused Editor stalls without it.
262
+
263
+ ## Summary: the ordered commands
264
+
265
+ ```bash
266
+ unity status --format json
267
+ unity command editor status # already playing or paused? Then the session is the user's: read it, change nothing
268
+ unity command editor set_auto_tick
269
+ unity command editor.playmode set_run_in_background
270
+ unity command editor.playmode start
271
+ unity status --until-ready --project-path <path> --format json
272
+ unity command job wait -- --condition '{"member":"UnityEngine.Time.frameCount","op":"changed"}' --timeout 10
273
+ unity command capture game_view -- --source screen --output-path Screenshots/playtest.png # --source camera when the machine may be locked
274
+ unity command console get -- --tail 50 --level error
275
+ unity command script eval "<C# to inspect or tune the running game>"
276
+ unity command editor.playmode stop
277
+ unity command editor.playmode set_run_in_background -- --enabled false
278
+ unity command editor set_auto_tick -- --enabled false # skip if you'll keep driving the Editor
279
+ ```