# Send Unity Skill to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete.
```
### Upgrade existing

```text
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "openclaw-unity-skill",
    "name": "Unity Skill",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/TomLeeLive/openclaw-unity-skill",
    "canonicalUrl": "https://clawhub.ai/TomLeeLive/openclaw-unity-skill",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/openclaw-unity-skill",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=openclaw-unity-skill",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "LICENSE.md",
      "README.md",
      "SKILL.md",
      "scripts/install-extension.sh",
      "references/tools.md",
      "extension/index.ts"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "openclaw-unity-skill",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-10T12:10:25.170Z",
      "expiresAt": "2026-05-17T12:10:25.170Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=openclaw-unity-skill",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=openclaw-unity-skill",
        "contentDisposition": "attachment; filename=\"openclaw-unity-skill-1.6.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "openclaw-unity-skill"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/openclaw-unity-skill"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/openclaw-unity-skill",
    "downloadUrl": "https://openagent3.xyz/downloads/openclaw-unity-skill",
    "agentUrl": "https://openagent3.xyz/skills/openclaw-unity-skill/agent",
    "manifestUrl": "https://openagent3.xyz/skills/openclaw-unity-skill/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/openclaw-unity-skill/agent.md"
  }
}
```
## Documentation

### Unity Plugin Skill

Control Unity Editor through ~100 built-in tools. Works in both Editor and Play mode.

### 1. OpenClaw Gateway (Remote)

For Telegram, Discord, and other OpenClaw channels:

Auto-connects when Unity opens
Configure in: Window → OpenClaw Plugin → Settings

### 2. MCP Bridge (Local)

For Claude Code, Cursor, and local AI tools:

Start: Window → OpenClaw Plugin → MCP Bridge → Start
Default port: 27182
Add to Claude Code: claude mcp add unity -- node <path>/MCP~/index.js

### First-Time Setup

If unity_execute tool is not available, install the gateway extension:

# From skill directory
./scripts/install-extension.sh

# Restart gateway
openclaw gateway restart

The extension files are in extension/ directory.

### What install-extension.sh Does

# 1. Copies extension files from skill to gateway
#    Source: <skill>/extension/
#    Destination: ~/.openclaw/extensions/unity/

# 2. Files installed:
#    - index.ts     # Extension entry point (HTTP handlers, tools)
#    - package.json # Extension metadata

# After installation, restart gateway to load the extension.

### 🔐 Security

이 스킬은 disableModelInvocation: true로 설정되어 있습니다.

AI가 자동으로 도구를 호출하지 않음
사용자가 명시적으로 요청한 작업만 실행

설정 변경 방법은 README.md를 참조하세요.

### Core Tools

CategoryKey ToolsScenescene.getActive, scene.getData, scene.load, scene.open, scene.saveGameObjectgameobject.find, gameobject.getAll, gameobject.create, gameobject.destroyComponentcomponent.get, component.set, component.add, component.removeTransformtransform.setPosition, transform.setRotation, transform.setScaleDebugdebug.hierarchy, debug.screenshot, console.getLogsInputinput.clickUI, input.type, input.keyPress, input.mouseClickEditoreditor.getState, editor.play, editor.stop, editor.refreshMaterialmaterial.create, material.assign, material.modify, material.getInfoPrefabprefab.create, prefab.instantiate, prefab.open, prefab.saveAssetasset.find, asset.copy, asset.move, asset.deletePackagepackage.add, package.remove, package.list, package.searchTesttest.run, test.list, test.getResults

### 1. Scene Inspection

unity_execute: debug.hierarchy {depth: 2}
unity_execute: scene.getActive

### 2. Find & Modify Objects

unity_execute: gameobject.find {name: "Player"}
unity_execute: component.get {name: "Player", componentType: "Transform"}
unity_execute: transform.setPosition {name: "Player", x: 0, y: 5, z: 0}

### 3. UI Testing

unity_execute: input.clickUI {name: "PlayButton"}
unity_execute: input.type {text: "TestUser", elementName: "UsernameInput"}
unity_execute: debug.screenshot

### 4. Play Mode Control

unity_execute: editor.play              # Enter Play mode
unity_execute: editor.stop              # Exit Play mode
unity_execute: editor.getState          # Check current state
unity_execute: editor.pause             # Pause
unity_execute: editor.unpause           # Resume

### 5. Material Creation

unity_execute: material.create {name: "RedMetal", color: "#FF0000", metallic: 0.8}
unity_execute: material.assign {gameObjectName: "Player", materialPath: "Assets/Materials/RedMetal.mat"}
unity_execute: material.modify {path: "Assets/Materials/RedMetal.mat", metallic: 1.0, emission: "#FF4444"}

### 6. Prefab Workflow

unity_execute: prefab.create {gameObjectName: "Player", path: "Assets/Prefabs/Player.prefab"}
unity_execute: prefab.instantiate {prefabPath: "Assets/Prefabs/Player.prefab", x: 0, y: 1, z: 0}
unity_execute: prefab.open {path: "Assets/Prefabs/Player.prefab"}
unity_execute: prefab.save
unity_execute: prefab.close

### 7. Asset Management

unity_execute: asset.find {query: "Player", type: "Prefab"}
unity_execute: asset.copy {sourcePath: "Assets/Prefabs/Player.prefab", destPath: "Assets/Backup/Player.prefab"}
unity_execute: asset.move {sourcePath: "Assets/Old/Item.prefab", destPath: "Assets/New/Item.prefab"}

### 8. Package Management

unity_execute: package.list
unity_execute: package.search {query: "TextMeshPro"}
unity_execute: package.add {packageName: "com.unity.textmeshpro"}
unity_execute: package.add {gitUrl: "https://github.com/example/package.git"}

### 9. Test Running

unity_execute: test.list {testMode: "EditMode"}
unity_execute: test.run {testMode: "EditMode", filter: "PlayerTests"}
unity_execute: test.getResults

### 10. Script Execution (Enhanced)

# Debug logging
unity_execute: script.execute {code: "Debug.Log('Hello')"}

# Time manipulation
unity_execute: script.execute {code: "Time.timeScale = 0.5"}

# PlayerPrefs
unity_execute: script.execute {code: "PlayerPrefs.SetInt('score', 100)"}

# Reflection-based method calls
unity_execute: script.execute {code: "MyClass.MyMethod()"}
unity_execute: script.execute {code: "MyClass.MyStaticMethod('param1', 123)"}

### Console (3 tools)

console.getLogs - Get logs with optional type filter (Log/Warning/Error)
console.getErrors - Get error/exception logs (with optional warnings)
console.clear - Clear captured logs

### Scene (7 tools)

scene.list - List scenes in build settings
scene.getActive - Get active scene info
scene.getData - Get full hierarchy data
scene.load - Load scene by name (Play mode)
scene.open - Open scene in Editor mode
scene.save - Save active scene (Editor mode)
scene.saveAll - Save all open scenes (Editor mode)

### GameObject (8 tools)

gameobject.find - Find by name, tag, or component
gameobject.getAll - Get all GameObjects with filtering
gameobject.create - Create object or primitive (Cube, Sphere, etc.)
gameobject.destroy - Destroy object
gameobject.delete - Delete object (alias for destroy)
gameobject.getData - Get detailed data
gameobject.setActive - Enable/disable
gameobject.setParent - Change hierarchy

### Transform (6 tools)

transform.getPosition - Get world position {x, y, z}
transform.getRotation - Get Euler rotation {x, y, z}
transform.getScale - Get local scale {x, y, z}
transform.setPosition - Set world position {x, y, z}
transform.setRotation - Set Euler rotation
transform.setScale - Set local scale

### Component (5 tools)

component.add - Add component by type name
component.remove - Remove component
component.get - Get component data/properties
component.set - Set field/property value
component.list - List available component types

### Script (3 tools)

script.execute - Execute code: Debug.Log, Time, PlayerPrefs, reflection calls
script.read - Read script file
script.list - List project scripts

### Application (4 tools)

app.getState - Get play mode, FPS, time
app.play - Enter/exit Play mode
app.pause - Toggle pause
app.stop - Stop Play mode

### Debug (3 tools)

debug.log - Write to console
debug.screenshot - Capture screenshot
debug.hierarchy - Text hierarchy view

### Editor (9 tools)

editor.refresh - Refresh AssetDatabase (triggers recompile)
editor.recompile - Request script recompilation
editor.domainReload - Force domain reload
editor.focusWindow - Focus window (game/scene/console/hierarchy/project/inspector)
editor.listWindows - List open windows
editor.getState - Get editor state
editor.play - Enter Play mode
editor.stop - Exit Play mode
editor.pause / editor.unpause - Pause control

### Input Simulation (10 tools)

input.keyPress - Press and release key
input.keyDown / input.keyUp - Hold/release key
input.type - Type text into field
input.mouseMove - Move cursor
input.mouseClick - Click at position
input.mouseDrag - Drag operation
input.mouseScroll - Scroll wheel
input.getMousePosition - Get cursor position
input.clickUI - Click UI element by name

### Material (5 tools) - NEW in v1.5.0

material.create - Create material with shader, color, metallic, smoothness
material.assign - Assign material to GameObject
material.modify - Modify material properties (color, metallic, emission)
material.getInfo - Get detailed material info with all shader properties
material.list - List materials in project with filtering

### Prefab (5 tools) - NEW in v1.5.0

prefab.create - Create prefab from scene GameObject
prefab.instantiate - Instantiate prefab in scene with position
prefab.open - Open prefab for editing
prefab.close - Close prefab editing mode
prefab.save - Save currently edited prefab

### Asset (7 tools) - NEW in v1.5.0

asset.find - Search assets by query, type, folder
asset.copy - Copy asset to new path
asset.move - Move/rename asset
asset.delete - Delete asset (with trash option)
asset.refresh - Refresh AssetDatabase
asset.import - Import/reimport specific asset
asset.getPath - Get asset path by name

### Package Manager (4 tools) - NEW in v1.5.0

package.add - Install package by name or git URL
package.remove - Remove installed package
package.list - List installed packages
package.search - Search Unity package registry

### Test Runner (3 tools) - NEW in v1.5.0

test.run - Run EditMode/PlayMode tests with filtering
test.list - List available tests
test.getResults - Get last test run results

### Batch Execution (1 tool) - NEW in v1.6.0

batch.execute - Execute multiple tools in one call (10-100x performance)

commands: Array of {tool, params} objects
stopOnError: Stop on first error (default: false)

### Session (1 tool) - NEW in v1.6.0

session.getInfo - Get session info (project, processId, machineName, sessionId)

### ScriptableObject (6 tools) - NEW in v1.6.0

scriptableobject.create - Create new ScriptableObject asset
scriptableobject.load - Load and inspect ScriptableObject fields
scriptableobject.save - Save ScriptableObject changes
scriptableobject.getField - Get specific field value
scriptableobject.setField - Set field value with auto-save
scriptableobject.list - List ScriptableObjects in project

### Shader (3 tools) - NEW in v1.6.0

shader.list - List shaders in project
shader.getInfo - Get shader properties and info
shader.getKeywords - Get shader keywords

### Texture (5 tools) - NEW in v1.6.0

texture.create - Create new texture with color fill
texture.getInfo - Get texture info (size, format, import settings)
texture.setPixels - Fill region with color
texture.resize - Resize texture via import settings
texture.list - List textures in project

### Custom Tools API - v1.6.0

Register project-specific tools:

OpenClawCustomTools.Register(
    "mygame.getScore",
    "Get current score",
    (args) => new { success = true, score = GameManager.Score }
);

### MCP Resources - v1.6.0

Access Unity data via MCP resource URIs:

URIDescriptionunity://scene/hierarchyScene hierarchyunity://scene/activeActive scene infounity://project/scriptsScript listunity://project/scenesScene listunity://editor/stateEditor stateunity://console/logsConsole logsunity://session/infoSession info

### Screenshot Modes

Play mode: ScreenCapture - includes all UI overlays
Editor mode: Camera.main.Render() - no overlay UI
Use {method: "camera"} for camera-only capture

### Finding Objects

gameobject.find {name: "Player"}           # By exact name
gameobject.find {tag: "Enemy"}             # By tag
gameobject.find {componentType: "Camera"}  # By component
gameobject.getAll {activeOnly: true}       # All active objects

### Script Recompilation

Unity may not auto-recompile after code changes. Use:

editor.refresh    # Full asset refresh + recompile

### Play Mode Transitions

Plugin survives Play mode transitions via SessionState
If connection lost, wait for auto-reconnect or use Window → OpenClaw Plugin → Settings → Connect

### MCP Bridge Usage

For Claude Code / Cursor integration:

Start: Window → OpenClaw Plugin → MCP Bridge → Start
Register: claude mcp add unity -- node /path/to/MCP~/index.js
Verify: curl http://127.0.0.1:27182/status

### Input Simulation Limitation

Keyboard/mouse simulation works for UI interactions but NOT for Input.GetKey(). For gameplay testing:

Use transform.setPosition to move objects directly
Or migrate to Unity's new Input System

### Troubleshooting

IssueSolutionTool timeoutCheck Unity is responding, try editor.getStateGateway no connectionCheck Window → OpenClaw Plugin → SettingsMCP no connectionStart MCP Bridge, verify port 27182Scripts not updatingUse editor.refresh to force recompileWrong screenshotUse Play mode for game view with UIMCP 504 timeoutUnity busy or MCP Bridge not startedTest Runner not foundInstall com.unity.test-framework package

### Links

Skill Repository: https://github.com/TomLeeLive/openclaw-unity-skill
Plugin Repository: https://github.com/TomLeeLive/openclaw-unity-plugin
OpenClaw Docs: https://docs.openclaw.ai
MCP Setup Guide: See Plugin Repository → Documentation~/SETUP_GUIDE.md

### License

MIT License - See LICENSE file
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: TomLeeLive
- Version: 1.6.1
## Source health
- Status: healthy
- Item download looks usable.
- Yavira can redirect you to the upstream package for this item.
- Health scope: item
- Reason: direct_download_ok
- Checked at: 2026-05-10T12:10:25.170Z
- Expires at: 2026-05-17T12:10:25.170Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/openclaw-unity-skill)
- [Send to Agent page](https://openagent3.xyz/skills/openclaw-unity-skill/agent)
- [JSON manifest](https://openagent3.xyz/skills/openclaw-unity-skill/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/openclaw-unity-skill/agent.md)
- [Download page](https://openagent3.xyz/downloads/openclaw-unity-skill)