Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Provides a step-by-step workflow for creating Blazor components that emulate ASP.NET Web Forms controls in the BlazorWebFormsComponents library. Covers base class selection (BaseWebFormsComponent, BaseStyledComponent, DataBoundComponent, BaseValidator), Web Forms property and event naming conventions, Playwright integration testing setup, and the complete checklist from component creation through documentation and navigation updates. Use when implementing a new BWFC component, choosing the corre
.claude/skills/fritzandfriends-component-development/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | -17% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -22% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -24% | 0% |
| case-05 | ✗→✓ | ▲ Improved | -36% | 0% |
| case-06 | ✗→✓ | ▲ Improved | -36% | 0% |
This skill covers creating new Blazor components that emulate ASP.NET Web Forms controls.
System.Web.UI.WebControlssrc/BlazorWebFormsComponents/{ComponentName}.razorsrc/BlazorWebFormsComponents/{ComponentName}.razor.csBaseWebFormsComponent - Basic componentsBaseStyledComponent - Components with stylingDataBoundComponent<T> - Data-bound componentssrc/BlazorWebFormsComponents.Test/{ComponentName}/samples/AfterBlazorServerSide/Components/Pages/ControlSamples/{ComponentName}/samples/AfterBlazorServerSide.Tests/docs/{Category}/{ComponentName}.mdsamples/AfterBlazorServerSide/Components/Layout/NavMenu.razor (TreeView)samples/AfterBlazorServerSide/Components/Pages/ComponentList.razor (home page catalog)mkdocs.yml and README.md| Base Class | Use When | |------------|----------| | BaseWebFormsComponent | Simple components without styling (Literal, PlaceHolder) | | BaseStyledComponent | Components with visual styling (Label, Panel, Button) | | ButtonBaseComponent | Button-like components (Button, LinkButton, ImageButton) | | DataBoundComponent<T> | Components binding to collections (Repeater, GridView) | | BaseValidator | Validation controls |
Match Web Forms property names exactly:
Text not Label or ContentCssClass not Class or ClassNameNavigateUrl not Href or UrlImageUrl not Src or SourcePrefix with On:
OnClick for click eventsOnCommand for command eventsOnSelectedIndexChanged for selection changesOnDataBinding for data binding eventsEvery component must have integration tests in samples/AfterBlazorServerSide.Tests/ using Playwright:
ControlSampleTests.cs:[Theory] test (EditorControl, DataControl, etc.)InteractiveComponentTests.cs (for interactive components):Example page load test entry:
csharp[Theory] [InlineData("/ControlSamples/YourComponent")] public async Task EditorControl_Loads_WithoutErrors(string path)
Example interactive test:
csharp[Fact] public async Task YourComponent_Interaction_Works() { var page = await _fixture.NewPageAsync(); try { await page.GotoAsync($"{_fixture.BaseUrl}/ControlSamples/YourComponent"); // Test interactions... // Assert expected behavior... } finally { await page.CloseAsync(); } }
Run integration tests with:
bashdotnet test samples/AfterBlazorServerSide.Tests
Other measured skills in the registry, with their headline benchmark lift.