{"id":"8c01c53c-246d-4d0e-9977-8b11aa3a5f57","slug":"ccplugin-unity-craft","kind":"mcp","name":"ccplugin-unity-craft","summary":"Claude Code plugin — Unity co-developer layer on top of CRAFT MCP: transaction-safe scene ops, Claude Design bundle import, cinematic presets, autonomous screen control, performance audit.","owner":"SkyWalker2506","repoUrl":"https://github.com/SkyWalker2506/ccplugin-unity-craft","license":"MIT","licenseTier":"permissive","trust":"community","stars":1,"match":null,"fewStars":true,"format":"mcp","createdAt":"2026-04-08T18:44:36.000Z","addedAt":"2026-10-21T08:40:00.407Z","logoUrl":"https://avatars.githubusercontent.com/u/42008533?v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["design-media","developer-tools"],"tags":["cinemachine","claude-code","claude-design","performance","post-processing","ui-toolkit","unity","unity6"],"runtime":"binary","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-23T03:31:02.909Z","sample":false,"url":"https://conduits.dev/tools/ccplugin-unity-craft","language":"Python","transports":["stdio"],"install":{},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"# ccplugin-unity-craft\n\nClaude Code plugin for [CRAFT](https://github.com/SkyWalker2506/craft-unity) — safe Unity scene manipulation via MCP tools.\n\n---\n\n## ⚠️ Requirements\n\nThis plugin requires the **CRAFT Unity SDK** to be installed in your Unity project.  \nWithout it, none of the MCP tools (`Craft_Execute`, `Craft_Rollback`, etc.) will exist.\n\n| Requirement | Where | Install |\n|-------------|-------|---------|\n| **[craft-unity](https://github.com/SkyWalker2506/craft-unity)** | Unity project | UPM (see below) |\n| `com.unity.ai.assistant` ≥ 2.0.0 | Unity project | Unity Package Manager |\n| Unity 6 (6000.0+) | Unity Editor | — |\n| Claude Code | Terminal | `npm i -g @anthropic-ai/claude-code` |\n\n### Install craft-unity SDK in Unity\n\nAdd to your Unity project's `Packages/manifest.json`:\n\n```json\n{\n  \"dependencies\": {\n    \"com.skywalker.craft\": \"https://github.com/SkyWalker2506/craft-unity.git\",\n    \"com.unity.ai.assistant\": \"2.0.0\"\n  }\n}\n```\n\nThen make sure the Unity MCP bridge is active:  \n`Edit > Project Settings > AI > MCP Bridge: Enable`\n\n---\n\n## Why this exists (vs. plain Unity MCP)\n\n`com.unity.ai.assistant` 2.0 ships with `Unity_ManageScene`, `Unity_ManageGameObject`, `Unity_ReadConsole`, and low-level asset/script ops. That is a **remote control**. Claude still has to reason scene-mutation-by-mutation, with no safety net and no higher-level intent.\n\nThis plugin is the **co-developer layer on top**:\n\n| Capability | Unity MCP 2.0 | ccplugin-unity-craft |\n|------------|---------------|----------------------|\n| Scene mutation | ✅ direct, imperative | ✅ via `Craft_Execute` — batched, validated, **rollback-able by transaction ID** |\n| Pre-flight dry-run | ❌ | ✅ `Craft_Validate` |\n| Undo / revert N steps | ❌ | ✅ `Craft_Rollback` |\n| Structured scene query | ⚠️ name-only | ✅ `Craft_Query` by component, tag, parent, filter chains |\n| Claude Design bundle → UI Toolkit | ❌ | ✅ `ImportDesignBundle` → UXML + USS + UIDocument |\n| Game / Scene view screenshot | ❌ | ✅ `CaptureScreen` (upstream CRAFT) |\n| Profiler snapshot | ❌ | ✅ `Optimize_Profile` (upstream CRAFT) |\n| TextureImporter / ModelImporter batch | ❌ | ✅ transaction-safe, rollback-able |\n| Cinemachine rig presets | ❌ | ✅ 6 presets (Portrait/ThirdPerson/Orbit/TopDown/Cinematic/FirstPerson) |\n| Post-processing Volume presets | ❌ | ✅ 6 presets (Cinematic/Stylized/Realistic/Anime/Horror/Dreamy), URP+HDRP auto-detect |\n| Animator Controller + Timeline presets | ❌ | ✅ `Animation_ApplyPreset(\"locomotion-player\")` — 6 curated rigs, CRAFT-transacted |\n| Mobile / desktop / console quality presets | ❌ | ✅ one-line apply + before/after deltas |\n| Autonomous vision-driven action | ❌ | ✅ `ActOnScreen(imageRef, goal)` → CRAFT ops, **never tells user to click** |\n| Asset Store library awareness | ❌ | ✅ `Assets_ScanLibrary` reads local cache, knows what you already own |\n| UPM / OpenUPM / Git UPM research | ❌ | ✅ `Assets_Suggest(source=\"auto\")` — official Unity packages first, OpenUPM next, Asset Store last |\n| Auto-install via `manifest.json` | ❌ | ✅ `Assets_InstallUPM` as a CRAFT transaction (rollback-able) |\n| Specialist agent routing | ❌ (single agent) | ✅ D11/E9/E16/G13/B53/B37/B32/B19 via Jarvis dispatch |\n| Declarative intent API | ❌ (you write ops) | ✅ you write **goals**, plugin writes ops |\n| GDD → polished playable | ❌ | ✅ `Director_Ship(gddPath)` — DAG + dispatch + vision critique + playtest loop |\n\nShort version: Unity MCP lets Claude **move pieces**. This plugin lets Claude **design and ship features**.\n\n---\n\n## What this plugin does\n\nTeaches Claude Code how to use CRAFT's MCP tools for safe, transaction-based Unity scene manipulation plus four extended capabilities: Claude Design import, autonomous screen control, cinematic camera, and performance optimization.\n\n### Core CRAFT tools\n\n| Tool | Description |\n|------|-------------|\n| `Craft_Execute` | Run operations as a single undoable transaction |\n| `Craft_Validate` | Pre-check operations without executing |\n| `Craft_Rollback` | Revert any transaction by ID or undo N steps |\n| `Craft_Query` | Find scene objects by name, component, tag, parent |\n| `Craft_Status` | Engine status, recent transactions, last trace |\n\n### Extended tool families\n\n| Family | Triggers | Spec |\n|--------|----------|------|\n| **Game Director** | \"given this GDD, build the game\", \"ship a playable demo\" | [`tools/game-director.md`](skills/unity-craft/tools/game-director.md) |\n| **Design Import** | \"import this claude design\", \"turn this design into a menu\" | [`tools/import-design-bundle.md`](skills/unity-craft/tools/import-design-bundle.md) |\n| **Screen Control** | \"look at the scene\", \"what's on screen\", \"fix the HUD layout\" | [`tools/screen-control.md`](skills/unity-craft/tools/screen-control.md) |\n| **Cinematic** | \"cinematic shot\", \"cutscene camera\", \"make this look cinematic\" | [`tools/cinematic.md`](skills/unity-craft/tools/cinematic.md) |\n| **Level Design** | \"build a dungeon room\", \"rolling terrain\", \"combat arena\" | [`tools/level-design.md`](skills/unity-craft/tools/level-design.md) |\n| **Animation** | \"add a state machine\", \"create locomotion\", \"door animation\" | [`tools/animation.md`](skills/unity-craft/tools/animation.md) |\n| **Audio** | \"setup audio mixer\", \"music ducking\", \"horror ambience\" | [`tools/audio.md`](skills/unity-craft/tools/audio.md) |\n| **Optimization** | \"optimize this scene\", \"reduce draw calls\", \"mobile performance\" | [`tools/optimization.md`](skills/unity-craft/tools/optimization.md) |\n| **Asset Store** | \"do I have an asset for this\", \"free alternative to X\", \"find a UPM package for Y\" | [`tools/asset-store.md`](skills/unity-craft/tools/asset-store.md) |\n| **Input System** | \"setup player input\", \"gamepad controls\", \"rebinding menu\" | [`tools/input.md`](skills/unity-craft/tools/input.md) |\n\n---\n\n## Usage examples\n\n### Example 1 — Import a Claude Design bundle as Unity UI\n\nClaude Design (April 2026) exports prototype handoff bundles. This plugin converts them into UXML + USS + UIDocument in one shot.\n\n```\n> Import this design as the main menu:\n> https://claude.ai/design/bundle/abc123/handoff\n\nImportDesignBundle(\n  bundleUrl = \"https://claude.ai/design/bundle/abc123/handoff\",\n  canvasName = \"MainMenu\"\n)\n```\n\n**Resulting actions (fully autonomous):**\n1. Bundle fetched + cached under `.unity-craft/design-cache/<hash>/`\n2. Dispatched to **D11** (unity-ui-developer, gpt-5.4): HTML → UXML, design tokens → USS variables\n3. Files written: `Assets/UI/MainMenu/MainMenu.uxml` + `MainMenu.uss`\n4. Craft_Execute transaction: `MainMenu_UIDoc` GameObject created with UIDocument component bound to the UXML\n5. Reports transaction ID for rollback\n\nNo manual UI Builder clicks required — the menu is in your scene and styled.\n\n### Example 2 — Cinematic shot capture\n\n```\n> Set up a cinematic third-person camera following the player\n> and capture a 3-second hero shot at 60fps.\n\nCinema_CreateVCam(preset = \"ThirdPerson\", target = \"Player\")\nPostFX_ApplyPreset(volumeName = \"Main\", preset = \"Cinematic\")\nCinema_CaptureShot(vCam = \"PlayerVCam\", duration = 3, fps = 60,\n                   outputDir = \"Recordings/hero-shot\")\n```\n\n**What happens:**\n1. **E9** (unity-cinematic-director) picks the rig preset from `presets/cinema/thirdperson.json`\n2. Craft_Execute creates CinemachineCamera + sets damping, lens, follow target\n3. PostFX Volume profile swapped to Cinematic (subtle Bloom, DoF focus-pull, Vignette 0.2)\n4. Timeline scrubs 3 seconds, each frame captured via upstream `Craft_CaptureGameView`\n5. 180 PNG frames land in `Recordings/hero-shot/`\n\nSwitch preset (`Anime`, `Horror`, `Dreamy` …) for a different look — values come from `presets/postfx/*.json`.\n\n### Example 3 — Performance audit + optimization\n\n```\n> My mobile build is hitting 15 FPS in the hub scene.\n> Analyze it and apply what's safe automatically.\n\nOptimize_Analyze(scope = \"scene\", target = \"mobile\")\n```\n\n**Result — report from B53 (unity-performance-analyzer, gemini-3.1-pro):**\n\n```\n## Performance Report — HubScene / mobile\nBaseline: FPS 15, DrawCalls 412, SetPass 287, Tris 890K, Memory 1.1GB, GC/frame 12KB\n\n### Top 5 Fixes (by ROI)\n1. [HIGH] Texture compression — 38 uncompressed textures → ASTC 6x6, est. −45% memory\n2. [HIGH] Static batching — 127 objects marked dynamic but never move, est. −180 draw calls\n3. [MED]  Quality preset mismatch — running Desktop preset on mobile, switch to mobile-low\n4. [MED]  22 duplicate textures detected (dryRun purge list attached)\n5. [LOW]  3 shader variants unused in build — stripping saves 8MB\n```\n\nFollow-ups run in one batch:\n\n```\nOptimize_Textures(\"Assets/Textures/Hub\", preset = \"mobile\")\nOptimize_Quality(preset = \"mobile-low\")\nOptimize_Batch(scene = \"HubScene\")\n```\n\nBefore / after delta is measurable on device — no `ProfilerRecorder` guessing.\n\n---\n\n## Agent routing\n\nJarvis routes each invocation to the right registry agent automatically:\n\n| Task | Agent | Model |\n|------|-------|-------|\n| UXML / USS / design import | D11 unity-ui-developer | gpt-5.4 |\n| Screen capture + vision → CRAFT ops | G13 vision-action-operator | gpt-5.4 |\n| Cinemachine + PostFX | E9 unity-cinematic-director | gpt-5.4 |\n| Runtime camera (split-screen, stack) | B37 unity-camera-systems | gpt-5.4 |\n| Performance (holistic) | B53 unity-performance-analyzer | gemini-3.1-pro |\n| Performance (mobile-specific) | B32 unity-mobile-optimizer | gpt-5.4 |\n| Gameplay / C# | B19 unity-developer | gpt-5.4 |\n\nClaude orchestration stays minimal — heavy lifting goes to Gemini/GPT via codex CLI.\n\n---\n\n## Forbidden output patterns\n\nThe `screen-control.md` and `SKILL.md` enforce Rule #6: Claude **never** tells the user to \"click X\" or \"open Y menu\" while this plugin is active. All actions execute through CRAFT or dispatch to G13's vision pipeline. Outputs describe CRAFT transactions, never user-facing clicks.\n\n---\n\n## Install this plugin\n\n```bash\ngit clone https://github.com/SkyWalker2506/ccplugin-unity-craft.git\ncd ccplugin-unity-craft && ./install.sh\n```\n\nOr via claude-marketplace:\n\n```bash\nccplugin install unity-craft\n```\n\n---\n\n## Install check\n\nVerify your stack is healthy with one command:\n\n```bash\n# From Claude Code — checks craft-unity MCP bridge, CRAFT ops, and plugin install\npython3 ~/.claude/plugins/unity-craft/scripts/scan_asset_library.py --force 2>&1 | head -5\n# Expected: {\"scanned_at\": \"...\", \"cache_root\": \"...\", ...}\n```\n\nIf you see `cache_not_found`: open Unity 6, import at least one Asset Store package to create the cache dir.\n\n---\n\n## License\n\nMIT\n"}