TimZander / TimZander/claude

New skill: /migration-review — migration-specific review for Umbraco 13 to 17 feature branches

Open
#92 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
0
Forks
1
Avg merge
1d 3h
Merged PRs (30d)
7

Description

Summary

Feature migration branches (Umbraco 13 Razor/jQuery → Umbraco 17 Bellissima Lit/TypeScript)
have concerns that go beyond standard /deep-review code review. Two migration PRs (4366
Bonus Time Calculator, 4364 Club Points Calculator) demonstrated repeated migration-specific
misses: legacy files not flagged for deletion, behavioral parity not verified, conventions
from prior migration PRs not cross-referenced.

Since the first session, several migration patterns have been codified in CLAUDE.md:

  • Migration completeness (delete legacy files)
  • No [JsonPropertyName] on Management API DTOs
  • Conditional render state enumeration
  • Stale-fetch race on state-returning async functions
  • No inline styles in feature render functions
  • No bare as casts on API responses
  • Resort site configuration completeness

The /migration-review skill orchestrates checks that reference these rules plus
multi-step logic that can't be expressed as static documentation.

Goals

Create a /migration-review skill that wraps /deep-review with migration-specific checks:

  1. Legacy file detection: Automatically locate legacy equivalents by searching for the
    feature name in Controllers/Admin/, Views/Partials/, wwwroot/Scripts/,
    wwwroot/css/. Flag any that exist but are not deleted in the PR diff.

  2. Behavioral parity diff: Read old JS calculation/business logic and new TS
    implementation side by side. Explicitly flag every behavioral change with
    "OLD: ... / NEW: ..." format. Silent changes (e.g., input clearing behavior, validation
    differences, default values) are the highest-risk items in a migration.

  3. Convention compliance: Check the new code against CLAUDE.md Bellissima standards:

    • Render gate enumerates all states (!loading && setupAttempted && !error)
    • No inline styles (CSS classes in gc-dashboard.css)
    • No bare as casts on API responses
    • No [JsonPropertyName] on Management API DTOs
    • Stale-fetch guards on all async handlers
    • errorMessage imported from shared/error-utils.ts, not duplicated
    • Site config files cover all active sites (GC8, GL7, GTL)
  4. Registration verification: Check that the feature is registered in
    umbraco-package.json if it introduces a new dashboard or section. Verify
    activeFeature matching uses startsWith vs === per the query string gotcha.

  5. Bundle cleanup: Verify that Smidge JS/CSS bundles referencing deleted files are also
    removed from Startup.cs. Verify ZAP scan configs are updated if old routes were removed.

Acceptance criteria

  • Identifies legacy MVC controller + Razor view + JS + CSS files that should be deleted
  • Reads old JS business logic and compares against new TS implementation
  • Flags every behavioral change explicitly with OLD/NEW format
  • Checks all Bellissima conventions from CLAUDE.md (not hardcoded — reads CLAUDE.md)
  • Verifies feature registration in umbraco-package.json
  • Checks Smidge bundle cleanup in Startup.cs
  • Checks ZAP scan config cleanup
  • Can be run standalone or as a wrapper around /deep-review
  • Works for any branch targeting feature/UmbracoGCv17

Why a skill, not CLAUDE.md additions?

The CLAUDE.md additions handle the static knowledge gap (what the rules are). This skill
handles the orchestration gap (how to systematically check them across multiple files and
formats). Locating legacy files, reading old JS, diffing logic against new TS, checking
registration files — these require coordinated tool calls that would be fragile as prose
instructions. A skill bundles this into a repeatable, reliable process.

Relationship to other issues

  • Depends on CLAUDE.md Bellissima standards being current (maintained separately)
  • Complements /deep-review (general code review) — this adds migration-specific layer
  • Complements /review-audit (post-hoc comparison) — this is pre-merge prevention

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading CLAUDE.md and the existing /deep-review and /review-audit skills to understand the conventions and integration points. Trace the migration paths named in the issue, including legacy directories, umbraco-package.json, Startup.cs, and ZAP scan configs. Done means a standalone or /deep-review-wrapped skill performs all listed migration checks for feature/UmbracoGCv17 branches.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp, javascript, jquery, typescript
Domain
developer-experience, devtools, tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.