What problem does it solve? Hand-writing empty-object literals, transport calls, and per-form loading flags in every screen leads to duplicated logic, drift between SQL defaults and client state, and bugs like duplicate record creation when an entity is missing. This Skill defines the shared $root data contract and BaseUI API so every list, picker, and form behaves consistently. ## Core Features & Use Cases - Schema-seeded reactive state: $root is seeded from the TypeBox schema via Value.Create, so every field exists before first render and no empty-object literals are needed. - Unified envelope handling: run, loadInto, and assign unwrap the SQL { ok, data, messages } envelope, drive running/messages state, and skip top-level null so a missing record never wipes the form. - Declarative validation: fieldRules() declares required and conditional checks in the form, with server-side field errors highlighted automatically. - Use Case: Create a bank catalog edit form by extending BaseUI<BankEditRoot>, passing BankEditRootSchema to super(), loading with loadInto("get", { id }), and rendering fields with bindTo and renderNotice — no manual state or bus.request calls. ## Quick Start Ask the AI to create an edit form for a catalog model named bank with fields code and name, extending BaseUI with a schema-seeded $root and a Save button wired to trySave.