@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,612 @@
1
+ # Version control — 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
+ `unity vcs` covers **GitHub, GitLab, self-hosted git, and Unity Version Control (UVCS)**. It is
8
+ not Unity Collaboration — that is `unity collaboration` / `unity collab`, documented in
9
+ [collaboration.md](collaboration.md).
10
+
11
+ **What this group is for.** Generic git porcelain is not its job; you already have `git`. Every
12
+ verb here exists because it knows something about Unity that a generic tool cannot: that a scene
13
+ is YAML ordered by serialization rather than structure, that a missing `.meta` breaks references,
14
+ that switching branches with the Editor running invites a reimport storm, that a changed GUID
15
+ silently breaks every prefab pointing at it. When a verb below looks like a git command with a
16
+ Unity coat of paint, the Unity part is the point.
17
+
18
+ **Picking the project.** A verb that acts on a project takes it as its path argument, as
19
+ `--project-path <path>`, or from `UNITY_PROJECT_PATH`, and falls back to the current directory. Give
20
+ the argument or the flag, not both: both is a usage error (exit `2`). Verbs whose argument is a file
21
+ (`diff`, `blame`, `explain`, `resolve`) or a worktree (`git worktree remove`) don't take the flag.
22
+
23
+ Relative links in this file resolve to the skill directory's `references/` folder, so `../SKILL.md` is the skill's main page.
24
+
25
+ ## Contents
26
+
27
+ - Map
28
+ - Getting set up
29
+ - Day to day
30
+ - Reading a change
31
+ - Conflicts
32
+ - Git-only verbs
33
+ - UVCS
34
+ - Machine output
35
+ - Common traps
36
+
37
+ ---
38
+
39
+ ## Map
40
+
41
+ | Verb | What it answers |
42
+ |---|---|
43
+ | `vcs setup` | Get this project into version control and push a first commit |
44
+ | `vcs status` | What changed, grouped by what it means to Unity |
45
+ | `vcs sync` | Pull safely, with the Editor and LFS accounted for |
46
+ | `vcs switch <branch>` | Change branch safely, reporting the reimport it causes |
47
+ | `vcs doctor` | Are this repository's Unity settings, ignores, LFS patterns and pinning right |
48
+ | `vcs providers` | Which provider can this machine reach, as whom |
49
+ | `vcs merge-setup` | Make scene and prefab merges work at all |
50
+ | `vcs conflicts` | Which conflicts exist, and which can merge automatically |
51
+ | `vcs explain <path>` | What did each branch actually change in this conflicted asset |
52
+ | `vcs resolve` | Resolve a conflicted asset, by merge or by taking a side |
53
+ | `vcs diff <path>` | What changed inside a scene or prefab, by object name |
54
+ | `vcs blame <path>` | **Who** last changed each object in a scene or prefab |
55
+ | `vcs guid <guid...>` | Which asset a guid names, at a commit or in your working tree |
56
+ | `vcs summarize` | What did this branch change, ready to paste into a PR |
57
+ | `vcs affected` | Which assets, assemblies and tests does a change affect |
58
+ | `vcs hooks` | Run the Unity integrity checks at commit time |
59
+ | `vcs git …` | Git-only verbs: `migrate-lfs`, `worktree add` / `remove` |
60
+ | `vcs uvcs …` | UVCS reads that join `cm` data to your project |
61
+
62
+ Read the group's own help first when you are unsure — `unity vcs --help` names the providers in
63
+ its first line, and every verb takes `--help`.
64
+
65
+ ---
66
+
67
+ ## Getting set up
68
+
69
+ ### vcs setup
70
+
71
+ One command, zero required flags. It detects everything inferable — whether you are in a Unity
72
+ project, whether a repository or remote already exists, which providers you are signed in to —
73
+ and asks only what it cannot work out. If a git repository with a remote is already there, it
74
+ **adopts** it rather than failing.
75
+
76
+ ```bash
77
+ # The whole happy path, from inside the project
78
+ unity vcs setup
79
+
80
+ # Non-interactive, naming the provider and the repository
81
+ unity vcs setup --vcs github --git-namespace my-org --git-repo my-game --git-visibility private
82
+
83
+ # UVCS, which needs no token: it uses your Unity sign-in
84
+ unity vcs setup --vcs uvcs --cloud-org my-org --vcs-region <region>
85
+
86
+ # See what UVCS setup would create, without creating it
87
+ unity vcs setup --vcs uvcs --dry-run
88
+
89
+ # Reuse a saved set of choices, or save this run's
90
+ unity vcs setup --preset team-default
91
+ unity vcs setup --vcs github --git-namespace my-org --save-preset team-default
92
+ ```
93
+
94
+ `--vcs` takes `github`, `gitlab`, `uvcs`, or a **self-hosted host name**. Anything else fails
95
+ with `VCS_PROVIDER_UNSUPPORTED` — note the bare word `git` is not a valid value.
96
+
97
+ **Credentials, in the order they are tried.** You will usually not need to supply one:
98
+
99
+ 1. `--git-token-from-stdin` (prefer this in CI — an argv token is visible in the process table) or
100
+ `--git-token <pat>`
101
+ 2. The provider's environment variable
102
+ 3. Your git credential helper / Git Credential Manager, which may itself open a browser
103
+ 4. A signed-in provider CLI (`gh` / `glab` / `tea`) — the CLI can offer to run its login for you
104
+ 5. A guided personal-access-token prompt that names the scopes needed and links the right page
105
+
106
+ **LFS.** `--git-lfs` initializes Git LFS before the first commit, for new repositories only. If
107
+ `git-lfs` is missing the CLI offers to install it through your platform's package manager
108
+ (brew / apt / dnf / winget / pacman / zypper / apk); it never vendors its own copy, because git
109
+ resolves `lfs` on `PATH` and a private copy would leave a repository only this binary could
110
+ satisfy. Set `UNITY_INSTALL_MISSING_TOOLS=1` to accept that offer non-interactively.
111
+
112
+ ### vcs providers
113
+
114
+ Which provider this machine can reach, as whom, and what each host allows. Spawns the provider
115
+ CLIs and makes an authenticated request per host, so it is the **opt-in, network-touching**
116
+ counterpart to the offline VCS section of `unity doctor`.
117
+
118
+ ```bash
119
+ unity vcs providers
120
+ unity vcs providers --host github.example.com --host gitlab.example.internal # repeatable
121
+ unity vcs providers --json
122
+ ```
123
+
124
+ Reports binary presence and version, per-host auth state, credential-helper entries, and each
125
+ host's capability tier. It deliberately does **not** report how a repository would get created:
126
+ that depends on whether a token resolves, and resolving one can prompt — a read-only report must
127
+ not ask for a credential.
128
+
129
+ The tools table also lists `cm`, the Unity Version Control client, taken from the registry lookup
130
+ `unity plugins` makes, so the two always agree on its path, version, and state (`resolved`,
131
+ `not-installed`, or `unsupported-platform` on linux-arm64). It never downloads `cm`. Inside a UVCS
132
+ workspace with no `cm` installed, it suggests `unity plugin install uvcs`. The offline VCS section of
133
+ `unity doctor` omits `cm`, which doctor already lists under external components.
134
+
135
+ ### vcs merge-setup
136
+
137
+ Scene and prefab merges do not work in a fresh Unity repository. Every editor install ships
138
+ `UnityYAMLMerge`, and this wires it up: the `.gitattributes` entries, the merge-driver config,
139
+ and a test merge that proves the tool actually runs.
140
+
141
+ ```bash
142
+ unity vcs merge-setup # set it up, using the editor the project requires
143
+ unity vcs merge-setup --check # report only; exits 4 when work remains
144
+ unity vcs merge-setup --editor-version 6000.0.30f1
145
+ unity vcs merge-setup --skip-verify # skip the proving test merge
146
+ unity vcs merge-setup -e /path/to/Unity # use this editor installation (--editor-path)
147
+ ```
148
+
149
+ `--editor-version` falls back to `UNITY_EDITOR_VERSION` on both `vcs merge-setup` and `vcs resolve`.
150
+
151
+ `--check` **exits 4 when work remains**, which is what makes it usable as a CI gate.
152
+
153
+ ### vcs doctor
154
+
155
+ The repository-side hygiene audit: git settings, ignore rules, LFS patterns, and package
156
+ pinning that a Unity project needs under version control.
157
+
158
+ ```bash
159
+ unity vcs doctor
160
+ unity vcs doctor --fix # repair everything repairable; idempotent
161
+ unity vcs doctor --check META,LFS # run only these checks
162
+ ```
163
+
164
+ `--fix` is idempotent by contract — running it twice changes nothing the second time.
165
+
166
+ Distinct from `unity projects verify`, which is detection-only and never runs git. Different
167
+ subjects: `projects verify` checks the asset tree's integrity, `vcs doctor` checks the
168
+ repository's Unity configuration.
169
+
170
+ ### vcs hooks
171
+
172
+ Installs managed `pre-commit`, `post-checkout` and `post-merge` hooks so the Unity integrity
173
+ checks run without anyone remembering to.
174
+
175
+ ```bash
176
+ unity vcs hooks install # install or upgrade
177
+ unity vcs hooks status # which managed hooks are installed, and at which version
178
+ unity vcs hooks uninstall # remove the managed hooks, leaving the rest of the file alone
179
+ ```
180
+
181
+ Uninstall edits only the managed block, so hand-written hook content survives.
182
+
183
+ ---
184
+
185
+ ## Day to day
186
+
187
+ ### vcs status
188
+
189
+ What changed, grouped by what it means to Unity rather than by path, and with **meta-file
190
+ pairing problems called out** — an asset added without its `.meta`, or a `.meta` left behind by
191
+ a move, is the single most common "works on my machine" bug.
192
+
193
+ ```bash
194
+ unity vcs status
195
+ unity vcs status --json
196
+ ```
197
+
198
+ On a UVCS workspace it additionally joins in lock state, which is a join no passthrough to `cm`
199
+ can do.
200
+
201
+ ### vcs sync
202
+
203
+ Pull safely.
204
+
205
+ ```bash
206
+ unity vcs sync
207
+ unity vcs sync --rebase # replay local commits on top of incoming ones
208
+ unity vcs sync --allow-dirty # pull over uncommitted changes to tracked files
209
+ unity vcs sync --force # pull even while an Editor holds the project
210
+ unity vcs sync --verify # check the project afterwards without asking
211
+ ```
212
+
213
+ **It refuses while an Editor holds the project**, and that refusal is the feature: pulling under
214
+ a live Editor invites a reimport storm or a corrupted `Library`. It pulls LFS objects too, then
215
+ reports the reimport the pull will cause.
216
+
217
+ ### vcs switch
218
+
219
+ ```bash
220
+ unity vcs switch main
221
+ unity vcs switch feature/lighting --dry-run # every check, plus the reimport scope, no change
222
+ unity vcs switch main --allow-dirty # carry uncommitted changes across
223
+ unity vcs switch main --discard-changes # discard uncommitted changes to tracked files
224
+ unity vcs switch main --close-editor # ask the Editor to quit, then switch
225
+ unity vcs switch main --force -y
226
+ ```
227
+
228
+ Same Editor gate as `sync`, and `--dry-run` reports the reimport the switch would cause — worth
229
+ running before a switch between branches that differ in assets.
230
+
231
+ ---
232
+
233
+ ## Reading a change
234
+
235
+ These five are read-only and never write the working tree or the index.
236
+
237
+ ### vcs diff
238
+
239
+ A semantic diff of one scene or prefab, **by GameObject and component name rather than by
240
+ `fileID`**. A raw `git diff` of a scene is unreadable: everything is a numeric id and the file is
241
+ ordered by serialization, so a one-object edit shows up as hunks scattered through thousands of
242
+ lines with nothing naming what they belong to.
243
+
244
+ ```bash
245
+ unity vcs diff Assets/Scenes/Level.unity # HEAD vs your working tree
246
+ unity vcs diff Assets/Scenes/Level.unity --from main --to HEAD
247
+ unity vcs diff Assets/Prefabs/Player.prefab --json
248
+ unity vcs diff Assets/Scenes/Level.unity --full --json # every change, every value whole
249
+ ```
250
+
251
+ `--from` defaults to `HEAD`; `--to` defaults to **your working tree**, which is why it is not
252
+ defaulted to `HEAD` — absent and `HEAD` are different comparisons.
253
+
254
+ Reads like `Changed Transform on Player at Level/Actors/Player: position {x: 0} → {x: 5}`.
255
+
256
+ **Output is capped unless you pass `--full`.** By default the human report lists 40 changes and 6
257
+ values per change; in every format, values are rendered for the first 500 changed objects only, each
258
+ value is cut to 160 characters, and rendering stops after about 512K characters per side. The json
259
+ shape says so: `valuesTruncated` on the report and `truncated` on each value. `--full` lifts all of
260
+ these, so `valuesTruncated` is always `false`. The names of the objects a changed value refers to
261
+ are looked up only in objects up to 4 MB; a larger one reports `referencesTruncated: true` and its
262
+ values carry no names, until `--full` lifts that too. One limit stays: a value nested more than 8 levels
263
+ deep still collapses to `[…]` or `{…}`, and under `--full` that value says `truncated: true`, so
264
+ `truncated: false` always means the value is whole. Use it when an agent or a script needs the whole
265
+ diff of a large scene or prefab instead of falling back to `git diff`.
266
+
267
+ **Identity is reported with a confidence.** Matching is three tiers — `fileID` plus class tag,
268
+ then class plus name plus hierarchy path, then content similarity — and every row carries which
269
+ tier matched it. Treat anything below `exact` as a hypothesis: a diff that confidently reports a
270
+ rename as a delete plus an add is worse than one that admits it is unsure.
271
+
272
+ **Prefab overrides are flagged, not attributed.** An override lives in the *referencing* asset,
273
+ inside `PrefabInstance.m_Modification`, and resolving it means opening the source prefab. So the
274
+ change is reported against the instance with a `prefabInstance` flag and a note that attribution
275
+ stops at this asset — never as "the Player's mass changed".
276
+
277
+ **References name their asset.** When a changed value points at another asset
278
+ (`{fileID: 4300000, guid: 6a1f..., type: 3}`), the human report adds a `was` and a `now` line
279
+ with the path that guid names, looked up **at that side's commit**: `--from` for the old value,
280
+ `--to` (or your working tree) for the new one. The lookup reads `.meta` files from git, so it
281
+ needs no Editor and no network, and costs one batched git read per commit.
282
+
283
+ - `(added in this range)` or `(deleted in this range)`: the guid exists only at the other
284
+ side's commit. A new value naming a deleted asset is a dangling reference.
285
+ - `(built in)`: Unity's built-in resources, by name where known (`Cube (built in)`).
286
+ - `(package)`: an asset of a package in `Library/PackageCache`, which the repository does not
287
+ carry. It is not missing.
288
+ - `(in this file)`: a `fileID`-only reference, named by the object it points at
289
+ (`Transform on Player (in this file)`).
290
+ - `(not in this repository)`: no `.meta` at that commit declares the guid.
291
+
292
+ In `--json`, each value keeps its raw `from` and `to` and adds `fromReferences` and
293
+ `toReferences`: `{fileId, guid, type, status, resolvedPath, name, owner}`, where `status` is one of
294
+ `present`, `added`, `deleted`, `built-in`, `package`, `local`, `not-in-repository`, `none`
295
+ (`fileID: 0`) or `unknown` (the index could not be read). `fileId` is a string, because a
296
+ `fileID` can exceed what a JSON number holds exactly. `owner` names the GameObject that owns a
297
+ same-file component, and is null otherwise.
298
+
299
+ ### vcs blame
300
+
301
+ Who last changed each object. `git blame` on a serialized scene answers "who last touched line
302
+ 4,812", which is not a question anybody has; this answers "who last changed the Player's
303
+ Rigidbody".
304
+
305
+ ```bash
306
+ unity vcs blame Assets/Scenes/Level.unity
307
+
308
+ # Just one object -- and, when it names a GameObject, its components too
309
+ unity vcs blame Assets/Scenes/Level.unity --object Player
310
+ unity vcs blame Assets/Scenes/Level.unity --object Level/Actors/Player
311
+
312
+ # Just one serialized field
313
+ unity vcs blame Assets/Scenes/Level.unity --object Player --field m_Mass
314
+
315
+ # As of a tag or release branch rather than HEAD
316
+ unity vcs blame Assets/Scenes/Level.unity --at v1.4.0
317
+
318
+ # Bound the history walk
319
+ unity vcs blame Assets/Scenes/Level.unity --max-revisions 50
320
+
321
+ unity vcs blame Assets/Scenes/Level.unity --json
322
+ ```
323
+
324
+ One row per object: what it is, its hierarchy path, whether the commit **changed** or **created**
325
+ it, the commit, author, date, the identity confidence, and which fields moved.
326
+
327
+ - `--object` matches an object's own name, its hierarchy path, **or its owning GameObject's
328
+ name** — which is what makes `--object Player` return the Player and every component on it.
329
+ - `--field` narrows each row to the newest commit that changed that field, and drops objects
330
+ that do not carry it.
331
+ - `--at` blames as of another revision, so you can ask what a release branch shipped.
332
+ - `--max-revisions` bounds the walk (default 200). It rations **time**, not memory: peak memory
333
+ tracks the scene's object count and is flat in revision count, while each revision costs
334
+ roughly a fifth of a second.
335
+
336
+ **Three honest answers to expect, rather than a confident wrong one:**
337
+
338
+ - `confidence` below `exact` means the object's identity was *matched* across a revision, not
339
+ established — a re-serialization that renumbers `fileID`s lands here. The count is also
340
+ reported as a warning.
341
+ - `attribution: unattributed` (`unknown` in the table) means the walk hit its bound with that
342
+ object still unchanged. Its real answer is older; raise `--max-revisions`. In `--json` this is
343
+ `walkBounded: true`, and a consumer acting on the output should branch on it.
344
+ - `historyCrossedNonYaml` means history reaches a revision where the asset was
345
+ binary-serialized, so the walk stopped rather than attributing every object to the commit that
346
+ switched Asset Serialization Mode.
347
+
348
+ A binary-serialized or non-Unity asset is reported as such, never as an empty result.
349
+
350
+ ### vcs guid
351
+
352
+ Which asset each guid names. Logs, errors and raw diffs print guids, and finding the asset
353
+ otherwise means grepping every `.meta` file.
354
+
355
+ ```bash
356
+ unity vcs guid 0123456789abcdef0123456789abcdef # in your working tree
357
+ unity vcs guid 0123456789abcdef0123456789abcdef --at main # as of a commit
358
+ unity vcs guid <guid> <guid> --json
359
+ ```
360
+
361
+ One row per guid, in the order given: `guid`, `status`, `resolvedPath`, `name`. `status` is
362
+ `present`, `built-in`, `package` or `not-in-repository`. A guid that names nothing is a row,
363
+ not an error. A malformed guid (not 32 hex digits) is a usage error, exit 2; an `--at` that
364
+ names no commit is `VCS_BAD_REVISION`, exit 4.
365
+
366
+ A guid is unique within one Unity project, so inside a project only that project's assets and
367
+ package cache count; `vcs diff` resolves against the project that holds the file. A repository
368
+ whose git config could run a program (an `lfs.extension.*` entry, or an odd filter name) is
369
+ refused with `VCS_GIT_CONFIG_UNSAFE`, since the lookup reads blobs without running filters.
370
+
371
+ ### vcs summarize
372
+
373
+ What a branch changed, ready to paste into a pull request: counts by Unity category, plus the
374
+ risks worth a reviewer's attention — GUID changes that may break references, assets moved
375
+ without their `.meta`, binaries that cannot be reviewed as text, and package-manifest changes.
376
+
377
+ ```bash
378
+ unity vcs summarize --since main
379
+ unity vcs summarize --since origin/dev --json
380
+ unity vcs summarize --since main --to feature/login # a PR or past range, without checking it out
381
+ unity vcs summarize --since main --objects # plus what changed inside each scene and prefab
382
+ ```
383
+
384
+ `--since` is **required** and takes a **revision**; the summary is measured from its merge base
385
+ with `HEAD`. `--to <ref>` ends the range at another commit instead (matching `vcs diff
386
+ --from/--to`): the summary then runs from the merge base of `--since` and `--to`, to `--to`, reads
387
+ that commit's files (not the working tree), and adds `to` to the JSON. The uncommitted-changes
388
+ warning appears only when the range ends at `HEAD`. An unknown `--to` fails like an unknown
389
+ `--since`: exit 4, `VCS_BAD_REVISION`. This is the one verb in the group that is *not* gated on a Unity project root — the
390
+ range is a git range, so it works from a monorepo's root, one level above the project, which is
391
+ where PR bodies actually get written.
392
+
393
+ `--objects` adds what changed *inside* each changed scene, prefab, material, animation,
394
+ ProjectSettings file and other asset in the range, object by object, the way `vcs diff` reports one file: the human report adds
395
+ a `vcs diff` section per serialized file, json and ndjson nest that file's `vcs diff` data under
396
+ its row in `changes` as `objects` (null for a script, shader, model or other file with no objects),
397
+ and tsv follows each file row with one `object` row per changed object (a file read only in part
398
+ gets a warning on stderr naming it). Each side is read at its commit, base to end, never from the
399
+ working tree, and a changed reference names the asset its guid points at on that side, as in
400
+ `vcs diff`. The same per-file limits as `vcs diff` apply,
401
+ and the report says when one is reached; `--full` lifts them, as it does on `vcs diff`, and implies
402
+ `--objects`. Without either option the output is unchanged.
403
+
404
+ ### vcs affected
405
+
406
+ Which assets, assemblies and tests a change affects, by walking the GUID reference graph:
407
+ changed asset → prefabs referencing its GUID → scenes → asmdefs → affected tests. A CI primitive
408
+ no generic tool can build.
409
+
410
+ ```bash
411
+ unity vcs affected # uncommitted work
412
+ unity vcs affected --since main
413
+ unity vcs affected --since main --json
414
+ ```
415
+
416
+ `--since` takes a revision and uses its **merge base** with `HEAD`; it defaults to `HEAD`, which
417
+ reports uncommitted work.
418
+
419
+ **The report is a lower bound, and every format says so.** Addressables groups, resource-folder
420
+ lookups, load-by-name code and binary-serialized assets are real dependencies no static reader
421
+ finds. `--json` carries `lowerBound` and a count of `holes`. A consumer that *skips* work on
422
+ this is trading correctness for time — see `unity test --affected` in
423
+ [build-run-test.md](build-run-test.md), which refuses rather than guessing when a diff carries
424
+ non-code changes.
425
+
426
+ ---
427
+
428
+ ## Conflicts
429
+
430
+ The three verbs in the order a merge presents them: list, understand, resolve.
431
+
432
+ ### vcs conflicts
433
+
434
+ ```bash
435
+ unity vcs conflicts
436
+ unity vcs conflicts --json
437
+ ```
438
+
439
+ Every unresolved conflict, classified by Unity type, **with whether each one can merge
440
+ automatically** — which is the column that tells you what needs a human.
441
+
442
+ ### vcs explain
443
+
444
+ ```bash
445
+ unity vcs explain Assets/Scenes/Level.unity
446
+ ```
447
+
448
+ What each branch changed in a conflicted asset, in plain language, by object and component name.
449
+ Requires the path; there is no repository-wide form, because the output is per object inside one
450
+ file.
451
+
452
+ ### vcs resolve
453
+
454
+ ```bash
455
+ unity vcs resolve Assets/Scenes/Level.unity # merge with UnityYAMLMerge (the default)
456
+ unity vcs resolve Assets/Scenes/Level.unity --ours # take our side, discarding theirs
457
+ unity vcs resolve Assets/Scenes/Level.unity --theirs
458
+ unity vcs resolve --all # every auto-resolvable conflict
459
+ unity vcs resolve Assets/Scenes/Level.unity --editor-version 6000.0.30f1
460
+ ```
461
+
462
+ `--merge` is the default and uses `UnityYAMLMerge`, so `vcs merge-setup` should have run first.
463
+ `--all` replaces the path operand, which is why the path is optional.
464
+
465
+ ---
466
+
467
+ ## Git-only verbs
468
+
469
+ `unity vcs git` holds the things UVCS has no equivalent of.
470
+
471
+ ### vcs git migrate-lfs
472
+
473
+ Finds binaries already committed to history and prints the LFS migration command for them.
474
+
475
+ ```bash
476
+ unity vcs git migrate-lfs
477
+ unity vcs git migrate-lfs --min-size 500KB
478
+ unity vcs git migrate-lfs --after "6 months ago"
479
+ ```
480
+
481
+ `--after` takes an ISO date (`2025-01-01`, optionally with a time and zone such as
482
+ `2025-01-01T12:30:00Z`) or a count of seconds, minutes, hours, days, weeks, months or years
483
+ (`"2 weeks ago"`, `3.days`). Anything else is a usage error (exit 2,
484
+ `VCS_MIGRATE_LFS_BAD_AFTER`) before any scan, because git's own date parser reads any text, a
485
+ typo included, as some date. `--since` still works here as a deprecated spelling and prints a warning, but `--since` means a revision on `vcs summarize`,
486
+ `vcs affected` and `test`, so write `--after`.
487
+
488
+ Two things it deliberately does:
489
+
490
+ - **The recommendation is narrower than the report.** A size floor over a long history finds
491
+ generated bundles, sourcemaps and docs as readily as textures, and telling a team to put its
492
+ source into LFS stops it diffing and merging. So the include list is restricted to the asset
493
+ types the shipped `.gitattributes` template already routes through LFS, plus what the
494
+ repository already tracks. Everything else is reported and named as *not* offered.
495
+ - **A bounded scan still prints an unbounded migration.** `--after` narrows the diagnosis, but
496
+ the printed `git lfs migrate import` carries `--everything`, because a rewrite that skips a
497
+ branch leaves every blob on it reachable and the repository does not shrink.
498
+
499
+ It prints the command rather than running it: this rewrites history.
500
+
501
+ ### vcs git worktree
502
+
503
+ A git worktree with the right editor version, a seeded `Library`, and a Hub registry row — so a
504
+ second branch is usable in minutes instead of a full reimport.
505
+
506
+ ```bash
507
+ unity vcs git worktree add feature/lighting
508
+ unity vcs git worktree add feature/lighting --into ../lighting --seed full
509
+ unity vcs git worktree add feature/lighting --install-editor
510
+ unity vcs git worktree add feature/lighting --dry-run
511
+ unity vcs git worktree add feature/lighting --no-register
512
+ unity vcs git worktree remove ../lighting
513
+ unity vcs git worktree remove ../lighting --discard-changes --force
514
+ ```
515
+
516
+ `--seed` takes `cache`, `full`, or `none`. The default deliberately **withholds
517
+ `PackageCache/`**: it is three quarters of a real `Library`'s bytes, and copying it finishes
518
+ *later* than withholding it, because UPM refills it from its own global store during the import
519
+ either way.
520
+
521
+ `--no-register` leaves the new worktree out of the Hub project registry, so it does not show up in
522
+ `unity projects` or in the Hub. Use it for a short-lived checkout you do not want to keep
523
+ track of.
524
+
525
+ `--format json` and `--format ndjson` carry the real `worktree`, `project`, `repository` and
526
+ `sourceProject` paths, so a script or agent can open what it just made. The human output masks the
527
+ account name in a home-directory path (`<user>`), so copy paths from the JSON, not from the text.
528
+
529
+ `remove` requires the path, so a bare run can never delete the checkout you are standing in.
530
+
531
+ ---
532
+
533
+ ## UVCS
534
+
535
+ `unity vcs uvcs` holds the reads that **join `cm` data to your project** — the things a raw
536
+ passthrough cannot do. Everything else goes straight to `cm`.
537
+
538
+ ```bash
539
+ # Wrapped reads: these join cm's data to your working tree
540
+ unity vcs uvcs locks # who holds a lock, AND which locks cover files you changed
541
+ unity vcs uvcs changesets --limit 50 # recent changesets in a stable envelope (default 25, max 1000)
542
+
543
+ # Code review
544
+ unity vcs uvcs reviews --status pending
545
+ unity vcs uvcs review comments --review 42
546
+ unity vcs uvcs review comments --branch /main/feature --all-activity
547
+ unity vcs uvcs review reply --review 42 --comment 7 --body "Fixed in cs:118"
548
+ unity vcs uvcs review resolve --review 42 --comment 7 --changeset 118
549
+
550
+ # Everything else: the whole command line forwards verbatim to cm
551
+ unity uvcs lock list
552
+ unity uvcs shelve -c "wip: lighting pass"
553
+ unity uvcs partial update /Assets/Levels
554
+ ```
555
+
556
+ **`unity uvcs` and `unity vcs uvcs` are different commands, and the difference matters.**
557
+ `unity uvcs <args>` is an opaque passthrough: the whole tail goes to `cm` in `cm`'s own
558
+ vocabulary, with `cm`'s own flags and output. `unity vcs uvcs <verb>` is Unity-aware wrapping
559
+ with a stable output envelope. Prefer the wrapped verbs when something *parses* the output;
560
+ prefer the passthrough when a human reads it, or when you need a `cm` verb we do not wrap.
561
+
562
+ Mutations in `cm`'s vocabulary — shelves, partial checkout, lock acquire and release — are
563
+ deliberately *not* wrapped: `cm` versions that vocabulary, and a wrapper would pin a paraphrase
564
+ of it at build time and rot silently.
565
+
566
+ `review reply` and `review resolve` both require `--review` and `--comment`; `resolve`
567
+ additionally requires `--changeset`, the changeset the comment was applied in.
568
+
569
+ ---
570
+
571
+ ## Machine output
572
+
573
+ Every read verb here supports `--format json` (and `--ndjson`) with the standard envelope:
574
+ `success`, `command`, `data`, `errors`, `warnings`. The `data` payload carries raw values —
575
+ unsanitized names, paths and field names exactly as the file holds them — because that is what a
576
+ consumer matches against the asset. Human and `tsv` output are sanitized for terminal display
577
+ instead.
578
+
579
+ `tsv` is the **default whenever stdout is redirected**, not `human`. So a piped run gets tabular
580
+ output, and the advisories (identity confidence, walk bounds, lower-bound caveats) go to
581
+ **stderr** rather than being dropped — which is exactly where a script author needs them.
582
+
583
+ Fields worth branching on rather than ignoring:
584
+
585
+ | Field | Verb | Why |
586
+ |---|---|---|
587
+ | `confidence` | `diff`, `blame` | Below `exact`, identity was matched rather than established |
588
+ | `walkBounded` | `blame` | The answer may be older than reported |
589
+ | `historyCrossedNonYaml` | `blame` | The walk stopped at a binary-serialized revision |
590
+ | `prefabInstance` | `diff` | Attribution stops at this asset |
591
+ | `lowerBound`, `holes` | `affected` | Real dependencies exist that no static reader finds |
592
+ | `outcome` | `diff`, `blame` | `binary-serialized` / `not-a-serialized-asset` are answers, not failures |
593
+
594
+ ---
595
+
596
+ ## Common traps
597
+
598
+ - **`--since` takes a revision.** On `vcs summarize`, `vcs affected` and `test`. A date bound is
599
+ `vcs git migrate-lfs --after`, and a year floor is `releases --from-year`.
600
+ - **`--vcs git` is not a value.** `--vcs` takes `github`, `gitlab`, `uvcs`, or a self-hosted host
601
+ name.
602
+ - **`vcs` is not `collab`, and `unity vcs uvcs` is not `unity uvcs`.** Three adjacent
603
+ namespaces; each one's help says what it is not.
604
+ - **A binary-serialized scene defeats every semantic verb here.** `diff`, `blame`, `explain` and
605
+ `resolve` all need text YAML. Set Asset Serialization Mode to **Force Text** in Editor
606
+ settings; the commands say so when they hit it.
607
+ - **`sync` and `switch` refuse while an Editor holds the project.** That is the safety feature,
608
+ not an obstacle — reach for `--close-editor` before `--force`.
609
+ - **`merge-setup --check` exits 4 when work remains**, so a `set -e` script fails there by
610
+ design.
611
+ - **`migrate-lfs` rewrites history.** It prints the command rather than running it. Read the
612
+ warning.