[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6KGPZ61SKPQZ0QDPHMBWWCS":3,"skill-same:01M6KGPZ61SKPQZ0QDPHMBWWCS":79},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":39,"linkOnly":40,"markdownContent":41,"markdownBody":42,"frontMatter":43,"refName":57,"commitSha":58,"skillDirectory":59,"forksCount":60,"repositoryHtmlUrl":61,"repositoryHomepageUrl":6,"ownerHtmlUrl":62,"ownerBlogUrl":6,"ownerDescription":63,"updatedAt":64,"install":65,"resources":78},"01M6KGPZ61SKPQZ0QDPHMBWWCS","unity-gameobject",null,"GameObject creation and manipulation. Use when users want to create, delete, move, rotate, scale, parent, find, or rename GameObjects. Triggers: gameobject, create gameobject, delete gameobject, duplicate, rename, transform, position, rotation, scale, parent, child, hierarchy, layer, tag, active, find, primitive, cube, sphere, instanceId, 游戏对象, 创建游戏对象, 删除游戏对象, 复制, 重命名, 变换, 位置, 旋转, 缩放, 父子, 层级, 查找游戏对象, 标签, 图层, 激活, 立方体, 球体.","dyCuong03\u002Funity-agent-team","dyCuong03","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F137050365?v=4","01M6KFXC85HQHXZJC2VC1KY6EZ","CuongND","01M6KFXCCHP6CD5MTA8NECJC36",8,"MIT","https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Funity-skills\u002Fskills\u002Fgameobject\u002FSKILL.md",[],[19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],"unity gameobject","unity","triggers","hierarchy","load","rotation","unity editor","with","move","users","automation","creation","task","do","use","图层","REST","code","create","http","2026-11-10 10:12:30",false,"---\nname: unity-gameobject\ndescription: \"GameObject creation and manipulation. Use when users want to create, delete, move, rotate, scale, parent, find, or rename GameObjects. Triggers: gameobject, create gameobject, delete gameobject, duplicate, rename, transform, position, rotation, scale, parent, child, hierarchy, layer, tag, active, find, primitive, cube, sphere, instanceId, 游戏对象, 创建游戏对象, 删除游戏对象, 复制, 重命名, 变换, 位置, 旋转, 缩放, 父子, 层级, 查找游戏对象, 标签, 图层, 激活, 立方体, 球体.\"\nplatforms: [unity-editor, claude-code]\ntask-categories: [gameobject, scene, editor-automation]\nuse-when: |-\n  Load when the task requires: GameObject creation and manipulation. Use when users want to create, delete, move, rotate, scale, parent, find, or rename GameObjects. Unity Editor must be running with the unity-skills REST server reachable at http:\u002F\u002Flocalhost:8090.\ndo-not-use-when: |-\n  Do not load when Unity Editor is not running locally. Do not load when unity-skills REST server is unreachable at http:\u002F\u002Flocalhost:8090.\nmetadata:\n  source: https:\u002F\u002Fgithub.com\u002FBesty0728\u002FUnity-Skills\n  version: 1.9.2\n  tier: 2\n\n---\n\n# Unity GameObject Skills\n\n> **BATCH-FIRST**: Use `*_batch` skills when operating on 2+ objects to reduce API calls from N to 1.\n\n## Operating Mode\n\n- **Approval**（默认）：本模块多为 `SkillMode.FullAuto`，调用需用户 grant；grant 后服务端一步执行并返结果。\n- **Auto \u002F Bypass**：直接执行。\n- **含 NeverInSemi 高危 skill**：`gameobject_delete` \u002F `gameobject_delete_batch`（标记 Operation.Delete）。这些在 Approval\u002FAuto 下返 `MODE_FORBIDDEN`，仅 Bypass 或用户 Allowlist 命中可调。\n\n**DO NOT** (common hallucinations):\n- `gameobject_move` \u002F `gameobject_rotate` \u002F `gameobject_set_scale` do not exist → use `gameobject_set_transform` (handles position, rotation, and scale together)\n- `gameobject_set_position` does not exist → use `gameobject_set_transform` with `posX\u002FposY\u002FposZ`\n- `gameobject_add_component` does not exist → use `component_add` (component module)\n- `gameobject_get_transform` does not exist → use `gameobject_get_info` (returns position\u002Frotation\u002Fscale)\n\n**Routing**:\n- To add\u002Fremove components → use `component` module\n- To set material\u002Fcolor → use `material` module\n- To search objects by name\u002Ftag\u002Fcomponent → `gameobject_find` (this module) or `scene_find_objects` (scene module, SkillMode.SemiAuto)\n\n> **Object Targeting**: All single-object skills accept three identifiers: `name` (string), `instanceId` (int, preferred for precision), `path` (string, hierarchy path like \"Parent\u002FChild\"). Provide at least one. When only `name` is shown in a parameter table, `instanceId` and `path` are also accepted.\n\n## Skills Overview\n\n| Single Object | Batch Version | Use Batch When |\n|---------------|---------------|----------------|\n| `gameobject_create` | `gameobject_create_batch` | Creating 2+ objects |\n| `gameobject_delete` | `gameobject_delete_batch` | Deleting 2+ objects |\n| `gameobject_duplicate` | `gameobject_duplicate_batch` | Duplicating 2+ objects |\n| `gameobject_rename` | `gameobject_rename_batch` | Renaming 2+ objects |\n| `gameobject_set_transform` | `gameobject_set_transform_batch` | Moving 2+ objects |\n| `gameobject_set_active` | `gameobject_set_active_batch` | Toggling 2+ objects |\n| `gameobject_set_parent` | `gameobject_set_parent_batch` | Parenting 2+ objects |\n| - | `gameobject_set_layer_batch` | Setting layer on 2+ objects |\n| - | `gameobject_set_tag_batch` | Setting tag on 2+ objects |\n\n**Query Skills** (no batch needed):\n- `gameobject_find` - Find objects by name\u002Ftag\u002Flayer\u002Fcomponent\n- `gameobject_get_info` - Get detailed object information\n\n---\n\n## Single-Object Skills\n\n### gameobject_create\nCreate a new GameObject (primitive or empty).\n\n| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n| `name` | string | Yes | - | Object name |\n| `primitiveType` | string | No | null | Cube\u002FSphere\u002FCapsule\u002FCylinder\u002FPlane\u002FQuad (null=Empty) |\n| `x`, `y`, `z` | float | No | 0 | Local position (relative to parent if set) |\n| `parentName` | string | No | null | Parent object name |\n| `parentInstanceId` | int | No | 0 | Parent instance ID |\n| `parentPath` | string | No | null | Parent hierarchy path |\n\n**Returns**: `{success, name, instanceId, path, parent, position}`\n\n### gameobject_delete\nDelete a GameObject.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `name` | string | No* | Object name |\n| `instanceId` | int | No* | Instance ID (preferred) |\n| `path` | string | No* | Hierarchy path |\n\n*At least one identifier required\n\n### gameobject_duplicate\nDuplicate a GameObject.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `name` | string | No* | Object name |\n| `instanceId` | int | No* | Instance ID |\n| `path` | string | No* | Hierarchy path |\n\n**Returns**: `{originalName, copyName, copyInstanceId, copyPath}`\n\n### gameobject_rename\nRename a GameObject.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `name` | string | No* | Current object name |\n| `instanceId` | int | No* | Instance ID (preferred) |\n| `newName` | string | Yes | New name |\n\n**Returns**: `{success, oldName, newName, instanceId}`\n\n### gameobject_find\nFind GameObjects matching criteria.\n\n| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n| `name` | string | No | null | Name filter |\n| `tag` | string | No | null | Tag filter |\n| `layer` | string | No | null | Layer filter |\n| `component` | string | No | null | Component type filter |\n| `useRegex` | bool | No | false | Use regex for name |\n| `limit` | int | No | 50 | Max results |\n\n**Returns**: `{count, objects: [{name, instanceId, path, tag, layer}]}`\n\n### gameobject_get_info\nGet detailed GameObject information.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `name` | string | No* | Object name |\n| `instanceId` | int | No* | Instance ID |\n| `path` | string | No* | Hierarchy path |\n\n**Returns**: `{name, instanceId, path, tag, layer, active, position, rotation, scale, components, children}`\n\n### gameobject_set_transform\nSet position, rotation, and\u002For scale. Supports world \u002F local \u002F RectTransform spaces.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `name` | string | No* | Object name |\n| `instanceId` | int | No* | Instance ID (preferred) |\n| `path` | string | No* | Hierarchy path |\n| `posX\u002FposY\u002FposZ` | float | No | World position |\n| `rotX\u002FrotY\u002FrotZ` | float | No | World rotation (euler) |\n| `scaleX\u002FscaleY\u002FscaleZ` | float | No | Local scale |\n| `localPosX\u002FlocalPosY\u002FlocalPosZ` | float | No | Local position (relative to parent; works for both 3D and UI) |\n| `anchoredPosX\u002FanchoredPosY` | float | No | RectTransform anchored position (UI only) |\n| `anchorMinX\u002FanchorMinY` | float | No | RectTransform anchor min (0-1, UI only) |\n| `anchorMaxX\u002FanchorMaxY` | float | No | RectTransform anchor max (0-1, UI only) |\n| `pivotX\u002FpivotY` | float | No | RectTransform pivot (0-1, UI only) |\n| `sizeDeltaX\u002FsizeDeltaY` | float | No | RectTransform size delta (UI only) |\n| `width\u002Fheight` | float | No | Convenience aliases for sizeDeltaX\u002FsizeDeltaY (UI only) |\n\n*At least one identifier required. RectTransform \u002F `anchored*` \u002F `anchor*` \u002F `pivot*` \u002F `sizeDelta*` \u002F `width` \u002F `height` only apply to UI elements; ignored on regular Transforms.\n\n### gameobject_set_parent\nSet parent-child relationship.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `childName` | string | No* | Child object name |\n| `childInstanceId` | int | No* | Child Instance ID (preferred) |\n| `childPath` | string | No* | Child hierarchy path |\n| `parentName` | string | No* | Parent object name (empty string = unparent) |\n| `parentInstanceId` | int | No* | Parent Instance ID |\n| `parentPath` | string | No* | Parent hierarchy path |\n\n*At least one child identifier and one parent identifier required\n\n### gameobject_set_active\nEnable or disable a GameObject.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `name` | string | No* | Object name |\n| `instanceId` | int | No* | Instance ID (preferred) |\n| `path` | string | No* | Hierarchy path |\n| `active` | bool | Yes | Enable state |\n\n*At least one identifier required\n\n---\n\n## Batch Skills\n\n### gameobject_create_batch\nCreate multiple GameObjects in one call.\n| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n| `items` | json string | Yes | - | JSON array of per-item objects (see example below) |\n\n\n**Item properties**: `name`, `primitiveType`, `x`, `y`, `z`, `rotX`, `rotY`, `rotZ`, `scaleX`, `scaleY`, `scaleZ`, `parentName`, `parentInstanceId`, `parentPath`\n\n**Returns**: `{success, totalItems, successCount, failCount, results: [{success, name, instanceId, path, position}]}`\n\n```python\nunity_skills.call_skill(\"gameobject_create_batch\", items=[\n    {\"name\": \"Parent\", \"primitiveType\": \"Empty\"},\n    {\"name\": \"Child1\", \"primitiveType\": \"Cube\", \"x\": 0, \"parentName\": \"Parent\"},\n    {\"name\": \"Child2\", \"primitiveType\": \"Sphere\", \"x\": 2, \"parentName\": \"Parent\"}\n])\n```\n\n### gameobject_delete_batch\nDelete multiple GameObjects.\n| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n| `items` | json string | Yes | - | JSON array of per-item objects (see example below) |\n\n\n**Returns**: `{success, totalItems, successCount, failCount, results: [{success, name}]}`\n\n```python\n# By names\nunity_skills.call_skill(\"gameobject_delete_batch\", items=[\"Cube1\", \"Cube2\", \"Cube3\"])\n\n# By instanceId (preferred for precision)\nunity_skills.call_skill(\"gameobject_delete_batch\", items=[\n    {\"instanceId\": 12345},\n    {\"instanceId\": 12346}\n])\n\n# By path\nunity_skills.call_skill(\"gameobject_delete_batch\", items=[\n    {\"path\": \"Environment\u002FCube1\"},\n    {\"path\": \"Environment\u002FCube2\"}\n])\n```\n\n### gameobject_duplicate_batch\nDuplicate multiple GameObjects.\n| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n| `items` | json string | Yes | - | JSON array of per-item objects (see example below) |\n\n\n**Returns**: `{success, totalItems, successCount, failCount, results: [{success, originalName, copyName, copyInstanceId, copyPath}]}`\n\n```python\nunity_skills.call_skill(\"gameobject_duplicate_batch\", items=[\n    {\"instanceId\": 12345},\n    {\"instanceId\": 12346}\n])\n```\n\n### gameobject_rename_batch\nRename multiple GameObjects.\n| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n| `items` | json string | Yes | - | JSON array of per-item objects (see example below) |\n\n\n**Returns**: `{success, totalItems, successCount, failCount, results: [{success, oldName, newName, instanceId}]}`\n\n```python\nunity_skills.call_skill(\"gameobject_rename_batch\", items=[\n    {\"instanceId\": 12345, \"newName\": \"Enemy_01\"},\n    {\"instanceId\": 12346, \"newName\": \"Enemy_02\"}\n])\n```\n\n### gameobject_set_transform_batch\nSet transforms for multiple objects.\n| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n| `items` | json string | Yes | - | JSON array of per-item objects (see example below) |\n\n\n**Item properties** (each item supports identifier + any subset of transform fields):\n- Identifier: `name` \u002F `instanceId` \u002F `path` (at least one required)\n- World: `posX`, `posY`, `posZ`, `rotX`, `rotY`, `rotZ`, `scaleX`, `scaleY`, `scaleZ`\n- Local: `localPosX`, `localPosY`, `localPosZ`\n- RectTransform (UI only): `anchoredPosX`, `anchoredPosY`, `anchorMinX`, `anchorMinY`, `anchorMaxX`, `anchorMaxY`, `pivotX`, `pivotY`, `sizeDeltaX`, `sizeDeltaY`, `width`, `height`\n\n**Returns**: `{success, totalItems, successCount, failCount, results: [{success, name, position, rotation, scale}]}`\n\n```python\nunity_skills.call_skill(\"gameobject_set_transform_batch\", items=[\n    {\"name\": \"Cube1\", \"posX\": 0, \"posY\": 1},\n    {\"instanceId\": 12345, \"posX\": 2, \"posY\": 1},\n    {\"path\": \"Env\u002FCube3\", \"posX\": 4, \"posY\": 1}\n])\n```\n\n### gameobject_set_active_batch\nToggle multiple objects. Each item supports identifier (`name` \u002F `instanceId` \u002F `path`) + `active` (bool).\n| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n| `items` | json string | Yes | - | JSON array of per-item objects (see example below) |\n\n\n**Returns**: `{success, totalItems, successCount, failCount, results: [{success, name, active}]}`\n\n```python\nunity_skills.call_skill(\"gameobject_set_active_batch\", items=[\n    {\"name\": \"Enemy1\", \"active\": False},\n    {\"name\": \"Enemy2\", \"active\": False}\n])\n```\n\n### gameobject_set_parent_batch\nParent multiple objects. Each item supports `childName`\u002F`childInstanceId`\u002F`childPath` and `parentName`\u002F`parentInstanceId`\u002F`parentPath`.\n| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n| `items` | json string | Yes | - | JSON array of per-item objects (see example below) |\n\n\n**Returns**: `{success, totalItems, successCount, failCount, results: [{success, child, parent}]}`\n\n```python\nunity_skills.call_skill(\"gameobject_set_parent_batch\", items=[\n    {\"childName\": \"Wheel1\", \"parentName\": \"Car\"},\n    {\"childInstanceId\": 12345, \"parentName\": \"Car\"},\n    {\"childPath\": \"Wheels\u002FWheel3\", \"parentPath\": \"Vehicles\u002FCar\"}\n])\n```\n\n### gameobject_set_layer_batch\nSet layer for multiple objects. Each item supports identifier (`name` \u002F `instanceId` \u002F `path`) + `layer` (string layer name) + optional `recursive` (bool, default false — propagates layer to children).\n| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n| `items` | json string | Yes | - | JSON array of per-item objects (see example below) |\n\n\n**Returns**: `{success, totalItems, successCount, failCount, results: [{success, name, layer}]}`\n\n```python\nunity_skills.call_skill(\"gameobject_set_layer_batch\", items=[\n    {\"name\": \"Enemy1\", \"layer\": \"Water\"},\n    {\"name\": \"Enemy2\", \"layer\": \"Water\"}\n])\n```\n\n### gameobject_set_tag_batch\nSet tag for multiple objects. Each item supports identifier (`name` \u002F `instanceId` \u002F `path`) + `tag` (string tag name).\n| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n| `items` | json string | Yes | - | JSON array of per-item objects (see example below) |\n\n\n**Returns**: `{success, totalItems, successCount, failCount, results: [{success, name, tag}]}`\n\n```python\nunity_skills.call_skill(\"gameobject_set_tag_batch\", items=[\n    {\"name\": \"Enemy1\", \"tag\": \"Enemy\"},\n    {\"name\": \"Enemy2\", \"tag\": \"Enemy\"}\n])\n```\n\n---\n\n## Minimal Example\n\n```python\nimport unity_skills\n\n# GOOD: 3 API calls instead of 6\nunity_skills.call_skill(\"gameobject_create_batch\", items=[\n    {\"name\": \"Floor\", \"primitiveType\": \"Plane\"},\n    {\"name\": \"Wall1\", \"primitiveType\": \"Cube\"},\n    {\"name\": \"Wall2\", \"primitiveType\": \"Cube\"}\n])\nunity_skills.call_skill(\"gameobject_set_transform_batch\", items=[\n    {\"name\": \"Wall1\", \"posX\": -5, \"scaleY\": 3},\n    {\"name\": \"Wall2\", \"posX\": 5, \"scaleY\": 3}\n])\nunity_skills.call_skill(\"gameobject_set_tag_batch\", items=[\n    {\"name\": \"Wall1\", \"tag\": \"Wall\"},\n    {\"name\": \"Wall2\", \"tag\": \"Wall\"}\n])\n```\n\n---\n## Exact Signatures\n\nExact names, parameters, defaults, and returns are defined by `GET \u002Fskills\u002Fschema` or `unity_skills.get_skill_schema()`, not by this file.","# Unity GameObject Skills\n\n> **BATCH-FIRST**: Use `*_batch` skills when operating on 2+ objects to reduce API calls from N to 1.\n\n## Operating Mode\n\n- **Approval**（默认）：本模块多为 `SkillMode.FullAuto`，调用需用户 grant；grant 后服务端一步执行并返结果。\n- **Auto \u002F Bypass**：直接执行。\n- **含 NeverInSemi 高危 skill**：`gameobject_delete` \u002F `gameobject_delete_batch`（标记 Operation.Delete）。这些在 Approval\u002FAuto 下返 `MODE_FORBIDDEN`，仅 Bypass 或用户 Allowlist 命中可调。\n\n**DO NOT** (common hallucinations):\n- `gameobject_move` \u002F `gameobject_rotate` \u002F `gameobject_set_scale` do not exist → use `gameobject_set_transform` (handles position, rotation, and scale together)\n- `gameobject_set_position` does not exist → use `gameobject_set_transform` with `posX\u002FposY\u002FposZ`\n- `gameobject_add_component` does not exist → use `component_add` (component module)\n- `gameobject_get_transform` does not exist → use `gameobject_get_info` (returns position\u002Frotation\u002Fscale)\n\n**Routing**:\n- To add\u002Fremove components → use `component` module\n- To set material\u002Fcolor → use `material` module\n- To search objects by name\u002Ftag\u002Fcomponent → `gameobject_find` (this module) or `scene_find_objects` (scene module, SkillMode.SemiAuto)\n\n> **Object Targeting**: All single-object skills accept three identifiers: `name` (string), `instanceId` (int, preferred for precision), `path` (string, hierarchy path like \"Parent\u002FChild\"). Provide at least one. When only `name` is shown in a parameter table, `instanceId` and `path` are also accepted.\n\n## Skills Overview\n\n| Single Object | Batch Version | Use Batch When |\n|---------------|---------------|----------------|\n| `gameobject_create` | `gameobject_create_batch` | Creating 2+ objects |\n| `gameobject_delete` | `gameobject_delete_batch` | Deleting 2+ objects |\n| `gameobject_duplicate` | `gameobject_duplicate_batch` | Duplicating 2+ objects |\n| `gameobject_rename` | `gameobject_rename_batch` | Renaming 2+ objects |\n| `gameobject_set_transform` | `gameobject_set_transform_batch` | Moving 2+ objects |\n| `gameobject_set_active` | `gameobject_set_active_batch` | Toggling 2+ objects |\n| `gameobject_set_parent` | `gameobject_set_parent_batch` | Parenting 2+ objects |\n| - | `gameobject_set_layer_batch` | Setting layer on 2+ objects |\n| - | `gameobject_set_tag_batch` | Setting tag on 2+ objects |\n\n**Query Skills** (no batch needed):\n- `gameobject_find` - Find objects by name\u002Ftag\u002Flayer\u002Fcomponent\n- `gameobject_get_info` - Get detailed object information\n\n---\n\n## Single-Object Skills\n\n### gameobject_create\nCreate a new GameObject (primitive or empty).\n\n| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n| `name` | string | Yes | - | Object name |\n| `primitiveType` | string | No | null | Cube\u002FSphere\u002FCapsule\u002FCylinder\u002FPlane\u002FQuad (null=Empty) |\n| `x`, `y`, `z` | float | No | 0 | Local position (relative to parent if set) |\n| `parentName` | string | No | null | Parent object name |\n| `parentInstanceId` | int | No | 0 | Parent instance ID |\n| `parentPath` | string | No | null | Parent hierarchy path |\n\n**Returns**: `{success, name, instanceId, path, parent, position}`\n\n### gameobject_delete\nDelete a GameObject.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `name` | string | No* | Object name |\n| `instanceId` | int | No* | Instance ID (preferred) |\n| `path` | string | No* | Hierarchy path |\n\n*At least one identifier required\n\n### gameobject_duplicate\nDuplicate a GameObject.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `name` | string | No* | Object name |\n| `instanceId` | int | No* | Instance ID |\n| `path` | string | No* | Hierarchy path |\n\n**Returns**: `{originalName, copyName, copyInstanceId, copyPath}`\n\n### gameobject_rename\nRename a GameObject.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `name` | string | No* | Current object name |\n| `instanceId` | int | No* | Instance ID (preferred) |\n| `newName` | string | Yes | New name |\n\n**Returns**: `{success, oldName, newName, instanceId}`\n\n### gameobject_find\nFind GameObjects matching criteria.\n\n| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n| `name` | string | No | null | Name filter |\n| `tag` | string | No | null | Tag filter |\n| `layer` | string | No | null | Layer filter |\n| `component` | string | No | null | Component type filter |\n| `useRegex` | bool | No | false | Use regex for name |\n| `limit` | int | No | 50 | Max results |\n\n**Returns**: `{count, objects: [{name, instanceId, path, tag, layer}]}`\n\n### gameobject_get_info\nGet detailed GameObject information.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `name` | string | No* | Object name |\n| `instanceId` | int | No* | Instance ID |\n| `path` | string | No* | Hierarchy path |\n\n**Returns**: `{name, instanceId, path, tag, layer, active, position, rotation, scale, components, children}`\n\n### gameobject_set_transform\nSet position, rotation, and\u002For scale. Supports world \u002F local \u002F RectTransform spaces.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `name` | string | No* | Object name |\n| `instanceId` | int | No* | Instance ID (preferred) |\n| `path` | string | No* | Hierarchy path |\n| `posX\u002FposY\u002FposZ` | float | No | World position |\n| `rotX\u002FrotY\u002FrotZ` | float | No | World rotation (euler) |\n| `scaleX\u002FscaleY\u002FscaleZ` | float | No | Local scale |\n| `localPosX\u002FlocalPosY\u002FlocalPosZ` | float | No | Local position (relative to parent; works for both 3D and UI) |\n| `anchoredPosX\u002FanchoredPosY` | float | No | RectTransform anchored position (UI only) |\n| `anchorMinX\u002FanchorMinY` | float | No | RectTransform anchor min (0-1, UI only) |\n| `anchorMaxX\u002FanchorMaxY` | float | No | RectTransform anchor max (0-1, UI only) |\n| `pivotX\u002FpivotY` | float | No | RectTransform pivot (0-1, UI only) |\n| `sizeDeltaX\u002FsizeDeltaY` | float | No | RectTransform size delta (UI only) |\n| `width\u002Fheight` | float | No | Convenience aliases for sizeDeltaX\u002FsizeDeltaY (UI only) |\n\n*At least one identifier required. RectTransform \u002F `anchored*` \u002F `anchor*` \u002F `pivot*` \u002F `sizeDelta*` \u002F `width` \u002F `height` only apply to UI elements; ignored on regular Transforms.\n\n### gameobject_set_parent\nSet parent-child relationship.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `childName` | string | No* | Child object name |\n| `childInstanceId` | int | No* | Child Instance ID (preferred) |\n| `childPath` | string | No* | Child hierarchy path |\n| `parentName` | string | No* | Parent object name (empty string = unparent) |\n| `parentInstanceId` | int | No* | Parent Instance ID |\n| `parentPath` | string | No* | Parent hierarchy path |\n\n*At least one child identifier and one parent identifier required\n\n### gameobject_set_active\nEnable or disable a GameObject.\n\n| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n| `name` | string | No* | Object name |\n| `instanceId` | int | No* | Instance ID (preferred) |\n| `path` | string | No* | Hierarchy path |\n| `active` | bool | Yes | Enable state |\n\n*At least one identifier required\n\n---\n\n## Batch Skills\n\n### gameobject_create_batch\nCreate multiple GameObjects in one call.\n| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n| `items` | json string | Yes | - | JSON array of per-item objects (see example below) |\n\n\n**Item properties**: `name`, `primitiveType`, `x`, `y`, `z`, `rotX`, `rotY`, `rotZ`, `scaleX`, `scaleY`, `scaleZ`, `parentName`, `parentInstanceId`, `parentPath`\n\n**Returns**: `{success, totalItems, successCount, failCount, results: [{success, name, instanceId, path, position}]}`\n\n```python\nunity_skills.call_skill(\"gameobject_create_batch\", items=[\n    {\"name\": \"Parent\", \"primitiveType\": \"Empty\"},\n    {\"name\": \"Child1\", \"primitiveType\": \"Cube\", \"x\": 0, \"parentName\": \"Parent\"},\n    {\"name\": \"Child2\", \"primitiveType\": \"Sphere\", \"x\": 2, \"parentName\": \"Parent\"}\n])\n```\n\n### gameobject_delete_batch\nDelete multiple GameObjects.\n| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n| `items` | json string | Yes | - | JSON array of per-item objects (see example below) |\n\n\n**Returns**: `{success, totalItems, successCount, failCount, results: [{success, name}]}`\n\n```python\n# By names\nunity_skills.call_skill(\"gameobject_delete_batch\", items=[\"Cube1\", \"Cube2\", \"Cube3\"])\n\n# By instanceId (preferred for precision)\nunity_skills.call_skill(\"gameobject_delete_batch\", items=[\n    {\"instanceId\": 12345},\n    {\"instanceId\": 12346}\n])\n\n# By path\nunity_skills.call_skill(\"gameobject_delete_batch\", items=[\n    {\"path\": \"Environment\u002FCube1\"},\n    {\"path\": \"Environment\u002FCube2\"}\n])\n```\n\n### gameobject_duplicate_batch\nDuplicate multiple GameObjects.\n| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n| `items` | json string | Yes | - | JSON array of per-item objects (see example below) |\n\n\n**Returns**: `{success, totalItems, successCount, failCount, results: [{success, originalName, copyName, copyInstanceId, copyPath}]}`\n\n```python\nunity_skills.call_skill(\"gameobject_duplicate_batch\", items=[\n    {\"instanceId\": 12345},\n    {\"instanceId\": 12346}\n])\n```\n\n### gameobject_rename_batch\nRename multiple GameObjects.\n| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n| `items` | json string | Yes | - | JSON array of per-item objects (see example below) |\n\n\n**Returns**: `{success, totalItems, successCount, failCount, results: [{success, oldName, newName, instanceId}]}`\n\n```python\nunity_skills.call_skill(\"gameobject_rename_batch\", items=[\n    {\"instanceId\": 12345, \"newName\": \"Enemy_01\"},\n    {\"instanceId\": 12346, \"newName\": \"Enemy_02\"}\n])\n```\n\n### gameobject_set_transform_batch\nSet transforms for multiple objects.\n| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n| `items` | json string | Yes | - | JSON array of per-item objects (see example below) |\n\n\n**Item properties** (each item supports identifier + any subset of transform fields):\n- Identifier: `name` \u002F `instanceId` \u002F `path` (at least one required)\n- World: `posX`, `posY`, `posZ`, `rotX`, `rotY`, `rotZ`, `scaleX`, `scaleY`, `scaleZ`\n- Local: `localPosX`, `localPosY`, `localPosZ`\n- RectTransform (UI only): `anchoredPosX`, `anchoredPosY`, `anchorMinX`, `anchorMinY`, `anchorMaxX`, `anchorMaxY`, `pivotX`, `pivotY`, `sizeDeltaX`, `sizeDeltaY`, `width`, `height`\n\n**Returns**: `{success, totalItems, successCount, failCount, results: [{success, name, position, rotation, scale}]}`\n\n```python\nunity_skills.call_skill(\"gameobject_set_transform_batch\", items=[\n    {\"name\": \"Cube1\", \"posX\": 0, \"posY\": 1},\n    {\"instanceId\": 12345, \"posX\": 2, \"posY\": 1},\n    {\"path\": \"Env\u002FCube3\", \"posX\": 4, \"posY\": 1}\n])\n```\n\n### gameobject_set_active_batch\nToggle multiple objects. Each item supports identifier (`name` \u002F `instanceId` \u002F `path`) + `active` (bool).\n| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n| `items` | json string | Yes | - | JSON array of per-item objects (see example below) |\n\n\n**Returns**: `{success, totalItems, successCount, failCount, results: [{success, name, active}]}`\n\n```python\nunity_skills.call_skill(\"gameobject_set_active_batch\", items=[\n    {\"name\": \"Enemy1\", \"active\": False},\n    {\"name\": \"Enemy2\", \"active\": False}\n])\n```\n\n### gameobject_set_parent_batch\nParent multiple objects. Each item supports `childName`\u002F`childInstanceId`\u002F`childPath` and `parentName`\u002F`parentInstanceId`\u002F`parentPath`.\n| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n| `items` | json string | Yes | - | JSON array of per-item objects (see example below) |\n\n\n**Returns**: `{success, totalItems, successCount, failCount, results: [{success, child, parent}]}`\n\n```python\nunity_skills.call_skill(\"gameobject_set_parent_batch\", items=[\n    {\"childName\": \"Wheel1\", \"parentName\": \"Car\"},\n    {\"childInstanceId\": 12345, \"parentName\": \"Car\"},\n    {\"childPath\": \"Wheels\u002FWheel3\", \"parentPath\": \"Vehicles\u002FCar\"}\n])\n```\n\n### gameobject_set_layer_batch\nSet layer for multiple objects. Each item supports identifier (`name` \u002F `instanceId` \u002F `path`) + `layer` (string layer name) + optional `recursive` (bool, default false — propagates layer to children).\n| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n| `items` | json string | Yes | - | JSON array of per-item objects (see example below) |\n\n\n**Returns**: `{success, totalItems, successCount, failCount, results: [{success, name, layer}]}`\n\n```python\nunity_skills.call_skill(\"gameobject_set_layer_batch\", items=[\n    {\"name\": \"Enemy1\", \"layer\": \"Water\"},\n    {\"name\": \"Enemy2\", \"layer\": \"Water\"}\n])\n```\n\n### gameobject_set_tag_batch\nSet tag for multiple objects. Each item supports identifier (`name` \u002F `instanceId` \u002F `path`) + `tag` (string tag name).\n| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n| `items` | json string | Yes | - | JSON array of per-item objects (see example below) |\n\n\n**Returns**: `{success, totalItems, successCount, failCount, results: [{success, name, tag}]}`\n\n```python\nunity_skills.call_skill(\"gameobject_set_tag_batch\", items=[\n    {\"name\": \"Enemy1\", \"tag\": \"Enemy\"},\n    {\"name\": \"Enemy2\", \"tag\": \"Enemy\"}\n])\n```\n\n---\n\n## Minimal Example\n\n```python\nimport unity_skills\n\n# GOOD: 3 API calls instead of 6\nunity_skills.call_skill(\"gameobject_create_batch\", items=[\n    {\"name\": \"Floor\", \"primitiveType\": \"Plane\"},\n    {\"name\": \"Wall1\", \"primitiveType\": \"Cube\"},\n    {\"name\": \"Wall2\", \"primitiveType\": \"Cube\"}\n])\nunity_skills.call_skill(\"gameobject_set_transform_batch\", items=[\n    {\"name\": \"Wall1\", \"posX\": -5, \"scaleY\": 3},\n    {\"name\": \"Wall2\", \"posX\": 5, \"scaleY\": 3}\n])\nunity_skills.call_skill(\"gameobject_set_tag_batch\", items=[\n    {\"name\": \"Wall1\", \"tag\": \"Wall\"},\n    {\"name\": \"Wall2\", \"tag\": \"Wall\"}\n])\n```\n\n---\n## Exact Signatures\n\nExact names, parameters, defaults, and returns are defined by `GET \u002Fskills\u002Fschema` or `unity_skills.get_skill_schema()`, not by this file.",{"name":5,"metadata":44,"use-when":48,"platforms":49,"description":7,"do-not-use-when":52,"task-categories":53},{"tier":45,"source":46,"version":47},2,"https:\u002F\u002Fgithub.com\u002FBesty0728\u002FUnity-Skills","1.9.2","Load when the task requires: GameObject creation and manipulation. Use when users want to create, delete, move, rotate, scale, parent, find, or rename GameObjects. Unity Editor must be running with the unity-skills REST server reachable at http:\u002F\u002Flocalhost:8090.",[50,51],"unity-editor","claude-code","Do not load when Unity Editor is not running locally. Do not load when unity-skills REST server is unreachable at http:\u002F\u002Flocalhost:8090.",[54,55,56],"gameobject","scene","editor-automation","main","fe4746b9f07e6c7c2b6d3932002183af9b9f6fa2",".claude\u002Fskills\u002Funity-skills\u002Fskills\u002Fgameobject",0,"https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team","https:\u002F\u002Fgithub.com\u002FdyCuong03","Game developer","2026-07-25 22:22:25",{"source":8,"skillName":5,"commands":66,"prompt":76,"zipAvailable":77},[67,70,73],{"tool":68,"command":69},"npx","npx skills add dyCuong03\u002Funity-agent-team --skill unity-gameobject",{"tool":71,"command":72},"bunx","bunx skills add dyCuong03\u002Funity-agent-team --skill unity-gameobject",{"tool":74,"command":75},"pnpm","pnpm dlx skills add dyCuong03\u002Funity-agent-team --skill unity-gameobject","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team\u002Fblob\u002Fmain\u002F.claude\u002Fskills\u002Funity-skills\u002Fskills\u002Fgameobject\u002FSKILL.md",true,[],[80,104,126,151,170,191],{"skillNo":81,"name":82,"nameZh":6,"description":83,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":84,"categories":85,"keywords":86,"publishedAt":39},"01M6KH55FFS00ET877QSMRYGX4","dots-update-groups","How to choose the right ECS system group and ordering so per-frame and per-fixed-step work is deterministic and never races its own readers. Covers InitializationSystemGroup \u002F SimulationSystemGroup \u002F PresentationSystemGroup \u002F FixedStepSimulationSystemGroup \u002F VariableRateSimulationSystemGroup, UpdateBefore \u002F UpdateAfter peer ordering, OrderFirst \u002F OrderLast group-boundary placement, RateManager, and the cross-group ordering trap. Use when adding an ISystem, fixing \"value visible one frame late\" bugs, or coupling simulation to a fixed timestep.","https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team\u002Fblob\u002Fmain\u002Fworkspace\u002Fdots-program\u002Fscratch\u002Fwave-2-orchestrator-drafts\u002Fdots-update-groups\u002FSKILL.md",[],[87,88,89,90,91,92,93,94,33,95,96,97,98,99,100,101,102,103],"update","dots update groups","boundary","simulation","how","system","choose","work","never","peer","deterministic","how to","coupling","ecs","bugs","frame","value",{"skillNo":105,"name":106,"nameZh":6,"description":107,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":108,"categories":109,"keywords":110,"publishedAt":39},"01M6KH50PWYEFQDCGYBZ0326F1","dots-transform-patterns","The Entities 1.x transform model — LocalTransform (writable input) vs LocalToWorld (system-owned matrix), Parent\u002FChild hierarchy, reparenting cost, uniform vs non-uniform scale (PostTransformMatrix), and when to opt out with custom transform systems. Use when designing parent\u002Fchild hierarchies, runtime reparenting (mount\u002Fdismount\u002Fsocket), or choosing transform components at the Baker boundary.","https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team\u002Fblob\u002Fmain\u002Fworkspace\u002Fdots-program\u002Fscratch\u002Fwave-2-orchestrator-drafts\u002Fdots-transform-patterns\u002FSKILL.md",[],[111,112,113,114,89,92,115,116,33,117,118,119,120,26,121,122,123,124,125,22],"patterns","transform","dots transform patterns","components","mount","model","cost","runtime","systems","input","matrix","socket","at","child","custom",{"skillNo":127,"name":128,"nameZh":6,"description":129,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":130,"categories":131,"keywords":137,"publishedAt":39},"01M6KH4VW4MA14DQW4KQYPFT0S","dots-singleton-patterns","Model cross-system shared configuration and game state as a single-entity component with a strict single-writer contract. Covers RequireForUpdate gating, SystemAPI.GetSingleton \u002F GetSingletonRW \u002F HasSingleton \u002F TryGetSingleton, bake-time vs runtime-created vs ECB-system singletons, the \"exactly one entity\" runtime invariant, and the single-writer rule. Use when designing frame-stable global config, shared mutable state, or any component intended to exist on exactly one entity.","https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team\u002Fblob\u002Fmain\u002Fworkspace\u002Fdots-program\u002Fscratch\u002Fwave-2-orchestrator-drafts\u002Fdots-singleton-patterns\u002FSKILL.md",[132],{"categoryNo":133,"categoryName":134,"taxonomyType":135,"taxonomyTypeDesc":136},"01JBSEEDCAT000000000000037","律师与法务","PROFESSION","适用职业",[111,138,139,140,141,142,143,92,116,33,144,145,146,118,147,148,26,102,149,150],"singleton","dots singleton patterns","component","config","state","game","writer","time","shared","contract","as","ecb","gating",{"skillNo":152,"name":153,"nameZh":6,"description":154,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":155,"categories":156,"keywords":157,"publishedAt":39},"01M6KH4PR076AYNDZHD63HHWX6","dots-hybrid-bridge","The one-way bridge between DOTS-owned runtime state and Unity-owned presentation. Covers UnityObjectRef for managed asset refs in components, the DOTS-writes \u002F Unity-reads ownership rule, when to use managed IComponentData vs UnityObjectRef vs CompanionComponent, baker-bridge vs runtime-bridge, and SubScene boundary rules. Use when an entity must reference Unity assets (Mesh, Material, AudioClip, ScriptableObject), a MonoBehaviour view must read entity state, or input\u002FUI must trigger ECS work.","https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team\u002Fblob\u002Fmain\u002Fworkspace\u002Fdots-program\u002Fscratch\u002Fwave-2-orchestrator-drafts\u002Fdots-hybrid-bridge\u002FSKILL.md",[],[158,159,160,161,114,142,89,162,163,94,164,165,33,118,166,20,120,167,168,169],"bridge","hybrid","dots hybrid bridge","mesh","assets","Rules","read","view","trigger","material","for","managed",{"skillNo":171,"name":172,"nameZh":6,"description":173,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":174,"categories":175,"keywords":176,"publishedAt":39},"01M6KH4FGRQ9AP2ND5H5HX4D83","dots-event-driven-ecs","Model one-frame events and external requests in ECS without dual ownership, polling, or persistent state leaks. Covers request-tag pattern with ECB, enableable command components (no structural change), event buffers (IBufferElementData), explicit consumer ownership, one-frame latency rules, and the banned C# event \u002F UnityEvent \u002F static bus anti-patterns. Use when input\u002FUI\u002Fnetwork must trigger ECS work, when a one-frame signal fans out to N consumers (damage, hit, collision), or when state changes must be processed exactly once.","https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team\u002Fblob\u002Fmain\u002Fworkspace\u002Fdots-program\u002Fscratch\u002Fwave-2-orchestrator-drafts\u002Fdots-event-driven-ecs\u002FSKILL.md",[],[177,178,100,179,180,114,181,182,183,116,94,184,185,111,186,187,120,188,189,190],"event driven","driven","event","dots event driven ecs","change","ui","network","command","anti-patterns","pattern","structural","events","static","request",{"skillNo":192,"name":193,"nameZh":6,"description":194,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":195,"categories":196,"keywords":208,"publishedAt":39},"01M6KH4BWRGCEBJ8PKCKCSGT33","valid_skill","A complete, well-formed test fixture skill for SkillHub validation testing. Covers basic task routing and code review for Unity projects.","https:\u002F\u002Fgithub.com\u002FdyCuong03\u002Funity-agent-team\u002Fblob\u002Fmain\u002Ftests\u002Ffixtures\u002Fvalid_skill\u002FSKILL.md",[197,202,205],{"categoryNo":198,"categoryName":199,"taxonomyType":200,"taxonomyTypeDesc":201},"01JBSEEDCAT000000000000007","代码审查","SCENARIO","使用场景",{"categoryNo":203,"categoryName":204,"taxonomyType":200,"taxonomyTypeDesc":201},"01JBSEEDCAT000000000000008","测试与质量",{"categoryNo":206,"categoryName":207,"taxonomyType":200,"taxonomyTypeDesc":201},"01JBSEEDCAT000000000000023","Skill与智能体开发",[209,210,211,212,213,214,215,36,216,217,218,31,219,220,20,221,168],"valid skill","valid","code review","testing","review","test","routing","validation","projects","fixture skill","fixture","basic","complete"]