feat: skill-based architecture for unity-cli#16
Conversation
Replace 8 domain-based MCP skills (pointing to deleted unity-mcp-server) with 13 task-workflow skills that invoke unity-cli commands directly. Each skill is 30-80 lines covering a specific workflow (scene creation, prefab lifecycle, C# navigation, etc.). Add unity-helper agent for multi-step automation. Update plugin.json, symlinks, CLAUDE.md, README.md. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the You can disable this status message by setting the Use the checkbox below for a quick retry:
Walkthroughunity-mcp-serverからunity-cliへの大規模な移行を実施し、Rustベースの新しいCLI構造に対応する多数のスキル定義ファイルとエージェント設定を追加。GitHub Actions CI/CDワークフロー、ベンチマーク・E2E・リリース自動化スクリプト、拡張ドキュメント、および非推奨環境変数のフォールバック処理を実装。 Changes
Sequence DiagramsequenceDiagram
participant User
participant GitHub as GitHub Actions
participant Validate as Validate Job
participant Build as Build Job
participant Release as Release Job
participant Artifacts as GitHub Artifacts
User->>GitHub: Push tag (vX.Y.Z) or workflow_dispatch
GitHub->>Validate: Trigger validate job
Validate->>Validate: Extract TAG/VERSION
Validate->>Validate: Verify Cargo.toml version match
Validate->>Validate: Run cargo test & dotnet test
Validate-->>GitHub: ✓ Pass validation
GitHub->>Build: Trigger build job (requires validate)
Build->>Build: Install Rust toolchains
Build->>Build: Build release binaries (Linux/macOS/Windows)
Build->>Artifacts: Upload artifacts per OS
Artifacts-->>GitHub: ✓ Artifacts stored
GitHub->>Release: Trigger release job (requires validate & build)
Release->>Artifacts: Download all artifacts
Release->>GitHub: Create Release with artifacts attached
GitHub-->>User: Release published
Estimated code review effort🎯 4 (Complex) | ⏱️ ~75 minutes Poem
🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
feat: skill-based architecture for unity-cli
…refs Pass-1 breadth proof for Preferences (akiojin#13). Reuses the existing vfx_settings tool with a new `scope` param (default "project"; "preferences" routes to EditorPrefs via UnityEditor.VFX.VFXViewPreference). - VfxGraphHandler: VFXViewPreferenceType + a canonical 11-entry preference table (propName, keyConstName, type). GetVfxPreferences reflects each public static property — instancingEnabled, displayExperimentalOperator, multithreadUpdateEnabled, forceEditionCompilation, advancedLogs, cameraBuffersFallback (enum→name), authoringPrewarm{Step,Max}, ... - SetVfxPreference resolves the key constant by reflection, calls the matching EditorPrefs.SetBool/SetInt/SetFloat, invalidates the cache via VFXViewPreference.SetDirty(), then re-reads through the canonical property to confirm the round-trip. Result echoes the resolved editorPrefsKey (e.g. "VFX.InstancingEnabled"). - Catalog: schema widened with `scope` string; description updated to cover both scopes. Tool-level mutating unchanged (parity count stays 134). - Tests (3 new, total 48 EditMode, 0 skipped): * contract: unknown pref name returns a descriptive error listing the 11 known names; * behavioral get: properties block surfaces instancingEnabled, displayExperimentalOperator, multithreadUpdateEnabled; * behavioral set: instancingEnabled flips and round-trips via re-read, editorPrefsKey resolves to the package's "VFX.InstancingEnabled" constant, restored in finally. - Skill + docs: split scope:project / scope:preferences examples and call out the Instancing master gate (gate akiojin#1 of akiojin#16's 3-gate reconciliation). Verified live via raw: get scope:preferences surfaces all 11 prefs; set instancingEnabled=false re-reads as false; set authoringPrewarmStepCountPerSeconds=40 (int) round-trips; restored. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
… PlayMode-verified (akiojin#16 runtime tail) Describe oracle gains instancing.disabledReason, recomputed from live context types (VFXOutputEvent -> "OutputEvent", VFXStaticMeshOutput -> "MeshOutput", else "None") — mirrors VFXGraphCompiledData.ValidateInstancing without touching the editor compiler's internal compiled-data state. This is the graph-level force-disable gate. PlayMode test Runtime_Instancing_MultiInstanceSharedAsset_ResolvesThreeGates: builds 3 VisualEffects bound to ONE shared asset (each its own position) + a camera, Simulates all per frame, and asserts each independently holds its full Single Burst — the headless stand-in for "N instances render with the same asset" (instancing batching is a C++ optimization with no public per-component observable). Reconciles the 3 instancing gates' resolved state: preference master (vfx_settings preferences instancingEnabled) + asset mode (describe instancing.mode) + force-disable validation (describe instancing.disabledReason, "None" for a Quad system, "OutputEvent" for an Output-Event variant). Gotcha proven: the instancingMode enum is Auto/Custom/Disabled, NOT "ForceOn" (the older docs were wrong) — Custom = explicit force-enable. HANDOFF §6b + the akiojin#16 checklist corrected. This flips the akiojin#16 runtime tail — Instancing (akiojin#16) is now fully complete, and the runtime play-mode verification vertical (the project's last new verification mode) is COMPLETE: 7 PlayMode tests green, akiojin#6/akiojin#9/akiojin#16 all fully done. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…, not ForceOn) The unity-vfx-graph skill listed the instancing mode values as Auto/Disabled/ForceOn; the live enum is Auto/Custom/Disabled (Custom = explicit force-enable). Also document the describe instancing.disabledReason field added for the akiojin#16 3-gate work. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…refs Pass-1 breadth proof for Preferences (akiojin#13). Reuses the existing vfx_settings tool with a new `scope` param (default "project"; "preferences" routes to EditorPrefs via UnityEditor.VFX.VFXViewPreference). - VfxGraphHandler: VFXViewPreferenceType + a canonical 11-entry preference table (propName, keyConstName, type). GetVfxPreferences reflects each public static property — instancingEnabled, displayExperimentalOperator, multithreadUpdateEnabled, forceEditionCompilation, advancedLogs, cameraBuffersFallback (enum→name), authoringPrewarm{Step,Max}, ... - SetVfxPreference resolves the key constant by reflection, calls the matching EditorPrefs.SetBool/SetInt/SetFloat, invalidates the cache via VFXViewPreference.SetDirty(), then re-reads through the canonical property to confirm the round-trip. Result echoes the resolved editorPrefsKey (e.g. "VFX.InstancingEnabled"). - Catalog: schema widened with `scope` string; description updated to cover both scopes. Tool-level mutating unchanged (parity count stays 134). - Tests (3 new, total 48 EditMode, 0 skipped): * contract: unknown pref name returns a descriptive error listing the 11 known names; * behavioral get: properties block surfaces instancingEnabled, displayExperimentalOperator, multithreadUpdateEnabled; * behavioral set: instancingEnabled flips and round-trips via re-read, editorPrefsKey resolves to the package's "VFX.InstancingEnabled" constant, restored in finally. - Skill + docs: split scope:project / scope:preferences examples and call out the Instancing master gate (gate akiojin#1 of akiojin#16's 3-gate reconciliation). Verified live via raw: get scope:preferences surfaces all 11 prefs; set instancingEnabled=false re-reads as false; set authoringPrewarmStepCountPerSeconds=40 (int) round-trips; restored. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…kiojin#16 runtime tail) Describe oracle gains instancing.disabledReason, recomputed from live context types (VFXOutputEvent -> "OutputEvent", VFXStaticMeshOutput -> "MeshOutput", else "None") — mirrors VFXGraphCompiledData.ValidateInstancing without touching the editor compiler's internal compiled-data state. This is the graph-level force-disable gate. PlayMode test Runtime_Instancing_MultiInstanceSharedAsset_ResolvesThreeGates: builds 3 VisualEffects bound to ONE shared asset (each its own position) + a camera, Simulates all per frame, and asserts each independently holds its full Single Burst — the headless stand-in for "N instances render with the same asset" (instancing batching is a C++ optimization with no public per-component observable). Reconciles the 3 instancing gates' resolved state: preference master (vfx_settings preferences instancingEnabled) + asset mode (describe instancing.mode) + force-disable validation (describe instancing.disabledReason, "None" for a Quad system, "OutputEvent" for an Output-Event variant). Gotcha proven: the instancingMode enum is Auto/Custom/Disabled, NOT "ForceOn" (the older docs were wrong) — Custom = explicit force-enable. HANDOFF §6b + the akiojin#16 checklist corrected. This flips the akiojin#16 runtime tail — Instancing (akiojin#16) is now fully complete, and the runtime play-mode verification vertical (the project's last new verification mode) is COMPLETE: 7 PlayMode tests green, akiojin#6/akiojin#9/akiojin#16 all fully done. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…, not ForceOn) The unity-vfx-graph skill listed the instancing mode values as Auto/Disabled/ForceOn; the live enum is Auto/Custom/Disabled (Custom = explicit force-enable). Also document the describe instancing.disabledReason field added for the akiojin#16 3-gate work. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Summary
unity-mcp-server) into 13 task-workflow skills that invokeunity-clicommands directlyunity-helperagent for multi-step automation workflowsplugin.jsonto register all 13 skills and the agent.claude/skills/,.codex/skills/,.claude/agents/CLAUDE.mdandREADME.mdSkills (13)
unity-cli-usageunity-scene-createunity-scene-inspectunity-gameobject-editunity-prefab-workflowunity-asset-managementunity-addressablesunity-csharp-navigateunity-csharp-editunity-playmode-testingunity-input-systemunity-ui-automationunity-editor-toolsTest plan
ls -la .claude/skills/,.codex/skills/,.claude/agents/)mcp__unity-mcp-server__references in skillscargo fmt --all -- --checkpassescargo clippy --all-targets -- -D warningspassescargo test --all-targets— 34/34 passed🤖 Generated with Claude Code
Summary by CodeRabbit
リリースノート
新機能
非推奨
UNITY_MCP_*環境変数は非推奨となります。UNITY_CLI_*を使用してください(後方互換性あり、警告が表示されます)ドキュメント
改善