/prefab
Manage Prefabs and variants. 管理 Prefab 与变体。
$ npx -y skills add Besty0728/Unity-Skills --skill prefab --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/prefab
Context preview
The summary Claude sees to decide when to auto-load this skill.
Manage Prefabs and variants. 管理 Prefab 与变体。
SKILL.md
prefab.SKILL.mdname: unity-prefab
description: Manage Prefabs and variants. 管理 Prefab 与变体。
Triggers
- Creating or editing prefabs
- Instantiating or applying prefab changes
- Finding instances in scenes
- Creating prefab variants
- 创建或编辑预制体、实例化或应用预制体改动、在场景中查找实例、创建预制体变体
Unity Prefab Skills
> **BATCH-FIRST**: Use `prefab_instantiate_batch` when spawning 2+ prefab instances.
Operating Mode
Approval 模式下本模块为 Mixed —— 只读 skill `prefab_get_overrides` / `prefab_find_instances`(标 `ReadOnly = true`, `Mode = SkillMode.SemiAuto`)可直接执行;其余 9 个写类 skill (`prefab_create` / `prefab_instantiate` / `prefab_instantiate_batch` / `prefab_apply` / `prefab_unpack` / `prefab_revert_overrides` / `prefab_apply_overrides` / `prefab_create_variant` / `prefab_set_property`) 为 `SkillMode.FullAuto`,需用户 grant 单次执行返结果。Auto / Bypass 直接执行。本模块**不含 NeverInSemi 高危 skill**(无 Delete / PlayMode / Reload)。
**DO NOT** (common hallucinations):
- `prefab_create_from_object` does not exist → use `prefab_create` (takes scene object name/instanceId and savePath)
- `prefab_spawn` does not exist → use `prefab_instantiate`
- `prefab_edit` / `prefab_modify` do not exist → use `prefab_set_property` (edit prefab asset directly) or instantiate, modify, then `prefab_apply`
- `prefab_save` does not exist → use `prefab_apply` (applies instance changes to source prefab)
**Routing**:
- To modify components on a prefab instance in scene → use `component` module skills, then `prefab_apply`
- To set a property directly on the prefab asset → `prefab_set_property` (this module)
- To find all instances of a prefab → `prefab_find_instances` (this module)
Skills Overview
| Single Object | Batch Version | Use Batch When | |---------------|---------------|----------------| | `prefab_instantiate` | `prefab_instantiate_batch` | Spawning 2+ instances |
**No batch needed**:
- `prefab_create` - Create prefab from scene object
- `prefab_apply` - Apply instance changes to prefab
- `prefab_unpack` - Unpack prefab instance
- `prefab_get_overrides` - Get instance overrides
- `prefab_revert_overrides` - Revert to prefab values
- `prefab_apply_overrides` - Apply overrides to prefab
- `prefab_create_variant` - Create a prefab variant
- `prefab_find_instances` - Find all instances of a prefab in scene
- `prefab_set_property` - Set a property on a component inside a Prefab asset (supports basic types, vectors, colors, and asset references)
---
Skills
prefab_create
Create a prefab from a scene GameObject.
| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `name` | string | No* | Source object name | | `instanceId` | int | No* | Instance ID (preferred) | | `path` | string | No* | Object path | | `savePath` | string | Yes | Prefab save path |
*At least one source identifier required.
**Returns**: `{success, prefabPath, name}`
prefab_instantiate
Instantiate a prefab into the scene.
| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `prefabPath` | string | Yes | - | Prefab asset path | | `name` | string | No | prefab name | Instance name | | `x`, `y`, `z` | float | No | 0 | Local position (relative to parent if set) | | `parentEntityId` | string | No | null | Parent entity ID (Unity 6000.4+, preferred) | | `parentName` | string | No | null | Parent object name | | `parentInstanceId` | int | No | 0 | Parent instance ID | | `parentPath` | string | No | null | Parent hierarchy path |
**Returns**: `{success, name, entityId, instanceId, path}`
prefab_instantiate_batch
Instantiate multiple prefabs in one call.
| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `items` | array | Yes | Array of instantiation configs |
**Item properties**: `prefabPath`, `name`, `x`, `y`, `z`, `rotX`, `rotY`, `rotZ`, `scaleX`, `scaleY`, `scaleZ`, `parentEntityId`, `parentName`, `parentInstanceId`, `parentPath`
**Returns**: `{success, totalItems, successCount, failCount, results: [{success, name, entityId, instanceId, position}]}`
unity_skills.call_skill("prefab_instantiate_batch", items=[
{"prefabPath": "Assets/Prefabs/Enemy.prefab", "x": 0, "z": 0, "name": "Enemy_01"},
{"prefabPath": "Assets/Prefabs/Enemy.prefab", "x": 2, "z": 0, "name": "Enemy_02"},
{"prefabPath": "Assets/Prefabs/Enemy.prefab", "x": 4, "z": 0, "name": "Enemy_03"}
])prefab_apply
Apply instance changes back to the prefab asset.
| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `name` | string | No* | Prefab instance name | | `instanceId` | int | No* | Instance ID (preferred) | | `path` | string | No* | Object path |
*At least one identifier required.
**Returns**: `{success, appliedTo}` (`appliedTo` is the prefab asset path)
prefab_unpack
Unpack a prefab instance (break prefab connection).
| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `name` | string | No* | - | Prefab instance name | | `instanceId` | int | No* | - | Instance ID (preferred) | | `path` | string | No* | - | Object path | | `completely` | bool | No | false | Unpack all nested prefabs |
*At least one identifier required.
**Returns**: `{success, unpacked}` (`unpacked` is the instance's GameObject name)
prefab_get_overrides
Get a summary of property overrides on a prefab instance (counts, not the individual override list).
| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `name` | string | No* | Prefab instance name | | `instanceId` | int | No* | Instance ID |
**Returns**: `{success, prefabPath, propertyOverrides, addedComponents, removedComponents, addedGameObjects, hasOverrides}` — `propertyOverrides`/`addedComponents`/`removedComponents`/`addedGameObjects` are **counts** (int), not arrays; `hasOverrides` is `true` when any of those counts is non-zero.
prefab_revert_overrides
Reve
Read more
name: unity-prefab description: Manage Prefabs and variants. 管理 Prefab 与变体。
Triggers
- Creating or editing prefabs
- Instantiating or applying prefab changes
- Finding instances in scenes
- Creating prefab variants
- 创建或编辑预制体、实例化或应用预制体改动、在场景中查找实例、创建预制体变体
Unity Prefab Skills
> **BATCH-FIRST**: Use `prefab_instantiate_batch` when spawning 2+ prefab instances.
Operating Mode
Approval 模式下本模块为 Mixed —— 只读 skill `prefab_get_overrides` / `prefab_find_instances`(标 `ReadOnly = true`, `Mode = SkillMode.SemiAuto`)可直接执行;其余 9 个写类 skill (`prefab_create` / `prefab_instantiate` / `prefab_instantiate_batch` / `prefab_apply` / `prefab_unpack` / `prefab_revert_overrides` / `prefab_apply_overrides` / `prefab_create_variant` / `prefab_set_property`) 为 `SkillMode.FullAuto`,需用户 grant 单次执行返结果。Auto / Bypass 直接执行。本模块**不含 NeverInSemi 高危 skill**(无 Delete / PlayMode / Reload)。
**DO NOT** (common hallucinations):
- `prefab_create_from_object` does not exist → use `prefab_create` (takes scene object name/instanceId and savePath)
- `prefab_spawn` does not exist → use `prefab_instantiate`
- `prefab_edit` / `prefab_modify` do not exist → use `prefab_set_property` (edit prefab asset directly) or instantiate, modify, then `prefab_apply`
- `prefab_save` does not exist → use `prefab_apply` (applies instance changes to source prefab)
**Routing**:
- To modify components on a prefab instance in scene → use `component` module skills, then `prefab_apply`
- To set a property directly on the prefab asset → `prefab_set_property` (this module)
- To find all instances of a prefab → `prefab_find_instances` (this module)
Skills Overview
| Single Object | Batch Version | Use Batch When | |---------------|---------------|----------------| | `prefab_instantiate` | `prefab_instantiate_batch` | Spawning 2+ instances |
**No batch needed**:
- `prefab_create` - Create prefab from scene object
- `prefab_apply` - Apply instance changes to prefab
- `prefab_unpack` - Unpack prefab instance
- `prefab_get_overrides` - Get instance overrides
- `prefab_revert_overrides` - Revert to prefab values
- `prefab_apply_overrides` - Apply overrides to prefab
- `prefab_create_variant` - Create a prefab variant
- `prefab_find_instances` - Find all instances of a prefab in scene
- `prefab_set_property` - Set a property on a component inside a Prefab asset (supports basic types, vectors, colors, and asset references)
---
Skills
prefab_create
Create a prefab from a scene GameObject.
| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `name` | string | No* | Source object name | | `instanceId` | int | No* | Instance ID (preferred) | | `path` | string | No* | Object path | | `savePath` | string | Yes | Prefab save path |
*At least one source identifier required.
**Returns**: `{success, prefabPath, name}`
prefab_instantiate
Instantiate a prefab into the scene.
| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `prefabPath` | string | Yes | - | Prefab asset path | | `name` | string | No | prefab name | Instance name | | `x`, `y`, `z` | float | No | 0 | Local position (relative to parent if set) | | `parentEntityId` | string | No | null | Parent entity ID (Unity 6000.4+, preferred) | | `parentName` | string | No | null | Parent object name | | `parentInstanceId` | int | No | 0 | Parent instance ID | | `parentPath` | string | No | null | Parent hierarchy path |
**Returns**: `{success, name, entityId, instanceId, path}`
prefab_instantiate_batch
Instantiate multiple prefabs in one call.
| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `items` | array | Yes | Array of instantiation configs |
**Item properties**: `prefabPath`, `name`, `x`, `y`, `z`, `rotX`, `rotY`, `rotZ`, `scaleX`, `scaleY`, `scaleZ`, `parentEntityId`, `parentName`, `parentInstanceId`, `parentPath`
**Returns**: `{success, totalItems, successCount, failCount, results: [{success, name, entityId, instanceId, position}]}`
unity_skills.call_skill("prefab_instantiate_batch", items=[
{"prefabPath": "Assets/Prefabs/Enemy.prefab", "x": 0, "z": 0, "name": "Enemy_01"},
{"prefabPath": "Assets/Prefabs/Enemy.prefab", "x": 2, "z": 0, "name": "Enemy_02"},
{"prefabPath": "Assets/Prefabs/Enemy.prefab", "x": 4, "z": 0, "name": "Enemy_03"}
])prefab_apply
Apply instance changes back to the prefab asset.
| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `name` | string | No* | Prefab instance name | | `instanceId` | int | No* | Instance ID (preferred) | | `path` | string | No* | Object path |
*At least one identifier required.
**Returns**: `{success, appliedTo}` (`appliedTo` is the prefab asset path)
prefab_unpack
Unpack a prefab instance (break prefab connection).
| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `name` | string | No* | - | Prefab instance name | | `instanceId` | int | No* | - | Instance ID (preferred) | | `path` | string | No* | - | Object path | | `completely` | bool | No | false | Unpack all nested prefabs |
*At least one identifier required.
**Returns**: `{success, unpacked}` (`unpacked` is the instance's GameObject name)
prefab_get_overrides
Get a summary of property overrides on a prefab instance (counts, not the individual override list).
| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | `name` | string | No* | Prefab instance name | | `instanceId` | int | No* | Instance ID |
**Returns**: `{success, prefabPath, propertyOverrides, addedComponents, removedComponents, addedGameObjects, hasOverrides}` — `propertyOverrides`/`addedComponents`/`removedComponents`/`addedGameObjects` are **counts** (int), not arrays; `hasOverrides` is `true` when any of those counts is non-zero.
prefab_revert_overrides
Reve
REST API-based AI-driven Unity Editor Automation Engine Let AI control Unity scenes directly through Skills 🎉 We are now indexed by DeepWiki! Got questions? Check out the AI-generated docs → The current official maintenance baseline is Unity 2022.3+.
Other skills on unity-skills.
- /addressables-design
Source-anchored design rules for Unity Addressables 1.22.3/2.9.1. 为 Unity Addressables 1.22.3/2.9.1 提供源码锚定的设计规则。
Open skill - /adr
Record Unity architecture decisions (ADR) with rationale. 记录 Unity 架构决策(ADR)与理由。
Open skill - /animator
Edit Unity Animator Controllers and drive runtime parameters. 编辑 Unity Animator Controller 并驱动运行时参数。
Open skill - /architecture
Advise on Unity gameplay and system architecture. 为 Unity 游戏与系统架构提供建议。
Open skill - /asmdef
Advise on Unity assembly definitions (asmdef). 为 Unity 程序集定义(asmdef)提供建议。
Open skill - /asset
Manage Unity AssetDatabase operations. 管理 Unity AssetDatabase 操作。
Open skill

