К основному содержанию
скилл CX Codex

blazor — скилл для Claude Code: правила разработки на Blazor

Скилл задаёт агенту правила разработки на Blazor: жизненный цикл компонентов, привязка данных, управление состоянием и оптимизация рендеринга.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add Mindrally/skills --skill blazor -a claude-code
Открыть на GitHub

Что делает blazor

Скилл превращает ассистента в знатока Blazor Server и Blazor WebAssembly. Внутри — набор инструкций по архитектуре компонентов: параметры для входа, EventCallback для событий, IDisposable для очистки ресурсов. Агент будет опираться на эти правила, когда вы просите написать или переписать компонент.

Отдельные разделы посвящены жизненному циклу (OnInitializedAsync, OnParametersSet, OnAfterRenderAsync), привязке @bind, оптимизации рендеринга через @key и Virtualize, а также управлению состоянием через каскадные параметры и сервисы. Есть примеры HTTP-запросов через HttpClient, обработка ошибок с ErrorBoundary, тестирование через bUnit и настройка аутентификации с AuthorizeView.

Скилл полезен, если вы пишете на C# и .razor и хотите, чтобы агент не путал Blazor Server с WebAssembly и не советовал лишний JavaScript interop. Установка идёт через npx skills add — нужен Node.js с npx.

Какие задачи решает

  • создать компонент с параметрами и событиями
  • загрузить данные в OnInitializedAsync без блокировки рендеринга
  • настроить двустороннюю привязку через @bind
  • ускорить список через Virtualize и @key
  • покрыть компонент тестами на bUnit

Примеры запросов агенту

  • Напиши компонент Blazor с параметром Id и загрузкой пользователя в OnInitializedAsync
  • Почему мой компонент рендерится дважды? Проверь по правилам скилла
  • Настрой AuthorizeView для страницы и добавь атрибут [Authorize]

Как установить blazor

1Через Skills CLI (Vercel)

npx skills add Mindrally/skills --skill blazor -a claude-code

2Вручную: положить файлы

~/.claude/skills/blazor/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/blazor/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора168

ghost Помогает агенту писать темы для Ghost CMS: Handlebars-шаблоны, partials, интеграция Tailwind CSS и Alpine.js, оптимизация картинок и SEO. CX Codex +1 828установок websocket-development Набор правил для агента, который пишет сервер и клиент на WebSocket: соединения, сообщения, масштабирование, безопасность. CX Codex +1 826установок hono-typescript Задаёт агенту правила разработки API на Hono и TypeScript под Cloudflare Workers, Deno, Bun и Node.js. Пригодится, когда проект уже на Hono или только переезжает на него. CX Codex +1 819установок web-development Скилл с правилами веб-разработки: сетка Bootstrap, вьюхи и модели Django, атрибуты HTMX. Пригодится, когда агент пишет шаблоны и бэкенд в одном проекте. CX Codex +1 815установок ionic Задаёт агенту правила разработки на Ionic: структура проекта, компоненты, стили, ленивая загрузка и работа с Firebase. CX Codex +1 797установок general-best-practices Скилл задаёт агенту свод правил по качеству кода, тестам, безопасности и архитектуре. Пригодится, когда нужно, чтобы ИИ писал код в одном стиле во всём проекте. CX Codex +1 794установок logging-best-practices Скилл задаёт правила логирования: структурный JSON, уровни, общие поля и работа с контекстом запроса. Пригодится, когда логи в проекте пишут кто как хочет. CX Codex +1 791установок python-odoo-cursor-rules Набор правил для разработки на Python и Odoo: ORM, XML-представления, архитектура модулей. Пригодится, когда агент пишет код для ERP. CX Codex +1 790установок

Похожие

use-igniteui-blazor dotnet Скилл помогает подключить и настроить библиотеки Ignite UI for Blazor Lite в проектах на .NET 8.0 и новее. Он проверяет зависимости, стили и интерактивный режим. CX Codex +1 1 500установок playwright-blazor-testing Aaronontheweb Скилл учит агента писать end-to-end тесты для Blazor Server и WebAssembly на Playwright: навигация, формы, авторизация, селекторы. CX Codex +1 537установок fluentui-blazor официальный github Скилл подсказывает, как подключать Microsoft Fluent UI Blazor и собирать интерфейсы из Fluent-компонентов. Нужен при разработке и отладке Blazor-приложений. 9 000установок create-blazor-project dotnet Скилл проводит агента через выбор режима рендеринга Blazor и запускает dotnet new blazor с нужными флагами. CX Codex +1 3 000установок csharp-developer https://github.com/Jeffallan Настраивает правила разработки на .NET 8 и C# 12 для создания API, Blazor-приложений и работы с EF Core. Пригодится при проектировании сервисов с CQRS и Result pattern. CX Codex +1 4 800установок aspnet-core официальный openai Помогает проектировать, писать и обновлять приложения на ASP.NET Core по официальным гайдам Microsoft. Пригодится при работе с Blazor, Minimal API и gRPC. CX Codex +1 3 900установок

Рядом в теме «Фронтенд и UI»

Всё по теме «Фронтенд и UI» →

Вопросы о blazor

Как установить blazor в Claude?

Выполните npx skills add Mindrally/skills --skill blazor -a claude-code. Скилл появится в ~/.claude/skills/blazor/SKILL.md.

Что делает скилл blazor?

