nccgs 1.0.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/.claude/agents/nccgs-accessibility-specialist.md +26 -0
- package/.claude/agents/nccgs-adversarial-reviewer.md +26 -0
- package/.claude/agents/nccgs-ai-programmer.md +26 -0
- package/.claude/agents/nccgs-analytics-engineer.md +26 -0
- package/.claude/agents/nccgs-art-direction-lead.md +26 -0
- package/.claude/agents/nccgs-audio-direction-lead.md +26 -0
- package/.claude/agents/nccgs-creative-director.md +26 -0
- package/.claude/agents/nccgs-documentation-manager.md +26 -0
- package/.claude/agents/nccgs-economy-designer.md +26 -0
- package/.claude/agents/nccgs-engine-programmer.md +26 -0
- package/.claude/agents/nccgs-game-design-lead.md +26 -0
- package/.claude/agents/nccgs-game-designer.md +26 -0
- package/.claude/agents/nccgs-gameplay-programmer.md +26 -0
- package/.claude/agents/nccgs-level-designer.md +26 -0
- package/.claude/agents/nccgs-live-ops-designer.md +26 -0
- package/.claude/agents/nccgs-localization-lead.md +26 -0
- package/.claude/agents/nccgs-narrative-lead.md +26 -0
- package/.claude/agents/nccgs-network-programmer.md +26 -0
- package/.claude/agents/nccgs-performance-analyst.md +26 -0
- package/.claude/agents/nccgs-producer.md +26 -0
- package/.claude/agents/nccgs-production-coordinator.md +23 -0
- package/.claude/agents/nccgs-programming-lead.md +26 -0
- package/.claude/agents/nccgs-prototyper.md +26 -0
- package/.claude/agents/nccgs-qa-engineer.md +26 -0
- package/.claude/agents/nccgs-qa-lead.md +26 -0
- package/.claude/agents/nccgs-release-engineer.md +26 -0
- package/.claude/agents/nccgs-release-lead.md +26 -0
- package/.claude/agents/nccgs-security-engineer.md +26 -0
- package/.claude/agents/nccgs-sound-designer.md +26 -0
- package/.claude/agents/nccgs-systems-designer.md +26 -0
- package/.claude/agents/nccgs-technical-architect.md +26 -0
- package/.claude/agents/nccgs-technical-artist.md +26 -0
- package/.claude/agents/nccgs-technical-director.md +26 -0
- package/.claude/agents/nccgs-tools-programmer.md +26 -0
- package/.claude/agents/nccgs-ui-programmer.md +26 -0
- package/.claude/agents/nccgs-unity-build-specialist.md +26 -0
- package/.claude/agents/nccgs-unity-content-specialist.md +26 -0
- package/.claude/agents/nccgs-unity-implementer.md +26 -0
- package/.claude/agents/nccgs-unity-rendering-specialist.md +26 -0
- package/.claude/agents/nccgs-unity-systems-specialist.md +26 -0
- package/.claude/agents/nccgs-unity-ui-specialist.md +26 -0
- package/.claude/agents/nccgs-ux-designer.md +26 -0
- package/.claude/agents/nccgs-verification-engineer.md +26 -0
- package/.claude/agents/nccgs-world-builder.md +26 -0
- package/.claude/agents/nccgs-writer.md +26 -0
- package/.claude/nccgs/THIRD_PARTY_NOTICES.md +13 -0
- package/.claude/nccgs/VERSION +1 -0
- package/.claude/nccgs/constitution.md +131 -0
- package/.claude/nccgs/hooks/agent-audit.mjs +10 -0
- package/.claude/nccgs/hooks/common.mjs +41 -0
- package/.claude/nccgs/hooks/post-compact.mjs +1 -0
- package/.claude/nccgs/hooks/pre-compact.mjs +8 -0
- package/.claude/nccgs/hooks/protect-git.mjs +22 -0
- package/.claude/nccgs/hooks/protect-write.mjs +17 -0
- package/.claude/nccgs/hooks/session-start.mjs +15 -0
- package/.claude/nccgs/hooks/session-stop.mjs +7 -0
- package/.claude/nccgs/protocols/agent-contract.md +34 -0
- package/.claude/nccgs/protocols/context-packets.md +13 -0
- package/.claude/nccgs/protocols/evidence.md +15 -0
- package/.claude/nccgs/protocols/model-routing.md +22 -0
- package/.claude/nccgs/protocols/orchestration.md +26 -0
- package/.claude/nccgs/protocols/unity-boundary.md +11 -0
- package/.claude/nccgs/settings.fragment.json +77 -0
- package/.claude/nccgs/studio.json +347 -0
- package/.claude/nccgs/tools/configure-models.mjs +39 -0
- package/.claude/nccgs/unity-skills-manifest.json +727 -0
- package/.claude/nccgs/workflow-catalog.json +317 -0
- package/.claude/rules/nccgs-canonical-docs.md +19 -0
- package/.claude/rules/nccgs-editor-tools.md +12 -0
- package/.claude/rules/nccgs-localization.md +12 -0
- package/.claude/rules/nccgs-networking.md +13 -0
- package/.claude/rules/nccgs-performance.md +14 -0
- package/.claude/rules/nccgs-rendering.md +16 -0
- package/.claude/rules/nccgs-security.md +13 -0
- package/.claude/rules/nccgs-tests.md +18 -0
- package/.claude/rules/nccgs-ui.md +14 -0
- package/.claude/rules/nccgs-unity-assets.md +21 -0
- package/.claude/rules/nccgs-unity-code.md +22 -0
- package/.claude/skills/accessibility-review/SKILL.md +14 -0
- package/.claude/skills/architecture-decision/SKILL.md +14 -0
- package/.claude/skills/asset-audit/SKILL.md +14 -0
- package/.claude/skills/audit/SKILL.md +16 -0
- package/.claude/skills/audit/references/dimensions.md +46 -0
- package/.claude/skills/balance-review/SKILL.md +14 -0
- package/.claude/skills/bug-triage/SKILL.md +14 -0
- package/.claude/skills/build-live-game/SKILL.md +317 -0
- package/.claude/skills/build-live-game/references/achievements.md +779 -0
- package/.claude/skills/build-live-game/references/apis.md +280 -0
- package/.claude/skills/build-live-game/references/authentication.md +437 -0
- package/.claude/skills/build-live-game/references/battlepass.md +860 -0
- package/.claude/skills/build-live-game/references/cloud-code.md +563 -0
- package/.claude/skills/build-live-game/references/cloud-save.md +474 -0
- package/.claude/skills/build-live-game/references/deployment.md +216 -0
- package/.claude/skills/build-live-game/references/player-account.md +813 -0
- package/.claude/skills/build-live-game/references/remote-config.md +96 -0
- package/.claude/skills/build-live-game/references/tooling.md +431 -0
- package/.claude/skills/closure/SKILL.md +14 -0
- package/.claude/skills/code-review/SKILL.md +14 -0
- package/.claude/skills/compatibility-review/SKILL.md +14 -0
- package/.claude/skills/context-pack/SKILL.md +14 -0
- package/.claude/skills/dependency-review/SKILL.md +14 -0
- package/.claude/skills/design/SKILL.md +20 -0
- package/.claude/skills/design-review/SKILL.md +14 -0
- package/.claude/skills/evidence-review/SKILL.md +14 -0
- package/.claude/skills/hotfix/SKILL.md +14 -0
- package/.claude/skills/implement-in-app-purchases/README.md +233 -0
- package/.claude/skills/implement-in-app-purchases/SKILL.md +158 -0
- package/.claude/skills/implement-in-app-purchases/references/api-notes.md +562 -0
- package/.claude/skills/implement-in-app-purchases/references/codeless-catalog.md +331 -0
- package/.claude/skills/implement-in-app-purchases/references/convert-adapty.md +268 -0
- package/.claude/skills/implement-in-app-purchases/references/convert-essentialkit.md +239 -0
- package/.claude/skills/implement-in-app-purchases/references/convert-revenuecat.md +275 -0
- package/.claude/skills/implement-in-app-purchases/references/convert-unipay.md +145 -0
- package/.claude/skills/implement-in-app-purchases/references/migration-v4-to-v5.md +204 -0
- package/.claude/skills/implement-in-app-purchases/references/path-add-iap-to-new-project.md +198 -0
- package/.claude/skills/implement-in-app-purchases/references/path-convert-native-google-billing.md +356 -0
- package/.claude/skills/implement-in-app-purchases/references/path-convert-native-storekit.md +446 -0
- package/.claude/skills/implement-in-app-purchases/references/path-implement-iap-d2c.md +680 -0
- package/.claude/skills/implement-in-app-purchases/references/platform-notes.md +204 -0
- package/.claude/skills/implement-in-app-purchases/references/pre-check.md +205 -0
- package/.claude/skills/incident-recovery/SKILL.md +14 -0
- package/.claude/skills/initialize-ai-navigation/SKILL.md +95 -0
- package/.claude/skills/initialize-ai-navigation/references/navigation-system.md +794 -0
- package/.claude/skills/levelplay-unity-integration/CHANGELOG.md +57 -0
- package/.claude/skills/levelplay-unity-integration/README.md +74 -0
- package/.claude/skills/levelplay-unity-integration/SKILL.md +1126 -0
- package/.claude/skills/levelplay-unity-integration/references/banner-api.md +920 -0
- package/.claude/skills/levelplay-unity-integration/references/best-practices.md +536 -0
- package/.claude/skills/levelplay-unity-integration/references/ilrd-api.md +337 -0
- package/.claude/skills/levelplay-unity-integration/references/initialization-api.md +630 -0
- package/.claude/skills/levelplay-unity-integration/references/interstitial-api.md +899 -0
- package/.claude/skills/levelplay-unity-integration/references/ios-setup.md +491 -0
- package/.claude/skills/levelplay-unity-integration/references/migration-sdk-9.md +666 -0
- package/.claude/skills/levelplay-unity-integration/references/privacy-settings.md +608 -0
- package/.claude/skills/levelplay-unity-integration/references/rewarded-api.md +902 -0
- package/.claude/skills/localization/SKILL.md +135 -0
- package/.claude/skills/localization/references/api-notes.md +76 -0
- package/.claude/skills/localization/resources/L10nBatchProcessor.cs +69 -0
- package/.claude/skills/localization/resources/LocalizedFontAsset.cs +18 -0
- package/.claude/skills/localize-game/SKILL.md +14 -0
- package/.claude/skills/migrate-project/SKILL.md +21 -0
- package/.claude/skills/migrate-project/references/procedure.md +63 -0
- package/.claude/skills/milestone-review/SKILL.md +14 -0
- package/.claude/skills/new-unity-project/SKILL.md +179 -0
- package/.claude/skills/optimize-audio/SKILL.md +199 -0
- package/.claude/skills/optimize-audio/resources/audio-import-api.md +146 -0
- package/.claude/skills/optimize-audio/resources/platform-settings.md +48 -0
- package/.claude/skills/optimize-text-mesh-pro/SKILL.md +182 -0
- package/.claude/skills/optimize-web/SKILL.md +393 -0
- package/.claude/skills/optimize-web/resources/WebOptimizer.cs +21 -0
- package/.claude/skills/optimize-web/resources/toktx-examples.sh +11 -0
- package/.claude/skills/performance-audit/SKILL.md +14 -0
- package/.claude/skills/physics-3d-collision/SKILL.md +442 -0
- package/.claude/skills/physics-3d-collision/references/troubleshooting.md +41 -0
- package/.claude/skills/physics-3d-collision/resources/CollisionDebugger.cs +33 -0
- package/.claude/skills/plan-feature/SKILL.md +14 -0
- package/.claude/skills/playtest/SKILL.md +14 -0
- package/.claude/skills/project-stage/SKILL.md +14 -0
- package/.claude/skills/prototype-feature/SKILL.md +14 -0
- package/.claude/skills/qa-plan/SKILL.md +14 -0
- package/.claude/skills/release/SKILL.md +18 -0
- package/.claude/skills/release-readiness/SKILL.md +14 -0
- package/.claude/skills/retrospective/SKILL.md +14 -0
- package/.claude/skills/review/SKILL.md +16 -0
- package/.claude/skills/security-audit/SKILL.md +14 -0
- package/.claude/skills/setup-multiplayer-services/SKILL.md +39 -0
- package/.claude/skills/setup-multiplayer-services/references/dgs-entrypoint.md +79 -0
- package/.claude/skills/setup-multiplayer-services/references/entrypoints.md +213 -0
- package/.claude/skills/setup-multiplayer-services/references/examples.md +33 -0
- package/.claude/skills/setup-multiplayer-services/references/implementation-fit.md +30 -0
- package/.claude/skills/setup-multiplayer-services/references/underlying-services.md +11 -0
- package/.claude/skills/setup-multiplayer-services/references/workflows-prerequisites.md +17 -0
- package/.claude/skills/setup-vivox-voice-chat/SKILL.md +118 -0
- package/.claude/skills/setup-vivox-voice-chat/evals/.env.example +6 -0
- package/.claude/skills/setup-vivox-voice-chat/evals/README.md +101 -0
- package/.claude/skills/setup-vivox-voice-chat/evals/promptfooconfig.yaml +32 -0
- package/.claude/skills/setup-vivox-voice-chat/evals/tests/init-and-login.yaml +76 -0
- package/.claude/skills/setup-vivox-voice-chat/evals/tests/text-chat.yaml +65 -0
- package/.claude/skills/setup-vivox-voice-chat/evals/tests/voice-channels.yaml +74 -0
- package/.claude/skills/setup-vivox-voice-chat/references/events-and-participants.md +79 -0
- package/.claude/skills/setup-vivox-voice-chat/references/init-and-login.md +92 -0
- package/.claude/skills/setup-vivox-voice-chat/references/text-chat.md +93 -0
- package/.claude/skills/setup-vivox-voice-chat/references/troubleshooting.md +47 -0
- package/.claude/skills/setup-vivox-voice-chat/references/voice-channels.md +90 -0
- package/.claude/skills/shader-graph-create-custom-node/SKILL.md +25 -0
- package/.claude/skills/shader-graph-create-custom-node/resources/all_hints.hlsl +182 -0
- package/.claude/skills/sprint-plan/SKILL.md +14 -0
- package/.claude/skills/sprite-editor/SKILL.md +66 -0
- package/.claude/skills/sprite-editor/references/api_reference.md +151 -0
- package/.claude/skills/sprite-editor/references/background.md +112 -0
- package/.claude/skills/sprite-editor/references/templates.md +72 -0
- package/.claude/skills/sprite-editor/scripts/AutomaticSliceTexture.cs +40 -0
- package/.claude/skills/sprite-editor/scripts/GenerateNewSpriteRects.cs +200 -0
- package/.claude/skills/sprite-editor/scripts/GetTextureSourceImageSize.cs +32 -0
- package/.claude/skills/sprite-editor/scripts/GetTextureToSlice.cs +55 -0
- package/.claude/skills/sprite-editor/scripts/GridSliceTexture.cs +40 -0
- package/.claude/skills/sprite-editor/scripts/IsometricSliceTexture.cs +141 -0
- package/.claude/skills/sprite-editor/scripts/README.md +134 -0
- package/.claude/skills/sprite-editor/scripts/SetPivotExample.cs +58 -0
- package/.claude/skills/sprite-editor/scripts/SpriteToPng.cs +88 -0
- package/.claude/skills/status/SKILL.md +16 -0
- package/.claude/skills/story-readiness/SKILL.md +14 -0
- package/.claude/skills/test/SKILL.md +16 -0
- package/.claude/skills/ui/SKILL.md +142 -0
- package/.claude/skills/ui-imgui/SKILL.md +186 -0
- package/.claude/skills/ui-imgui/references/gui-elements.md +156 -0
- package/.claude/skills/ui-imgui/references/templates.md +141 -0
- package/.claude/skills/ui-review/SKILL.md +14 -0
- package/.claude/skills/ui-ugui/SKILL.md +282 -0
- package/.claude/skills/ui-ugui/references/scrollview-setup.md +29 -0
- package/.claude/skills/ui-uitk/SKILL.md +235 -0
- package/.claude/skills/ui-uitk/references/common-issues.md +74 -0
- package/.claude/skills/ui-uitk/references/custom-elements.md +241 -0
- package/.claude/skills/ui-uitk/references/painter2d.md +282 -0
- package/.claude/skills/ui-uitk/references/pointermanipulator-guide.md +94 -0
- package/.claude/skills/ui-uitk/references/svg-icons.md +136 -0
- package/.claude/skills/ui-uitk/references/ui-runtime-binding.md +234 -0
- package/.claude/skills/ui-uitk/references/uss-guide.md +138 -0
- package/.claude/skills/unity-cli/CHANGELOG.md +233 -0
- package/.claude/skills/unity-cli/SECURITY.md +22 -0
- package/.claude/skills/unity-cli/SKILL.md +414 -0
- package/.claude/skills/unity-cli/references/auth-license-cloud.md +146 -0
- package/.claude/skills/unity-cli/references/build-run-test.md +349 -0
- package/.claude/skills/unity-cli/references/collaboration.md +472 -0
- package/.claude/skills/unity-cli/references/config-hub.md +103 -0
- package/.claude/skills/unity-cli/references/diagnostics-maintenance.md +326 -0
- package/.claude/skills/unity-cli/references/editors-install.md +327 -0
- package/.claude/skills/unity-cli/references/integration-advanced.md +472 -0
- package/.claude/skills/unity-cli/references/projects-templates.md +574 -0
- package/.claude/skills/unity-package-management/SKILL.md +304 -0
- package/.claude/skills/unity-package-management/references/select-packages.md +108 -0
- package/.claude/skills/urp-postprocessing/SKILL.md +188 -0
- package/.claude/skills/urp-postprocessing/references/code-templates.md +119 -0
- package/.claude/skills/urp-postprocessing/references/effect-reference.md +86 -0
- package/.claude/skills/validate-urp-render-graph-renderer-feature/SKILL.md +269 -0
- package/.claude/skills/work/SKILL.md +36 -0
- package/.claude/skills/work/references/classification.md +41 -0
- package/.claude/skills/work/references/closure.md +50 -0
- package/.claude/skills/work/references/feature-contracts.md +32 -0
- package/.claude/skills/work/references/verification.md +26 -0
- package/CLAUDE.md +6 -0
- package/LICENSE +21 -0
- package/README.md +162 -0
- package/THIRD_PARTY_NOTICES.md +23 -0
- package/UPGRADING.md +32 -0
- package/VERSION +1 -0
- package/docs/ARCHITECTURE.md +73 -0
- package/docs/HUONG-DAN-MIGRATE-VA-SU-DUNG.md +324 -0
- package/docs/MIGRATION-MATRIX.md +23 -0
- package/docs/PROJECT-POLICY.md +67 -0
- package/docs/WORKFLOWS.md +61 -0
- package/package-assets/setup-vivox-voice-chat-evals.gitignore +7 -0
- package/package.json +41 -0
- package/scaffold/.nccgs/bugs/.gitkeep +1 -0
- package/scaffold/.nccgs/closures/.gitkeep +1 -0
- package/scaffold/.nccgs/context/.gitkeep +1 -0
- package/scaffold/.nccgs/decisions/.gitkeep +1 -0
- package/scaffold/.nccgs/evidence/.gitkeep +1 -0
- package/scaffold/.nccgs/features/.gitkeep +1 -0
- package/scaffold/.nccgs/migrations/.gitkeep +1 -0
- package/scaffold/.nccgs/playtests/.gitkeep +1 -0
- package/scaffold/.nccgs/project.yaml +103 -0
- package/scaffold/.nccgs/requirements.yaml +10 -0
- package/scaffold/.nccgs/reviews/.gitkeep +1 -0
- package/scaffold/.nccgs/state.md +40 -0
- package/scaffold/.nccgs/templates/agent-handoff.md +25 -0
- package/scaffold/.nccgs/templates/architecture-decision.md +27 -0
- package/scaffold/.nccgs/templates/closure-record.md +51 -0
- package/scaffold/.nccgs/templates/context-packet.yaml +17 -0
- package/scaffold/.nccgs/templates/evidence-record.md +23 -0
- package/scaffold/.nccgs/templates/feature-contract.md +35 -0
- package/scaffold/.nccgs/templates/migration-plan.md +40 -0
- package/scaffold/.nccgs/templates/waiver.md +11 -0
- package/scripts/cli.mjs +56 -0
- package/scripts/install.mjs +267 -0
- package/scripts/sync-unity-skills.mjs +126 -0
- package/scripts/validate.mjs +205 -0
- package/tests/framework.test.mjs +121 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# Project policy
|
|
2
|
+
|
|
3
|
+
`.nccgs/project.yaml` adapts NCCGS to one project. Keep generic framework behavior out
|
|
4
|
+
of this file; record only choices that change routing, authority, ownership, context,
|
|
5
|
+
verification, closure, or Unity execution for the project.
|
|
6
|
+
|
|
7
|
+
## Required decisions
|
|
8
|
+
|
|
9
|
+
- project stage and platforms;
|
|
10
|
+
- enabled departments and bounded orchestration;
|
|
11
|
+
- `quality`, `balanced`, or `inherit` model profile and fallback policy;
|
|
12
|
+
- canonical sources for product, design, architecture, planning, art, narrative,
|
|
13
|
+
audio, and release;
|
|
14
|
+
- protected/user-owned/generated paths and hand-tuned settings;
|
|
15
|
+
- architecture constraints, packages and services;
|
|
16
|
+
- Unity version, render/UI/input systems and CLI/Pipeline preference;
|
|
17
|
+
- test/build/runtime baselines and recurring Product Owner gates;
|
|
18
|
+
- closure mode, linked artifacts, completion rules and waiver policy.
|
|
19
|
+
|
|
20
|
+
## Model policy
|
|
21
|
+
|
|
22
|
+
Use `quality` when result quality is primary and all model tiers are available. Use
|
|
23
|
+
`balanced` when leadership coordination does not need Opus by default. Use `inherit`
|
|
24
|
+
when subscription/context compatibility or explicit user control is more important
|
|
25
|
+
than automatic routing.
|
|
26
|
+
|
|
27
|
+
Project overrides may pin a specific role/class, but avoid full model IDs unless the
|
|
28
|
+
project intentionally owns upgrade timing.
|
|
29
|
+
|
|
30
|
+
## Canonical sources and context
|
|
31
|
+
|
|
32
|
+
Map existing documents where they live. Workflows address semantic roles, not fixed
|
|
33
|
+
folder names. Context packets refer to exact sections and source revisions; they do
|
|
34
|
+
not replace canonical documents.
|
|
35
|
+
|
|
36
|
+
## Closure example
|
|
37
|
+
|
|
38
|
+
```yaml
|
|
39
|
+
closure:
|
|
40
|
+
mode: strict
|
|
41
|
+
canonical_record: ".nccgs/closures/{feature_id}.md"
|
|
42
|
+
required_artifacts:
|
|
43
|
+
- id: implementation-report
|
|
44
|
+
type: report
|
|
45
|
+
path_pattern: "project-docs/reports/{feature_id}*.md"
|
|
46
|
+
required: true
|
|
47
|
+
completion_rule: exists
|
|
48
|
+
- id: implementation-register
|
|
49
|
+
type: register_entry
|
|
50
|
+
path_pattern: "project-docs/implementation-register.md"
|
|
51
|
+
required: true
|
|
52
|
+
completion_rule: entry_present
|
|
53
|
+
- id: deletion-gate
|
|
54
|
+
type: checklist
|
|
55
|
+
path_pattern: "project-docs/gates/{feature_id}*.md"
|
|
56
|
+
required: true
|
|
57
|
+
completion_rule: all_conditions
|
|
58
|
+
expected_conditions: 7
|
|
59
|
+
done_requires:
|
|
60
|
+
- implementation
|
|
61
|
+
- objective_verification
|
|
62
|
+
- required_artifacts
|
|
63
|
+
- applicable_manual_gates
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Start migration with the strongest live safeguard and weaken it only through an
|
|
67
|
+
explicit Product Owner decision after the replacement has proven its purpose.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# NCCGS workflows
|
|
2
|
+
|
|
3
|
+
## Risk tiers
|
|
4
|
+
|
|
5
|
+
| Tier | Typical work | Required structure |
|
|
6
|
+
|---|---|---|
|
|
7
|
+
| FAST | Local, unambiguous, easy rollback | Direct work or one specialist; targeted evidence |
|
|
8
|
+
| STANDARD | Ordinary feature or coordinated change | Contract, context packet, accountable implementer, independent verification, closure |
|
|
9
|
+
| CONTROLLED | Architecture, compatibility, dependency, migration, security, release | Impact/decision record, affected specialists, rollback, adversarial review, full relevant gates |
|
|
10
|
+
|
|
11
|
+
## End-to-end work
|
|
12
|
+
|
|
13
|
+
```text
|
|
14
|
+
request
|
|
15
|
+
-> risk and domain routing
|
|
16
|
+
-> context packet and readiness
|
|
17
|
+
-> decisions/plan when needed
|
|
18
|
+
-> one-owner implementation nodes
|
|
19
|
+
-> independent verification
|
|
20
|
+
-> adversarial review for CONTROLLED work
|
|
21
|
+
-> evidence review
|
|
22
|
+
-> record synchronization
|
|
23
|
+
-> configured closure
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
The primary session composes modules automatically. Explicit specialized commands are
|
|
27
|
+
available when a user wants a bounded workflow or output.
|
|
28
|
+
|
|
29
|
+
## Workflow families
|
|
30
|
+
|
|
31
|
+
- **Planning/context**: `project-stage`, `context-pack`, `story-readiness`,
|
|
32
|
+
`plan-feature`, `sprint-plan`, `milestone-review`, `retrospective`.
|
|
33
|
+
- **Design**: `design`, `design-review`, `balance-review`, `accessibility-review`,
|
|
34
|
+
`ui-review`, `prototype-feature`, `playtest`.
|
|
35
|
+
- **Technical**: `architecture-decision`, `dependency-review`,
|
|
36
|
+
`compatibility-review`, `code-review`, `performance-audit`, `security-audit`.
|
|
37
|
+
- **Implementation/quality**: `work`, `qa-plan`, `test`, `bug-triage`,
|
|
38
|
+
`evidence-review`, `review`, `asset-audit`, `closure`.
|
|
39
|
+
- **Delivery/recovery**: `release-readiness`, `release`, `hotfix`,
|
|
40
|
+
`incident-recovery`, `localize-game`, `migrate-project`.
|
|
41
|
+
- **Visibility**: `audit`, `status`.
|
|
42
|
+
|
|
43
|
+
## Role composition examples
|
|
44
|
+
|
|
45
|
+
A gameplay feature may use game designer → gameplay programmer and Unity systems
|
|
46
|
+
specialist in parallel where ownership differs → verification engineer. A UI feature
|
|
47
|
+
may use UX designer and accessibility specialist for design, UI programmer and Unity
|
|
48
|
+
UI specialist for implementation/integration, then independent verification.
|
|
49
|
+
|
|
50
|
+
CONTROLLED network-save work adds technical architect, network programmer, security
|
|
51
|
+
engineer, compatibility review, and adversarial review. It does not automatically
|
|
52
|
+
spawn every director or department.
|
|
53
|
+
|
|
54
|
+
## Evidence states
|
|
55
|
+
|
|
56
|
+
- IMPLEMENTED: change exists.
|
|
57
|
+
- VERIFIED: objective evidence proves approved criteria.
|
|
58
|
+
- VALIDATED: applicable subjective gate accepted.
|
|
59
|
+
- DONE: all configured objective, artifact and subjective gates closed.
|
|
60
|
+
|
|
61
|
+
Status labels are evidence claims, not progress decoration.
|
package/package.json
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "nccgs",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Unity-first game-studio operating system for Claude Code",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"bin": {
|
|
8
|
+
"nccgs": "scripts/cli.mjs"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
".claude/",
|
|
12
|
+
"docs/",
|
|
13
|
+
"package-assets/",
|
|
14
|
+
"scaffold/",
|
|
15
|
+
"scripts/",
|
|
16
|
+
"tests/",
|
|
17
|
+
"CLAUDE.md",
|
|
18
|
+
"LICENSE",
|
|
19
|
+
"README.md",
|
|
20
|
+
"THIRD_PARTY_NOTICES.md",
|
|
21
|
+
"UPGRADING.md",
|
|
22
|
+
"VERSION"
|
|
23
|
+
],
|
|
24
|
+
"engines": {
|
|
25
|
+
"node": ">=18"
|
|
26
|
+
},
|
|
27
|
+
"publishConfig": {
|
|
28
|
+
"access": "public"
|
|
29
|
+
},
|
|
30
|
+
"scripts": {
|
|
31
|
+
"validate": "node scripts/validate.mjs",
|
|
32
|
+
"test": "node --test tests/framework.test.mjs",
|
|
33
|
+
"pack:check": "npm pack --dry-run"
|
|
34
|
+
},
|
|
35
|
+
"keywords": [
|
|
36
|
+
"claude-code",
|
|
37
|
+
"game-development",
|
|
38
|
+
"unity",
|
|
39
|
+
"workflow"
|
|
40
|
+
]
|
|
41
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
schema_version: 2
|
|
2
|
+
|
|
3
|
+
project:
|
|
4
|
+
name: "[set during migration/onboarding]"
|
|
5
|
+
stage: existing
|
|
6
|
+
platforms: []
|
|
7
|
+
|
|
8
|
+
studio:
|
|
9
|
+
profile: unity-production
|
|
10
|
+
enabled_departments: [leadership, design, programming, unity, content, quality, release]
|
|
11
|
+
orchestration:
|
|
12
|
+
max_agent_depth: 1
|
|
13
|
+
max_parallel_agents: 4
|
|
14
|
+
single_writer_per_path: true
|
|
15
|
+
independent_verification: true
|
|
16
|
+
|
|
17
|
+
models:
|
|
18
|
+
profile: quality
|
|
19
|
+
allow_inherit_fallback: true
|
|
20
|
+
allow_automatic_escalation: true
|
|
21
|
+
notify_on_escalation: true
|
|
22
|
+
overrides: {}
|
|
23
|
+
|
|
24
|
+
workflow:
|
|
25
|
+
operating_mode: solo
|
|
26
|
+
autonomy: high
|
|
27
|
+
default_classification: auto
|
|
28
|
+
documentation: targeted
|
|
29
|
+
traceability: targeted
|
|
30
|
+
review_intensity: risk_based
|
|
31
|
+
|
|
32
|
+
context:
|
|
33
|
+
packet_path: ".nccgs/context/{feature_id}.yaml"
|
|
34
|
+
full_source_reads: on_demand
|
|
35
|
+
budgets: { fast: 4000, standard: 12000, controlled: 24000 }
|
|
36
|
+
|
|
37
|
+
authority:
|
|
38
|
+
implementation_details: claude
|
|
39
|
+
safe_refactor: claude
|
|
40
|
+
automated_verification: claude
|
|
41
|
+
technical_docs_sync: claude
|
|
42
|
+
gameplay_change: product_owner
|
|
43
|
+
scope_change: product_owner
|
|
44
|
+
subjective_acceptance: product_owner
|
|
45
|
+
dependency_or_service: product_owner
|
|
46
|
+
irreversible_migration: product_owner
|
|
47
|
+
|
|
48
|
+
canonical_sources:
|
|
49
|
+
product_decisions: []
|
|
50
|
+
game_design: []
|
|
51
|
+
architecture: []
|
|
52
|
+
planning: []
|
|
53
|
+
art_direction: []
|
|
54
|
+
narrative: []
|
|
55
|
+
audio: []
|
|
56
|
+
release: []
|
|
57
|
+
|
|
58
|
+
unity:
|
|
59
|
+
version: detect
|
|
60
|
+
render_pipeline: detect
|
|
61
|
+
ui_system: detect
|
|
62
|
+
input_system: detect
|
|
63
|
+
cli: enabled
|
|
64
|
+
pipeline: enabled
|
|
65
|
+
connected_editor_preferred: true
|
|
66
|
+
|
|
67
|
+
architecture:
|
|
68
|
+
decisions: []
|
|
69
|
+
forbidden_patterns: []
|
|
70
|
+
approved_packages: []
|
|
71
|
+
approved_services: []
|
|
72
|
+
|
|
73
|
+
ownership:
|
|
74
|
+
protected_paths: []
|
|
75
|
+
user_owned_paths: []
|
|
76
|
+
user_owned_settings: []
|
|
77
|
+
generated_paths: []
|
|
78
|
+
|
|
79
|
+
verification:
|
|
80
|
+
editmode: detect
|
|
81
|
+
playmode: detect
|
|
82
|
+
runtime: unity_cli
|
|
83
|
+
build_targets: []
|
|
84
|
+
required_regressions: []
|
|
85
|
+
recurring_manual_gates: []
|
|
86
|
+
baseline_policy: no_unexplained_reduction
|
|
87
|
+
|
|
88
|
+
closure:
|
|
89
|
+
mode: lean
|
|
90
|
+
canonical_record: ".nccgs/closures/{feature_id}.md"
|
|
91
|
+
required_artifacts: []
|
|
92
|
+
done_requires: [implementation, objective_verification, required_artifacts, applicable_manual_gates]
|
|
93
|
+
|
|
94
|
+
release:
|
|
95
|
+
protected_branches: [main, master]
|
|
96
|
+
required_builds: []
|
|
97
|
+
publishing_requires_product_owner: true
|
|
98
|
+
|
|
99
|
+
conventions:
|
|
100
|
+
source_paths: []
|
|
101
|
+
test_paths: []
|
|
102
|
+
documentation_paths: []
|
|
103
|
+
notes: []
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
schema_version: 1
|
|
2
|
+
requirements: []
|
|
3
|
+
|
|
4
|
+
# Add only meaningful player-visible contracts, technical invariants, acceptance
|
|
5
|
+
# criteria, and cross-system dependencies. Suggested entry:
|
|
6
|
+
# - id: INVENTORY-001
|
|
7
|
+
# statement: "Opening inventory pauses local gameplay input."
|
|
8
|
+
# source: "design/inventory.md#interaction"
|
|
9
|
+
# status: approved
|
|
10
|
+
# evidence: []
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# NCCGS state
|
|
2
|
+
|
|
3
|
+
Updated: [timestamp]
|
|
4
|
+
|
|
5
|
+
## Active focus
|
|
6
|
+
|
|
7
|
+
- Feature: none
|
|
8
|
+
- Classification: none
|
|
9
|
+
- Workflow: none
|
|
10
|
+
- Accountable role: none
|
|
11
|
+
- Context packet: none
|
|
12
|
+
|
|
13
|
+
## Progress
|
|
14
|
+
|
|
15
|
+
- Last completed checkpoint: NCCGS initialized
|
|
16
|
+
- Current step: configure or migrate project policy
|
|
17
|
+
- Next safe action: run `/migrate-project review` for an existing project
|
|
18
|
+
|
|
19
|
+
## Decisions pending
|
|
20
|
+
|
|
21
|
+
- None recorded
|
|
22
|
+
|
|
23
|
+
## Blockers and gates
|
|
24
|
+
|
|
25
|
+
- Project policy is not configured
|
|
26
|
+
|
|
27
|
+
## Evidence snapshot
|
|
28
|
+
|
|
29
|
+
- None recorded
|
|
30
|
+
|
|
31
|
+
## Working set
|
|
32
|
+
|
|
33
|
+
- Modified paths: none
|
|
34
|
+
- Protected paths in scope: none
|
|
35
|
+
- Active agents: none
|
|
36
|
+
|
|
37
|
+
## Recovery
|
|
38
|
+
|
|
39
|
+
Read this file, the active context packet, and exact files in Working set. Do not
|
|
40
|
+
reload all project documentation after compaction or session restart.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Agent handoff: [role] — [feature]
|
|
2
|
+
|
|
3
|
+
## Outcome
|
|
4
|
+
|
|
5
|
+
[Completed / Partial / Blocked]
|
|
6
|
+
|
|
7
|
+
## Changed or produced
|
|
8
|
+
|
|
9
|
+
- [artifact or path]
|
|
10
|
+
|
|
11
|
+
## Evidence
|
|
12
|
+
|
|
13
|
+
- [observable result]
|
|
14
|
+
|
|
15
|
+
## Risks and deviations
|
|
16
|
+
|
|
17
|
+
- None recorded
|
|
18
|
+
|
|
19
|
+
## Decisions needed
|
|
20
|
+
|
|
21
|
+
- None
|
|
22
|
+
|
|
23
|
+
## Next owner
|
|
24
|
+
|
|
25
|
+
[role or workflow]
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# ADR-[ID]: [Decision title]
|
|
2
|
+
|
|
3
|
+
- **Status**: Proposed | Accepted | Superseded | Rejected
|
|
4
|
+
- **Date**: YYYY-MM-DD
|
|
5
|
+
- **Related requirements**: [IDs/links]
|
|
6
|
+
|
|
7
|
+
## Context
|
|
8
|
+
|
|
9
|
+
[The durable problem, constraints, affected contracts, and why a decision is needed.]
|
|
10
|
+
|
|
11
|
+
## Decision
|
|
12
|
+
|
|
13
|
+
[Chosen direction stated precisely.]
|
|
14
|
+
|
|
15
|
+
## Alternatives considered
|
|
16
|
+
|
|
17
|
+
- **[Alternative]**: [material tradeoff and rejection reason]
|
|
18
|
+
|
|
19
|
+
## Consequences
|
|
20
|
+
|
|
21
|
+
- **Benefits**: [effects]
|
|
22
|
+
- **Costs/risks**: [effects]
|
|
23
|
+
- **Compatibility/migration**: [save, serialization, network, package, rollback]
|
|
24
|
+
|
|
25
|
+
## Verification
|
|
26
|
+
|
|
27
|
+
[Evidence needed to demonstrate the decision is implemented safely.]
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# Feature Closure: [ID] — [Name]
|
|
2
|
+
|
|
3
|
+
- **Classification**: FAST | STANDARD | CONTROLLED
|
|
4
|
+
- **Closure mode**: lean | linked | strict
|
|
5
|
+
- **Closed**: YYYY-MM-DD
|
|
6
|
+
- **Final state**: IMPLEMENTED | VERIFIED | VALIDATED | DONE | BLOCKED
|
|
7
|
+
|
|
8
|
+
## Requirements and evidence
|
|
9
|
+
|
|
10
|
+
| Requirement/criterion | Evidence | Result |
|
|
11
|
+
|---|---|---|
|
|
12
|
+
| [REQ-ID] | [test/runtime/manual reference] | PASS/FAIL/NOT PROVEN/PO GATE |
|
|
13
|
+
|
|
14
|
+
## Implementation
|
|
15
|
+
|
|
16
|
+
- [meaningful changed systems/files]
|
|
17
|
+
|
|
18
|
+
## Verification
|
|
19
|
+
|
|
20
|
+
- **Compilation**: [result]
|
|
21
|
+
- **EditMode**: [result]
|
|
22
|
+
- **PlayMode**: [result]
|
|
23
|
+
- **Runtime**: [result]
|
|
24
|
+
- **Build**: [result or N/A]
|
|
25
|
+
- **Regression**: [scope and result]
|
|
26
|
+
|
|
27
|
+
## Documentation synchronization
|
|
28
|
+
|
|
29
|
+
- [updated canonical/technical/state records]
|
|
30
|
+
|
|
31
|
+
## Linked closure artifacts
|
|
32
|
+
|
|
33
|
+
| Artifact ID/type | Path or reference | Required | Completion rule | Status/waiver |
|
|
34
|
+
|---|---|---|---|---|
|
|
35
|
+
| [implementation-report] | [path] | Yes/No | [exists/checklist/sign-off] | PASS/MISSING/INCOMPLETE/WAIVED |
|
|
36
|
+
|
|
37
|
+
## Closure gate
|
|
38
|
+
|
|
39
|
+
- **Implementation**: PASS/FAIL
|
|
40
|
+
- **Objective verification**: PASS/FAIL/NOT PROVEN
|
|
41
|
+
- **Required linked artifacts**: PASS/FAIL/N/A
|
|
42
|
+
- **Applicable manual gates**: PASS/WAITING/N/A
|
|
43
|
+
- **Waiver authority**: [PO decision/reference or None]
|
|
44
|
+
|
|
45
|
+
## PO gates and waivers
|
|
46
|
+
|
|
47
|
+
- [gate/result/authority or None]
|
|
48
|
+
|
|
49
|
+
## Known issues and residual risk
|
|
50
|
+
|
|
51
|
+
- None
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
schema_version: 1
|
|
2
|
+
feature_id: "[FEATURE-ID]"
|
|
3
|
+
objective: "[approved outcome]"
|
|
4
|
+
classification: STANDARD
|
|
5
|
+
accountable_role: "[nccgs role]"
|
|
6
|
+
domains: []
|
|
7
|
+
requirements: []
|
|
8
|
+
canonical_sections: []
|
|
9
|
+
decision_summaries: []
|
|
10
|
+
ownership: { writable_paths: [], read_only_paths: [], protected_paths: [] }
|
|
11
|
+
constraints: []
|
|
12
|
+
out_of_scope: []
|
|
13
|
+
dependencies: []
|
|
14
|
+
verification: { automated: [], runtime: [], regressions: [], product_owner_gates: [] }
|
|
15
|
+
source_revisions: []
|
|
16
|
+
contradictions: []
|
|
17
|
+
full_source_reads_required: []
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Evidence: [feature]
|
|
2
|
+
|
|
3
|
+
- Environment: [Unity version/platform/branch]
|
|
4
|
+
- Source revision: [commit or working-tree identifier]
|
|
5
|
+
- Requirements covered: [IDs]
|
|
6
|
+
|
|
7
|
+
## Automated evidence
|
|
8
|
+
|
|
9
|
+
| Check | Baseline | Result | Skipped | Evidence location |
|
|
10
|
+
|---|---:|---:|---:|---|
|
|
11
|
+
|
|
12
|
+
## Runtime and build evidence
|
|
13
|
+
|
|
14
|
+
| Scenario | Expected | Observed | Result |
|
|
15
|
+
|---|---|---|---|
|
|
16
|
+
|
|
17
|
+
## Regressions and gaps
|
|
18
|
+
|
|
19
|
+
- [gap or none]
|
|
20
|
+
|
|
21
|
+
## Product Owner gates
|
|
22
|
+
|
|
23
|
+
- [scenario and observation request]
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Feature Contract: [ID] — [Name]
|
|
2
|
+
|
|
3
|
+
- **Classification**: FAST | STANDARD | CONTROLLED
|
|
4
|
+
- **Status**: Proposed | Approved | Active | Blocked | Closed
|
|
5
|
+
- **Canonical sources**: [links to relevant sections]
|
|
6
|
+
- **Governing decisions**: [ADR/policy links or None]
|
|
7
|
+
|
|
8
|
+
## Objective
|
|
9
|
+
|
|
10
|
+
[Approved outcome and player-facing intent.]
|
|
11
|
+
|
|
12
|
+
## Requirements
|
|
13
|
+
|
|
14
|
+
- [REQ-ID] [Requirement statement or canonical link]
|
|
15
|
+
|
|
16
|
+
## Scope
|
|
17
|
+
|
|
18
|
+
- **Affected systems**: [systems]
|
|
19
|
+
- **Expected working set**: [files/assets/tests; update after discovery]
|
|
20
|
+
- **Out of scope**: [explicit exclusions]
|
|
21
|
+
|
|
22
|
+
## Acceptance and evidence
|
|
23
|
+
|
|
24
|
+
| Criterion | Evidence method | Gate owner |
|
|
25
|
+
|---|---|---|
|
|
26
|
+
| [objective criterion] | [EditMode/PlayMode/runtime/build] | Claude |
|
|
27
|
+
| [subjective criterion] | PO observation | Product Owner |
|
|
28
|
+
|
|
29
|
+
## Regression obligations
|
|
30
|
+
|
|
31
|
+
- [downstream behavior that must remain correct]
|
|
32
|
+
|
|
33
|
+
## Open PO decisions
|
|
34
|
+
|
|
35
|
+
- None
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# NCCGS Migration Plan — [Project] — YYYY-MM-DD
|
|
2
|
+
|
|
3
|
+
## Current state
|
|
4
|
+
|
|
5
|
+
[Unity/project/workflow summary and repository constraints.]
|
|
6
|
+
|
|
7
|
+
## Canonical-source and policy map
|
|
8
|
+
|
|
9
|
+
[Proposed `.nccgs/project.yaml` mappings and ownership boundaries.]
|
|
10
|
+
|
|
11
|
+
## Closure decision
|
|
12
|
+
|
|
13
|
+
- **Mode**: lean | linked | strict
|
|
14
|
+
- **Canonical record**: [path pattern]
|
|
15
|
+
- **Required linked artifacts**: [reports/registers/checklists/evidence]
|
|
16
|
+
- **Waiver authority**: [Product Owner or project rule]
|
|
17
|
+
- **Legacy safeguards retained**: [items and rationale]
|
|
18
|
+
|
|
19
|
+
## Classification
|
|
20
|
+
|
|
21
|
+
| Artifact/capability | KEEP/ADAPT/MIGRATE/DEPRECATE/REMOVE/MISSING | Evidence and rationale |
|
|
22
|
+
|---|---|---|
|
|
23
|
+
|
|
24
|
+
## Migration batches
|
|
25
|
+
|
|
26
|
+
### Batch 1 — [Name]
|
|
27
|
+
|
|
28
|
+
- **Changes**: [exact reversible changes]
|
|
29
|
+
- **Authority required**: [None or consolidated PO decision]
|
|
30
|
+
- **Backup/rollback**: [method]
|
|
31
|
+
- **Validation**: [observable proof]
|
|
32
|
+
|
|
33
|
+
## Final proof
|
|
34
|
+
|
|
35
|
+
- [ ] NCCGS package validates
|
|
36
|
+
- [ ] Project policy and canonical map are complete
|
|
37
|
+
- [ ] Official Unity Skills and Unity CLI/Pipeline are usable
|
|
38
|
+
- [ ] Representative `/work` flow succeeds
|
|
39
|
+
- [ ] Objective and subjective gates route correctly
|
|
40
|
+
- [ ] Legacy conflicts are resolved or explicitly deprecated
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Waiver: [feature] — [blocked item]
|
|
2
|
+
|
|
3
|
+
- Date: [YYYY-MM-DD]
|
|
4
|
+
- Authority: [Product Owner]
|
|
5
|
+
- Closure item: [exact artifact or gate]
|
|
6
|
+
- Scope: [one feature/release/migration]
|
|
7
|
+
- Rationale: [why proceeding is acceptable]
|
|
8
|
+
- Residual risk: [known consequence]
|
|
9
|
+
- Expiry or review trigger: [condition]
|
|
10
|
+
|
|
11
|
+
This waiver does not apply to unnamed items.
|
package/scripts/cli.mjs
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import { spawnSync } from "node:child_process";
|
|
4
|
+
import fs from "node:fs";
|
|
5
|
+
import path from "node:path";
|
|
6
|
+
import { fileURLToPath } from "node:url";
|
|
7
|
+
|
|
8
|
+
const scriptDir = path.dirname(fileURLToPath(import.meta.url));
|
|
9
|
+
const root = path.resolve(scriptDir, "..");
|
|
10
|
+
const [command, ...args] = process.argv.slice(2);
|
|
11
|
+
|
|
12
|
+
if (!command || command === "help" || command === "--help" || command === "-h") {
|
|
13
|
+
printHelp();
|
|
14
|
+
process.exit(0);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
if (command === "version" || command === "--version" || command === "-v") {
|
|
18
|
+
console.log(fs.readFileSync(path.join(root, "VERSION"), "utf8").trim());
|
|
19
|
+
process.exit(0);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (command !== "install") {
|
|
23
|
+
console.error(`Unknown command: ${command}`);
|
|
24
|
+
printHelp();
|
|
25
|
+
process.exit(2);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const result = spawnSync(process.execPath, [path.join(scriptDir, "install.mjs"), ...args], {
|
|
29
|
+
cwd: process.cwd(),
|
|
30
|
+
stdio: "inherit"
|
|
31
|
+
});
|
|
32
|
+
|
|
33
|
+
if (result.error) {
|
|
34
|
+
console.error(`Unable to run the NCCGS installer: ${result.error.message}`);
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
process.exit(result.status ?? 1);
|
|
38
|
+
|
|
39
|
+
function printHelp() {
|
|
40
|
+
console.log(`NCCGS
|
|
41
|
+
|
|
42
|
+
Usage:
|
|
43
|
+
nccgs install [options]
|
|
44
|
+
nccgs --version
|
|
45
|
+
|
|
46
|
+
Install target:
|
|
47
|
+
The current directory is used by default. Open a terminal in a Unity project
|
|
48
|
+
or cd into it before running the command.
|
|
49
|
+
|
|
50
|
+
Options:
|
|
51
|
+
--dry-run Preview without writing files
|
|
52
|
+
--force Back up and replace framework conflicts
|
|
53
|
+
--model-profile <profile> quality, balanced, or inherit
|
|
54
|
+
--project <directory> Optional explicit target directory
|
|
55
|
+
--allow-non-unity Allow a target without Unity markers`);
|
|
56
|
+
}
|