addressables-design
Source-anchored design rules for Unity Addressables 1.22.3/2.9.1
Manage Unity scenes
Claude Code
$ npx -y skills add Besty0728/Unity-Skills --skill scene --agent claude-code
Codex
$ npx skills add Besty0728/Unity-Skills --skill scene -a codex -y
Cursor
$ npx skills add Besty0728/Unity-Skills --skill scene -a cursor -y
Gemini CLI
$ npx skills add Besty0728/Unity-Skills --skill scene -a gemini-cli -y
GitHub Copilot
$ npx skills add Besty0728/Unity-Skills --skill scene -a github-copilot -y
OpenCode
$ npx skills add Besty0728/Unity-Skills --skill scene -a opencode -y
Windsurf
$ npx skills add Besty0728/Unity-Skills --skill scene -a windsurf -y
name: unity-scene description: Manage Unity scenes
Control Unity scenes, the containers that hold the GameObjects. Parameters come from the schema (`GET /skills/schema?names=<skill>&wire=v2`); execution and dryRun rules: root [SKILL.md](../../SKILL.md).
Create a new empty scene.
| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | scenePath | string | Yes | Path of the new scene, e.g. "Assets/Scenes/MyScene.unity" |
Load a scene.
| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | scenePath | string | Yes | - | Scene asset path | | additive | bool | No | false | `true` keeps the loaded scenes open (`OpenSceneMode.Additive`); `false` closes them first (`Single`) |
Save the active scene.
| Parameter | Type | Required | Description | |-----------|------|----------|-------------| | scenePath | string | No | Omit to overwrite the active scene's own file. A different path re-associates the scene with that file (Save As). Needed for an untitled scene. |
Get information about the active scene.
**Parameters**: none.
**Returns**: `{sceneName, scenePath, isDirty, rootObjectCount, rootObjects: [{name, entityId, instanceId, childCount}]}`. `childCount` lets you decide which roots are worth descending into before a hierarchy call.
Get the active scene's hierarchy tree, depth-limited.
| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | maxDepth | int | No | 3 | Maximum depth to expand |
**Returns**: `{sceneName, hierarchy: [node, ...]}`. Each node is `{name, scene, entityId, instanceId, components: [type, ...], childCount, children}`. `scene` is the owning scene's name.
In Play Mode, roots of the `DontDestroyOnLoad` pseudo-scene follow the active-scene nodes, marked `scene: "DontDestroyOnLoad"`.
`childCount` is always the real number of children, whatever `maxDepth` is. `children` is `null` once the depth limit is reached:
| `childCount` | `children` | Meaning | |---|---|---| | `0` | `null` | Genuine leaf | | `> 0` | `null` | Clipped by `maxDepth`; children exist but were not returned | | `> 0` | array | Expanded at this level |
Never read `children: null` as "empty". To see what is below a clipped node, call again with a larger `maxDepth` (the default is 3), or query that subtree with `gameobject_find`.
Capture the Game View: the final composited frame of all cameras and UI.
| Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | filename | string | No | "screenshot.png" | Bare filename, no path separators; saved under `Assets/Screenshots/` | | width | int | No | 1920 | Image width | | height | int | No | 1080 | Image height | | returnImage | bool | No | false | Also return a PNG as base64 in `imageBase64`, for clients without filesystem access | | maxDimension | int | No | 1280 | Used only with `returnImage=true`. Downscales the returned image (not the saved file) so its longer edge is at most this value. Clamped to 256-4096. |
**Returns**: `{success, path, width, height, isPlaying, note, imageBase64, imageWidth, imageHeight, imageBytes}`. `isPlaying` tells a live Play Mode frame from a static Edit-mode frame. The four `image*` fields appear only with `returnImage=true`. A base64 payload over 8 MB returns an error asking for a smaller `maxDimension`; the file at `path` is still saved.
The PNG is written about one frame later. If reading `path` at once fails, wait about 200 ms and retry. `returnImage` does not read that file. It makes a separate synchronous capture of the current Game View backbuffer, so the returned image can be a moment older than the file.
A local agent that can read files should omit `returnImage` and read the PNG at `path`, which costs fewer tokens.
List all loaded scenes.
**Parameters**: none.
**Returns**: `{success, count, scenes: [{name, path, isLoaded, isDirty, isActive, rootCount, isPseudoScene}]}`. In Play Mode the `DontDestroyOnLoad` pseudo-scene (`isPseudoScene: true`, empty `path
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+.
Source-anchored design rules for Unity Addressables 1.22.3/2.9.1
Manage Addressables groups, entries, profiles and content builds (com.unity.addressables, reflection-based)
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.