Skill / Refined UI registry
Runtime-agnostic UI
Keep core visual surfaces independent from model runners, stores, and transport lifecycles.
Goal
Keep Refined UI core components independent from model runners, message stores, and transport lifecycles.
Registry-first guidance for installable Refined UI components, skins, hooks, and blocks.
Checks
1Core components render from plain props and children without requiring a runtime provider.
2Context is only used for local UI anatomy or behavior, such as role, density, open state, copy value, or submit state.
3Provider-specific code lives in usage examples or host-app mapping functions, not installed core files.
4Blocks compose UI components and callbacks without owning model calls, streaming transport, persistence, branching, or tool execution.
Avoid
1AssistantRuntimeProvider-style APIs that make UI components depend on one runtime shape.
2Importing Mastra, AI SDK, LangChain, or custom runner packages from skins or core components.
3Hiding message/thread/run lifecycle inside visual components.
4Installing runner adapters as the default path for rendering the UI.