Skip to main content

sprite-editor

Edits Unity sprite rectangles, borders, pivots, outlines, and slicing by generating C# scripts. Use when the user works with sprite sheets or sprite slicing.

Source facts

Repository
Unity-Technologies/unity-agent-plugin
Last source activity
September 29, 2026 at 18:32
Detected SKILL.md language
English
Stars
391
Forks
39

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
14 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
sprite-editor
description
Edits Unity sprite rectangles, borders, pivots, outlines, and slicing by generating C# scripts. Use when the user works with sprite sheets or sprite slicing.
modes
["agent","ask"]
# Sprite Editor Sprite metadata (rects, borders, pivots, outlines) lives inside the importer, not in a file you can edit — reaching it means running C# through a live Editor. **The `unity-cli` skill owns getting you there** — installing the CLI, confirming a connected Editor, adding the project's `com.unity.pipeline` package, telling a genuinely absent Editor apart from one stuck in Safe Mode, and discovering the Editor's command catalog. Follow it first; don't re-derive any of it here. Two things it can't know for you: - **You need `eval` in particular**, not just a reachable Editor. Confirm it appears in the catalog — its presence depends on the Pipeline package version, not on the CLI. - **Never hand-edit a `.meta` file to change sprite metadata.** The importer owns that data and the capability checks below exist to prevent corruption, so an unreachable Editor is a stop, not a cue to improvise. Run C# through the connected Editor with the `eval` command. Discover its parameter shape from `unity command --format json` rather than assuming one — the inline form is `unity command eval --caller plugin --skill sprite-editor --code '<snippet>'`, and some Pipeline versions also register `eval_file` for running a snippet from a file. **Check the catalog before reaching for `eval_file`; it is frequently absent.** `unity command` defaults to a 30 second timeout. Generates C# editor scripts to manipulate Unity sprites using ISpriteEditorDataProvider. Works with TextureImporter, PSBImporter, and custom importers. ### Passing C# to `eval` `eval` compiles a **statement block, not a file**. Two consequences, both of which cause a compile error rather than a warning: - **No `using` directives.** The compiler reads `using UnityEngine;` as a resource-disposal statement and rejects it (`CS0210`). - **Types must be fully qualified.** A bare `AssetDatabase` or `Volume` does not resolve (`CS0246` / `CS0103`), and a bare `Object` is ambiguous with `object` (`CS0104`). Where a snippet below is written as a file — with usings, for readability, or because it is meant to be saved into the project — qualify the types before passing it to `eval`. ## Workflow All generated scripts must follow the Safe Core Pattern in [references/templates.md](references/templates.md), which includes MANDATORY capability checks. NEVER attempt operations if capability checks fail - this prevents data corruption. After execution, verify results in Unity console and Project window. ## Common Operations **Modify Name/Rect/Border/Pivot:** Update corresponding `SpriteRect` fields (see scripts/SetPivotExample.cs for pivot examples) - Requires: `EditSpriteName`, `EditSpriteRect`, `EditBorder`, or `EditPivot` **Add/Remove/Slice:** Create or filter `SpriteRect` array (see [references/background.md](references/background.md) for Unity 2021.2+ requirements) - Requires: `CreateAndDeleteSprite` **Set Outlines:** Get `ISpriteOutlineDataProvider` → Call `SetOutlines()` with GUID + Vector2 arrays ## Important Notes - Do NOT use AssetPostprocessor or MenuItem patterns - Generate standalone snippets only — no `AssetPostprocessor`, no `MenuItem` - **Enum assignments:** Always use enum values and cast to numeric types. Never use raw numbers. - ✅ Correct: `(int)SpriteAlignment.Center` - ❌ Wrong: `1` (magic number)
View on GitHub