Даёт агенту инструкции по разработке на Blazor: архитектура компонентов, жизненный цикл, привязка данных, управление состоянием, оптимизация рендеринга, обработка ошибок, тестирование и аутентификация.

Скилл работает с Blazor Server и WebAssembly?

Да, в нём разобраны оба режима и их различия: где живёт состояние, как работает соединение, что с офлайн-режимом.

Исходный текст

SKILL.md · Apache-2.0
---
name: blazor
description: Guidelines for Blazor development including component lifecycle, state management, and performance optimization
metadata:
  maintainer: Mindrally
  source: https://github.com/Mindrally/skills
---

# Blazor Development Guidelines

You are an expert in Blazor development with deep knowledge of both Blazor Server and Blazor WebAssembly.

## Component Architecture

### Component Design
- Create small, focused components
- Use component parameters for input
- Use EventCallback for output/events
- Implement IDisposable for cleanup
- Use cascading parameters sparingly

### Component Structure
```razor
@page "/users/{Id:int}"
@inject IUserService UserService

<h1>@User?.Name</h1>

@code {
    [Parameter]
    public int Id { get; set; }

    private User? User { get; set; }

    protected override async Task OnInitializedAsync()
    {
        User = await UserService.GetUserAsync(Id);
    }
}
```

## Component Lifecycle

### Lifecycle Methods
- `OnInitialized`/`OnInitializedAsync`: Initial setup
- `OnParametersSet`/`OnParametersSetAsync`: When parameters change
- `OnAfterRender`/`OnAfterRenderAsync`: After DOM updates
- `Dispose`: Cleanup resources

### Best Practices
- Use `OnInitializedAsync` for data loading
- Check `firstRender` in `OnAfterRenderAsync`
- Dispose subscriptions and timers
- Avoid long-running synchronous code

## Data Binding

### One-Way Binding
```razor
<p>@message</p>
<input value="@inputValue" />
```

### Two-Way Binding
```razor
<input @bind="inputValue" />
<input @bind="inputValue" @bind:event="oninput" />
```

### Event Handling
```razor
<button @onclick="HandleClick">Click</button>
<button @onclick="() => HandleClickWithParam(id)">Click</button>
<button @onclick="HandleClickAsync">Async Click</button>
```

## Render Optimization

### Prevent Unnecessary Renders
- Use `@key` for list items
- Implement `ShouldRender()` when appropriate
- Use `StateHasChanged()` judiciously
- Avoid inline handlers in loops

### Virtualization
```razor
<Virtualize Items="@items" Context="item">
    <ItemContent>
        <div>@item.Name</div>
    </ItemContent>
</Virtualize>
```

## State Management

### Component State
- Use private fields for component state
- Call `StateHasChanged()` when state changes externally
- Use `InvokeAsync` for thread-safe updates

### Cascading Parameters
```razor
<CascadingValue Value="@currentTheme">
    <ChildComponent />
</CascadingValue>

<!-- In child component -->
[CascadingParameter]
public Theme CurrentTheme { get; set; }
```

### State Containers
- Create injectable state services
- Use events for state change notifications
- Consider Fluxor for complex state management

## Blazor Server vs WebAssembly

### Blazor Server
- State lives on server
- Real-time connection via SignalR
- Faster initial load
- Requires stable connection
- Better for internal apps

### Blazor WebAssembly
- Runs entirely in browser
- Larger initial download
- Works offline (PWA capable)
- No server resources per user
- Better for public apps

## API Integration

### HTTP Client
```csharp
@inject HttpClient Http

private async Task LoadData()
{
    users = await Http.GetFromJsonAsync<List<User>>("api/users");
}
```

### Error Handling
```csharp
try
{
    users = await Http.GetFromJsonAsync<List<User>>("api/users");
}
catch (HttpRequestException ex)
{
    errorMessage = "Failed to load users";
}
```

## Error Handling

### Error Boundaries
```razor
<ErrorBoundary>
    <ChildContent>
        <RiskyComponent />
    </ChildContent>
    <ErrorContent Context="ex">
        <p>An error occurred: @ex.Message</p>
    </ErrorContent>
</ErrorBoundary>
```

### Global Error Handling
- Implement `IErrorBoundary` for custom handling
- Log errors to server
- Show user-friendly messages

## Testing

### bUnit Testing
```csharp
[Fact]
public void ComponentRendersCorrectly()
{
    using var ctx = new TestContext();
    var cut = ctx.RenderComponent<Counter>();

    cut.Find("p").MarkupMatches("<p>Current count: 0</p>");
    cut.Find("button").Click();
    cut.Find("p").MarkupMatches("<p>Current count: 1</p>");
}
```

## Authentication

### Setup
- Use `AuthenticationStateProvider`
- Use `AuthorizeView` for conditional UI
- Use `[Authorize]` attribute on pages
- Implement custom auth state provider for JWT

### AuthorizeView
```razor
<AuthorizeView>
    <Authorized>
        <p>Welcome, @context.User.Identity?.Name!</p>
    </Authorized>
    <NotAuthorized>
        <p>Please log in.</p>
    </NotAuthorized>
</AuthorizeView>
```

## Performance Tips

- Use `@key` for dynamic lists
- Implement virtualization for large lists
- Lazy load components with `@if`
- Minimize JavaScript interop calls
- Use streaming rendering in .NET 8+

© Mindrally · Apache-2.0 · Mindrally/skills

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой