Java migrate
Skill limited-grisaille833/claude-java-plugins/plugins/java-core/skills/java-migrate
Boost Claude Code with Java plugins for Java 8–21 projects, including core, Spring, and quality checks tailored to your target version
npx -y skills add limited-grisaille833/claude-java-plugins --skill java-migrateAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Interactive Java version upgrade guide (8 to 11, 11 to 17, 17 to 21). Use when user asks to "migrate to Java 17", "upgrade to Java 21", "Java migration guide", "move from Java 11 to 17", or "what changed in Java 21".
SKILL.md
3.3 KB, as published. Nobody here has run it
Guide the migration of a Java project to a newer Java version. This is an interactive migration assistant.
Step 1 — Detect current version
Check pom.xml (<java.version>, <maven.compiler.source>, <maven.compiler.target>) or build.gradle (sourceCompatibility, javaVersion). Ask for target version if not specified.
Step 2 — Build the migration checklist
Java 8 → Java 11
Breaking changes to fix:
- Remove
sun.*andcom.sun.*internal API usage → find public alternatives - Remove JavaEE modules now removed from JDK:
javax.xml.bind(JAXB),javax.activation,javax.annotation→ add as Maven dependencies (jakarta.xml.bind-api, etc.) - Fix
ClassLoader.getSystemClassLoader().getResourceAsStream()→ usegetClass().getResourceAsStream() - Flag use of
finalize()→ deprecated, suggestCleaneror try-with-resources
Quick wins to adopt (optional):
varfor local variables (Java 10+) where type is obviousList.of(),Map.of(),Set.of()instead ofCollections.unmodifiableList(Arrays.asList(...))Stringnew methods:isBlank(),strip(),lines(),repeat()Optional.ifPresentOrElse(),Optional.or()
Build changes:
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
Java 11 → Java 17
Breaking changes to fix:
- Strong encapsulation of JDK internals — fix any
--add-opensflags (may need library updates) - Remove deprecated
SecurityManagerusage - Fix
sun.misc.Unsafedirect usage → find library replacements
Quick wins to adopt (optional):
- Records for immutable data classes (Java 16+)
- Sealed classes for fixed hierarchies (Java 17)
- Pattern matching
instanceof(Java 16+) - Text blocks for multi-line strings (Java 15+)
- Switch expressions (Java 14+)
Java 17 → Java 21
Breaking changes to fix:
- None significant — Java 21 is largely additive
Quick wins to adopt (optional):
- Virtual threads for I/O-bound thread pools (Java 21)
- Sequenced collections:
getFirst(),getLast()(Java 21) - Pattern matching switch (standard in Java 21)
- Structured concurrency preview (Java 21)
Step 3 — Generate migration task list
Output a numbered checklist:
Migration: Java [current] → Java [target]
REQUIRED (must fix before compiling):
[ ] 1. [specific change with file/class reference if visible]
[ ] 2. ...
RECOMMENDED (adopt for better code):
[ ] 3. [specific improvement]
[ ] 4. ...
BUILD CHANGES:
[ ] Update pom.xml/build.gradle compiler version
[ ] Update CI/CD Java version
[ ] Update Docker base image (e.g., eclipse-temurin:[target]-jre)
Step 4 — Offer to scan
If the project files are accessible: "Want me to scan your codebase for the required changes above?"
Next Steps
- After migration → run
/java-reviewto catch any remaining issues - After migration → run
/java-refactorto adopt new idioms - Update Spring Boot version if migrating to Java 17+ (Spring Boot 3.x requires Java 17+)