editable-ui

Writes React-ECS scene UI code that the Decentraland Creator Hub UI Designer can parse and edit.

Updated Sep 11, 2026
One-click install
npx skills add https://github.com/ansonj-dev/neon-reverse --skill editable-ui-ansonj-dev
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: editable-ui
Source: https://github.com/ansonj-dev/neon-reverse/tree/main/agent/skills/editable-ui
Command: npx skills add https://github.com/ansonj-dev/neon-reverse --skill editable-ui-ansonj-dev

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires @dcl/sdk, and includes references (resource) components.

What problem does it solve? Decentraland scene UI written as ordinary React-ECS code often breaks the Creator Hub's 2D UI editor: nodes silently freeze (refusing all edits) or turn opaque (disappearing from the canvas) whenever the parser cannot statically understand the code. This Skill defines the exact code contract — file layout, binding surface, interaction layers, and the driver pattern — that keeps UI fully editable in the editor. ## Core Features & Use Cases - Editable UI generation: Produces one-component-per-file .tsx code under src/ui/ with the recognized State binding surface, useInteraction hover/press/visibility layers, actions, and platform variants. - Coded UI adaptation: Provides step-by-step recipes to eliminate the five blockers (.map(), conditional rendering, computed style values, interpolated text, hand-tracked hover) when porting an existing coded UI into the editor. - Driver pattern for animation: Moves clocks, easings, timers, and formatting into a plain .ts driver outside src/ui/ so animation works at zero editability cost. - Use Case: A developer building a Decentraland game HUD wants designers to restyle panels visually. Use this Skill to write the HUD so every panel, label, and button stays selectable and editable in the Creator Hub UI Designer. ## Quick Start Ask the AI to generate an editable Creator Hub UI for your Decentraland scene, for example a HUD panel with a timer label and a button that the UI Designer can open and edit.

Frequently Asked Questions about editable-ui

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I make Decentraland scene UI editable in the Creator Hub UI Designer?

Write one React-ECS component per file under src/ui/ using only UiEntity, Label, Input, Dropdown, and Button elements. Keep every style value a literal or a bare state/props reference, express visibility through useInteraction active layers, and move all clocks and math into a driver file outside src/ui/.

Why does my UI node freeze or turn grey in the Creator Hub UI editor?

A node freezes when any uiTransform or uiBackground value is computed (arithmetic, calls, ternaries, shared identifiers) instead of a literal or bare reference. It turns opaque when it uses unknown element names, spreads other than a useInteraction constant, conditional rendering, .map(), or JSX comments.

How do I animate UI that must stay editable in the UI Designer?

Use the driver pattern: bind the animated value (width, color alpha, position) to a state variable, then mutate that variable each frame from a system in a .ts file outside src/ui/. The editor only sees the bound key and its rest value, so easing and timers cost no editability.

Does the Creator Hub UI editor work with any Decentraland SDK version?

No. The scene must use @dcl/sdk 7.26.0 or later, which ships ScreenInsetArea, InteractableArea, and per-device default virtual screens. The editor is also opt-in via Settings > Experimental > Enable UI Editor; below that SDK version it shows an upgrade notice instead.

What UI patterns cannot be expressed in editor-editable code?

Data-driven lists built with .map(), shared theme constants, computed style values, conditional element props, local helper components, children/slot composition, and color or texture-set props are not expressible. Substitutes include unrolled sibling elements, inline color literals, driver-maintained state variables, and separate @ui-component files.

Why does my editable UI look correct on Bevy but broken on Unity?

Text intrinsic sizing is engine-dependent: Bevy measures rendered text into layout while Unity gives unset text dimensions roughly zero. Give every Label an explicit uiTransform width and height, and give every container stacking labels an explicit height, so layout matches across both explorers.