Thanks for your interest in improving this skill. This is a living document — Web Forms migrations expose patterns in waves, and the best way the skill gets better is by encoding the patterns people actually hit.
In rough order of impact:
- Mappings for third-party controls. If you've migrated a Telerik
RadGrid, a DevExpressASPxGridView, an InfragisticsWebDataGrid, an AjaxControlToolkitTabContainer, etc., a PR that adds a section toreferences/control-mapping.mdwith the behavior translation is gold. Include the relevant attributes/events you saw in the wild — not just the docs version. - Parser improvements in
scripts/analyze_aspx.py. The current parser is a tolerant regex. If you find a.aspxshape it mis-classifies (nested templates, conditional<%# %>, server tags inside attribute values), a fix with a small test case is welcome. - Auth recipes.
references/auth-and-session.mdcovers cookie auth and JWT. If your project used a custom IHttpModule, federated SSO, or something unusual, a section describing the bridge to .NET 8 helps the next person. - Examples.
assets/examples/has one worked migration. More examples (an editable form, a wizard with multiple steps, a master/detail page, a file upload page) make the skill more concrete.
- Database migrations. The skill explicitly avoids changing the data layer — it wraps it. PRs that introduce schema rewrites or ORM swaps belong in a different project.
- Full code-generation pipelines that bypass Claude. The point of the skill is to give Claude better judgment, not to replace it with templating.
- Style preferences for the Angular code that contradict modern Angular idioms (NgModule-based components when standalone works, RxJS-everywhere when signals fit, etc.). The skill targets Angular 17+ idioms intentionally.
If you're changing the scripts:
python3 scripts/inventory.py assets/examples
python3 scripts/analyze_aspx.py assets/examples/before-CustomerList.aspxIf you're changing references, install the skill in a Claude client and run a migration prompt against a sample .aspx. Confirm the relevant reference is being read (Claude should mention reading it) and that the output reflects the new content.
- Markdown: wrap at ~100 chars where it reads naturally, but don't break sentences for the sake of it. Use tables when the content is genuinely tabular.
- Code in references: keep examples small and focused. A 200-line example that demonstrates one principle is worse than a 30-line one.
- Tone: explain why, not just what. The skill is read by Claude, and Claude follows reasoning better than rules. Heavy-handed MUSTs and SHALLs make the skill brittle.
- Imperative voice in instructions ("Open the reference file" rather than "You should open the reference file").
Conventional Commits style, kept short:
feat(controls): add mapping for Telerik RadGrid
fix(parser): handle TemplateField with nested LinkButton
docs(auth): clarify cookie domain setup for strangler-fig deploys
- One topic per PR.
- If you added a reference section, update the table in
SKILL.mdso Claude knows when to read it. - If you added a script feature, update
SKILL.mdand the README if the user-facing usage changed. - If you added an example, link to it from the relevant reference file so it's discoverable.
- Run the scripts against the examples to confirm nothing broke.
- Update
CHANGELOG.mdwith the changes under a new version heading. - Bump the version inside
SKILL.mdfrontmatter (add aversion:field if missing). - Re-package: any skill-aware tool can re-build the
.skillartifact from the source. - Tag the release:
git tag v0.x.0 && git push --tags.
Be kind, be direct, assume good faith. Migrations are frustrating; we're all just trying to delete legacy code.