I built a Claude Code skill that scores your legacy Java code 1–100 and modernizes it to Java 21 A two-skill Claude Code plugin designed to analyze and modernize legacy Java 8 codebases to Java 21. The first skill, `/java-modernization-review`, analyzes a Java file and generates a scored report (1–100) across nine dimensions like NPE prevention and thread safety, while the second skill, `/java-modernization-implement`, applies the recommended changes without overwriting the original file. The tool is specifically aimed at developers working on legacy systems or preparing for banking roles, using financial domain examples such as trade processors and FX arithmetic. If you're working on a Java 8 codebase — or trying to break into banking and legacy system roles — this article is for you. Every Java 8 codebase has the same problems. You know they exist, but finding and fixing them across 50,000 lines is slow: double for monetary values → silent FX precision loss in productionorder.getCounterparty .getAccount .getBalance → NPE in settlementsynchronized HashMap → race conditions under concurrent trade loadExecutors.newFixedThreadPool 200 → bottleneck at peak volumeA two-skill Claude Code plugin that acts as a Senior Java Architect: Skill 1 — /java-modernization-review Analyzes your Java file, saves a full report to analysis.md , and stops. You review it before any code is touched. Skill 2 — /java-modernization-implement Reads analysis.md , applies every change, writes Modern.java alongside the original. Never overwrites your file. Every review produces a Before/After score across 9 dimensions 100 points total : Scoring breakdown 100 points total 🔴 NPE prevention — 15 pts 🔴 Monetary precision BigDecimal — 15 pts 🔴 Thread safety — 15 pts 🟡 Streams & collections — 10 pts 🟡 Exception handling — 10 pts 🟡 Modern data carriers Records — 10 pts 🟡 Concurrency model virtual threads — 10 pts 🟡 Modern Java features — 10 pts 🟢 Financial domain rules — 5 pts Legacy code the skill flagged as critical: // C1 — NPE: any of these can be null return order.getCounterparty .getAccount .getB alance ; // C2 — Precision loss on every FX trade double total = 0.0; total += t.getAmount t.getFxRate ; // C2 — Precision loss on every FX trade double total = 0.0; total += t.getAmount t.getFxRate ; // C3 — Race condition on position updates private HashMap