About sprite-editor
A skill for Agents working with Unity sprites, using a connected Editor to run C# metadata edits with capability checks intended to prevent data corruption.
Key features
- 01Run C# statement blocks through the Editor
- 02Edit sprite names, rects, borders, and pivots
- 03Add, remove, and slice sprites
- 04Set sprite outlines
- 05Guard operations with capability checks
Use cases
- 01Adjust sprite importer metadata
- 02Set sprite outlines or pivots
- 03Add or slice sprites in Unity
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ unity-technologies/ unity-agent-plugin --skill sprite-editorAfter installing, type/sprite-editorin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
SECURITY.mdreferences/api_reference.mdbackground.mdtemplates.mdscripts/AutomaticSliceTexture.csGenerateNewSpriteRects.csGetTextureSourceImageSize.csGetTextureToSlice.csGridSliceTexture.csIsometricSliceTexture.csREADME.mdSetPivotExample.csSpriteToPng.csDetails
From the project READMESprite 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
script evalin 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
.metafile 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 script eval command. Discover its parameter shape
from unity command --format json rather than assuming one — the inline form is
unity command script eval --caller plugin --skill sprite-editor --code '<snippet>', and some Pipeline versions also register
script eval_file for running a snippet from a file. Check the catalog before reaching for
script 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 script eval
script eval compiles a statement block, not a file. Two consequences, both of which cause a
compile error rather than a warning:
- No
usingdirectives. The compiler readsusing UnityEngine;as a resource-disposal statement and rejects it (CS0210). - Types must be fully qualified. A bare
AssetDatabaseorVolumedoes not resolve (CS0246/CS0103), and a bareObjectis ambiguous withobject(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 script eval.
Workflow
All generated scripts must follow the Safe Core Pattern in 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, orEditPivot
Add/Remove/Slice: Create or filter SpriteRect array (see 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, noMenuItem - Enum assignments: Always use enum values and cast to numeric types. Never use raw numbers.
- ✅ Correct:
(int)SpriteAlignment.Center - ❌ Wrong:
1(magic number)
- ✅ Correct: