Skip to content

feat: skill-based architecture for unity-cli#16

Merged
github-actions[bot] merged 3 commits into
developfrom
feature/issue-8
Feb 17, 2026
Merged

feat: skill-based architecture for unity-cli#16
github-actions[bot] merged 3 commits into
developfrom
feature/issue-8

Conversation

@akiojin

@akiojin akiojin commented Feb 17, 2026

Copy link
Copy Markdown
Owner

Summary

  • Rebuild 8 legacy MCP-based skills (broken symlinks to deleted unity-mcp-server) into 13 task-workflow skills that invoke unity-cli commands directly
  • Each skill is 30–80 lines covering a specific Unity workflow domain (scene creation, prefab lifecycle, C# navigation, etc.)
  • Add unity-helper agent for multi-step automation workflows
  • Update plugin.json to register all 13 skills and the agent
  • Fix all symlinks in .claude/skills/, .codex/skills/, .claude/agents/
  • Document the skills architecture in CLAUDE.md and README.md

Skills (13)

Skill Domain
unity-cli-usage CLI basics (existing)
unity-scene-create Scene & GameObject creation
unity-scene-inspect Scene hierarchy analysis
unity-gameobject-edit GameObject & Component editing
unity-prefab-workflow Prefab lifecycle
unity-asset-management Asset & Material operations
unity-addressables Addressables build & analysis
unity-csharp-navigate C# code exploration (LSP)
unity-csharp-edit C# editing & refactoring
unity-playmode-testing PlayMode, testing, input sim
unity-input-system Input System configuration
unity-ui-automation UI element interaction
unity-editor-tools Editor utilities & profiler

Test plan

  • All symlinks resolve (ls -la .claude/skills/, .codex/skills/, .claude/agents/)
  • Zero mcp__unity-mcp-server__ references in skills
  • cargo fmt --all -- --check passes
  • cargo clippy --all-targets -- -D warnings passes
  • cargo test --all-targets — 34/34 passed

🤖 Generated with Claude Code

Summary by CodeRabbit

リリースノート

  • 新機能

    • Rust ベースの高速な unity-cli ツールが利用可能になりました
    • 13 の新しい Unity スキル(アセット管理、C# 編集、シーン検査、UI オートメーション、プレイモードテストなど)が追加されました
  • 非推奨

    • UNITY_MCP_* 環境変数は非推奨となります。UNITY_CLI_* を使用してください(後方互換性あり、警告が表示されます)
  • ドキュメント

    • アーキテクチャ仕様とマイグレーションガイドが追加されました
    • 開発ガイドとベンチマーク結果ドキュメントが拡張されました
  • 改善

    • リリースワークフローが自動化されました

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>
@coderabbitai

coderabbitai Bot commented Feb 17, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Walkthrough

unity-mcp-serverからunity-cliへの大規模な移行を実施し、Rustベースの新しいCLI構造に対応する多数のスキル定義ファイルとエージェント設定を追加。GitHub Actions CI/CDワークフロー、ベンチマーク・E2E・リリース自動化スクリプト、拡張ドキュメント、および非推奨環境変数のフォールバック処理を実装。

Changes

Cohort / File(s) Summary
Unity CLI Plugin Skills
.claude-plugin/plugins/unity-cli/skills/*/SKILL.md
13個の新しいスキル定義ファイル(addressables、asset-management、csharp-edit、csharp-navigate、editor-tools、gameobject-edit、input-system、playmode-testing、prefab-workflow、scene-create、scene-inspect、ui-automation)を追加。各ファイルにはメタデータ、使用例、tips情報が含まれる。
Plugin Manifest & Agent Updates
.claude-plugin/plugins/unity-cli/plugin.json, .claude-plugin/plugins/unity-cli/agents/unity-helper.md
plugin.jsonにスキル・エージェントエントリを追加。unity-helper.mdエージェント文書を新規作成し、自律型Unityワークフロー、手順パターン、エラー処理を定義。
Skills References Migration
.claude/skills/*, .codex/skills/*
unity-mcp-serverからunity-cliへのスキル参照更新。新規スキルパス追加、削除対象スキル削除(csharp-editing、development、editor-imgui-design、game-ugui-design、game-ui-toolkit-design、scene-management)。
GitHub Actions Workflows
.github/workflows/release.yml, .github/workflows/test.yml
release.yml:タグトリガーで検証・ビルド・リリースジョブを実行。test.yml:拡張されたCI、LSPテスト、Unity E2Eテスト(workflow_dispatchトリガー)を追加。
Automation & Build Scripts
scripts/benchmark.sh, scripts/e2e-test.sh, scripts/publish.sh
新しい自動化スクリプトを追加:ベンチマーク実行、E2Eテスト実行、リリースパイプライン(検証、テスト、バージョン同期、タグ・プッシュ)。
Pre-push Hook
.husky/pre-push
シェバング、エラー処理強化、統一されたメッセージ、条件付きdotnet testを追加。
Documentation - Project Overview
README.md, CLAUDE.md, CONTRIBUTING.md, RELEASE.md
スキルアーキテクチャセクション、開発・リリース手順、Docker検証、E2Eテスト、ブランチポリシーを追加・更新。
Specifications
specs/README.md, specs/architecture.md, specs/migration-notes.md, specs/specs.md
プロジェクト設計ドキュメントを新規作成:アーキテクチャ(3コンポーネント構成)、unity-mcp-serverからの移行ノート、仕様番号更新。
Attribution & License
ATTRIBUTION.md, UnityCliBridge/Packages/unity-cli-bridge/docs/README.*
MIT帰属テンプレート、英語・日本語での帰属表示ガイダンスを追加。
Environment Variable Deprecation
src/config.rs, docs/configuration.md, docs/benchmark-results.md, docs/development.md
UNITY_MCP_\*変数からUNITY_CLI_\*への移行サポート。フォールバック機能、廃止ポリシー、マイグレーションテーブル、開発ガイダンスを実装・ドキュメント化。

Sequence Diagram

sequenceDiagram
    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
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~75 minutes

Poem

🐰 ウサギの毛並みのようなスムーズな移行
unity-mcp-serverさようなら、Rustの新しき時代へ
スキル13個、ワークフロー自動化、テストも充実
廃止ポリシーで過去を大切に、未来へ一歩
CLIの心音、TCP越しに優しく響く ✨

🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed PRのタイトルは、主な変更(MCP ベースのスキルから新しいスキルベースアーキテクチャへの移行)を明確かつ簡潔に要約しており、開発者の視点から最も重要な変更を示しています。
Docstring Coverage ✅ Passed Docstring coverage is 88.89% which is sufficient. The required threshold is 80.00%.
Merge Conflict Detection ✅ Passed ✅ No merge conflicts detected when merging into main

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feature/issue-8

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@akiojin
akiojin changed the base branch from main to develop February 17, 2026 05:28
@github-actions
github-actions Bot enabled auto-merge February 17, 2026 05:29
@github-actions
github-actions Bot merged commit 745f632 into develop Feb 17, 2026
11 checks passed
akiojin pushed a commit that referenced this pull request Mar 3, 2026
feat: skill-based architecture for unity-cli
This was referenced Mar 11, 2026
@akiojin
akiojin deleted the feature/issue-8 branch April 14, 2026 04:12
arghhhhh added a commit to arghhhhh/unity-cli that referenced this pull request Jun 23, 2026
…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>
arghhhhh added a commit to arghhhhh/unity-cli that referenced this pull request Jun 23, 2026
… 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>
arghhhhh added a commit to arghhhhh/unity-cli that referenced this pull request Jun 23, 2026
…, 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>
arghhhhh added a commit to arghhhhh/unity-cli that referenced this pull request Jun 25, 2026
…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>
arghhhhh added a commit to arghhhhh/unity-cli that referenced this pull request Jun 25, 2026
…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>
arghhhhh added a commit to arghhhhh/unity-cli that referenced this pull request Jun 25, 2026
…, 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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant