@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,490 @@
1
+ # Editors, install & modules — unity-cli command reference
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 common workflows. All global flags (`--format json`,
5
+ `--non-interactive`, `--yes`, `--proxy`, …) apply to every command below.
6
+
7
+ ### Contents
8
+
9
+ - Editors — list, install, uninstall
10
+ - Software Terms — `unity terms`
11
+ - Install
12
+ - Uninstall
13
+ - Modules — add/list per editor
14
+ - install-modules
15
+
16
+ ---
17
+
18
+ ### Editors — list, install, uninstall
19
+
20
+ ```bash
21
+ # List all editors (installed + available releases)
22
+ # Short alias: unity e. The bare `unity editors` is shorthand for the explicit `unity editors` (matches projects/templates/modules)
23
+ unity editors --format json
24
+
25
+ # List only installed editors
26
+ # As of 0.1.0-beta.8 the --installed table includes an "Upgrade to" column flagging editors with a newer patch in their line
27
+ unity editors --installed --format json
28
+
29
+ # List only available releases
30
+ unity editors --releases --format json
31
+
32
+ # Filter by architecture
33
+ unity editors --installed --architecture arm64 --format json
34
+
35
+ # Show detailed module info
36
+ unity editors --long
37
+
38
+ # Watch mode — live-updates as editors are installed or removed
39
+ unity editors --watch
40
+ unity editors --installed --watch
41
+ ```
42
+
43
+ `unity editors` honors `--format tsv` and `--format ndjson` for its default listing. Identifier columns keep their natural width even if the table exceeds the terminal — they are no longer silently truncated.
44
+
45
+ In the `--json` and `--format ndjson` rows of an installed Editor, read `moduleNames`, an array of the installed platforms (with `--long`, the full module names). The `modules` string joins the same names with `, ` and is deprecated: a module name can itself contain a comma.
46
+
47
+ #### editors running
48
+
49
+ List the Unity Editor instances currently running and the project each has open, with the editor version and process id per instance:
50
+
51
+ ```bash
52
+ unity editors running
53
+ unity editors running --format json
54
+ ```
55
+
56
+ Detection is cross-platform (process table plus each project's Pipeline lockfile), and the version falls back to a project's `ProjectSettings/ProjectVersion.txt` for editors without the Pipeline package. An empty list is a normal result (exit 0). Honors the global `--format human|json|tsv|ndjson` (and `--json`). In JSON each row of `data.instances` carries `pid`, `projectPath`, `projectName`, `editorVersion` (`null` when unknown), `port`, `hasPipeline` and `reachable`. Read `editorVersion`: `unityVersion` holds the same value and is deprecated.
57
+
58
+ #### editors add
59
+
60
+ Register one or more existing editor installations by path:
61
+
62
+ ```bash
63
+ unity editors add /path/to/Unity/Editor
64
+
65
+ # Register multiple at once
66
+ unity editors add /path/one /path/two
67
+
68
+ # Skip macOS code-signature check (useful for unsigned or side-loaded builds)
69
+ unity editors add /path/to/Unity/Editor --skip-signature-check
70
+ ```
71
+
72
+ #### editors default
73
+
74
+ ```bash
75
+ # Show current default editor
76
+ unity editors default --format json
77
+
78
+ # Set default by version, alias, or keyword
79
+ unity editors default 6000.0.47f1
80
+ unity editors default latest
81
+ unity editors default lts
82
+
83
+ # Clear the default
84
+ unity editors default --unset
85
+ ```
86
+
87
+ On a TTY with no arguments, shows an interactive selection prompt.
88
+
89
+ #### editors path
90
+
91
+ ```bash
92
+ # Print the install directory of an installed editor (local, offline — no release-feed fetch)
93
+ unity editors path 6000.0.47f1
94
+ unity editors path 6000.0.47f1 --architecture arm64 --json
95
+ ```
96
+
97
+ Honors `--architecture` and `--format` / `--json`, and reports ambiguous matches so you can narrow by version or architecture.
98
+
99
+ #### editors install-path
100
+
101
+ ```bash
102
+ # Show the directory where editors are installed
103
+ unity editors install-path
104
+
105
+ # Set a new install path
106
+ unity editors install-path --set /path/to/editors
107
+ ```
108
+
109
+ Also available as the top-level `unity install-path` (with an additional `--get` flag). Distinct from `editors path`: `install-path` gets/sets the *root* install directory; `editors path` prints the install directory of *one* editor version.
110
+
111
+ #### editors info
112
+
113
+ ```bash
114
+ # Show release details for a specific version
115
+ unity editors info 6000.0.47f1 --format json
116
+ # Details for a specific architecture's build (default: this machine's)
117
+ unity editors info 6000.0.47f1 --architecture x86_64 --format json
118
+ ```
119
+
120
+ `downloadUrl` and `modules` describe the build for this machine's architecture. When the release has no build for it, the default falls back to the platform's first download instead: on Linux arm64 that is the x86_64 installer, which runs only under FEX-Emu (see [Linux arm64](#linux-arm64-experimental-x86_64-editor-under-fex-emu)). `--architecture arm64|x86_64` selects a build explicitly, with no fallback; when the release has no build for it, `downloadUrl` is null.
121
+
122
+ #### editors upgrade
123
+
124
+ New in `0.1.0-beta.8`. Upgrade an installed editor to the newest official (f-channel) patch in the same `major.minor` line (e.g. `2022.3.10f1` → `2022.3.62f1`), carrying the installed modules over (except the IDE modules, Visual Studio Code and Visual Studio, which update themselves; add `-m visualstudiocode` to install it anyway). The `[editor]` argument accepts an exact version, a `major.minor` line, or the `latest` / `lts` / `default` aliases. Editors install side by side — the old version is kept unless `--replace` (alias `--remove-old`) is passed.
125
+
126
+ ```bash
127
+ # Upgrade a specific editor (or the default / lts / latest) to the newest patch in its line
128
+ unity editors upgrade 2022.3.10f1
129
+ unity editors upgrade lts
130
+
131
+ # Upgrade every installed editor that has a newer patch
132
+ unity editors upgrade --all --yes --accept-eula
133
+
134
+ # Report current → target without installing (--check is an alias for --dry-run)
135
+ unity editors upgrade --all --dry-run --format json
136
+
137
+ # Remove the old editor after a successful upgrade; skip carrying modules; add extra modules
138
+ unity editors upgrade 2022.3.10f1 --replace --yes
139
+ unity editors upgrade 2022.3.10f1 --no-modules
140
+ unity editors upgrade 2022.3.10f1 --module android --module ios
141
+ ```
142
+
143
+ #### editors prune
144
+
145
+ Finds installed editors that **no registered project uses** and, optionally, uninstalls them. Report-only by default — it never deletes anything unless you pass `--remove`.
146
+
147
+ ```bash
148
+ # Report only: which editors are unused, and how much they'd reclaim
149
+ unity editors prune
150
+
151
+ # Uninstall the unused editors (prompts to confirm)
152
+ unity editors prune --remove
153
+
154
+ # Non-interactive: --yes is REQUIRED alongside --remove in a script or CI
155
+ unity editors prune --remove --yes
156
+
157
+ # Machine output
158
+ unity editors prune --format json
159
+ ```
160
+
161
+ The report lists version, architecture, path, size, and status, then the total reclaimable size. With `--remove` in a non-interactive shell and no `-y, --yes`, it refuses rather than deleting unprompted. "Unused" is judged against the **project registry** (`unity projects`), so an editor used only by a project you never registered counts as unused — register it first, or verify with `unity editors prune` before adding `--remove`.
162
+
163
+ When an Editor folder holds files this user can't delete (installed with `sudo` or by a package), `prune --remove`, `uninstall` and `editors upgrade --replace` remove it through an administrator password dialog, and only on a terminal: one line says why first. With no terminal on stdin, under `--non-interactive`, in CI, or with `--format json`/`ndjson`/`tsv`, they stop before anything is removed with exit 2 and code `UNINSTALL_ELEVATION_NEEDS_TERMINAL`. Run the command from a terminal or as root; `UNITY_NO_ELEVATE=1` skips the dialog but refuses the removal too.
164
+
165
+ **`--remove-missing` is a separate, safer candidate class:** editors registered with `unity editors add` (typically internal branch builds) whose recorded install path no longer resolves on disk at all.
166
+
167
+ ```bash
168
+ # Also report editors whose install path is already gone
169
+ unity editors prune --remove-missing
170
+
171
+ # Drop those entries from the editor list (prompts to confirm)
172
+ unity editors prune --remove-missing --yes
173
+ ```
174
+
175
+ Unlike `--remove`, this never touches the filesystem — the folder is already gone, so there is nothing to delete, and confirming only updates the registry. It doesn't require the running-editor check to succeed, since nothing can be running out of a folder that no longer exists. The two flags are independent and neither implies the other; `--format json`/`ndjson` carry the missing-path rows under `data.missing`.
176
+
177
+ #### editors verify
178
+
179
+ Structurally verifies an installed editor: checks that its files and modules are actually present on disk. It's the command to reach for when an editor launches oddly, a module seems half-installed, or a download was interrupted.
180
+
181
+ ```bash
182
+ # Verify an installed editor
183
+ unity editors verify 6000.1.0f1
184
+
185
+ # Disambiguate when the same version is installed for two architectures
186
+ unity editors verify 6000.1.0f1 --architecture arm64
187
+
188
+ # Machine output
189
+ unity editors verify 6000.1.0f1 --json
190
+ ```
191
+
192
+ Reports each component as `ok`, `missing`, or `skipped`, and names the exact `unity install-modules` command to repair anything missing. A clean editor exits 0; missing or empty files fail the check. This is a **structural** check — it confirms files exist, not that they are uncorrupted or correctly signed. `--architecture` is inherited from the `editors` parent, so `unity editors --architecture arm64 verify <version>` works too.
193
+
194
+ #### editors module / editor module
195
+
196
+ Module management is exposed under **both** `editors module` and the `editor` (singular) command group. Both share the same subcommands:
197
+
198
+ ```bash
199
+ # List modules for an installed editor
200
+ unity editors modules 6000.0.47f1 --format json
201
+ unity editor modules 6000.0.47f1 --architecture arm64 --format json
202
+
203
+ # Add modules to an installed editor
204
+ unity editors module add 6000.0.47f1 --module android --module ios
205
+ unity editors module add 6000.0.47f1 --all # Install every available module
206
+ unity editors module add 6000.0.47f1 --module android --child-modules # Include child modules
207
+ unity editors module add 6000.0.47f1 --module android --accept-eula # Accept EULAs automatically
208
+
209
+ # Remove installed modules from an editor by id (-m/--module, repeatable)
210
+ unity editors module remove 6000.0.47f1 --module android --module ios
211
+ unity editor module remove 6000.0.47f1 -m android -a arm64 # disambiguate side-by-side installs
212
+ unity editors module remove 6000.0.47f1 -m android --yes # skip the confirm prompt (required non-interactively)
213
+
214
+ # Refresh module list for a manually located editor
215
+ unity editors module refresh 6000.0.47f1
216
+ ```
217
+
218
+ `module remove` prompts to confirm before deleting the module files; `-y` / `--yes` skips the prompt and is required in non-interactive mode. Supports `-a` / `--architecture` to disambiguate side-by-side installs and the global `--format human|json|tsv|ndjson`.
219
+
220
+ #### editor add (single path, with module-fetch control)
221
+
222
+ The `editor add` subcommand is similar to `editors add` but targets a single path and supports skipping the module-fetch step:
223
+
224
+ ```bash
225
+ unity editor add /path/to/Unity/Editor
226
+
227
+ # Skip fetching module metadata (faster, but modules won't be listed until refreshed)
228
+ unity editor add /path/to/Unity/Editor --no-fetch-modules
229
+ ```
230
+
231
+ ---
232
+
233
+ ### Software Terms — `unity terms`
234
+
235
+ Each Unity Editor stops at its "Unity Editor Software Terms" dialog (Accept and Continue / Decline) the first time it opens windowed, until the terms are accepted for that Editor. Current Editors ignore `-acceptSoftwareTermsForThisRunOnly`, so no launch flag prevents the dialog. `unity terms accept <version>` records the user's acceptance the way the dialog's Accept button does, so a container image or a provisioning script can prepare an Editor before it first opens.
236
+
237
+ <!-- unity-example: skip (Rust-only) -->
238
+ ```bash
239
+ # Show the terms link and the copy installed with the Editor, then ask (default No)
240
+ unity terms accept 6000.3.10f1
241
+
242
+ # Accept without asking (unattended setup, after the user has read and agreed to the terms)
243
+ unity terms accept 6000.3.10f1 --yes
244
+ unity terms accept latest --architecture arm64 --yes
245
+
246
+ # Whether the terms are accepted, for every installed Editor or one
247
+ unity terms status
248
+ unity terms status 6000.3.10f1 --json
249
+ ```
250
+
251
+ - **Accepting is the user's decision.** On a terminal `accept` prints the terms link (https://unity.com/legal/editor-terms-of-service/software) and the path of the terms file the Editor ships, then asks. Without a terminal (`--non-interactive`, `UNITY_NON_INTERACTIVE`, `--json` or another machine format, redirected input or output) it refuses with exit `2` and `TERMS_ACCEPT_NEEDS_CONFIRMATION` unless `--yes` is passed. Never pass `--yes` for the user unasked: show them the link and let them decide, or let them run the command.
252
+ - `<version>` resolves like `unity editors path`: an installed version, `latest` or `lts`, and `-a` / `--architecture` when a version is installed for both. An Editor that is not installed fails with `TERMS_EDITOR_NOT_INSTALLED`, an ambiguous version with `TERMS_EDITOR_AMBIGUOUS`, and an Editor that ships no terms file with `TERMS_FILE_MISSING`.
253
+ - The acceptance belongs to the exact terms file: its key is `Terms-` and the file's MD5, so Editors that ship the same terms share one answer, and an Editor with new terms asks again. An answer that is already recorded is reported (`alreadyAccepted: true`) and nothing is written.
254
+ - It writes only the Editor's own preference, for the current user: `HKCU\Software\Unity Technologies\Unity Editor 5.x` on Windows, the `com.unity3d.UnityEditor5.x` defaults domain on macOS, `~/.local/share/unity3d/prefs` (or `$XDG_DATA_HOME/unity3d/prefs`) on Linux. Close every open Unity Editor first: on macOS and Linux a running Editor can overwrite the answer when it saves its own preferences.
255
+ - `terms status` lists each installed Editor as `accepted`, `not-accepted` or `no-terms-file`, in every `--format`; `--json` carries `key`, `termsFile` and the `store` location for each.
256
+
257
+ ---
258
+
259
+ ### Install
260
+
261
+ ```bash
262
+ # Install an editor (interactive version selection if omitted)
263
+ unity install 6000.0.47f1
264
+
265
+ # Install with specific modules
266
+ unity install 6000.0.47f1 --module windows-mono --module android
267
+
268
+ # Install a specific changeset by hash (a changeset that is not that version's build exits 11, RELEASE_NOT_FOUND)
269
+ unity install 6000.0.47f1 --changeset abc123def456
270
+
271
+ # Include child modules
272
+ unity install 6000.0.47f1 --child-modules
273
+
274
+ # Exclude child modules
275
+ unity install 6000.0.47f1 --no-child-modules
276
+
277
+ # Install and accept EULAs automatically (CI)
278
+ unity install 6000.0.47f1 --yes --accept-eula
279
+
280
+ # Force reinstall even if already present
281
+ unity install 6000.0.47f1 --force
282
+
283
+ # Install the latest release and make it the default editor, in one command
284
+ unity install latest --set-default
285
+
286
+ # Resume an interrupted download — editor installer or module — (also recovers orphaned partials left by a crash or kill)
287
+ unity install 6000.0.47f1 --resume
288
+
289
+ # Dry-run: show what would be installed without doing it
290
+ unity install 6000.0.47f1 --dry-run --format json
291
+
292
+ # List the editor's available modules and exit without installing
293
+ # (a drop-in alias for `unity modules <version>`)
294
+ unity install 6000.0.47f1 --list-modules --format json
295
+
296
+ # Space-separated module values after a single -m are equivalent to repeating -m
297
+ unity install 6000.0.47f1 -m android ios # space-separated
298
+ unity install 6000.0.47f1 -m android -m ios # repeated flag (same effect)
299
+
300
+ # Windows: keep the install service unelevated. The Editor's NSIS installer is manifested
301
+ # `highestAvailable`, so it runs unelevated for a STANDARD user (the supported unprivileged
302
+ # install — it reports any dependencies an admin must finish) but still asks for elevation on
303
+ # demand under an administrator account. In CI, where a prompt can't be answered, run the
304
+ # agent elevated instead. Also via UNITY_NO_ELEVATE=1.
305
+ unity install 6000.0.47f1 --no-elevate --yes --accept-eula
306
+ ```
307
+
308
+ A transient editor or module download failure (a dropped connection, a truncated transfer) is retried with the same bounded policy `install-modules` already uses (two attempts by default; `UNITY_INSTALL_RETRIES` sets the count for both commands, and the `--retries` flag exists on `install-modules` only — `unity install` has no such flag) before the install fails. When installing an editor with several modules, a failed module no longer aborts the whole batch — `unity install` (and `unity install-modules`) continue with the remaining items and exit non-zero if any failed. Each editor and module is listed as installed (✓), failed (✗), or pending (·); the NDJSON `result` frame carries the same breakdown as an `items` array (each entry has `uid`, `name`, `kind`, `status`), so scripts can tell exactly which modules succeeded even on a non-zero exit.
309
+
310
+ **NDJSON progress frames** for `unity install` and `unity install-modules` include a `phase: 'download' | 'install'` field so scripts can switch to an indeterminate spinner during the install phase (which is genuinely indeterminate — NSIS on Windows only reports success/failure). During the install phase, `pct` is locked at 50 and only jumps to 100 on completion. Module download/install progress is nested under the parent editor via `parentItemUid`, so consumers see one editor group with its modules rather than one group per module.
311
+
312
+ On an interactive terminal, `unity install` also reports progress to the terminal application itself via the `OSC 9;4` escape sequence — on Windows Terminal the taskbar icon fills with download/install progress and spinners show as indeterminate, so you don't need to keep the window focused. It's emitted only on a TTY (never in piped or machine-consumed output), always cleared on exit, and ignored by terminals that don't support it.
313
+
314
+ Module installers honor the per-module install command from the release manifest (e.g. Visual Studio on Windows uses `--passive`, not `/S`); the resolved command is surfaced in `unity modules --json`. In the `--json` and `--format ndjson` rows of `unity modules`, `unity editors modules` and `unity install-modules --list`, read `downloadBytes`, `installedBytes` (integers) and `isInstalled` (boolean): `status`, `download` and `installed` are display text, and `status` is translated. `unity install` self-heals a corrupted partial download by discarding the bad partial and re-downloading; a cross-process install lock prevents two concurrent installs of the same version from corrupting the unpack.
315
+
316
+ **Waiting on another install.** The Hub and the CLI share one install lock, so while the Hub (or another CLI) is installing, `unity install`, `unity install-modules` and `unity projects require` print `Waiting for another install to finish before continuing…` on stderr and carry on once it finishes. That wait has no limit by default. In a script or CI job, bound it:
317
+
318
+ ```bash
319
+ # Fail at once if another install is already running, before this item is downloaded
320
+ unity install 6000.0.47f1 --yes --no-wait
321
+
322
+ # Wait up to 10 minutes in total, then fail the same way
323
+ unity install-modules --editor-version 6000.0.47f1 -m android --timeout 600
324
+ ```
325
+
326
+ `--timeout <seconds>` takes a whole number of seconds greater than 0 (digits only: `5m` and `1.5` are rejected) and is one budget for the whole command, not per module; `--no-wait` wins if both are given. When the wait runs out, or `--no-wait` finds the lock held, the command exits **9** with error code `INSTALL_LOCK_BUSY` (in the json envelope's `errors[].code`, and in the ndjson `result` frame), distinct from a failed install's exit 6, so a script can retry later. The error says another install is in progress and to run the command again once it finishes; the "Waiting for another install" line on stderr only appears while a wait is running, the default one or a bounded one, and never under `--no-wait`.
327
+
328
+ The lock is taken per item, so exit 9 does not mean nothing changed. `--no-wait` refuses an item before its download only when the lock is already held; if the Hub takes it while the item downloads, the item fails after the download. And `unity install <version> -m android --no-wait` can install the editor, then stop at the module: check `data.completedUids` in the ndjson `result` frame, and finish with `unity install-modules --editor-version <version> -m android` rather than re-running `unity install`, which now fails because the editor is already installed. A second `unity install` of the **same** version fails at once with exit 6 ("Another install of … is already in progress") before it reaches this lock, whatever the flags.
329
+
330
+ #### Make the installed Editor the default (`--set-default`)
331
+
332
+ `--set-default` stores the installed version as the default Editor, as `unity editors default <version>` does, once the install succeeds. It works with a version, `latest` or `lts`, and is one command on every shell, Windows PowerShell 5.1 included.
333
+
334
+ - Nothing is stored when the install fails. That includes an Editor that's already installed (exit 6, which `unity install` refuses without `--force`; run `unity editors default <version>` instead) and a `--no-wait` or `--timeout` that gives up on another install (exit 9). `--dry-run` stores nothing either.
335
+ - The json envelope and the ndjson `result` frame carry the stored version as `data.defaultVersion`. A human run ends with "Default editor version set to …".
336
+ - If the install succeeds but the default can't be stored, the command fails with exit 6 and `SET_DEFAULT_FAILED`. The Editor stays installed (`data.completedUids` lists it), and the message names `unity editors default <version>` to try again.
337
+ - It can't be combined with `--resume` or `--download-directory` (a usage error, exit 2), since neither installs one Editor the Hub finds by its version.
338
+ - Under `sudo` it is refused up front (exit 2), before anything downloads, because the setting would be written as root and the Hub couldn't change the default afterwards. Run the install without `sudo`, or leave `--set-default` out and run `unity editors default <version>` as yourself afterwards.
339
+
340
+ #### Another operating system's Editor (`--operating-system`)
341
+
342
+ `unity releases` and `unity install --dry-run` look up the host's OS by default. `--operating-system <windows|macos|linux>` looks up another one, so you can check what a Windows build machine would download from a Mac. It has no short flag.
343
+
344
+ ```bash
345
+ # Windows releases, from any host
346
+ unity releases --operating-system windows --limit 5 --format json
347
+
348
+ # What a Windows install of this version and its modules would download (il2cpp resolves to windows-il2cpp)
349
+ unity install 6000.0.47f1 --dry-run --operating-system windows -m il2cpp --format json
350
+ ```
351
+
352
+ Another OS's listing asks for the builds that OS ships and prefers its usual one: arm64 on macOS, x86_64 on Windows and Linux. Pass `--architecture arm64` to `install` for a Windows arm64 build. Its `installed` column is always false, because this machine can't hold another OS's Editor. The dry run's `data.editor` gains `"operatingSystem": "windows"` and `alreadyInstalled` is always false; the human plan adds an `Operating system: Windows` line. Naming the host's own OS changes nothing.
353
+
354
+ The CLI never runs another OS's installer. Without `--dry-run` or `--download-only`, or with `--changeset` or `--resume`, it stops with exit 2 and `CROSS_OS_INSTALL_UNSUPPORTED`, naming the download, the dry run and `unity releases`. To fetch another OS's Editor without installing it, see `--download-only` below. An unknown value is exit 2 with `INVALID_OPERATING_SYSTEM`. `--list-modules` lists an installed Editor's modules, so it can't be combined with `--operating-system` (exit 2); `unity modules` and `unity editors --releases` stay on the host's OS.
355
+
356
+ #### Download without installing (`--download-only`)
357
+
358
+ `unity install <version> --download-only` fetches the Editor and its modules into the Hub's download folder (`<app data>/downloads`, or the Hub's secondary download location when one is set) and stops. Nothing is installed or registered, no installer runs, and no install destination is needed. It takes the same download-file claims as an install, so it never reuses or resumes a payload another install or the Hub is writing. It works for the host's OS and, with `--operating-system <windows|macos|linux>`, for another one, so a build machine's payloads can be staged from any host.
359
+
360
+ ```bash
361
+ # Stage the Windows Editor and its il2cpp module from a Mac
362
+ unity install 6000.0.47f1 --download-only --operating-system windows -m il2cpp --accept-eula
363
+ ```
364
+
365
+ Each payload is checked against its published size and checksum before the run reports success, and a payload that fails is removed. Only the modules you name with `-m` are fetched, and the license gate is unchanged: a non-interactive run needs `--accept-eula`. The envelope's items end as `downloaded` (listed in `data.completedUids`) and `data.path` is the download folder; the human summary says where the files are and that nothing was installed. `-d/--download-directory` still means a portable install and cannot be combined with it, nor can `--resume`, `--set-default` or `--list-modules` (exit 2). `--changeset` with another OS's `--operating-system` is still refused.
366
+
367
+ #### Headless Linux Editor (`--headless`)
368
+
369
+ On Linux, a release can also ship a headless Editor that runs with no display, for CI and servers. `unity install` never picks it on its own:
370
+
371
+ - `--headless` installs the headless Editor. A release without one, or a macOS or Windows target, fails with `INSTALL_HEADLESS_UNAVAILABLE`. The bundled catalog doesn't list the headless Editor, so the same error appears when the CLI falls back to it offline.
372
+ - Without it, the version picker (`unity install` with no version, on a terminal) asks which one, with the regular Editor selected. Any other run installs the regular Editor, even on a machine with no display.
373
+
374
+ The headless Editor leaves out the modules it can't use, such as iOS and visionOS. A release without a headless Editor installs the regular one unless `--headless` was given.
375
+
376
+ ```bash
377
+ # A CI image: the headless Editor and Android support
378
+ unity install 6000.7.0f1 --headless -m android --accept-eula
379
+ ```
380
+
381
+ #### Linux arm64: experimental x86_64 Editor under FEX-Emu
382
+
383
+ Unity ships no Linux arm64 Editor. On a Linux arm64 host you can opt in to running the x86_64 Editor under [FEX-Emu](https://github.com/FEX-Emu/FEX) by setting `UNITY_EXPERIMENTAL_FEX_EMU=1`. The opt-in takes effect only when a FEX-Emu entry point (`FEX`, or the older `FEXLoader`) is on PATH and an x86_64 RootFS resolves (`FEX_ROOTFS`, or the `RootFS` in FEX-Emu's own `Config.json`); `unity doctor` reports both as its `fex-emu` row. While it is active, `unity install` defaults to `x86_64`, and every Editor launch (`open`, `projects open`, `run`, `test`, `build`, `projects create`) runs as `FEX <editor> <args>` with no `binfmt_misc` needed.
384
+
385
+ This is **experimental and unsupported**: C# script compilation is known to crash under FEX-Emu ([FEX-Emu/FEX#5766](https://github.com/FEX-Emu/FEX/issues/5766)), so don't use it for real development. Every command it affects says so: a warning on stderr for human and tsv output, and a `FEX_EMU_EXPERIMENTAL` entry in the envelope's `notifications` for json and ndjson. Without the opt-in nothing changes.
386
+
387
+ #### Portable install into a folder (`--download-directory`)
388
+
389
+ `-d, --download-directory <dir>` installs a self-contained Editor into a folder you name, for an ephemeral CI workspace or a side-by-side copy. The Editor lands in `<dir>/<version>` (or `<dir>/<version>-<arch>` when that slot is taken), with its own `modules.json` and `metadata.hub.json`. Nothing else changes: the global install path (`unity install-path`), the Hub's Editor list and the Linux desktop entry are left alone, so `unity editors` doesn't list it. A folder outside the Hub's install folder doesn't touch the shared install-state database either. A relative path resolves against the working directory.
390
+
391
+ ```bash
392
+ # CI: install into the workspace, no prompts, machine-readable result
393
+ unity install 6000.0.47f1 -d ./.unity -m android --non-interactive --yes --accept-eula --format json
394
+
395
+ # See where it would go first
396
+ unity install 6000.0.47f1 -d ./.unity --dry-run --format json
397
+
398
+ # Add a module later: point install-modules at the same folder
399
+ unity install-modules --editor-version 6000.0.47f1 -d ./.unity -m ios --yes
400
+
401
+ # Register it with the Hub afterwards, if you want it listed (Linux path shown;
402
+ # a human install run prints the exact command for your platform)
403
+ unity editors add ./.unity/6000.0.47f1/Editor/Unity
404
+ ```
405
+
406
+ - The json/ndjson result carries the Editor folder as `data.path` (the dry run too). A human run prints the folder and the `unity editors add` command that registers it.
407
+ - Only the target folder is checked for an existing copy: a second install there fails with exit 6 unless you pass `--force`.
408
+ - Installs into different folders run at once: each folder has its own lock, and none of them waits on the Hub's install lock. Two installs of one version into the **same** folder still refuse each other.
409
+ - A `-d` that names the Hub's own install folder (or any folder, when the install-path config can't be read) locks like a normal install: it waits on the Hub's install lock and uses the shared install-state database.
410
+ - `--resume` can't be combined with it (exit 2): there is no per-folder download state to resume. Re-run the install instead.
411
+ - `--list-modules` can't be combined with it either (a usage error, exit 2).
412
+
413
+ ### Uninstall
414
+
415
+ ```bash
416
+ # Uninstall an editor version
417
+ unity uninstall 6000.0.47f1 --yes
418
+
419
+ # Uninstall a specific architecture
420
+ unity uninstall 6000.0.47f1 --architecture arm64 --yes
421
+ ```
422
+
423
+ - The json result (and the one ndjson result frame) carries the removed Editor as `data.version` and `data.architecture`. Under `--format tsv` it is a `key<TAB>value` table of the same two members. A human run prints the completion line.
424
+ - With no version, the stored default Editor is used and announced on stderr (`Using default editor version: ...`), so stdout stays the result alone under every format.
425
+
426
+ ---
427
+
428
+ ### Modules — add/list per editor
429
+
430
+ ```bash
431
+ # List modules for an installed editor
432
+ unity modules 6000.0.47f1 --format json
433
+
434
+ # Filter by architecture
435
+ unity modules 6000.0.47f1 --architecture arm64 --format json
436
+ ```
437
+
438
+ `unity modules` honors `--format ndjson` (empty results emit a clean, empty NDJSON stream). The last column is `Aliases` — the alternate module names `-m`/`--module` accepts for that row; under `--format json` it's the `aliases` field (renamed from the old `downloaderName`).
439
+
440
+ ### install-modules
441
+
442
+ ```bash
443
+ # List available modules without installing
444
+ unity install-modules --editor-version 6000.0.47f1 --list
445
+
446
+ # Install specific modules
447
+ unity install-modules --editor-version 6000.0.47f1 --module android --module ios
448
+
449
+ # Install all available modules
450
+ unity install-modules --editor-version 6000.0.47f1 --all --yes
451
+
452
+ # Include child modules (default behaviour)
453
+ unity install-modules --editor-version 6000.0.47f1 --module android --child-modules
454
+
455
+ # Exclude child modules
456
+ unity install-modules --editor-version 6000.0.47f1 --module android --no-child-modules
457
+
458
+ # Accept EULAs and dry-run
459
+ unity install-modules --editor-version 6000.0.47f1 --all --accept-eula --dry-run
460
+
461
+ # Reinstall modules that are already installed (a repair)
462
+ unity install-modules --editor-version 6000.0.47f1 --module android --reinstall
463
+
464
+ # -f/--force implies --reinstall, auto-includes child modules, and skips confirmation prompts
465
+ unity install-modules --editor-version 6000.0.47f1 --module android --force
466
+
467
+ # Tune the automatic retry for modules whose download/validation fails intermittently
468
+ # (default retries twice with backoff; 0 disables). Also via UNITY_INSTALL_RETRIES.
469
+ unity install-modules --editor-version 6000.0.47f1 --module android --retries 3
470
+ unity install-modules --editor-version 6000.0.47f1 --module android --retries 0
471
+
472
+ # Windows: skip the elevated (UAC) install helper (also via UNITY_NO_ELEVATE=1)
473
+ unity install-modules --editor-version 6000.0.47f1 --module android --no-elevate
474
+
475
+ # An Editor installed with `unity install --download-directory`: look it up in that folder
476
+ unity install-modules --editor-version 6000.0.47f1 --download-directory ./.unity --module android
477
+ ```
478
+
479
+ `--list` and `--all` are mutually exclusive. `--list` is also mutually exclusive with `--module`.
480
+
481
+ A module whose download or validation fails intermittently — common for large modules such as Android SDK/NDK and OpenJDK — is retried automatically (up to twice with exponential backoff by default) instead of failing the whole run; already-installed modules are never re-downloaded, and retry attempts surface in both human and `--format ndjson` output.
482
+
483
+ `--module android ios` (space-separated values after a single `--module`) and `--module android --module ios` (repeated flag) are equivalent — both install all listed modules.
484
+
485
+ `--child-modules` / `--no-child-modules` is the primary spelling on both `install` and `install-modules`, matching `unity editors module add`; the old `--cm` / `--no-cm` shorts keep working as hidden aliases.
486
+
487
+ Module discovery works for editors registered via `unity editors add <path>` (located editors), not just editors installed by the Hub.
488
+
489
+ ---
490
+
@@ -0,0 +1,42 @@
1
+ # Environment variables
2
+
3
+ All CLI env vars use the `UNITY_` prefix. A CLI flag always overrides the corresponding env var.
4
+
5
+ | Variable | Mirrors flag | Description |
6
+ |---|---|---|
7
+ | `UNITY_FORMAT` | `--format` | Output format (`human`, `json`, `tsv`, `ndjson`, `github`). `HUB_FORMAT` is a deprecated alias. |
8
+ | `UNITY_EDITOR_VERSION` | `--editor-version` | Editor version (e.g. `2023.3.0f1`, `latest`, `lts`). Read by every command that takes `--editor-version`, `build` included; `build` prints a notice when the variable chose its Editor. Not read by the `pipeline cloud-build` filters. |
9
+ | `UNITY_ARCHITECTURE` | `--architecture` | Chip architecture (`x86_64`, `arm64`). `build` names it in the same notice. |
10
+ | `UNITY_PROJECT_PATH` | `--project-path` | Project path when none is passed. Read by every command that takes `--project-path` (the Editor-connecting commands, `recompile`, `pipeline`, `collaboration`, `assets`, `auth default`, `templates create`/`pack`, `projects link`, `projects unlink vcs` and the `vcs` commands that act on a project) and by `open`. A path argument or `--project-path` wins over it. Not read by `close` (and `projects close`), `projects unlink cloud`, `mcp configure` or `ci init`. |
11
+ | `UNITY_QUIET` | `--quiet` | Suppress non-essential output. |
12
+ | `UNITY_VERBOSE` | `--verbose` | Show full error details on failure. |
13
+ | `UNITY_NON_INTERACTIVE` | `--non-interactive` | Disable interactive prompts. |
14
+ | `UNITY_NO_BANNER` | `--no-banner` | Suppress the branded banner. |
15
+ | `UNITY_NO_PAGER` | `--no-pager` | Turn off paging — both the external pager over the long listings and `unity projects`'s interactive one. Presence-based: any value counts, including `0`. |
16
+ | `UNITY_PAGER` | — | The pager to use for the long listings, overriding `$PAGER` and the `less -RFX` default. Runs through a shell, so flags work (`less -S`). A blank value is ignored, not an opt-out. |
17
+ | `PAGER` | — | Same as `UNITY_PAGER`, consulted only when that is unset or blank. |
18
+ | `LESS` / `LV` / `LESSCHARSET` / `MORE` | — | Passed to the pager only when you have not set them, defaulting to `FRX`, `-c`, `utf-8`, and `FRX`. `LESSCHARSET` keeps multi-byte glyphs readable where the locale does not declare UTF-8; `MORE` exists because `more` on macOS/BSD is `less` under another name and reads `$MORE`, so without it `PAGER=more` waits for a keypress even for one line. |
19
+ | `UNITY_RUN_TIMEOUT` | `--timeout` | Timeout for `unity run` in seconds. |
20
+ | `UNITY_TEST_TIMEOUT` | `--timeout` | Timeout for `unity test` in seconds. |
21
+ | `UNITY_CLOUD_ORG` | `--cloud-org` | Active Unity Cloud organization id or name for a single call. |
22
+ | `UNITY_CLOUD_PROJECT` | `--cloud-project` | Cloud project ID or name (a service account needs the ID); used by Cloud Build inventory. Pipeline Automation inventory is organization-scoped. |
23
+ | `UNITY_NO_CLOUD` | `--no-cloud` | Decline the Unity Cloud link on `projects create` and `projects upgrade`. Presence-based: any value counts, including `0`. On `projects create` and `projects upgrade`, an explicit `--cloud`, `--cloud-project`, `--cloud-org` or `--coppa` wins over it. `projects create --vcs uvcs` is refused with it set unless one of those flags overrides it. |
24
+ | `UNITY_SERVICE_ACCOUNT_ID` | — | Service account client ID for non-interactive (CI) auth. |
25
+ | `UNITY_SERVICE_ACCOUNT_SECRET` | — | Service account client secret for non-interactive (CI) auth. |
26
+ | `UNITY_PROXY` | `--proxy` | HTTP/HTTPS/SOCKS/PAC proxy URL. Takes precedence over `HTTPS_PROXY`/`HTTP_PROXY`/`ALL_PROXY` and the persisted `proxy.json` setting. |
27
+ | `UNITY_NO_UPDATE_CHECK` | — | Disable the background "update available" check (see `unity config update-check`). |
28
+ | `UNITY_CLI_ROLLBACK_KEEP` | — | How many previous CLI versions `unity self-update` keeps for `--rollback`, from 1 to 10 (default 3). |
29
+ | `UNITY_NO_AGENT_HINTS` | — | Stop suggesting Unity's agent plugin or skill when an AI agent runs `unity`: Claude Code's install prompt, the `unity setup codex` / `grok` / `antigravity` / `copilot` tip, and the `unity skill install` tip (an `AGENT_PLUGIN_AVAILABLE` entry in the envelope's `notifications` under `--format json`), plus the once-a-day `unity skill sync` notice when installed Unity skills are older than the CLI's pin (`AGENT_SKILLS_OUTDATED`). Presence-based: any value counts. A tip asks you to get the user's approval before running its command. |
30
+ | `UNITY_NO_CRASH_REPORT` | — | Disable anonymous crash/error reporting (Sentry) entirely. The Hub's "Send crash reports" setting, when off, also disables it. |
31
+ | `UNITY_NO_CLI_INVOKED_TELEMETRY` | — | Stop the anonymous once-per-run `cli telemetry` usage ping. Presence-based: any value counts. |
32
+ | `DO_NOT_TRACK` | — | The cross-tool [Console Do Not Track](https://consoledonottrack.com) setting. Any value but empty, `0` or `false` stops the `cli telemetry` usage ping and the upload of opt-in usage data. Licensing records are not affected. |
33
+ | `UNITY_LOG_PROXY` | `--log-proxy` | Log one redacted entry per outbound request to `proxy-request.json`. Truthy values: `1`, `true`. |
34
+ | `UNITY_ACCELERATOR` | `--accelerator` | Unity Accelerator endpoint (`host:port`). Outranks the persisted `accelerator.json`; `--accelerator` outranks it. |
35
+ | `UNITY_NO_ELEVATE` | `--no-elevate` | Windows: skip the elevated (UAC) install helper for `install` / `install-modules`, so the install service runs unelevated. The Editor's NSIS installer still asks for elevation on demand if Windows requires it for your account — an administrator token always does; a standard user never does. |
36
+ | `UNITY_INSTALL_RETRIES` | `--retries` (`install-modules` only) | Number of times `install` and `install-modules` retry an editor or module download whose transfer or validation fails. `0` disables retries; `unity install` has no `--retries` flag, so set the variable there. |
37
+ | `UNITY_NO_AUTH_BROKER` | — | Skip the resident auth broker and read credentials directly from the OS keyring. By default every command that needs a token goes through a broker that starts on demand and exits after two idle minutes (see [auth-license-cloud.md](auth-license-cloud.md)). |
38
+ | `UNITY_CLI_HOME` | — | Install root for the install script and `unity self-install`, on every platform including Windows: the binary lands in `<UNITY_CLI_HOME>/bin` instead of the default location. |
39
+ | `UNITY_NO_EDITOR_IDENTITY_SERVER` | — | Disable the background identity helper that `unity open` starts to answer the Editor’s sign-in lookups when no Hub is running (see [projects-templates.md](projects-templates.md)). Presence-based. |
40
+ | `UNITY_EXPERIMENTAL_FEX_EMU` | none | Linux arm64 only, experimental and unsupported: run the x86_64 Editor under FEX-Emu. `1`, `true` or `yes` turns it on, and it takes effect only when FEX-Emu and an x86_64 RootFS are installed (`unity doctor` checks). C# script compilation is known to crash under FEX-Emu. See [editors-install.md](editors-install.md). |
41
+
42
+ **CI service account auth:** Set both `UNITY_SERVICE_ACCOUNT_ID` and `UNITY_SERVICE_ACCOUNT_SECRET` to skip the browser OAuth flow — this keeps the secret out of the process argument list and shell history. These map to the `--client-id` / `--secret-from-stdin` inputs of `unity auth login`, but reading the credentials from the environment isn't a full login: it doesn't run the interactive flow or persist credentials to the keyring.
@@ -0,0 +1,47 @@
1
+ # Exit codes
2
+
3
+ Branch on the exit code, then on `errors[0].code` in the json or ndjson envelope. **Retry** says
4
+ whether running the same command again, unchanged, can succeed. A command that starts work
5
+ (`pipeline cloud-build builds start`, `pipeline automation pipelines trigger`) would start it
6
+ again, so once its request may have been sent, never re-run it: follow what it started instead.
7
+ `unity commands --json` carries this table as `exitCodes`, with the error codes that pick each
8
+ exit. `6` covers every failure no more specific code names; a missing project, an Editor that
9
+ isn't running, an unknown Editor command and a timeout have their own codes (`11` to `14`). A
10
+ request that gets no answer (offline, a failed DNS lookup, a refused connection, a dead proxy)
11
+ exits `7`; a timeout is `14`, and a reset connection or an unreadable body is
12
+ `6`. A TLS or certificate failure is `ERR_NETWORK` too, so retrying a `7` does not always help,
13
+ and a request already sent may have reached the server: retry only a command that is safe to
14
+ repeat.
15
+
16
+ <!-- exit-codes:begin (checked against the CLI's exit-code table) -->
17
+ | Code | Name | Retry | Meaning |
18
+ |---|---|---|---|
19
+ | 0 | `SUCCESS` | no | The command succeeded. |
20
+ | 1 | `ERROR` | no | An unexpected or unsupported state. |
21
+ | 2 | `BAD_ARGS` | no | A usage error: an unknown command or option, or a bad value. |
22
+ | 3 | `AUTH_ERROR` | no | Not signed in, the session expired, or permission was denied. |
23
+ | 4 | `NEEDS_CONFIG` | no | Setup is missing: a required tool, setting or link. |
24
+ | 6 | `COMMAND_FAILED` | no | The command failed for a reason no more specific code names. |
25
+ | 7 | `NETWORK_UNREACHABLE` | yes | A required service could not be reached. |
26
+ | 8 | `TESTS_FAILED` | no | The tests ran, and some failed. |
27
+ | 9 | `INSTALL_LOCKED` | yes | Another process holds the install lock. |
28
+ | 10 | `READY_TIMEOUT` | yes | The Editor did not become ready in time. |
29
+ | 11 | `NOT_FOUND` | no | What the command names does not exist: a project, a release, a module. |
30
+ | 12 | `EDITOR_UNREACHABLE` | yes | No running Editor answered: none is running, none matches, or it refused the connection. |
31
+ | 13 | `REMOTE_COMMAND_FAILED` | no | The Editor answered, but it has no command by that name. |
32
+ | 14 | `TIMEOUT` | yes | An operation ran out of time: an Editor request, an HTTP request, a batch run. |
33
+ | 15 | `RUN_FAILED` | no | A build or job the command waited on finished unsuccessfully. |
34
+ | 16 | `JOB_SUSPENDED` | yes | A job the command watched waits on a person to resume or approve it. |
35
+ | 17 | `UNAVAILABLE` | yes | The target answered but can't do this now: it is busy. |
36
+ | 18 | `AWAITING_INPUT` | yes | The target answered but waits on a person first: a dialog to dismiss, a prompt to answer. |
37
+ | 130 | `INTERRUPTED` | yes | Interrupted by Ctrl-C (SIGINT). |
38
+ | 141 | `OUTPUT_CLOSED` | no | The reader of stdout closed the pipe. |
39
+ | 143 | `TERMINATED` | yes | Terminated by SIGTERM. |
40
+ <!-- exit-codes:end -->
41
+
42
+ `8` is `unity test` only: the tests ran and some failed. A run that never completed exits `6`
43
+ and a timed-out one `14`, so CI can retry those and never blindly re-run a failing test. `9`:
44
+ earlier items of the same install may already be in place (`data.completedUids`). `10` is
45
+ `unity open --until-ready` only; the Editor is still running. `17` is an Editor that is loading,
46
+ compiling, reloading or in Safe Mode: retry later. `18` is a modal dialog blocking it: list and
47
+ answer it with `unity command editor dialog`, then retry.
@@ -0,0 +1,32 @@
1
+ # Global flags
2
+
3
+ These work on every command:
4
+
5
+ | Flag | Description |
6
+ |---|---|
7
+ | `--format <fmt>` | Output format: `human` (default), `json`, `tsv`, `ndjson`, `github`. Also via `UNITY_FORMAT` env var. |
8
+ | `--json` | Global shorthand for `--format json`, accepted on every command (e.g. `unity status --json`, `unity doctor --json`). Passing it with a different `--format` (e.g. `--json --format tsv`) is a usage error (exit 2); `--json` overrides `UNITY_FORMAT`. |
9
+ | `--no-banner` | Suppress the branded header — use in scripts |
10
+ | `--no-header` | Leave the header row out of `tsv` tables. The header row is the column names, which are the same keys the `json` rows use (`version`, `upgradeTo`, ...). An empty `tsv` result is the header row alone, so with `--no-header` it is no output at all. |
11
+ | `--no-pager` | Turn off paging. Governs both pagers: the external one over the long listings (`unity command`, `releases`, `editors`, `changelog`, `logs`) and the interactive one in `unity projects`. Also via `UNITY_NO_PAGER` (presence-based — any value, including `0`, disables it). |
12
+ | `--non-interactive` | Disable all interactive prompts — use in CI |
13
+ | `--quiet` | Hide notices, warnings and progress in human and tsv output. Errors, the exit code and the `tsv` rows stay, so a script that pipes with `--quiet` still gets its data. json output never changes, and ndjson output does not either, except that a few listings still drop their rows (see [Notes](../SKILL.md#notes)). |
14
+ | `--verbose` | Print full error details (stack trace + cause chain) on failure. Also via `UNITY_VERBOSE`. |
15
+ | `--proxy <url>` | HTTP/HTTPS/SOCKS/PAC proxy URL for this invocation. Also via `UNITY_PROXY`. Takes precedence over standard `HTTPS_PROXY`/`HTTP_PROXY`/`ALL_PROXY` env vars and the persisted `proxy.json` setting. |
16
+ | `--proxy-disable` | Disable proxy for this invocation, ignoring all sources (env vars, persisted config, system settings). |
17
+ | `--log-proxy` | Log one redacted entry per outbound request to `proxy-request.json` — for reproducing proxy issues. Also via `UNITY_LOG_PROXY=1` or the `proxyRequestLogging` setting. |
18
+ | `--no-log-proxy` | Opt a single invocation out of proxy request logging when it's enabled globally. |
19
+ | `--color <auto\|always\|never>` | Control colored output for this invocation, overriding `NO_COLOR`/`FORCE_COLOR` and TTY auto-detection. Governs every ANSI-emitting surface (help, tables, spinners, errors), not just `human` output. |
20
+ | `--no-color` | Shorthand for `--color never`. Whichever of `--color`/`--no-color` appears last on the line wins. |
21
+
22
+ **Always use `--format json` when you need to parse output programmatically.** If you read `tsv` instead, select columns by header name, not position: a command's `tsv` columns keep their names and order, and a flag that adds information (such as `editors --long`) only appends columns at the end. Failures in `tsv` go to stderr, so stdout holds only data. A single-record answer (`unity env`, `unity config proxy`, `unity doctor`, `unity editors default`, `unity install-path` and the like) is a `key<TAB>value` table instead, one row per field keyed by its `json` path (`values.editor`, `tools.0.id`), so `unity install-path` piped prints the path on its `path` row, not bare; `unity cache key` alone still prints the bare key.
23
+
24
+ **Every listing has one JSON shape.** Read the rows from `.data.items[]`. Beside them, `.data.total` is the full count (`null` when the service doesn't report one), `.data.nextPage` (pass it to the command's `--page`, `--skip` or `--offset`, whichever it takes: `--offset` for `collab annotations count --grouped`) or `.data.nextCursor` (pass it to `--next` or `--cursor`) is `null` on the last page, and `.data.partial` is `true` when the listing stopped before it finished. Under `--format ndjson` the rows stream one per line and the last line, `type: "result"`, carries `count` and the same paging fields. Some listings still carry their older keys too (`instances`, `entries`, `results`); prefer `items`.
25
+
26
+ `--accelerator <host:port>` and `--no-accelerator` are **not** root globals — they are accepted only on `run`, `test` and `build`, and only after the command name. See [build-run-test.md](build-run-test.md).
27
+
28
+ **`unity projects` is the only command that pages IN-PROCESS.** It shows 10 projects per screen and waits for a keypress between screens, and only when stdout is a terminal. Paging is off for redirected stdout, under every machine format (`json`, `ndjson`, `tsv`, `github`), and under `--all`, `--watch`, or `--no-pager` / `UNITY_NO_PAGER`.
29
+
30
+ **The long listings page through an external pager, like `git log`.** `unity command` (the bare listing), `unity releases`, `unity editors`, `unity changelog`, and `unity logs` pipe human output through `less -RFX` on a terminal; `-F` quits by itself when the output fits one screen. `$UNITY_PAGER` then `$PAGER` override the choice and run through a shell, so `PAGER="less -S"` works; a blank value is ignored rather than treated as an opt-out. Like `projects`'s pager this one is **`human`-only**, and it never engages for redirected stdout, any machine format (`json`, `tsv`, `ndjson`, `github`), `--quiet`, `TERM=dumb`, the streaming modes (`editors --watch`, `logs --follow`), a named `unity command <name>`, or inside `unity shell`. A broken pager costs the paging, not the output: a `$PAGER` naming something that is not there is resolved before anything spawns (a warning on stderr names it, and on Windows a bare name also finds `.com` programs such as `more`), and one that spawns and then dies has its output reprinted to the terminal, decided from the pager's exit status (a clean exit is a normal `q` and discards; a failure status reprints). A pager that exits 0 without reading (`PAGER=true`) is indistinguishable from `q`, so its output is lost. One that merely *waits* is not broken; the CLI waits with it.
31
+
32
+ A branded Unity header (logo, wordmark, CLI version) renders on the landing surfaces — bare `unity`, `unity --help` / `-h`, and `unity help`. It's shown only on a TTY, prints at most once, and degrades to compact, uncolored text on narrow terminals, without Unicode, or under `NO_COLOR`. Piped output is unaffected. Use `--no-banner` to suppress it in scripts. Bare `unity` prints usage and exits 0.