What problem does it solve? Writing Blazor components correctly requires navigating many subtle rules around parameters, event callbacks, lifecycle methods, async patterns, and disposal. Mistakes like mutating parameters, using Action instead of EventCallback, or calling Task.Run cause runtime failures, deadlocks, and memory leaks that are hard to diagnose. ## Core Features & Use Cases - Component Authoring Rules: Enforces correct patterns for [Parameter], EventCallback<T>, RenderFragment slots, generic components with @typeparam, and CSS isolation. - Async & Disposal Guidance: Provides rules for debouncing, polling, external event handling, CancellationToken cancellation, and IAsyncDisposable cleanup without deadlocking the Blazor sync context. - Component Decomposition: Shows how to break large components into siblings, extract list items with @key, and use CascadingValue to avoid parameter drilling. - Use Case: When asked to build a data grid component with row templates and async data loading, this Skill ensures the implementation uses EditorRequired parameters, EventCallback for row selection, proper @key diffing, and CTS-based cancellation on disposal. ## Quick Start Create a Blazor component named ProductList that accepts a list of products as a parameter, raises an EventCallback when a product is selected, and cancels its data loading when disposed.