@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.
- package/CHANGELOG.md +53 -0
- package/LICENSE-UNITY-COMPANION.md +122 -0
- package/LICENSE.md +31 -0
- package/NOTICE.md +90 -0
- package/README.md +273 -2
- package/cordis.patch.yml +22 -0
- package/docs/design.md +297 -0
- package/icon.svg +16 -0
- package/lib/frontmatter.js +392 -0
- package/lib/gating.js +105 -0
- package/lib/harness.js +16 -0
- package/lib/index.js +171 -0
- package/lib/project.js +210 -0
- package/lib/registry.js +268 -0
- package/lib/requirements.js +214 -0
- package/lib/skills.js +191 -0
- package/lib/types/frontmatter.d.ts +84 -0
- package/lib/types/gating.d.ts +80 -0
- package/lib/types/harness.d.ts +152 -0
- package/lib/types/index.d.ts +75 -0
- package/lib/types/project.d.ts +93 -0
- package/lib/types/registry.d.ts +96 -0
- package/lib/types/requirements.d.ts +67 -0
- package/lib/types/skills.d.ts +54 -0
- package/lib/types/watch.d.ts +34 -0
- package/lib/watch.js +84 -0
- package/locale/en.json +6 -0
- package/locale/zh.json +6 -0
- package/package.json +70 -4
- package/skills/2d-pixel-perfect/SKILL.md +208 -0
- package/skills/2d-pixel-perfect/references/api-reference.md +81 -0
- package/skills/2d-pixel-perfect/references/camera-setup-builtin.cs +40 -0
- package/skills/2d-pixel-perfect/references/camera-setup-urp.cs +49 -0
- package/skills/2d-pixel-perfect/references/pipeline-detection.cs +50 -0
- package/skills/2d-pixel-perfect/references/sprite-settings.cs +37 -0
- package/skills/asset-transformer-toolkit/SECURITY.md +15 -0
- package/skills/asset-transformer-toolkit/SKILL.md +39 -0
- package/skills/asset-transformer-toolkit/references/create-importer.md +121 -0
- package/skills/asset-transformer-toolkit/references/lods.md +61 -0
- package/skills/asset-transformer-toolkit/references/rule-api.md +154 -0
- package/skills/asset-transformer-toolkit/references/ruleblock-api.md +37 -0
- package/skills/asset-transformer-toolkit/references/ruleset-api.md +138 -0
- package/skills/asset-transformer-toolkit/references/rulesets-and-actions.md +227 -0
- package/skills/audio-setup-mixers/SECURITY.md +16 -0
- package/skills/audio-setup-mixers/SKILL.md +127 -0
- package/skills/audio-setup-mixers/references/api.md +162 -0
- package/skills/build-gtk/SECURITY.md +16 -0
- package/skills/build-gtk/SKILL.md +200 -0
- package/skills/build-gtk/references/api-reference.md +33 -0
- package/skills/build-gtk/references/graph-api-gaps.md +96 -0
- package/skills/build-gtk/references/runtime-and-visualization.md +191 -0
- package/skills/build-gtk/references/state-machine-api.md +270 -0
- package/skills/build-gtk/references/where-the-docs-stop.md +49 -0
- package/skills/build-live-game/SKILL.md +159 -0
- package/skills/build-live-game/references/achievements.md +757 -0
- package/skills/build-live-game/references/apis.md +271 -0
- package/skills/build-live-game/references/authentication.md +431 -0
- package/skills/build-live-game/references/battlepass.md +904 -0
- package/skills/build-live-game/references/blueprints-and-samples.md +75 -0
- package/skills/build-live-game/references/cloud-code-cloudbehaviours.md +1111 -0
- package/skills/build-live-game/references/cloud-code-modules.md +1276 -0
- package/skills/build-live-game/references/cloud-code.md +58 -0
- package/skills/build-live-game/references/cloud-save.md +464 -0
- package/skills/build-live-game/references/deployment.md +231 -0
- package/skills/build-live-game/references/orientation.md +30 -0
- package/skills/build-live-game/references/player-account.md +821 -0
- package/skills/build-live-game/references/remote-config.md +96 -0
- package/skills/build-live-game/references/services-overview.md +76 -0
- package/skills/build-live-game/references/tooling.md +375 -0
- package/skills/build-live-game/references/ugs-cli.md +86 -0
- package/skills/craft-game-floors/SECURITY.md +23 -0
- package/skills/craft-game-floors/SKILL.md +134 -0
- package/skills/craft-game-floors/references/art-direction.md +85 -0
- package/skills/craft-game-floors/references/camera-rigs.md +51 -0
- package/skills/craft-game-floors/references/character-motion.md +35 -0
- package/skills/craft-game-floors/references/game-audio.md +47 -0
- package/skills/craft-game-floors/references/game-feel.md +68 -0
- package/skills/craft-game-floors/references/game-shell.md +45 -0
- package/skills/craft-game-floors/references/live-floor.md +35 -0
- package/skills/craft-game-floors/references/placeholder-assets.md +35 -0
- package/skills/craft-game-floors/references/scene-lighting.md +52 -0
- package/skills/craft-game-floors/references/toon-shading.md +34 -0
- package/skills/craft-game-floors/references/vfx.md +40 -0
- package/skills/craft-game-floors/references/visual-scorecard.md +43 -0
- package/skills/create-2d-physics/SECURITY.md +16 -0
- package/skills/create-2d-physics/SKILL.md +128 -0
- package/skills/create-2d-physics/references/2d-physics-core.md +155 -0
- package/skills/create-2d-physics/references/legacy-2d-physics.md +45 -0
- package/skills/create-tile-palette-or-rule-tiles/SKILL.md +95 -0
- package/skills/create-tile-palette-or-rule-tiles/references/hexagonalruletile.md +71 -0
- package/skills/create-tile-palette-or-rule-tiles/references/palette-create.md +38 -0
- package/skills/create-tile-palette-or-rule-tiles/references/ruletile-createempty.md +37 -0
- package/skills/create-tile-palette-or-rule-tiles/references/ruletile-createfromsegment.md +219 -0
- package/skills/create-tile-palette-or-rule-tiles/references/ruletile.md +95 -0
- package/skills/create-tile-palette-or-rule-tiles/scripts/CreatePaletteTemplate.cs +148 -0
- package/skills/create-tile-palette-or-rule-tiles/scripts/ManualWorkflowExample.cs +63 -0
- package/skills/create-tile-palette-or-rule-tiles/scripts/RuleTileGenerator.cs +61 -0
- package/skills/create-tile-palette-or-rule-tiles/scripts/TilemapRuleTileCreateFromSegment.cs +225 -0
- package/skills/fix-3d-physics-collisions/SECURITY.md +17 -0
- package/skills/fix-3d-physics-collisions/SKILL.md +139 -0
- package/skills/fix-3d-physics-collisions/references/collision-checklist.md +80 -0
- package/skills/fix-3d-physics-collisions/references/collision-debugger.md +18 -0
- package/skills/fix-3d-physics-collisions/references/console-errors-table.md +9 -0
- package/skills/fix-3d-physics-collisions/references/kinematic-trigger-facts.md +18 -0
- package/skills/fix-3d-physics-collisions/references/other-symptoms.md +29 -0
- package/skills/fix-3d-physics-collisions/references/raycast-checklist.md +8 -0
- package/skills/fix-3d-physics-collisions/references/topic-map.md +42 -0
- package/skills/fix-3d-physics-collisions/references/trigger-checklist.md +9 -0
- package/skills/fix-3d-physics-collisions/scripts/CollisionDebugger.cs +561 -0
- package/skills/generate-editor-search-query/SECURITY.md +17 -0
- package/skills/generate-editor-search-query/SKILL.md +117 -0
- package/skills/generate-editor-search-query/references/open-search-window.md +70 -0
- package/skills/generate-editor-search-query/references/query-patterns.md +124 -0
- package/skills/implement-in-app-purchases/SKILL.md +82 -0
- package/skills/implement-in-app-purchases/references/api-details.md +41 -0
- package/skills/implement-in-app-purchases/references/api-notes.md +105 -0
- package/skills/implement-in-app-purchases/references/codeless-catalog.md +197 -0
- package/skills/implement-in-app-purchases/references/convert-adapty.md +270 -0
- package/skills/implement-in-app-purchases/references/convert-essentialkit.md +239 -0
- package/skills/implement-in-app-purchases/references/convert-revenuecat.md +277 -0
- package/skills/implement-in-app-purchases/references/convert-unipay.md +145 -0
- package/skills/implement-in-app-purchases/references/migration-v4-to-v5.md +46 -0
- package/skills/implement-in-app-purchases/references/path-add-iap-to-new-project.md +197 -0
- package/skills/implement-in-app-purchases/references/path-convert-native-google-billing.md +302 -0
- package/skills/implement-in-app-purchases/references/path-convert-native-storekit.md +357 -0
- package/skills/implement-in-app-purchases/references/path-implement-iap-d2c.md +253 -0
- package/skills/implement-in-app-purchases/references/platform-notes.md +55 -0
- package/skills/implement-in-app-purchases/references/pre-check.md +207 -0
- package/skills/implement-in-app-purchases/references/topic-map.md +46 -0
- package/skills/initialize-ai-navigation/SKILL.md +109 -0
- package/skills/initialize-ai-navigation/references/navigation-system.md +793 -0
- package/skills/initialize-ai-navigation/references/topic-map.md +66 -0
- package/skills/levelplay-unity-integration/SKILL.md +122 -0
- package/skills/levelplay-unity-integration/references/adding-more-ad-formats.md +15 -0
- package/skills/levelplay-unity-integration/references/banner-api.md +927 -0
- package/skills/levelplay-unity-integration/references/best-practices.md +604 -0
- package/skills/levelplay-unity-integration/references/dependency-resolution.md +94 -0
- package/skills/levelplay-unity-integration/references/examples.md +10 -0
- package/skills/levelplay-unity-integration/references/ilrd-api.md +337 -0
- package/skills/levelplay-unity-integration/references/initialization-api.md +851 -0
- package/skills/levelplay-unity-integration/references/interstitial-api.md +907 -0
- package/skills/levelplay-unity-integration/references/ios-setup.md +463 -0
- package/skills/levelplay-unity-integration/references/migration-sdk-9.md +666 -0
- package/skills/levelplay-unity-integration/references/privacy-settings.md +593 -0
- package/skills/levelplay-unity-integration/references/production-release-checklist.md +22 -0
- package/skills/levelplay-unity-integration/references/rewarded-api.md +918 -0
- package/skills/levelplay-unity-integration/references/step-0-new-or-migration.md +8 -0
- package/skills/levelplay-unity-integration/references/step-1-verify-environment.md +4 -0
- package/skills/levelplay-unity-integration/references/step-10-testing.md +15 -0
- package/skills/levelplay-unity-integration/references/step-2-business-goals.md +12 -0
- package/skills/levelplay-unity-integration/references/step-3-install-sdk.md +55 -0
- package/skills/levelplay-unity-integration/references/step-4-native-dependencies.md +22 -0
- package/skills/levelplay-unity-integration/references/step-5-app-key-and-ad-units.md +18 -0
- package/skills/levelplay-unity-integration/references/step-6-5-privacy-and-regulation.md +51 -0
- package/skills/levelplay-unity-integration/references/step-6-admob-keys.md +16 -0
- package/skills/levelplay-unity-integration/references/step-7-initialize.md +50 -0
- package/skills/levelplay-unity-integration/references/step-8-ad-unit-strategy.md +16 -0
- package/skills/levelplay-unity-integration/references/step-9-implement-ad-units.md +66 -0
- package/skills/levelplay-unity-integration/references/testing-and-validation.md +222 -0
- package/skills/levelplay-unity-integration/references/troubleshooting.md +99 -0
- package/skills/localize-unity-project/SKILL.md +159 -0
- package/skills/localize-unity-project/references/api-notes.md +15 -0
- package/skills/localize-unity-project/references/cjk-fonts.md +83 -0
- package/skills/localize-unity-project/references/docs-map.md +42 -0
- package/skills/localize-unity-project/references/documentation-lookup.md +33 -0
- package/skills/localize-unity-project/references/locale-switching.md +17 -0
- package/skills/localize-unity-project/references/table-completeness-check.md +47 -0
- package/skills/localize-unity-project/references/translating-existing-project.md +47 -0
- package/skills/localize-unity-project/references/translation-strategy.md +41 -0
- package/skills/localize-unity-project/references/troubleshooting.md +12 -0
- package/skills/localize-unity-project/scripts/L10nBatchProcessor.cs +191 -0
- package/skills/localize-unity-project/scripts/LocalizedFontAsset.cs +18 -0
- package/skills/manage-sprite-atlas/SKILL.md +202 -0
- package/skills/manage-sprite-atlas/references/addressables-delivery.md +58 -0
- package/skills/manage-sprite-atlas/references/advanced-manual-authoring.md +19 -0
- package/skills/manage-sprite-atlas/references/api.md +382 -0
- package/skills/manage-sprite-atlas/references/best-practices.md +183 -0
- package/skills/manage-sprite-atlas/references/common-errors.md +123 -0
- package/skills/manage-sprite-atlas/references/complete-workflow.md +61 -0
- package/skills/manage-sprite-atlas/references/custom-packing.md +147 -0
- package/skills/manage-sprite-atlas/references/delivery-mechanism.md +30 -0
- package/skills/manage-sprite-atlas/references/key-requirements.md +21 -0
- package/skills/manage-sprite-atlas/references/manual-authoring.md +39 -0
- package/skills/manage-sprite-atlas/references/namespaces.md +15 -0
- package/skills/manage-sprite-atlas/references/v2-architecture.md +21 -0
- package/skills/manage-sprite-atlas/resources/authoringvsruntime.cs +176 -0
- package/skills/manage-sprite-atlas/resources/buildaddressablespostprocess.cs +59 -0
- package/skills/manage-sprite-atlas/resources/cacheloadedatlases.cs +145 -0
- package/skills/manage-sprite-atlas/resources/cleanupbatchoperations.cs +119 -0
- package/skills/manage-sprite-atlas/resources/createandconfiguremasteratlas.cs +57 -0
- package/skills/manage-sprite-atlas/resources/custompackersetup.cs +88 -0
- package/skills/manage-sprite-atlas/resources/deprecatedmethods.cs +142 -0
- package/skills/manage-sprite-atlas/resources/dontmodifywithoutsaving.cs +120 -0
- package/skills/manage-sprite-atlas/resources/dontpackinruntimebuilds.cs +190 -0
- package/skills/manage-sprite-atlas/resources/dontscriptspriteatlasineditor.cs +114 -0
- package/skills/manage-sprite-atlas/resources/editorconfiguration.cs +95 -0
- package/skills/manage-sprite-atlas/resources/enablespritepacking.cs +172 -0
- package/skills/manage-sprite-atlas/resources/gridspritepacker.cs +50 -0
- package/skills/manage-sprite-atlas/resources/handlelatebinding.cs +147 -0
- package/skills/manage-sprite-atlas/resources/handlenullcases.cs +141 -0
- package/skills/manage-sprite-atlas/resources/migratev1tov2.cs +335 -0
- package/skills/manage-sprite-atlas/resources/multipagepacker.cs +80 -0
- package/skills/manage-sprite-atlas/resources/optimizetexturesettings.cs +191 -0
- package/skills/manage-sprite-atlas/resources/packerdebugging.cs +158 -0
- package/skills/manage-sprite-atlas/resources/packtransform.cs +51 -0
- package/skills/manage-sprite-atlas/resources/platformnames.cs +127 -0
- package/skills/manage-sprite-atlas/resources/queryspritesefficiently.cs +222 -0
- package/skills/manage-sprite-atlas/resources/registercallbacks.cs +152 -0
- package/skills/manage-sprite-atlas/resources/runtimeatlasloader.cs +15 -0
- package/skills/manage-sprite-atlas/resources/runtimespriteaccess.cs +19 -0
- package/skills/manage-sprite-atlas/resources/savespriteatlasasset.cs +107 -0
- package/skills/manage-sprite-atlas/resources/scriptablepacker.cs +81 -0
- package/skills/manage-sprite-atlas/resources/setincludeinbuild.cs +164 -0
- package/skills/manage-sprite-atlas/resources/sizeoptimizedpacker.cs +88 -0
- package/skills/manage-sprite-atlas/resources/spriteatlaslatebinding.cs +123 -0
- package/skills/manage-sprite-atlas/resources/spriteatlasprebuildgenerator.cs +219 -0
- package/skills/manage-sprite-atlas/resources/spritedata.cs +35 -0
- package/skills/manage-sprite-atlas/resources/spritepack.cs +39 -0
- package/skills/manage-sprite-atlas/resources/texturedata.cs +15 -0
- package/skills/manage-sprite-atlas/resources/updatebuildscripts.cs +357 -0
- package/skills/manage-sprite-atlas/resources/updatesettingsconfiguration.cs +135 -0
- package/skills/manage-sprite-atlas/resources/usevariantswisely.cs +179 -0
- package/skills/manage-sprite-atlas/resources/variantatlas.cs +39 -0
- package/skills/migrate-birp-to-urp/SECURITY.md +16 -0
- package/skills/migrate-birp-to-urp/SKILL.md +167 -0
- package/skills/migrate-birp-to-urp/references/capturing-the-editor.md +66 -0
- package/skills/migrate-birp-to-urp/references/complex-shader-situations.md +272 -0
- package/skills/migrate-birp-to-urp/references/conversion-and-rendering-triage.md +113 -0
- package/skills/migrate-birp-to-urp/references/custom-shader-triage.md +123 -0
- package/skills/migrate-birp-to-urp/references/implementation-patterns.md +529 -0
- package/skills/migrate-birp-to-urp/references/migration-workflow.md +265 -0
- package/skills/migrate-birp-to-urp/references/parity-validation-and-troubleshooting.md +114 -0
- package/skills/migrate-birp-to-urp/references/preflight-and-urp-setup.md +195 -0
- package/skills/migrate-birp-to-urp/references/quality-settings-map.md +69 -0
- package/skills/new-unity-project/SECURITY.md +26 -0
- package/skills/new-unity-project/SKILL.md +171 -0
- package/skills/new-unity-project/references/checklist.md +18 -0
- package/skills/new-unity-project/references/common-mistakes.md +15 -0
- package/skills/new-unity-project/references/skill-setup.md +66 -0
- package/skills/new-unity-project/references/step-1-concept.md +13 -0
- package/skills/new-unity-project/references/step-2-platforms-and-create.md +31 -0
- package/skills/new-unity-project/references/step-3-join-and-reconcile.md +16 -0
- package/skills/new-unity-project/references/step-4-source-control.md +9 -0
- package/skills/new-unity-project/references/step-5-packages.md +18 -0
- package/skills/new-unity-project/references/step-6-identity-and-floors.md +20 -0
- package/skills/new-unity-project/references/step-7-visual-baseline.md +75 -0
- package/skills/new-unity-project/references/step-8-first-commit.md +21 -0
- package/skills/new-unity-project/references/step-9-handoff.md +23 -0
- package/skills/optimize-audio/SECURITY.md +16 -0
- package/skills/optimize-audio/SKILL.md +120 -0
- package/skills/optimize-audio/references/diagnostics.md +42 -0
- package/skills/optimize-audio/references/troubleshooting.md +41 -0
- package/skills/optimize-audio/resources/audio-import-api.md +149 -0
- package/skills/optimize-audio/resources/platform-settings.md +48 -0
- package/skills/optimize-text-mesh-pro/SKILL.md +181 -0
- package/skills/optimize-text-mesh-pro/references/dynamic-atlas-and-profiling.md +28 -0
- package/skills/optimize-text-mesh-pro/references/topic-map.md +36 -0
- package/skills/optimize-web/SECURITY.md +16 -0
- package/skills/optimize-web/SKILL.md +157 -0
- package/skills/optimize-web/references/editor-csharp.md +120 -0
- package/skills/optimize-web/references/topic-map.md +49 -0
- package/skills/optimize-web/references/troubleshooting.md +45 -0
- package/skills/optimize-web/references/understand-request.md +19 -0
- package/skills/optimize-web/references/web-assets-quality.md +59 -0
- package/skills/optimize-web/references/web-player-settings.md +39 -0
- package/skills/optimize-web/references/web-profiling-memory.md +71 -0
- package/skills/optimize-web/scripts/WebOptimizer.cs +46 -0
- package/skills/optimize-web/scripts/toktx-examples.sh +11 -0
- package/skills/setup-multiplayer-services/SKILL.md +36 -0
- package/skills/setup-multiplayer-services/references/dgs-entrypoint.md +79 -0
- package/skills/setup-multiplayer-services/references/entrypoints.md +213 -0
- package/skills/setup-multiplayer-services/references/examples.md +33 -0
- package/skills/setup-multiplayer-services/references/implementation-fit.md +30 -0
- package/skills/setup-multiplayer-services/references/underlying-services.md +11 -0
- package/skills/setup-multiplayer-services/references/workflows-prerequisites.md +17 -0
- package/skills/setup-vivox-voice-chat/SECURITY.md +16 -0
- package/skills/setup-vivox-voice-chat/SKILL.md +166 -0
- package/skills/setup-vivox-voice-chat/references/api-reference-lookup.md +28 -0
- package/skills/setup-vivox-voice-chat/references/docs-topic-map.md +13 -0
- package/skills/setup-vivox-voice-chat/references/events-and-participants.md +79 -0
- package/skills/setup-vivox-voice-chat/references/init-and-login.md +92 -0
- package/skills/setup-vivox-voice-chat/references/text-chat.md +93 -0
- package/skills/setup-vivox-voice-chat/references/troubleshooting.md +47 -0
- package/skills/setup-vivox-voice-chat/references/voice-channels.md +92 -0
- package/skills/shader-graph-create-custom-node/SKILL.md +25 -0
- package/skills/shader-graph-create-custom-node/resources/all_hints.hlsl +182 -0
- package/skills/sprite-editor/SECURITY.md +16 -0
- package/skills/sprite-editor/SKILL.md +66 -0
- package/skills/sprite-editor/references/api_reference.md +151 -0
- package/skills/sprite-editor/references/background.md +112 -0
- package/skills/sprite-editor/references/templates.md +72 -0
- package/skills/sprite-editor/scripts/AutomaticSliceTexture.cs +40 -0
- package/skills/sprite-editor/scripts/GenerateNewSpriteRects.cs +200 -0
- package/skills/sprite-editor/scripts/GetTextureSourceImageSize.cs +32 -0
- package/skills/sprite-editor/scripts/GetTextureToSlice.cs +55 -0
- package/skills/sprite-editor/scripts/GridSliceTexture.cs +40 -0
- package/skills/sprite-editor/scripts/IsometricSliceTexture.cs +141 -0
- package/skills/sprite-editor/scripts/README.md +134 -0
- package/skills/sprite-editor/scripts/SetPivotExample.cs +58 -0
- package/skills/sprite-editor/scripts/SpriteToPng.cs +88 -0
- package/skills/sprite-segment-3x3grid/SKILL.md +177 -0
- package/skills/sprite-segment-3x3grid/references/topic-map.md +37 -0
- package/skills/sprite-segment-3x3grid/scripts/SpriteGridAnalysis.cs +119 -0
- package/skills/ui/SKILL.md +142 -0
- package/skills/ui-imgui/SKILL.md +180 -0
- package/skills/ui-imgui/references/gui-elements.md +156 -0
- package/skills/ui-imgui/references/templates.md +141 -0
- package/skills/ui-ugui/SKILL.md +217 -0
- package/skills/ui-ugui/references/layout-and-anchors.md +61 -0
- package/skills/ui-ugui/references/scrollview-setup.md +29 -0
- package/skills/ui-uitk/SKILL.md +229 -0
- package/skills/ui-uitk/references/common-issues.md +74 -0
- package/skills/ui-uitk/references/custom-elements.md +241 -0
- package/skills/ui-uitk/references/painter2d.md +282 -0
- package/skills/ui-uitk/references/pointermanipulator-guide.md +94 -0
- package/skills/ui-uitk/references/svg-icons.md +136 -0
- package/skills/ui-uitk/references/ui-runtime-binding.md +234 -0
- package/skills/ui-uitk/references/uss-guide.md +138 -0
- package/skills/unity-cli/CHANGELOG.md +524 -0
- package/skills/unity-cli/SECURITY.md +68 -0
- package/skills/unity-cli/SKILL.md +160 -0
- package/skills/unity-cli/references/auth-license-cloud.md +318 -0
- package/skills/unity-cli/references/bootstrap-project.md +177 -0
- package/skills/unity-cli/references/build-run-test.md +555 -0
- package/skills/unity-cli/references/catalog-plugins.md +86 -0
- package/skills/unity-cli/references/ci-recipes.md +76 -0
- package/skills/unity-cli/references/cloud-automation.md +819 -0
- package/skills/unity-cli/references/cloud-workflows.md +19 -0
- package/skills/unity-cli/references/collaboration.md +533 -0
- package/skills/unity-cli/references/config-hub.md +239 -0
- package/skills/unity-cli/references/diagnostics-maintenance.md +718 -0
- package/skills/unity-cli/references/docs-workflow.md +179 -0
- package/skills/unity-cli/references/editor-targeting.md +29 -0
- package/skills/unity-cli/references/editors-install.md +490 -0
- package/skills/unity-cli/references/environment-variables.md +42 -0
- package/skills/unity-cli/references/exit-codes.md +47 -0
- package/skills/unity-cli/references/global-flags.md +32 -0
- package/skills/unity-cli/references/integration-advanced.md +1130 -0
- package/skills/unity-cli/references/notes.md +20 -0
- package/skills/unity-cli/references/notifications.md +39 -0
- package/skills/unity-cli/references/playmode-verification-loop.md +279 -0
- package/skills/unity-cli/references/projects-templates.md +997 -0
- package/skills/unity-cli/references/scene-editing-preflight.md +25 -0
- package/skills/unity-cli/references/setup-and-help.md +54 -0
- package/skills/unity-cli/references/version-control.md +612 -0
- package/skills/unity-package-management/SKILL.md +169 -0
- package/skills/unity-package-management/references/discovering-packages.md +66 -0
- package/skills/unity-package-management/references/headless-run.md +31 -0
- package/skills/unity-package-management/references/installer-script.md +92 -0
- package/skills/unity-package-management/references/select-packages.md +126 -0
- package/skills/unity-pipeline/SECURITY.md +17 -0
- package/skills/unity-pipeline/SKILL.md +205 -0
- package/skills/unity-pipeline/references/csharp-eval.md +23 -0
- package/skills/unity-pipeline/references/multiplayer-play-mode.md +103 -0
- package/skills/urp-postprocessing/SECURITY.md +16 -0
- package/skills/urp-postprocessing/SKILL.md +188 -0
- package/skills/urp-postprocessing/references/code-templates.md +150 -0
- package/skills/urp-postprocessing/references/effect-reference.md +86 -0
- package/skills/validate-urp-render-graph-renderer-feature/SKILL.md +92 -0
- 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.
|