What problem does it solve?
The Gum UI framework maintains duplicate runtime classes (SpriteRuntime, TextRuntime, ColoredRectangleRuntime, etc.) across MonoGame, Raylib, Skia, KNI, and FNA backends, causing drift, inconsistent behavior, and triple the maintenance cost. This Skill guides the safe consolidation of those per-platform copies into one canonical source file with conditional compilation.
Core Features & Use Cases
- Divergence Classification: Distinguishes platform-necessary differences (kept under #if) from historical drift (corrected), with a mandatory checklist covering base class, HasEvents defaults, constructor defaults, renderable types, and Clone() overrides.
- Incremental Convergence: Drives two per-platform file copies toward byte-identical content block by block, then links the unified file into each backend's csproj via <Compile Include> entries.
- Pitfall Prevention: Encodes hard-won rules such as never promoting decorative runtimes to InteractiveGue, never redeclaring base-class properties, never widening obsolete APIs, and handling #nullable context and duplicate extension methods in linked files.
- Use Case: When asked to unify ColoredRectangleRuntime across MonoGame and Raylib, the Skill walks through diffing both files, surfacing every disagreement to the user before writing code, then producing the unified file and csproj links.
Quick Start
Unify the SpriteRuntime class across the MonoGame and Raylib backends following the cross-platform unification pattern.