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,347 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"defaultProfile": "quality",
|
|
4
|
+
"modelProfiles": {
|
|
5
|
+
"quality": {
|
|
6
|
+
"lightweight": "haiku",
|
|
7
|
+
"standard": "sonnet",
|
|
8
|
+
"deep": "opus",
|
|
9
|
+
"leadership": "opus"
|
|
10
|
+
},
|
|
11
|
+
"balanced": {
|
|
12
|
+
"lightweight": "haiku",
|
|
13
|
+
"standard": "sonnet",
|
|
14
|
+
"deep": "opus",
|
|
15
|
+
"leadership": "sonnet"
|
|
16
|
+
},
|
|
17
|
+
"inherit": {
|
|
18
|
+
"lightweight": null,
|
|
19
|
+
"standard": null,
|
|
20
|
+
"deep": null,
|
|
21
|
+
"leadership": null
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"orchestration": {
|
|
25
|
+
"maxAgentDepth": 1,
|
|
26
|
+
"defaultMaxParallel": 4,
|
|
27
|
+
"singleWriterPerPath": true,
|
|
28
|
+
"independentVerification": true
|
|
29
|
+
},
|
|
30
|
+
"agents": [
|
|
31
|
+
{
|
|
32
|
+
"name": "nccgs-creative-director",
|
|
33
|
+
"department": "leadership",
|
|
34
|
+
"modelClass": "leadership",
|
|
35
|
+
"defaultModel": "opus",
|
|
36
|
+
"maxTurns": 24
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"name": "nccgs-technical-director",
|
|
40
|
+
"department": "leadership",
|
|
41
|
+
"modelClass": "leadership",
|
|
42
|
+
"defaultModel": "opus",
|
|
43
|
+
"maxTurns": 24
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"name": "nccgs-producer",
|
|
47
|
+
"department": "leadership",
|
|
48
|
+
"modelClass": "leadership",
|
|
49
|
+
"defaultModel": "opus",
|
|
50
|
+
"maxTurns": 20
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"name": "nccgs-game-design-lead",
|
|
54
|
+
"department": "design",
|
|
55
|
+
"modelClass": "standard",
|
|
56
|
+
"defaultModel": "sonnet",
|
|
57
|
+
"maxTurns": 20
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"name": "nccgs-programming-lead",
|
|
61
|
+
"department": "programming",
|
|
62
|
+
"modelClass": "standard",
|
|
63
|
+
"defaultModel": "sonnet",
|
|
64
|
+
"maxTurns": 20
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"name": "nccgs-art-direction-lead",
|
|
68
|
+
"department": "content",
|
|
69
|
+
"modelClass": "standard",
|
|
70
|
+
"defaultModel": "sonnet",
|
|
71
|
+
"maxTurns": 18
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
"name": "nccgs-audio-direction-lead",
|
|
75
|
+
"department": "content",
|
|
76
|
+
"modelClass": "standard",
|
|
77
|
+
"defaultModel": "sonnet",
|
|
78
|
+
"maxTurns": 18
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"name": "nccgs-narrative-lead",
|
|
82
|
+
"department": "content",
|
|
83
|
+
"modelClass": "standard",
|
|
84
|
+
"defaultModel": "sonnet",
|
|
85
|
+
"maxTurns": 20
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"name": "nccgs-qa-lead",
|
|
89
|
+
"department": "quality",
|
|
90
|
+
"modelClass": "standard",
|
|
91
|
+
"defaultModel": "sonnet",
|
|
92
|
+
"maxTurns": 20
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"name": "nccgs-release-lead",
|
|
96
|
+
"department": "release",
|
|
97
|
+
"modelClass": "standard",
|
|
98
|
+
"defaultModel": "sonnet",
|
|
99
|
+
"maxTurns": 20
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
"name": "nccgs-localization-lead",
|
|
103
|
+
"department": "content",
|
|
104
|
+
"modelClass": "standard",
|
|
105
|
+
"defaultModel": "sonnet",
|
|
106
|
+
"maxTurns": 18
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
"name": "nccgs-game-designer",
|
|
110
|
+
"department": "design",
|
|
111
|
+
"modelClass": "standard",
|
|
112
|
+
"defaultModel": "sonnet",
|
|
113
|
+
"maxTurns": 18
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"name": "nccgs-systems-designer",
|
|
117
|
+
"department": "design",
|
|
118
|
+
"modelClass": "standard",
|
|
119
|
+
"defaultModel": "sonnet",
|
|
120
|
+
"maxTurns": 18
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"name": "nccgs-level-designer",
|
|
124
|
+
"department": "design",
|
|
125
|
+
"modelClass": "standard",
|
|
126
|
+
"defaultModel": "sonnet",
|
|
127
|
+
"maxTurns": 18
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"name": "nccgs-economy-designer",
|
|
131
|
+
"department": "design",
|
|
132
|
+
"modelClass": "standard",
|
|
133
|
+
"defaultModel": "sonnet",
|
|
134
|
+
"maxTurns": 18
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
"name": "nccgs-ux-designer",
|
|
138
|
+
"department": "design",
|
|
139
|
+
"modelClass": "standard",
|
|
140
|
+
"defaultModel": "sonnet",
|
|
141
|
+
"maxTurns": 18
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"name": "nccgs-accessibility-specialist",
|
|
145
|
+
"department": "design",
|
|
146
|
+
"modelClass": "standard",
|
|
147
|
+
"defaultModel": "sonnet",
|
|
148
|
+
"maxTurns": 18
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"name": "nccgs-prototyper",
|
|
152
|
+
"department": "design",
|
|
153
|
+
"modelClass": "standard",
|
|
154
|
+
"defaultModel": "sonnet",
|
|
155
|
+
"maxTurns": 18
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
"name": "nccgs-technical-architect",
|
|
159
|
+
"department": "programming",
|
|
160
|
+
"modelClass": "deep",
|
|
161
|
+
"defaultModel": "opus",
|
|
162
|
+
"maxTurns": 22
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"name": "nccgs-gameplay-programmer",
|
|
166
|
+
"department": "programming",
|
|
167
|
+
"modelClass": "standard",
|
|
168
|
+
"defaultModel": "sonnet",
|
|
169
|
+
"maxTurns": 22
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"name": "nccgs-engine-programmer",
|
|
173
|
+
"department": "programming",
|
|
174
|
+
"modelClass": "standard",
|
|
175
|
+
"defaultModel": "sonnet",
|
|
176
|
+
"maxTurns": 22
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
"name": "nccgs-ai-programmer",
|
|
180
|
+
"department": "programming",
|
|
181
|
+
"modelClass": "standard",
|
|
182
|
+
"defaultModel": "sonnet",
|
|
183
|
+
"maxTurns": 22
|
|
184
|
+
},
|
|
185
|
+
{
|
|
186
|
+
"name": "nccgs-network-programmer",
|
|
187
|
+
"department": "programming",
|
|
188
|
+
"modelClass": "standard",
|
|
189
|
+
"defaultModel": "sonnet",
|
|
190
|
+
"maxTurns": 24
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"name": "nccgs-tools-programmer",
|
|
194
|
+
"department": "programming",
|
|
195
|
+
"modelClass": "standard",
|
|
196
|
+
"defaultModel": "sonnet",
|
|
197
|
+
"maxTurns": 20
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
"name": "nccgs-ui-programmer",
|
|
201
|
+
"department": "programming",
|
|
202
|
+
"modelClass": "standard",
|
|
203
|
+
"defaultModel": "sonnet",
|
|
204
|
+
"maxTurns": 22
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
"name": "nccgs-security-engineer",
|
|
208
|
+
"department": "quality",
|
|
209
|
+
"modelClass": "standard",
|
|
210
|
+
"defaultModel": "sonnet",
|
|
211
|
+
"maxTurns": 20
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
"name": "nccgs-performance-analyst",
|
|
215
|
+
"department": "quality",
|
|
216
|
+
"modelClass": "standard",
|
|
217
|
+
"defaultModel": "sonnet",
|
|
218
|
+
"maxTurns": 20
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
"name": "nccgs-technical-artist",
|
|
222
|
+
"department": "content",
|
|
223
|
+
"modelClass": "standard",
|
|
224
|
+
"defaultModel": "sonnet",
|
|
225
|
+
"maxTurns": 20
|
|
226
|
+
},
|
|
227
|
+
{
|
|
228
|
+
"name": "nccgs-sound-designer",
|
|
229
|
+
"department": "content",
|
|
230
|
+
"modelClass": "standard",
|
|
231
|
+
"defaultModel": "sonnet",
|
|
232
|
+
"maxTurns": 18
|
|
233
|
+
},
|
|
234
|
+
{
|
|
235
|
+
"name": "nccgs-writer",
|
|
236
|
+
"department": "content",
|
|
237
|
+
"modelClass": "standard",
|
|
238
|
+
"defaultModel": "sonnet",
|
|
239
|
+
"maxTurns": 18
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
"name": "nccgs-world-builder",
|
|
243
|
+
"department": "content",
|
|
244
|
+
"modelClass": "standard",
|
|
245
|
+
"defaultModel": "sonnet",
|
|
246
|
+
"maxTurns": 18
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
"name": "nccgs-analytics-engineer",
|
|
250
|
+
"department": "quality",
|
|
251
|
+
"modelClass": "standard",
|
|
252
|
+
"defaultModel": "sonnet",
|
|
253
|
+
"maxTurns": 18
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
"name": "nccgs-live-ops-designer",
|
|
257
|
+
"department": "design",
|
|
258
|
+
"modelClass": "standard",
|
|
259
|
+
"defaultModel": "sonnet",
|
|
260
|
+
"maxTurns": 18
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
"name": "nccgs-qa-engineer",
|
|
264
|
+
"department": "quality",
|
|
265
|
+
"modelClass": "standard",
|
|
266
|
+
"defaultModel": "sonnet",
|
|
267
|
+
"maxTurns": 22
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
"name": "nccgs-verification-engineer",
|
|
271
|
+
"department": "quality",
|
|
272
|
+
"modelClass": "standard",
|
|
273
|
+
"defaultModel": "sonnet",
|
|
274
|
+
"maxTurns": 22
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
"name": "nccgs-adversarial-reviewer",
|
|
278
|
+
"department": "quality",
|
|
279
|
+
"modelClass": "deep",
|
|
280
|
+
"defaultModel": "opus",
|
|
281
|
+
"maxTurns": 20
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
"name": "nccgs-documentation-manager",
|
|
285
|
+
"department": "quality",
|
|
286
|
+
"modelClass": "lightweight",
|
|
287
|
+
"defaultModel": "haiku",
|
|
288
|
+
"maxTurns": 14
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
"name": "nccgs-release-engineer",
|
|
292
|
+
"department": "release",
|
|
293
|
+
"modelClass": "standard",
|
|
294
|
+
"defaultModel": "sonnet",
|
|
295
|
+
"maxTurns": 24
|
|
296
|
+
},
|
|
297
|
+
{
|
|
298
|
+
"name": "nccgs-unity-implementer",
|
|
299
|
+
"department": "unity",
|
|
300
|
+
"modelClass": "standard",
|
|
301
|
+
"defaultModel": "sonnet",
|
|
302
|
+
"maxTurns": 24
|
|
303
|
+
},
|
|
304
|
+
{
|
|
305
|
+
"name": "nccgs-unity-systems-specialist",
|
|
306
|
+
"department": "unity",
|
|
307
|
+
"modelClass": "standard",
|
|
308
|
+
"defaultModel": "sonnet",
|
|
309
|
+
"maxTurns": 22
|
|
310
|
+
},
|
|
311
|
+
{
|
|
312
|
+
"name": "nccgs-unity-ui-specialist",
|
|
313
|
+
"department": "unity",
|
|
314
|
+
"modelClass": "standard",
|
|
315
|
+
"defaultModel": "sonnet",
|
|
316
|
+
"maxTurns": 22
|
|
317
|
+
},
|
|
318
|
+
{
|
|
319
|
+
"name": "nccgs-unity-rendering-specialist",
|
|
320
|
+
"department": "unity",
|
|
321
|
+
"modelClass": "standard",
|
|
322
|
+
"defaultModel": "sonnet",
|
|
323
|
+
"maxTurns": 22
|
|
324
|
+
},
|
|
325
|
+
{
|
|
326
|
+
"name": "nccgs-unity-content-specialist",
|
|
327
|
+
"department": "unity",
|
|
328
|
+
"modelClass": "standard",
|
|
329
|
+
"defaultModel": "sonnet",
|
|
330
|
+
"maxTurns": 22
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
"name": "nccgs-unity-build-specialist",
|
|
334
|
+
"department": "unity",
|
|
335
|
+
"modelClass": "standard",
|
|
336
|
+
"defaultModel": "sonnet",
|
|
337
|
+
"maxTurns": 24
|
|
338
|
+
},
|
|
339
|
+
{
|
|
340
|
+
"name": "nccgs-production-coordinator",
|
|
341
|
+
"department": "leadership",
|
|
342
|
+
"modelClass": "standard",
|
|
343
|
+
"defaultModel": "sonnet",
|
|
344
|
+
"maxTurns": 18
|
|
345
|
+
}
|
|
346
|
+
]
|
|
347
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { fileURLToPath } from "node:url";
|
|
4
|
+
|
|
5
|
+
const ownDir = path.dirname(fileURLToPath(import.meta.url));
|
|
6
|
+
const args = process.argv.slice(2);
|
|
7
|
+
const projectArg = args.indexOf("--project");
|
|
8
|
+
const profileArg = args.indexOf("--profile");
|
|
9
|
+
const project = path.resolve(projectArg >= 0 ? args[projectArg + 1] : path.resolve(ownDir, "../../../.."));
|
|
10
|
+
const catalogPath = path.join(project, ".claude", "nccgs", "studio.json");
|
|
11
|
+
const catalog = JSON.parse(fs.readFileSync(catalogPath, "utf8"));
|
|
12
|
+
const policyPath = path.join(project, ".nccgs", "project.yaml");
|
|
13
|
+
const policy = fs.existsSync(policyPath) ? fs.readFileSync(policyPath, "utf8") : "";
|
|
14
|
+
const configured = policy.match(/^models:\s*$[\s\S]*?^\s+profile:\s*([^#\r\n]+)/m)?.[1]?.trim();
|
|
15
|
+
const profileName = profileArg >= 0 ? args[profileArg + 1] : (configured || catalog.defaultProfile);
|
|
16
|
+
const profile = catalog.modelProfiles[profileName];
|
|
17
|
+
if (!profile) throw new Error(`Unknown model profile '${profileName}'. Expected: ${Object.keys(catalog.modelProfiles).join(", ")}`);
|
|
18
|
+
|
|
19
|
+
let changed = 0;
|
|
20
|
+
for (const agent of catalog.agents) {
|
|
21
|
+
const file = path.join(project, ".claude", "agents", `${agent.name}.md`);
|
|
22
|
+
if (!fs.existsSync(file)) continue;
|
|
23
|
+
let text = fs.readFileSync(file, "utf8");
|
|
24
|
+
const model = profile[agent.modelClass];
|
|
25
|
+
const next = model
|
|
26
|
+
? (/^model:/m.test(text) ? text.replace(/^model:.*$/m, `model: ${model}`) : text.replace(/^maxTurns:/m, `model: ${model}\nmaxTurns:`))
|
|
27
|
+
: text.replace(/^model:.*\r?\n/m, "");
|
|
28
|
+
if (next !== text) {
|
|
29
|
+
fs.writeFileSync(file, next, "utf8");
|
|
30
|
+
changed++;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
if (profileArg >= 0 && policy && /^models:\s*$/m.test(policy)) {
|
|
35
|
+
const nextPolicy = policy.replace(/(^models:\s*$[\s\S]*?^\s+profile:\s*)[^#\r\n]+/m, `$1${profileName}`);
|
|
36
|
+
if (nextPolicy !== policy) fs.writeFileSync(policyPath, nextPolicy, "utf8");
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
console.log(`NCCGS model profile '${profileName}' configured; ${changed} agent file(s) changed.`);
|