CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

bwfc-custom-control-migration

Migrate custom ASP.NET Web Forms server controls (WebControl, CompositeControl) to Blazor using BlazorWebFormsComponents. Covers RenderContents/HtmlTextWriter preservation, TagKey mapping, AddAttributesToRender, CreateChildControls, and the one-line-change migration pattern. WHEN: 'migrate custom control', 'webcontrol to blazor', 'rendercontents migration', 'htmltextwriter blazor', 'custom server control'. FOR SINGLE OPERATIONS: use /bwfc-ascx-migration for .ascx user controls, /bwfc-migration for full page migration.

67

Quality

84%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Quality

Content

71%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A highly actionable, well-structured body with complete code patterns, diff-driven migration steps, and useful gotcha tables ('What Does NOT Work'). The main weaknesses are the absence of any progressive-disclosure split (API reference inlined in SKILL.md, links point outside the bundle) and a bUnit test example that is not executable as written.

Suggestions

Move the HtmlTextWriter API reference table and the inherited-properties table into a references/ file (e.g. references/htmltextwriter-api.md) and link to it from SKILL.md, keeping SKILL.md as a lean overview with the migration patterns and steps.

Replace the bUnit snippet in Step 4 with a real, runnable test (a proper xunit class using bUnit's TestContext / RenderComponent<MyControl>(p => p.Title, "Hello")) so the verification step is copy-paste executable.

Add a short feedback loop to Step 4: what to check when rendered HTML differs from Web Forms output (attribute order, self-closing tags, ViewState leftovers) and how to iterate before sign-off.

DimensionReasoningScore

Conciseness

The body is dense and non-obvious throughout — BWFC-specific behavior, the shim's render pipeline, member-removal tables — with no padding about concepts Claude already knows. Minor over-explanation exists (the 'How It Works' internals and the full inherited-properties table could be trimmed), keeping it at level 4 rather than the lean level-5 anchor.

4 / 5

Actionability

Four complete, copy-paste-ready C# patterns plus diff-based migration steps, a member-to-action table, and a CLI automation list make the guidance mostly executable. It falls short of level 5 because the bUnit verification snippet mixes Razor template syntax with xunit facts ('Render(@<MyControl Title="Hello" />)') and is not actually runnable as written.

4 / 5

Workflow Clarity

The four Migration Steps are clearly sequenced with a verification step (Step 4: bUnit test) and a per-control checklist, matching level 4's 'clear sequence with most checkpoints'. Not level 5: there is no error-recovery/feedback loop (what to do when rendered HTML differs or the test fails), so checkpoints don't fully close.

4 / 5

Progressive Disclosure

Headers and sectioning are good, but this is a ~265-line monolith with no bundle files: the full HtmlTextWriter API reference table and inherited-properties table are inlined where a references/ file would be the appropriate split, and the 'Reference' section points to repo paths (../../docs/, ../../src/) rather than skill-bundle files. That fits level 3 ('content that should be separate is inline') better than level 4.

3 / 5

Total

15

/

20

Passed

Description

92%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A strong description: concrete capabilities, explicit WHEN triggers in third-person voice, and explicit de-confliction against sibling migration skills. The only gap is trigger-term breadth — a few natural synonyms and file extensions would round it out.

DimensionReasoningScore

Specificity

The description enumerates multiple concrete capabilities — 'Migrate custom ASP.NET Web Forms server controls (WebControl, CompositeControl) to Blazor using BlazorWebFormsComponents' plus 'RenderContents/HtmlTextWriter preservation, TagKey mapping, AddAttributesToRender, CreateChildControls, and the one-line-change migration pattern' — comprehensive coverage with no vague filler.

5 / 5

Completeness

It explicitly answers 'what' (migrate custom server controls with RenderContents/TagKey/AddAttributesToRender handling) and 'when' with an explicit WHEN clause listing concrete trigger phrases, matching the level-5 anchor. It also adds routing guidance ('FOR SINGLE OPERATIONS: use /bwfc-ascx-migration...') which further disambiguates when to invoke it.

5 / 5

Trigger Term Quality

Trigger phrases are natural and well chosen ('migrate custom control', 'webcontrol to blazor', 'rendercontents migration', 'custom server control'), but coverage stops short of comprehensive — no file extensions or common synonyms like 'custom control to blazor' or '.cs server control'. Not the level-5 anchor ('comprehensive coverage of natural terms including synonyms and file extensions'), but clearly above level 3 (relevant keywords missing common variations).

4 / 5

Distinctiveness Conflict Risk

The niche is narrow (custom WebControl/CompositeControl server controls) and it explicitly distinguishes sibling skills ('use /bwfc-ascx-migration for .ascx user controls, /bwfc-migration for full page migration'), giving it minimal conflict risk. It clearly fits the level-5 'clear niche with distinct triggers' anchor.

5 / 5

Total

19

/

20

Passed

Validation

93%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

relative_links

Relative link issues: 5 suspicious

Warning

Total

15

/

16

Passed

Repository

FritzAndFriends/BlazorWebFormsComponents

Path

migration-toolkit/skills/bwfc-custom-control-migration/SKILL.md

Reviewed

Table of Contents

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.