Java 25 and Spring Boot 4 Reviewer
Purpose
Use this skill to run a structured review of Java 25 and Spring Boot 4 code. Keep findings grounded in the actual codebase and use the reference files only for the focus areas that apply.
Critical rules
- Never review without code context. Ask for files, diffs, or the relevant module if none is provided.
- Always cite file paths and line numbers for findings.
- Treat Java 25 and Spring Boot 4 as the target baseline unless the build files show otherwise.
- Analyze workload before recommending virtual threads, reactive rewrites, or architecture changes.
- Use JSpecify as the preferred null-safety baseline for new Boot 4 code, but confirm whether the codebase is still in transition before flagging every legacy annotation.
- Prefer official Spring and Java guidance when a claim depends on framework behavior.
Workflow
Step 1: Confirm scope
Collect the minimum context required to review accurately:
- Scope: single file, module, PR, or full codebase.
- Target versions: confirm Java and Spring Boot versions from the build files when relevant.
- Focus areas: migration, architecture, data access, security, performance, null-safety, or all.
- Testing context: whether the user expects review findings only or also fix suggestions and test impact.
Step 2: Load only the references that match the review
Load references just in time:
| Focus |
Read |
| Spring Boot 4 migration patterns and framework deltas |
references/spring-boot-4-patterns.md |
| Java 25 language and concurrency adoption |
references/java-25-features.md |
| Security review |
references/security-checklist.md |
| Performance review |
references/performance-patterns.md |
| Architecture boundaries and packaging |
references/architecture-patterns.md |
| Domain model shape |
references/domain-modeling.md |
| Value-object-heavy designs |
references/value-objects-patterns.md |
| Null-safety checks |
references/jspecify-null-safety.md |
Some work is broader than a review. When the user actually wants one of these, scope it as a separate, focused effort instead of mixing it into the review:
- Deep repository, query, and relationship optimization (Spring Data JPA).
- Phased upgrade planning or upgrade execution (Spring Boot / Java migration).
Step 3: Run the review passes
Run only the passes that match the request. For a full review, use this order.
Pass A: Build and configuration
- Verify Java and Spring Boot versions in
pom.xml or build.gradle.
- Check starter names and migration leftovers.
- Scan for Jackson 3 migration issues, outdated test annotations, and version drift.
Pass B: API correctness
- Check controller and service boundaries.
- Check validation and error handling.
- Check nullability in public APIs and method overrides.
Pass C: Architecture and packaging
- Identify the architecture style in use.
- Verify package structure is consistent with that style.
- Flag boundary leaks such as controller-to-repository shortcuts or infrastructure types in domain code.
Pass D: Data access
- Check repository placement and aggregate boundaries.
- Check for N+1 queries, missing pagination, projection mismatches, and transaction misuse.
Pass E: Security
- Check authentication and authorization.
- Check input validation and unsafe query patterns.
- Check secrets handling and sensitive logging.
Pass F: Performance and resilience
- Check caching strategy, unbounded reads, async usage, and remote call behavior.
- Evaluate virtual-thread usage only when the code and workload justify it.
- Check timeouts, retries, and connection-pool assumptions.
Quick triggers for findings
Use these as review prompts, not as a substitute for code evidence.
Spring Boot 4 and migration
- old starter names
- old Mockito test annotations
- Jackson 2 assumptions in a Boot 4 codebase
TestRestTemplate usage instead of RestTestClient
- manual
HttpServiceProxyFactory boilerplate instead of @ImportHttpServices
- custom API versioning instead of native
spring.mvc.apiversion.*
@ConcurrencyLimit or native @Retryable without @EnableResilientMethods
Null-safety
- missing
package-info.java where the project uses JSpecify
- lingering
org.springframework.lang annotations in code that has already moved to JSpecify
- missing copied nullability annotations on overrides
Architecture
- controllers calling repositories directly
- JPA entities exposed in APIs
- modulith boundary leaks
- business logic concentrated in controllers
Performance
- entity traversal in loops
- missing pagination
- projection opportunities ignored on read-heavy paths
- virtual-thread recommendations with no workload evidence
Security
- missing authorization on privileged actions
- SQL or NoSQL injection risk
- secrets in source or logs
- unsafe error exposure
Report format
Order findings by severity and use this template:
## Critical
- **[Category]**: Issue summary
- **File**: `path/to/File.java:123`
- **Impact**: What can fail, leak, or regress
- **Fix**: Specific change to make
## High
- ...
## Medium
- ...
## Low
- ...
If there are no findings, say so explicitly and call out any remaining blind spots such as unreviewed modules, missing tests, or unavailable runtime context.
Common review modes
Quick PR review
- Read the changed files.
- Load
references/spring-boot-4-patterns.md and references/java-25-features.md.
- Add
references/security-checklist.md or references/performance-patterns.md if the diff touches those areas.
- Report only concrete findings with file and line references.
Security review
- Read
references/security-checklist.md.
- Focus on controllers, service entry points, security configuration, and persistence boundaries.
- Report exploitability and affected entry points, not just the violated rule.
Architecture review
- Read
references/architecture-patterns.md.
- Add
references/domain-modeling.md or references/value-objects-patterns.md if the code suggests a rich-domain approach.
- Report boundary mismatches and coupling problems tied to the current architecture style.
Migration review
- Read
references/spring-boot-4-patterns.md and references/java-25-features.md.
- Focus on migration leftovers, outdated APIs, and partial adoption problems.
- If the user wants a phased upgrade plan rather than a review, recommend scoping that as a dedicated migration effort.
When not to use this skill
- Kotlin-first codebases
- Non-Spring Java frameworks such as Micronaut or Quarkus
- Generic review coaching without code context
- Frontend-only changes
Attribution
This skill is adapted from the MIT-licensed code-reviewer skill by Pavithra
(a-pavithraa), part of the springboot-skills-marketplace repository. The
original copyright and MIT license terms are retained in the LICENSE file in
this skill directory. SkillFlux's adaptation removes references to sibling
skills not distributed here and adjusts packaging.
1---2name: springboot-code-reviewer3description: 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.4---56# Java 25 and Spring Boot 4 Reviewer78## Purpose910Use this skill to run a structured review of Java 25 and Spring Boot 4 code. Keep findings grounded in the actual codebase and use the reference files only for the focus areas that apply.1112## Critical rules1314- Never review without code context. Ask for files, diffs, or the relevant module if none is provided.15- Always cite file paths and line numbers for findings.16- Treat Java 25 and Spring Boot 4 as the target baseline unless the build files show otherwise.17- Analyze workload before recommending virtual threads, reactive rewrites, or architecture changes.18- Use JSpecify as the preferred null-safety baseline for new Boot 4 code, but confirm whether the codebase is still in transition before flagging every legacy annotation.19- Prefer official Spring and Java guidance when a claim depends on framework behavior.2021## Workflow2223### Step 1: Confirm scope2425Collect the minimum context required to review accurately:26271. Scope: single file, module, PR, or full codebase.282. Target versions: confirm Java and Spring Boot versions from the build files when relevant.293. Focus areas: migration, architecture, data access, security, performance, null-safety, or all.304. Testing context: whether the user expects review findings only or also fix suggestions and test impact.3132### Step 2: Load only the references that match the review3334Load references just in time:3536| Focus | Read |37|------|------|38| Spring Boot 4 migration patterns and framework deltas | `references/spring-boot-4-patterns.md` |39| Java 25 language and concurrency adoption | `references/java-25-features.md` |40| Security review | `references/security-checklist.md` |41| Performance review | `references/performance-patterns.md` |42| Architecture boundaries and packaging | `references/architecture-patterns.md` |43| Domain model shape | `references/domain-modeling.md` |44| Value-object-heavy designs | `references/value-objects-patterns.md` |45| Null-safety checks | `references/jspecify-null-safety.md` |4647Some work is broader than a review. When the user actually wants one of these, scope it as a separate, focused effort instead of mixing it into the review:4849- Deep repository, query, and relationship optimization (Spring Data JPA).50- Phased upgrade planning or upgrade execution (Spring Boot / Java migration).5152### Step 3: Run the review passes5354Run only the passes that match the request. For a full review, use this order.5556#### Pass A: Build and configuration5758- Verify Java and Spring Boot versions in `pom.xml` or `build.gradle`.59- Check starter names and migration leftovers.60- Scan for Jackson 3 migration issues, outdated test annotations, and version drift.6162#### Pass B: API correctness6364- Check controller and service boundaries.65- Check validation and error handling.66- Check nullability in public APIs and method overrides.6768#### Pass C: Architecture and packaging6970- Identify the architecture style in use.71- Verify package structure is consistent with that style.72- Flag boundary leaks such as controller-to-repository shortcuts or infrastructure types in domain code.7374#### Pass D: Data access7576- Check repository placement and aggregate boundaries.77- Check for N+1 queries, missing pagination, projection mismatches, and transaction misuse.7879#### Pass E: Security8081- Check authentication and authorization.82- Check input validation and unsafe query patterns.83- Check secrets handling and sensitive logging.8485#### Pass F: Performance and resilience8687- Check caching strategy, unbounded reads, async usage, and remote call behavior.88- Evaluate virtual-thread usage only when the code and workload justify it.89- Check timeouts, retries, and connection-pool assumptions.9091## Quick triggers for findings9293Use these as review prompts, not as a substitute for code evidence.9495### Spring Boot 4 and migration9697- old starter names98- old Mockito test annotations99- Jackson 2 assumptions in a Boot 4 codebase100- `TestRestTemplate` usage instead of `RestTestClient`101- manual `HttpServiceProxyFactory` boilerplate instead of `@ImportHttpServices`102- custom API versioning instead of native `spring.mvc.apiversion.*`103- `@ConcurrencyLimit` or native `@Retryable` without `@EnableResilientMethods`104105### Null-safety106107- missing `package-info.java` where the project uses JSpecify108- lingering `org.springframework.lang` annotations in code that has already moved to JSpecify109- missing copied nullability annotations on overrides110111### Architecture112113- controllers calling repositories directly114- JPA entities exposed in APIs115- modulith boundary leaks116- business logic concentrated in controllers117118### Performance119120- entity traversal in loops121- missing pagination122- projection opportunities ignored on read-heavy paths123- virtual-thread recommendations with no workload evidence124125### Security126127- missing authorization on privileged actions128- SQL or NoSQL injection risk129- secrets in source or logs130- unsafe error exposure131132## Report format133134Order findings by severity and use this template:135136```markdown137## Critical138- **[Category]**: Issue summary139 - **File**: `path/to/File.java:123`140 - **Impact**: What can fail, leak, or regress141 - **Fix**: Specific change to make142143## High144- ...145146## Medium147- ...148149## Low150- ...151```152153If there are no findings, say so explicitly and call out any remaining blind spots such as unreviewed modules, missing tests, or unavailable runtime context.154155## Common review modes156157### Quick PR review1581591. Read the changed files.1602. Load `references/spring-boot-4-patterns.md` and `references/java-25-features.md`.1613. Add `references/security-checklist.md` or `references/performance-patterns.md` if the diff touches those areas.1624. Report only concrete findings with file and line references.163164### Security review1651661. Read `references/security-checklist.md`.1672. Focus on controllers, service entry points, security configuration, and persistence boundaries.1683. Report exploitability and affected entry points, not just the violated rule.169170### Architecture review1711721. Read `references/architecture-patterns.md`.1732. Add `references/domain-modeling.md` or `references/value-objects-patterns.md` if the code suggests a rich-domain approach.1743. Report boundary mismatches and coupling problems tied to the current architecture style.175176### Migration review1771781. Read `references/spring-boot-4-patterns.md` and `references/java-25-features.md`.1792. Focus on migration leftovers, outdated APIs, and partial adoption problems.1803. If the user wants a phased upgrade plan rather than a review, recommend scoping that as a dedicated migration effort.181182## When not to use this skill183184- Kotlin-first codebases185- Non-Spring Java frameworks such as Micronaut or Quarkus186- Generic review coaching without code context187- Frontend-only changes188189## Attribution190191This skill is adapted from the MIT-licensed `code-reviewer` skill by Pavithra192(a-pavithraa), part of the `springboot-skills-marketplace` repository. The193original copyright and MIT license terms are retained in the `LICENSE` file in194this skill directory. SkillFlux's adaptation removes references to sibling195skills not distributed here and adjusts packaging.