springboot-migration
Migrates Spring Boot applications to Boot 4 with Java 25, including related Spring Modulith 2 and Testcontainers 2 upgrade work. Use when the task is a concrete upgrade, dependency transition, starter rename, test-annotation migration, or phased migration plan. Do not use for greenfield project creation or for isolated repository design questions.
git clone --depth 1 https://github.com/a-pavithraa/springboot-skills-marketplace /tmp/springboot-migration && cp -r /tmp/springboot-migration/plugins/springboot-architecture/skills/springboot-migration ~/.claude/skills/springboot-migrationSKILL.md
# Spring Boot Migration ## Purpose Use this skill for phased upgrade work on existing Spring Boot applications. This skill adds value through the migration scanner, the Boot 4 / Modulith 2 / Testcontainers 2 reference guides, and a strict migration order that avoids mixing too many changes at once. ## Critical rules - Never migrate blindly. Scan the codebase first. - Never apply every migration at once. Follow phased upgrades. - Treat Java 25, Spring Boot 4, Spring Modulith 2, and Testcontainers 2 as the intended target stack for this skill unless the user asks for a narrower target. - Verify after each phase and stop when failures appear. ## Workflow ### Step 1: Scan the project Use the migration scanner before planning or editing: ```bash python3 <SKILL_DIR>/scripts/scan_migration_issues.py /path/to/project ``` Use the scan output to identify: - current Spring Boot version - starter rename work - annotation and import migrations - configuration changes - Spring Modulith compatibility - Testcontainers compatibility ### Step 2: Identify which migrations apply Load only the references that match the codebase: | Migration | Trigger | Read | |-----------|---------|------| | Spring Boot 4.0 | Boot 3.x to 4.x upgrade | `references/spring-boot-4-migration.md` | | Spring Modulith 2.0 | Existing Modulith 1.x usage | `references/spring-modulith-2-migration.md` | | Testcontainers 2.x | Existing Testcontainers 1.x usage | `references/testcontainers-2-migration.md` | | Cross-cutting scenarios and pitfalls | Mixed upgrade planning | `references/migration-overview.md` | ### Step 3: Plan the migration in phases Use the reference guides to plan and execute in this order. #### Phase 1: Dependencies - update `pom.xml` or `build.gradle` - rename starters where required - add or remove dependencies needed by the target stack - align version properties #### Phase 2: Source-code changes - update imports and package names - migrate test annotations - fix Jackson 3 issues - fix Testcontainers API changes where relevant #### Phase 3: Configuration - update `application.properties` or `application.yml` - apply Boot 4 defaults intentionally - update Spring Modulith event-store configuration if relevant #### Phase 4: Verification - run unit tests - run integration tests - run container-based tests where present - check for deprecations and startup failures ### Step 4: Use the right migration order for mixed upgrades When multiple ecosystems are involved, use this order: 1. Spring Boot 4 2. Spring Modulith 2 3. Testcontainers 2 Read `references/migration-overview.md` before deviating from this sequence. ### Step 5: Report progress after each phase After each phase, report: - what changed - what remains - what failed, if anything - whether it is safe to continue ## Reference loading guide - Spring Boot 4 migration details: `references/spring-boot-4-migration.md` - Spring Modulith 2 migration details: `references/spring-modulith-2-migration.md` - Testcontainers 2 migration details: `references/testcontainers-2-migration.md` - Mixed scenarios and common issues: `references/migration-overview.md` ## Available script - `scripts/scan_migration_issues.py` ## Output format When planning or reporting the migration, return: ```markdown ## Migration scope - Current versions: - Target versions: ## Planned phases 1. ... 2. ... 3. ... ## Files expected to change - `path/to/file` ## Verification - Tests or checks to run ``` ## When not to use this skill - Creating a new Spring Boot project from scratch - Broad architecture advice without an actual migration task - JPA-specific implementation work that belongs in `spring-data-jpa`
Reviews Java 25 and Spring Boot 4 codebases, pull requests, files, and modules for migration risks, architecture boundary violations, JSpecify null-safety issues, security flaws, performance regressions, and Spring Data pitfalls. Use when the task is a concrete Java or Spring code review with code context. Do not use for Kotlin-only code, non-Spring frameworks, or generic review advice without files or diffs.
Creates Java 25 and Spring Boot 4 project structures, scaffolds, and implementation starting points for new services, REST APIs, and modular backends. Use when the task is to initialize a Spring Boot project, choose an architecture, select Spring Boot 4 features, or apply the bundled templates and references in this skill. Do not use for migrating existing projects or for isolated JPA/repository work without broader project-creation context.
Designs and implements Spring Data JPA repositories, projections, query patterns, custom repositories, CQRS read models, entity relationships, and persistence performance fixes for Java 25 and Spring Boot 4 projects. Use when the task needs repository-boundary decisions or concrete JPA implementation patterns from this skill. Do not use for generic SQL help or project-wide migration work that belongs in another skill.