@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,169 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: unity-package-management
|
|
3
|
+
description: Adds, removes, upgrades, and finds Unity (UPM) packages from outside the Editor. Use for package installs, checking package IDs and versions, or choosing which packages a game needs.
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Bash
|
|
6
|
+
- Write
|
|
7
|
+
- Edit
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Unity Package Management (Pipeline commands first, C# script as the fallback)
|
|
11
|
+
|
|
12
|
+
Add, remove, upgrade, and discover UPM (Unity Package Manager) packages with the `package`
|
|
13
|
+
commands of the project's Pipeline package, run through `unity command`. Only when no Editor can
|
|
14
|
+
answer those commands, fall back to `UnityEditor.PackageManager.Client` driven headless from a
|
|
15
|
+
script (see [Fallback](#fallback-no-editor-to-ask-the-c-client-api)). Do **not** hand-edit
|
|
16
|
+
`Packages/manifest.json`: the Package Manager resolves dependencies and compatible versions
|
|
17
|
+
correctly, whereas manual edits routinely break resolution.
|
|
18
|
+
|
|
19
|
+
This complements the **`unity-cli`** skill (editor install, project creation, build/test), which
|
|
20
|
+
documents `unity command`, `unity status` and `unity pipeline install`.
|
|
21
|
+
|
|
22
|
+
## Use the package commands first
|
|
23
|
+
|
|
24
|
+
The Pipeline package registers a `package` command group: `add`, `remove`, `list`, `resolve`,
|
|
25
|
+
`search` and `status`. They need a running Editor whose project has `com.unity.pipeline` (add it
|
|
26
|
+
with `unity pipeline install`, then `unity open`, then wait with `unity status --until-ready`).
|
|
27
|
+
Each command's parameters come from the Editor, so read them before the first call. Don't guess
|
|
28
|
+
a parameter name.
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
unity status --until-ready --project-path "<project-path>"
|
|
32
|
+
unity command package --project-path "<project-path>" # the package commands this Editor has
|
|
33
|
+
unity command --query package --format json --project-path "<project-path>" # each command's parameter schema
|
|
34
|
+
unity command package search --project-path "<project-path>" # then pass the parameters the schema lists
|
|
35
|
+
unity command package add --project-path "<project-path>" # add one or more packages by id
|
|
36
|
+
unity command package list --project-path "<project-path>" # confirm what is installed
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Pass a command's parameters after its name, as the schema names them (`unity command <group>
|
|
40
|
+
<command> --<parameter> <value>`). Add every package you need in one `package add` call when the
|
|
41
|
+
schema accepts several ids. Pin a version the way the schema describes when a minimum is required
|
|
42
|
+
(the `@<version>` id form belongs to the C# fallback below). Use `package status` or `package list` to verify, and
|
|
43
|
+
`package remove` to drop a package. Treat a non-zero exit as a failure and read its message.
|
|
44
|
+
|
|
45
|
+
If `unity command package` reports no such group, the project's Pipeline package predates it:
|
|
46
|
+
run `unity pipeline upgrade`, or use the fallback below. The fallback starts its own Editor, so it
|
|
47
|
+
can't run while this one has the project open: ask the user to save and close it first (see the
|
|
48
|
+
fallback's first rule).
|
|
49
|
+
|
|
50
|
+
## When to use
|
|
51
|
+
|
|
52
|
+
- Add / remove / upgrade one or more packages in an existing or freshly-created project.
|
|
53
|
+
- Set up a project's packages non-interactively in CI (fallback script when no Editor is running).
|
|
54
|
+
- Verify a package id exists, or find its available versions, before depending on it.
|
|
55
|
+
- Decide which packages a game actually needs — see
|
|
56
|
+
[references/select-packages.md](references/select-packages.md).
|
|
57
|
+
|
|
58
|
+
## Choosing what to install
|
|
59
|
+
|
|
60
|
+
Install what the project actually needs, not everything; prefer packages the chosen template
|
|
61
|
+
already provides (URP templates already include the render pipeline, Input System, etc.). The
|
|
62
|
+
genre / look / platform / monetization → package mapping, plus how to search the registry, is
|
|
63
|
+
in [references/select-packages.md](references/select-packages.md). Produce a **deduplicated
|
|
64
|
+
list of package ids** and read it back to the user before installing.
|
|
65
|
+
|
|
66
|
+
## Fallback: no Editor to ask (the C# Client API)
|
|
67
|
+
|
|
68
|
+
Use this section only when `package add` can't run: no Editor is open and you don't want one
|
|
69
|
+
open, the project has no Pipeline package, or the command group is missing and an upgrade isn't
|
|
70
|
+
wanted. It installs through `Client.AddAndRemove` from a script the Editor runs in batch mode.
|
|
71
|
+
|
|
72
|
+
**The project must be closed first.** The script runs in a second, batch-mode Editor, and an Editor
|
|
73
|
+
that already has the project open holds its lock, so the batch run fails before the script starts.
|
|
74
|
+
`unity editors running --format json` lists every open Editor, with or without the Pipeline package
|
|
75
|
+
(`unity status` lists only Pipeline projects, so an empty result there does not mean closed). Compare each
|
|
76
|
+
`data.instances[].projectPath` with the target project. Also check whether `<project-path>/Temp/UnityLockfile`
|
|
77
|
+
exists, and ask the user whether the project is open in an Editor. If an Editor has the project open, or you can't tell, ask the user to save their work and close it,
|
|
78
|
+
and wait until they say it is closed. If the batch run still fails on a lock, treat the project as open and
|
|
79
|
+
ask the user to close it; don't retry or remove the lock file. Never close or kill
|
|
80
|
+
the user's Editor yourself: it may hold unsaved scenes or a Play Mode session. If the user wants to
|
|
81
|
+
keep it open, don't run the fallback: tell them the install waits until the project is closed or the
|
|
82
|
+
Pipeline package is upgraded (`unity pipeline upgrade`, then `package add`).
|
|
83
|
+
|
|
84
|
+
## The `-quit` problem — why NOT `unity run` for installs
|
|
85
|
+
|
|
86
|
+
`Client.Add` / `Client.AddAndRemove` are **asynchronous**: they return a `Request` that only
|
|
87
|
+
completes on later `EditorApplication.update` ticks (the UPM child process marshals its result
|
|
88
|
+
back on the Editor's main-loop pump, so a blocking `while (!req.IsCompleted)` busy-wait
|
|
89
|
+
deadlocks it). The Editor must **stay alive** after `-executeMethod` returns, until the request
|
|
90
|
+
finishes.
|
|
91
|
+
|
|
92
|
+
`unity run` **cannot** be used for the installer: its default path injects `-quit` (see the reserved
|
|
93
|
+
flags in the **`unity-cli`** skill). With `-quit`, the Editor quits the instant the method
|
|
94
|
+
returns — before UPM resolves — so packages never install and the callback never runs.
|
|
95
|
+
|
|
96
|
+
**Solution:** launch the **Editor binary directly** in `-batchmode` **without** `-quit`. The
|
|
97
|
+
Editor stays alive, `EditorApplication.update` keeps ticking, the poll callback runs, and it
|
|
98
|
+
calls `EditorApplication.Exit(code)` itself when done — which both quits and sets the process
|
|
99
|
+
exit code.
|
|
100
|
+
|
|
101
|
+
## The installer script
|
|
102
|
+
|
|
103
|
+
The C# installer that edits `Packages/manifest.json` and runs headless: [references/installer-script.md](references/installer-script.md).
|
|
104
|
+
## Discovering / verifying packages
|
|
105
|
+
|
|
106
|
+
How to list, verify, and inspect installed packages: [references/discovering-packages.md](references/discovering-packages.md).
|
|
107
|
+
## Run it headless
|
|
108
|
+
|
|
109
|
+
Invoking the Editor directly, without `-quit`: [references/headless-run.md](references/headless-run.md).
|
|
110
|
+
## Verify
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
# Every requested id should appear as a dependency
|
|
114
|
+
cat "<project-path>/Packages/manifest.json"
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Confirm the run exited `0` and each package from the list is present in `manifest.json`. If a
|
|
118
|
+
package fails to resolve, `_request.Error.message` is logged; read it and check the id/version
|
|
119
|
+
against the registry. The Editor's own log (including the `[PackageInstaller]` lines) is the
|
|
120
|
+
stdout you streamed with `-logFile -` above — read it there, not via `unity logs` (which shows
|
|
121
|
+
the CLI's own log, not the Editor's).
|
|
122
|
+
|
|
123
|
+
## Import & save headlessly (generate `.meta` files)
|
|
124
|
+
|
|
125
|
+
After a script or tool writes new `.cs`/asset files, Unity must **import** them so it generates
|
|
126
|
+
the `.meta` file each asset needs — and every `.cs`/asset MUST be committed together with its
|
|
127
|
+
`.meta`. Merely opening the project once (`unity open "<project-path>"`) imports and generates
|
|
128
|
+
them; use this method when you need it **headless** (in a script or CI).
|
|
129
|
+
|
|
130
|
+
Unlike the package installer, this is **synchronous** — it finishes before returning — so it's
|
|
131
|
+
safe to run via `unity run` (its injected `-quit` is harmless; the method also calls
|
|
132
|
+
`EditorApplication.Exit` for a clean exit code). Write
|
|
133
|
+
`Assets/Editor/ProjectBootstrap/ProjectSaver.cs`:
|
|
134
|
+
|
|
135
|
+
```csharp
|
|
136
|
+
using UnityEditor;
|
|
137
|
+
using UnityEngine;
|
|
138
|
+
|
|
139
|
+
namespace ProjectBootstrap
|
|
140
|
+
{
|
|
141
|
+
public static class ProjectSaver
|
|
142
|
+
{
|
|
143
|
+
// Invoke with: -executeMethod ProjectBootstrap.ProjectSaver.SaveAll
|
|
144
|
+
public static void SaveAll()
|
|
145
|
+
{
|
|
146
|
+
AssetDatabase.Refresh(ImportAssetOptions.ForceUpdate);
|
|
147
|
+
AssetDatabase.SaveAssets();
|
|
148
|
+
Debug.Log("[ProjectSaver] Assets imported and saved.");
|
|
149
|
+
EditorApplication.Exit(0);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
unity run "<project-path>" --editor-version <version> \
|
|
157
|
+
-- -executeMethod ProjectBootstrap.ProjectSaver.SaveAll
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
## Notes
|
|
161
|
+
|
|
162
|
+
- These editor scripts are a bootstrap convenience. Leave them in
|
|
163
|
+
`Assets/Editor/ProjectBootstrap/` (they do nothing unless invoked) or delete them after
|
|
164
|
+
setup — your call; mention it to the user.
|
|
165
|
+
- All scripts live under `Editor/` because they use `UnityEditor`; they never ship in a build.
|
|
166
|
+
- Monetization / backend packages (`com.unity.purchasing`, `com.unity.services.levelplay`, the
|
|
167
|
+
UGS packages) install through this same mechanism, but do the actual **integration** via the
|
|
168
|
+
dedicated skills: **implement-in-app-purchases**, **levelplay-unity-integration**,
|
|
169
|
+
**build-live-game**.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# Discovering / verifying packages
|
|
2
|
+
|
|
3
|
+
To confirm an id exists or list its versions before adding it, search the registry. The
|
|
4
|
+
in-Editor `Client.SearchAll()` / `Client.Search("<id>")` calls are also async, so they use the
|
|
5
|
+
**same poll-and-`Exit` pattern and the same headless run** as the installer. Write
|
|
6
|
+
`Assets/Editor/ProjectBootstrap/PackageSearch.cs`:
|
|
7
|
+
|
|
8
|
+
```csharp
|
|
9
|
+
using System.Linq;
|
|
10
|
+
using UnityEditor;
|
|
11
|
+
using UnityEditor.PackageManager;
|
|
12
|
+
using UnityEditor.PackageManager.Requests;
|
|
13
|
+
using UnityEngine;
|
|
14
|
+
|
|
15
|
+
namespace ProjectBootstrap
|
|
16
|
+
{
|
|
17
|
+
public static class PackageSearch
|
|
18
|
+
{
|
|
19
|
+
const double TimeoutSeconds = 120;
|
|
20
|
+
static SearchRequest _request;
|
|
21
|
+
static double _deadline;
|
|
22
|
+
|
|
23
|
+
// Invoke with: -executeMethod ProjectBootstrap.PackageSearch.SearchAll (NO -quit)
|
|
24
|
+
public static void SearchAll()
|
|
25
|
+
{
|
|
26
|
+
_request = Client.SearchAll(); // or Client.Search("com.unity.cinemachine")
|
|
27
|
+
_deadline = EditorApplication.timeSinceStartup + TimeoutSeconds;
|
|
28
|
+
EditorApplication.update += Poll;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
static void Poll()
|
|
32
|
+
{
|
|
33
|
+
if (_request == null) return;
|
|
34
|
+
if (!_request.IsCompleted)
|
|
35
|
+
{
|
|
36
|
+
if (EditorApplication.timeSinceStartup > _deadline)
|
|
37
|
+
{
|
|
38
|
+
EditorApplication.update -= Poll;
|
|
39
|
+
Debug.LogError("[PackageSearch] Timed out.");
|
|
40
|
+
EditorApplication.Exit(2);
|
|
41
|
+
}
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
EditorApplication.update -= Poll;
|
|
45
|
+
|
|
46
|
+
if (_request.Status == StatusCode.Success)
|
|
47
|
+
{
|
|
48
|
+
foreach (var p in _request.Result.OrderBy(p => p.name))
|
|
49
|
+
Debug.Log($"[PackageSearch] {p.name}@{p.versions.latestCompatible} {p.displayName}");
|
|
50
|
+
Debug.Log($"[PackageSearch] {_request.Result.Length} packages found.");
|
|
51
|
+
EditorApplication.Exit(0);
|
|
52
|
+
}
|
|
53
|
+
else
|
|
54
|
+
{
|
|
55
|
+
Debug.LogError($"[PackageSearch] Failed: {_request.Error?.message}");
|
|
56
|
+
EditorApplication.Exit(1);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
`_request.Result` is a `PackageInfo[]`; each entry exposes `name`, `displayName`, `description`,
|
|
64
|
+
and `versions` (`.latest`, `.latestCompatible`, `.all`). For a terminal-only check without the
|
|
65
|
+
Editor (a **known** id, not free-text search), query the registry directly — see
|
|
66
|
+
[references/select-packages.md](references/select-packages.md#discovering-and-verifying-packages).
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Run it headless (direct Editor invocation, no `-quit`)
|
|
2
|
+
|
|
3
|
+
Resolve the Editor binary from the version, then run it in batch mode. Run it only once no Editor
|
|
4
|
+
has the project open (see the fallback's first rule). The script owns quitting via
|
|
5
|
+
`EditorApplication.Exit`, so do **not** pass `-quit`:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
VERSION="<version>" # e.g. 6000.0.47f1 (or an installed version)
|
|
9
|
+
PROJECT="<project-path>"
|
|
10
|
+
METHOD="ProjectBootstrap.PackageInstaller.Install" # or ...PackageSearch.SearchAll
|
|
11
|
+
|
|
12
|
+
# Install directory of that editor (Hub layout), via the unity CLI
|
|
13
|
+
ED=$(unity editors path "$VERSION" --format json | python3 -c "import sys,json;print(json.load(sys.stdin)['data']['path'])")
|
|
14
|
+
|
|
15
|
+
# Resolve the executable per-OS (handles both "dir containing Unity.app" and the ".app" itself)
|
|
16
|
+
case "$(uname)" in
|
|
17
|
+
Darwin) if [ -d "$ED/Unity.app" ]; then UNITY_BIN="$ED/Unity.app/Contents/MacOS/Unity";
|
|
18
|
+
elif [[ "$ED" == *.app ]]; then UNITY_BIN="$ED/Contents/MacOS/Unity";
|
|
19
|
+
else UNITY_BIN="$ED/Unity"; fi ;;
|
|
20
|
+
Linux) UNITY_BIN="$ED/Editor/Unity" ;;
|
|
21
|
+
*) UNITY_BIN="$ED/Editor/Unity.exe" ;; # Windows (Git Bash / MSYS); use Editor\Unity.exe in PowerShell
|
|
22
|
+
esac
|
|
23
|
+
|
|
24
|
+
"$UNITY_BIN" -batchmode -projectPath "$PROJECT" -executeMethod "$METHOD" -logFile -
|
|
25
|
+
echo "Exit code: $?" # 0 = success, 1 = UPM error, 2 = timeout
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
`-logFile -` streams the Editor log (including the `[PackageInstaller]` / `[PackageSearch]`
|
|
29
|
+
lines) to stdout so you can watch resolution progress and read any UPM error. If
|
|
30
|
+
`unity editors path` output shape differs on your build, get the directory from
|
|
31
|
+
`unity editors --installed --format json` instead.
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# The installer script
|
|
2
|
+
|
|
3
|
+
Write this to `Assets/Editor/ProjectBootstrap/PackageInstaller.cs`. It must live under an
|
|
4
|
+
`Editor/` folder (or an Editor-only assembly) because it uses `UnityEditor`.
|
|
5
|
+
|
|
6
|
+
```csharp
|
|
7
|
+
using System.Linq;
|
|
8
|
+
using UnityEditor;
|
|
9
|
+
using UnityEditor.PackageManager;
|
|
10
|
+
using UnityEditor.PackageManager.Requests;
|
|
11
|
+
using UnityEngine;
|
|
12
|
+
|
|
13
|
+
namespace ProjectBootstrap
|
|
14
|
+
{
|
|
15
|
+
// Installs (and optionally removes) a fixed set of packages via the PackageManager
|
|
16
|
+
// Client API, headless-safe.
|
|
17
|
+
public static class PackageInstaller
|
|
18
|
+
{
|
|
19
|
+
// EDIT this list to match the package selection (see references/select-packages.md).
|
|
20
|
+
static readonly string[] PackagesToAdd =
|
|
21
|
+
{
|
|
22
|
+
"com.unity.inputsystem",
|
|
23
|
+
"com.unity.cinemachine",
|
|
24
|
+
"com.unity.render-pipelines.universal",
|
|
25
|
+
// "com.unity.package@1.2.3" // pin a version with @ when a minimum is required
|
|
26
|
+
};
|
|
27
|
+
|
|
28
|
+
// Optionally drop packages in the same resolution pass (e.g. a template default you don't want).
|
|
29
|
+
static readonly string[] PackagesToRemove = { };
|
|
30
|
+
|
|
31
|
+
const double TimeoutSeconds = 600; // UPM resolution + downloads can be slow
|
|
32
|
+
|
|
33
|
+
static AddAndRemoveRequest _request;
|
|
34
|
+
static double _deadline;
|
|
35
|
+
|
|
36
|
+
// Invoke with: -executeMethod ProjectBootstrap.PackageInstaller.Install (NO -quit)
|
|
37
|
+
public static void Install()
|
|
38
|
+
{
|
|
39
|
+
if (PackagesToAdd.Length == 0 && PackagesToRemove.Length == 0)
|
|
40
|
+
{
|
|
41
|
+
Debug.Log("[PackageInstaller] Nothing to do.");
|
|
42
|
+
EditorApplication.Exit(0);
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
Debug.Log($"[PackageInstaller] Adding: {string.Join(", ", PackagesToAdd)}");
|
|
47
|
+
_request = Client.AddAndRemove(packagesToAdd: PackagesToAdd, packagesToRemove: PackagesToRemove);
|
|
48
|
+
_deadline = EditorApplication.timeSinceStartup + TimeoutSeconds;
|
|
49
|
+
EditorApplication.update += Poll;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
static void Poll()
|
|
53
|
+
{
|
|
54
|
+
if (_request == null) return;
|
|
55
|
+
|
|
56
|
+
if (!_request.IsCompleted)
|
|
57
|
+
{
|
|
58
|
+
if (EditorApplication.timeSinceStartup > _deadline)
|
|
59
|
+
{
|
|
60
|
+
EditorApplication.update -= Poll;
|
|
61
|
+
Debug.LogError("[PackageInstaller] Timed out waiting for UPM.");
|
|
62
|
+
EditorApplication.Exit(2);
|
|
63
|
+
}
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
EditorApplication.update -= Poll;
|
|
68
|
+
|
|
69
|
+
if (_request.Status == StatusCode.Success)
|
|
70
|
+
{
|
|
71
|
+
var names = _request.Result.Select(p => $"{p.name}@{p.version}");
|
|
72
|
+
Debug.Log($"[PackageInstaller] Resolved: {string.Join(", ", names)}");
|
|
73
|
+
EditorApplication.Exit(0);
|
|
74
|
+
}
|
|
75
|
+
else
|
|
76
|
+
{
|
|
77
|
+
Debug.LogError($"[PackageInstaller] Failed: {_request.Error?.message}");
|
|
78
|
+
EditorApplication.Exit(1);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
`AddAndRemove` installs the whole set in a single UPM resolution pass — faster and less
|
|
86
|
+
error-prone than one `Client.Add` per package.
|
|
87
|
+
|
|
88
|
+
**Add / remove / upgrade with one script:**
|
|
89
|
+
- **Add**: list the id in `PackagesToAdd`.
|
|
90
|
+
- **Remove**: list the id in `PackagesToRemove`.
|
|
91
|
+
- **Upgrade / pin**: add the id with `@<version>` (e.g. `com.unity.cinemachine@2.9.7`). Without
|
|
92
|
+
a version, resolution picks the latest compatible release.
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# Selecting packages
|
|
2
|
+
|
|
3
|
+
Turn a game concept — genre, look, target platforms, monetization — into a concrete package
|
|
4
|
+
list, then install it with the `package add` command, or the skill's C# script as the fallback.
|
|
5
|
+
|
|
6
|
+
**Principle:** install what the concept actually needs, not everything. A hyper-casual 2D
|
|
7
|
+
prototype needs far less than a 3D multiplayer RPG. Prefer packages already provided by the
|
|
8
|
+
chosen template (the URP templates `com.unity.template.urp-blank` / `universal-2d` already
|
|
9
|
+
include the render pipeline, Input System, uGUI/TextMeshPro, etc.) — only add what's missing.
|
|
10
|
+
Don't pin exact versions unless a minimum is required; an id without a version resolves
|
|
11
|
+
the latest compatible release.
|
|
12
|
+
|
|
13
|
+
The tables below are a starting point, not the whole registry. **Search the registry** to
|
|
14
|
+
discover packages beyond this list, confirm an id exists, or check available versions before
|
|
15
|
+
installing — see [Discovering and verifying packages](#discovering-and-verifying-packages).
|
|
16
|
+
|
|
17
|
+
## Contents
|
|
18
|
+
|
|
19
|
+
- Discovering and verifying packages
|
|
20
|
+
- Foundation (almost every project)
|
|
21
|
+
- Render pipeline (set by the template — do not add or swap it here)
|
|
22
|
+
- By dimension & look
|
|
23
|
+
- By genre (starting points, combine with the above)
|
|
24
|
+
- By target platform
|
|
25
|
+
- By monetization — install now, integrate via the dedicated skill
|
|
26
|
+
|
|
27
|
+
## Discovering and verifying packages
|
|
28
|
+
|
|
29
|
+
Two ways to search, depending on whether the Editor is involved:
|
|
30
|
+
|
|
31
|
+
**In-Editor: `package search` (preferred).** Run `unity command package search` (parameters from `unity command --query package --format json`) against a running Editor. Without one, the fallback is the PackageManager Client API: `Client.SearchAll()` returns every
|
|
32
|
+
package available in the project's configured registries (the Unity registry plus any scoped
|
|
33
|
+
registries), each with all its versions and metadata — this is what the Package Manager
|
|
34
|
+
window's search filters over. `Client.Search("<id>")` inspects a single package. Use the
|
|
35
|
+
skill's ready-to-run `PackageSearch` script to discover candidates and verify
|
|
36
|
+
ids/versions before building the install list.
|
|
37
|
+
|
|
38
|
+
**Terminal — query the npm-compatible registry directly** (no Editor needed) to confirm a
|
|
39
|
+
**known** id exists and list its versions:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
# Full metadata for one package: versions{}, dist-tags.latest, description, dependencies.
|
|
43
|
+
# -f makes curl fail (non-zero) on HTTP errors — e.g. a 404 for a bad id — instead of piping
|
|
44
|
+
# an error page into python; -L follows redirects.
|
|
45
|
+
curl -fsSL https://packages.unity.com/com.unity.cinemachine | python3 -m json.tool | head -40
|
|
46
|
+
|
|
47
|
+
# Just the latest published version
|
|
48
|
+
curl -fsSL https://packages.unity.com/com.unity.cinemachine \
|
|
49
|
+
| python3 -c "import sys,json;print(json.load(sys.stdin)['dist-tags']['latest'])"
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Note: the registry supports fetching a **known** package id, but **not** free-text search over
|
|
53
|
+
HTTP (the npm `-/v1/search` endpoint is not available — it 404s). For keyword discovery, use
|
|
54
|
+
`Client.SearchAll()` in-Editor, the Package Manager window, or the
|
|
55
|
+
[Unity package documentation](https://docs.unity3d.com/Manual/pack-keys.html).
|
|
56
|
+
|
|
57
|
+
## Foundation (almost every project)
|
|
58
|
+
|
|
59
|
+
| Need | Package | Notes |
|
|
60
|
+
|---|---|---|
|
|
61
|
+
| Modern input | `com.unity.inputsystem` | Preferred over the legacy Input Manager. |
|
|
62
|
+
| Text / UI | `com.unity.ugui` | uGUI + TextMeshPro (bundled). UI Toolkit ships with the Editor. Use one of these for HUDs and menus — never `OnGUI`. |
|
|
63
|
+
| Camera framing | `com.unity.cinemachine` | Great for almost any 3D and many 2D games. |
|
|
64
|
+
| Testing | `com.unity.test-framework` | Enables `unity test`; usually already present. |
|
|
65
|
+
| Large/streamed assets | `com.unity.addressables` | Add when the game has many assets or needs content updates. |
|
|
66
|
+
|
|
67
|
+
## Render pipeline (set by the template — do not add or swap it here)
|
|
68
|
+
|
|
69
|
+
The pipeline is decided by the template chosen in the **`unity-cli`** bootstrap step (default:
|
|
70
|
+
`com.unity.template.urp-blank` for 3D, `com.unity.template.universal-2d` for 2D — both URP).
|
|
71
|
+
Installing `com.unity.render-pipelines.universal` into a Built-in template project does **not**
|
|
72
|
+
switch pipelines: no URP asset gets assigned, and materials render pink. To change pipeline after
|
|
73
|
+
creation use the **`migrate-birp-to-urp`** skill instead. The rows below are for reading a
|
|
74
|
+
`manifest.json`, not for adding packages:
|
|
75
|
+
|
|
76
|
+
| Choice | Package | Notes |
|
|
77
|
+
|---|---|---|
|
|
78
|
+
| **URP** (Universal) | `com.unity.render-pipelines.universal` | Default for all 2D/3D, mobile, and WebGL. Ships in the URP templates. |
|
|
79
|
+
| **HDRP** (High-Definition) | `com.unity.render-pipelines.high-definition` | High-fidelity PC/console only; `com.unity.template.hdrp-blank`. Not for mobile/WebGL. |
|
|
80
|
+
| **Built-in** | (none) | Legacy. Its templates are deprecated from Unity 6.5 and removed in 6.7; use only when the user explicitly asks. |
|
|
81
|
+
|
|
82
|
+
## By dimension & look
|
|
83
|
+
|
|
84
|
+
| Look | Packages |
|
|
85
|
+
|---|---|
|
|
86
|
+
| **2D** (any) | `com.unity.2d.feature` (sprites, tilemap, animation, pixel-perfect bundle) |
|
|
87
|
+
| **2D pixel-perfect** | `com.unity.2d.pixel-perfect` (included in the 2D feature set) |
|
|
88
|
+
| **3D navigation** | `com.unity.ai.navigation` (NavMesh for AI/pathfinding) |
|
|
89
|
+
| **Cutscenes / sequencing** | `com.unity.timeline` |
|
|
90
|
+
| **No-code logic** | `com.unity.visualscripting` |
|
|
91
|
+
|
|
92
|
+
## By genre (starting points, combine with the above)
|
|
93
|
+
|
|
94
|
+
| Genre | Typical additions |
|
|
95
|
+
|---|---|
|
|
96
|
+
| Platformer / action | Input System, Cinemachine, 2D feature (if 2D), AI Navigation (if 3D) |
|
|
97
|
+
| Puzzle / match / card | Input System, uGUI/TextMeshPro, 2D feature (if 2D), Timeline (juice) |
|
|
98
|
+
| Top-down / twin-stick | Input System, Cinemachine, 2D feature (if 2D), AI Navigation (if 3D) |
|
|
99
|
+
| RPG / adventure | Input System, Cinemachine, AI Navigation, Addressables, Timeline |
|
|
100
|
+
| Racing / physics | Input System, Cinemachine; Physics is built in |
|
|
101
|
+
| Idle / hyper-casual | Input System, uGUI/TextMeshPro, 2D feature (if 2D) — keep it lean |
|
|
102
|
+
| Multiplayer (any) | `com.unity.netcode.gameobjects` + Multiplayer Services → see **build-live-game** |
|
|
103
|
+
|
|
104
|
+
## By target platform
|
|
105
|
+
|
|
106
|
+
Platform support is mostly Editor **modules** (installed with `unity install --module …`, see
|
|
107
|
+
the **`unity-cli`** skill), not packages. Package-wise:
|
|
108
|
+
|
|
109
|
+
| Platform | Consider |
|
|
110
|
+
|---|---|
|
|
111
|
+
| Mobile (iOS/Android) | Keep dependencies lean; a URP template, never HDRP; Addressables for download size; monetization below |
|
|
112
|
+
| WebGL | A URP template (not HDRP); small footprint; avoid heavy packages |
|
|
113
|
+
| Desktop / Console | URP template by default; `hdrp-blank` only for a high-fidelity target |
|
|
114
|
+
|
|
115
|
+
## By monetization — install now, integrate via the dedicated skill
|
|
116
|
+
|
|
117
|
+
| Goal | Package | Integration skill |
|
|
118
|
+
|---|---|---|
|
|
119
|
+
| In-app purchases | `com.unity.purchasing` | **implement-in-app-purchases** |
|
|
120
|
+
| Ads / mediation | `com.unity.services.levelplay` | **levelplay-unity-integration** |
|
|
121
|
+
| Accounts, cloud save, economy, remote config, leaderboards, analytics | see the UGS package table | **build-live-game** |
|
|
122
|
+
|
|
123
|
+
Install the package(s) here so the manifest is complete, but do the actual wiring by invoking
|
|
124
|
+
the matching skill. For the full UGS package/version matrix (`com.unity.services.core`,
|
|
125
|
+
`authentication`, `cloudsave`, `cloudcode`, `economy`, `remote-config`, `analytics`, etc.),
|
|
126
|
+
read the **build-live-game** skill.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# Security notes: unity-pipeline
|
|
2
|
+
|
|
3
|
+
This skill has the agent run C# inside a Unity Editor or development Player the user already has running, through `unity command script eval`, `script eval_file`, `script run` and `script.methodreload reload`. Automated skill scanners flag that as a powerful capability. It is intentional, and it is limited by the safeguards below.
|
|
4
|
+
|
|
5
|
+
## Accepted risks
|
|
6
|
+
|
|
7
|
+
| Risk | Capability | Why it is accepted |
|
|
8
|
+
|---|---|---|
|
|
9
|
+
| `SEC_POWER_CAP` | Runs C# in the user's running Editor or development Player through `unity command script eval`, `script eval_file`, `script run` and `script.methodreload reload` | It only reaches an instance the user started, with the Pipeline package they installed, so it grants nothing they couldn't do in that Editor themselves. No code fetched from a remote source is run. The skill steers ad-hoc code into versioned project files run with `script run`, and keeps `script eval` for one-liners. |
|
|
10
|
+
|
|
11
|
+
## Mitigations
|
|
12
|
+
|
|
13
|
+
- **Only the user's own instances.** Commands go to an Editor or development Player the user is running with the Pipeline package installed. Runtime commands need a development build; release Players have no Pipeline server.
|
|
14
|
+
- **No remote code.** The agent runs C# it writes for the user's task. Nothing downloaded from outside is executed.
|
|
15
|
+
- **Code lives in reviewable files.** Bulk work goes into scripts on disk run with `script run`, so the user can read and version what ran. `script eval` is reserved for short one-liners.
|
|
16
|
+
- **Compile-only check.** `script run --dry_run true` reports diagnostics without loading or running anything.
|
|
17
|
+
- **Named commands first.** When a dedicated `unity command` covers a step, the skill uses it instead of running C#.
|