Source profileQuality 93/100

Postpartum-genushyacinthus29/dotnet-skills/skills/dotnet-blazor/SKILL.md

dotnet-blazor

Build and review Blazor applications across server, WebAssembly, web app, and hybrid scenarios with correct component design, state flow, rendering, and hosting choices.

Source repository stars
9
Declared platforms
0
Static risk flags
0
Last source update
2026-08-23
Source checked
2026-08-25

Decision brief

What it does: where it fits

Build and review Blazor applications across server, WebAssembly, web app, and hybrid scenarios with correct component design, state flow, rendering, and hosting choices.

Best for

    Not for

    • Tasks that require unconfirmed production actions or broad system permissions.
    • Environments where the pinned source and install steps cannot be inspected.

    Compatibility matrix

    Platform support, with evidence labels

    PlatformStatusEvidenceWhat to check
    CodexNot declaredNo explicit evidencePortability before use
    Claude CodeNot declaredNo explicit evidencePortability before use
    CursorNot declaredNo explicit evidencePortability before use
    Gemini CLINot declaredNo explicit evidencePortability before use
    Open the compatibility checker

    Installation

    Inspect first. Install second.

    The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

    Source-detected install commandSource
    npx skills add https://github.com/Postpartum-genushyacinthus29/dotnet-skills --skill "skills/dotnet-blazor"
    Safe inspection promptEditorial

    Inspect the Agent Skill "dotnet-blazor" from https://github.com/Postpartum-genushyacinthus29/dotnet-skills/blob/f9c1a213bc25d95641adc3a59f8048cb5656741c/skills/dotnet-blazor/SKILL.md at commit f9c1a213bc25d95641adc3a59f8048cb5656741c. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

    Workflow

    What the source asks the agent to do

    1. 01

      Workflow

      1. Choose render mode based on requirements: - Need SEO? Start with Static or prerendering - Need real-time? Use InteractiveServer - Need offline? Use InteractiveWebAssembly - Want both? Use InteractiveAuto

      Choose render mode based on requirements:Need SEO? Start with Static or prerenderingNeed real-time? Use InteractiveServer
    2. 02

      Trigger On

      building interactive web UIs with C instead of JavaScript

      building interactive web UIs with C instead of JavaScriptchoosing between Server, WebAssembly, or Auto render modesdesigning component hierarchies and state management
    3. 03

      Documentation

      Blazor Overview

      Blazor OverviewRender ModesPerformance Best Practices
    4. 04

      Render Modes (.NET 8+)

      Review the “Render Modes (.NET 8+)” section in the pinned source before continuing.

      Review and apply the “Render Modes (.NET 8+)” source section.
    5. 05

      Applying Render Modes

      Review the “Applying Render Modes” section in the pinned source before continuing.

      Review and apply the “Applying Render Modes” source section.

    Permission review

    Static risk signals and limitations

    No configured static risk pattern was detected

    This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.

    Evidence record

    Why each signal appears

    EvidenceSourceComputedTestedEditorial
    SignalValueEvidence typeMeaning
    Quality score93/100ComputedDocumentation, specificity, maintenance, and trust rules
    Repository stars9SourceRepository attention, not individual Skill quality
    Compatibility0 platformsSourceDeclared in the catalog source record
    Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

    Pinned source

    Provenance and original SKILL.md

    Repository
    Postpartum-genushyacinthus29/dotnet-skills
    Skill path
    skills/dotnet-blazor/SKILL.md
    Commit
    f9c1a213bc25d95641adc3a59f8048cb5656741c
    License
    MIT
    Collected
    2026-08-25
    Default branch
    main
    View the original SKILL.md

    Blazor

    Trigger On

    • building interactive web UIs with C# instead of JavaScript
    • choosing between Server, WebAssembly, or Auto render modes
    • designing component hierarchies and state management
    • handling prerendering and hydration
    • integrating with JavaScript when necessary

    Documentation

    References

    • patterns.md - Detailed component patterns, state management strategies, and JS interop techniques
    • anti-patterns.md - Common Blazor mistakes and how to avoid them

    Render Modes (.NET 8+)

    ModeWhere It RunsBest For
    StaticServer (no interactivity)SEO pages, marketing content
    InteractiveServerServer via SignalRReal-time apps, thin clients
    InteractiveWebAssemblyBrowser via WASMOffline-capable, client-heavy
    InteractiveAutoServer first, then WASMBest of both worlds

    Applying Render Modes

    @* Per-component *@
    @rendermode InteractiveServer
    
    @* Or in App.razor for global *@
    <Routes @rendermode="InteractiveAuto" />
    

    InteractiveAuto Architecture

    First Request:
      Browser → Server (Interactive Server) → Fast response
    
    Subsequent Requests:
      Browser → WASM (downloaded in background) → No server needed
    

    Workflow

    1. Choose render mode based on requirements:

      • Need SEO? Start with Static or prerendering
      • Need real-time? Use InteractiveServer
      • Need offline? Use InteractiveWebAssembly
      • Want both? Use InteractiveAuto
    2. Design components for reusability:

      • Small, focused components
      • Parameters for customization
      • Events for communication
    3. Handle state correctly:

      • Component state lives in component
      • Shared state via services (DI)
      • Persist state across prerender with [PersistentState]
    4. Validate in both environments (for Auto mode)

    Component Patterns

    Basic Component

    @* Counter.razor *@
    <button @onclick="IncrementCount">
        Clicked @count times
    </button>
    
    @code {
        private int count = 0;
    
        [Parameter]
        public int InitialCount { get; set; } = 0;
    
        protected override void OnInitialized()
        {
            count = InitialCount;
        }
    
        private void IncrementCount() => count++;
    }
    

    Parameter and Event Callbacks

    @* Parent.razor *@
    <ChildComponent Value="@value" ValueChanged="@OnValueChanged" />
    
    @* ChildComponent.razor *@
    @code {
        [Parameter] public string Value { get; set; } = "";
        [Parameter] public EventCallback<string> ValueChanged { get; set; }
    
        private async Task UpdateValue(string newValue)
        {
            await ValueChanged.InvokeAsync(newValue);
        }
    }
    

    State Persistence (.NET 8+)

    @* Prevents double-fetch during prerender + hydration *@
    @code {
        [PersistentState]
        public List<Product> Products { get; set; } = [];
    
        protected override async Task OnInitializedAsync()
        {
            // Only fetches once, persisted across prerender
            Products ??= await Http.GetFromJsonAsync<List<Product>>("api/products");
        }
    }
    

    Data Access Pattern for Auto Mode

    // Shared interface
    public interface IProductService
    {
        Task<List<Product>> GetProductsAsync();
    }
    
    // Server implementation (direct DB access)
    public class ServerProductService : IProductService
    {
        private readonly AppDbContext _db;
        public async Task<List<Product>> GetProductsAsync()
            => await _db.Products.ToListAsync();
    }
    
    // Client implementation (HTTP call)
    public class ClientProductService : IProductService
    {
        private readonly HttpClient _http;
        public async Task<List<Product>> GetProductsAsync()
            => await _http.GetFromJsonAsync<List<Product>>("api/products");
    }
    
    // Registration
    // Server: builder.Services.AddScoped<IProductService, ServerProductService>();
    // Client: builder.Services.AddScoped<IProductService, ClientProductService>();
    

    Anti-Patterns to Avoid

    Anti-PatternWhy It's BadBetter Approach
    Large componentsHard to maintain, slow rendersSplit into smaller components
    Direct DB access in WASMNo DB in browserUse HTTP API
    Ignoring ShouldRenderUnnecessary re-rendersOverride when needed
    Sync JS interop in ServerBlocks SignalR circuitUse IJSRuntime async
    No error boundariesOne error crashes appUse <ErrorBoundary>
    Forgetting prerender stateDouble API callsUse [PersistentState]

    Performance Best Practices

    1. Virtualize large lists:

      <Virtualize Items="@products" Context="product">
          <ProductCard Product="@product" />
      </Virtualize>
      
    2. Use @key for list diffing:

      @foreach (var item in items)
      {
          <ItemComponent @key="item.Id" Item="@item" />
      }
      
    3. Debounce rapid events:

      private Timer? _debounceTimer;
      
      private void OnInput(ChangeEventArgs e)
      {
          _debounceTimer?.Dispose();
          _debounceTimer = new Timer(_ => InvokeAsync(DoSearch), null, 300, Timeout.Infinite);
      }
      
    4. Lazy load assemblies (WASM):

      var assemblies = await LazyAssemblyLoader
          .LoadAssembliesAsync(["MyHeavyFeature.wasm"]);
      

    JS Interop

    Calling JavaScript from C#

    @inject IJSRuntime JS
    
    await JS.InvokeVoidAsync("alert", "Hello from Blazor!");
    var result = await JS.InvokeAsync<string>("prompt", "Enter name:");
    

    Calling C# from JavaScript

    [JSInvokable]
    public static string GetMessage() => "Hello from C#!";
    
    DotNet.invokeMethodAsync('MyAssembly', 'GetMessage')
        .then(result => console.log(result));
    

    Deliver

    • interactive Blazor components with appropriate render mode
    • efficient state management and data flow
    • proper handling of prerendering scenarios
    • performant list rendering with virtualization

    Validate

    • components render correctly in chosen mode
    • state persists correctly across prerender/hydration
    • no unnecessary re-renders (check with browser tools)
    • JS interop works in both Server and WASM
    • error boundaries catch component failures
    • Auto mode works in both environments

    Frequently asked questions

    What to verify before installation and use

    What does the dotnet-blazor source document cover?

    Build and review Blazor applications across server, WebAssembly, web app, and hybrid scenarios with correct component design, state flow, rendering, and hosting choices.

    How do I install dotnet-blazor?

    The source record exposes this install command: npx skills add https://github.com/Postpartum-genushyacinthus29/dotnet-skills --skill "skills/dotnet-blazor". Inspect the command and pinned source before running it.

    Alternatives

    Compare before choosing

    Computed 9610,956

    huggingface/skills

    huggingface-lora-space-builder

    Build and publish a Gradio demo on Hugging Face Spaces for a user-provided LoRA. Use when someone asks to create, generate, ship, or publish a Space, demo, Gradio app, or playground for a LoRA — including LoRAs for Qwen-Image, Qwen-Image-Edit, LTX-Video, Wan, FLUX, SDXL, or other diffusion base models. Also triggers when someone describes a LoRA they trained or hosts on the Hub and wants to share it. Covers picking the right base pipeline and `diffusers` inference recipe, designing a UI tailored

    Computed 96156

    open-edge-platform/edge-ai-libraries

    chatqna-helm-deploy

    Deploy Chat Question-and-Answer Core to Kubernetes using Helm (OpenVINO CPU, OpenVINO GPU, or Ollama), including values.yaml configuration, helm install/upgrade, deployment verification, uninstall, and translation from Docker Compose setup_env.sh variables into Helm override values. Use this skill when the user says "deploy chatqna core to kubernetes", "helm install chatqna-core", "configure values.yaml", "convert compose config to helm", or "translate setup_env.sh to chart values".

    Computed 9439,098

    wshobson/agents

    brand-landingpage

    Brand-first landing page designer — runs a brand-identity interview (colors, typography, shape language), then generates and iterates on a polished landing page via Stitch with deployment-ready HTML. Use when the user asks to create, design, or build a landing page, homepage, or marketing page and has no established visual direction. Skip when they have a design mockup, need a dashboard or app UI, are working at component level, building a multi-page app, or restyling with known design tokens —

    Computed 943,337

    synthetic-sciences/openscience

    latchbio-integration

    Latch platform for bioinformatics workflows. Build pipelines with Latch SDK, @workflow/@task decorators, deploy serverless workflows, LatchFile/LatchDir, Nextflow/Snakemake integration.