| name | lit-rendering |
| description | Lit rendering and picker callback-shape guidance for editing and reviewing Lit components. |
Lit Rendering
Use this skill when reviewing or editing Lit rendering logic:
- Preserve runtime behavior and public API shape unless the user asked otherwise.
- Prefer render-local derived values for UI-only structures (
sections, options, grouped labels, display rows).
- Compute derived render data once per render and reuse it across template call sites.
- Do not create render-local booleans, labels, classes, or wrapper variables unless they are reused, clarify a complex branch, or prevent repeated expensive/side-effectful work. For example, avoid
const params = this._params, const data = this._data, or const selected = this._selected when direct this._xyz access is just as clear and typechecks.
- Use
memoizeOne only for pure transforms with explicit, narrow inputs.
- Do not memoize using broad inputs (
this, large mutable objects) when narrower inputs are available.
- Do not widen signatures with pass-through values when class/context access already exists.
- Do not add passthrough fields used only to thread values through helper calls.
- Do not add
@state fields or willUpdate only to cache render-derived picker data.
- Use lifecycle hooks for real update-phase behavior, not as a substitute for render-local composition.
- When replacing a component's built-in header with a custom conditional header, preserve the original header/title behavior on every branch that does not render the custom header.
- Do not add unnecessary comments or abstractions.