{"id":20113,"plugin_id":"plugins_6aa1c02597c081918e358d72f65bd772","kind":"skill","collection_source":null,"comparison_source":null,"observed_at":"2026-09-30T23:16:01.308Z","digest":"b6b2e0db77d1fe9dd93cbf5fac594815838ebb12c9c356b11d53f6d26f3f97e8","against":null,"payload":{"description":"Edits Unity sprite properties by generating C# editor scripts using ISpriteEditorDataProvider APIs. Handles sprite rectangles, borders, pivots, outlines, and slicing operations (automatic, grid, isometric). Use when working with sprite assets, sprite sheets, texture atlases, or sprite slicing.","included_files":[{"relative_path":"references/api_reference.md","size_in_bytes":6019},{"relative_path":"references/background.md","size_in_bytes":4146},{"relative_path":"references/templates.md","size_in_bytes":2877},{"relative_path":"scripts/AutomaticSliceTexture.cs","size_in_bytes":2262},{"relative_path":"scripts/GenerateNewSpriteRects.cs","size_in_bytes":8814},{"relative_path":"scripts/GetTextureSourceImageSize.cs","size_in_bytes":1344},{"relative_path":"scripts/GetTextureToSlice.cs","size_in_bytes":2631},{"relative_path":"scripts/GridSliceTexture.cs","size_in_bytes":2485},{"relative_path":"scripts/IsometricSliceTexture.cs","size_in_bytes":6962},{"relative_path":"scripts/README.md","size_in_bytes":4766},{"relative_path":"scripts/SetPivotExample.cs","size_in_bytes":2528},{"relative_path":"scripts/SpriteToPng.cs","size_in_bytes":3025}],"name":"sprite-editor","skill_md_contents":"---\nname: sprite-editor\ndescription: Edits Unity sprite properties by generating C# editor scripts using ISpriteEditorDataProvider APIs. Handles sprite rectangles, borders, pivots, outlines, and slicing operations (automatic, grid, isometric). Use when working with sprite assets, sprite sheets, texture atlases, or sprite slicing.\nmodes: [agent, ask]\n---\n\n# Sprite Editor\n\nSprite metadata (rects, borders, pivots, outlines) lives inside the importer, not in a file\nyou can edit — reaching it means running C# through a live Editor.\n\n**The `unity-cli` skill owns getting you there** — installing the CLI, confirming a connected\nEditor, adding the project's `com.unity.pipeline` package, telling a genuinely absent Editor\napart from one stuck in Safe Mode, and discovering the Editor's command catalog. Follow it\nfirst; don't re-derive any of it here.\n\nTwo things it can't know for you:\n\n- **You need `eval` in particular**, not just a reachable Editor. Confirm it appears in the\n  catalog — its presence depends on the Pipeline package version, not on the CLI.\n- **Never hand-edit a `.meta` file to change sprite metadata.** The importer owns that data\n  and the capability checks below exist to prevent corruption, so an unreachable Editor is a\n  stop, not a cue to improvise.\n\nRun C# through the connected Editor with the `eval` command. Discover its parameter shape\nfrom `unity command --format json` rather than assuming one — the inline form is\n`unity command eval --caller plugin --skill sprite-editor --code '<snippet>'`, and some Pipeline versions also register\n`eval_file` for running a snippet from a file. **Check the catalog before reaching for\n`eval_file`; it is frequently absent.** `unity command` defaults to a 30 second timeout.\n\nGenerates C# editor scripts to manipulate Unity sprites using ISpriteEditorDataProvider. Works with TextureImporter, PSBImporter, and custom importers.\n\n### Passing C# to `eval`\n\n`eval` compiles a **statement block, not a file**. Two consequences, both of which cause a\ncompile error rather than a warning:\n\n- **No `using` directives.** The compiler reads `using UnityEngine;` as a resource-disposal\n  statement and rejects it (`CS0210`).\n- **Types must be fully qualified.** A bare `AssetDatabase` or `Volume` does not resolve\n  (`CS0246` / `CS0103`), and a bare `Object` is ambiguous with `object` (`CS0104`).\n\nWhere a snippet below is written as a file — with usings, for readability, or because it is\nmeant to be saved into the project — qualify the types before passing it to `eval`.\n\n## Workflow\n\nAll 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.\n\n## Common Operations\n\n**Modify Name/Rect/Border/Pivot:** Update corresponding `SpriteRect` fields (see scripts/SetPivotExample.cs for pivot examples)\n- Requires: `EditSpriteName`, `EditSpriteRect`, `EditBorder`, or `EditPivot`\n\n**Add/Remove/Slice:** Create or filter `SpriteRect` array (see [references/background.md](references/background.md) for Unity 2021.2+ requirements)\n- Requires: `CreateAndDeleteSprite`\n\n**Set Outlines:** Get `ISpriteOutlineDataProvider` → Call `SetOutlines()` with GUID + Vector2 arrays\n\n## Important Notes\n\n- Do NOT use AssetPostprocessor or MenuItem patterns\n- Generate standalone snippets only — no `AssetPostprocessor`, no `MenuItem`\n- **Enum assignments:** Always use enum values and cast to numeric types. Never use raw numbers.\n  - ✅ Correct: `(int)SpriteAlignment.Center`\n  - ❌ Wrong: `1` (magic number)\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}