java-best-practice-checker
Expert Java code auditor for SE 8–24, flagging performance leaks, threading risks, and modernization gaps.
skill install https://www.promptspace.in/skills/java-best-practice-checkerWhat it does
This skill performs an exhaustive, automated audit of Java source code ranging from SE 8 through the latest SE 24 features. It acts as a specialized static analysis engine that identifies violations of modern best practices, concurrency hazards, and architectural anti-patterns.
Why use this skill
Unlike standard linters, this skill provides deep context and "why it matters" explanations for every flag. It helps developers modernize legacy codebases by suggesting Java 21+ features like Record Patterns and Virtual Threads, while simultaneously catching classic "silent killers" like String Pool bypasses and thread-safety bugs in Singletons.
Supported areas
- Modern Syntax: Pattern matching (SE 21), Unnamed variables (SE 22), Stream Gatherers (SE 24).
- Core Performance: String handling, wrapper class caching, and JIT-friendly coding patterns.
- Collections: Deep analysis of the Collections Framework and the new SequencedCollection API.
- Architecture: Dependency injection, OOP encapsulation, and Design Pattern implementations.
- JVM Internals: Garbage collection awareness, memory leak detection, and resource management.
The Output
The skill generates a structured report featuring severity-coded issues (🔴/🟡/🟢), root-cause analysis, and side-by-side "Fix" code blocks. Every review concludes with a professional Summary Table for quick triage by lead developers or PR reviewers.
Use cases
- Modernize legacy Java 8 code to use Records, Switch Expressions, and var.
- Identify thread-safety hazards and manual lock contention in concurrent code.
- Optimize String handling and Collection choices for high-throughput apps.
- Ensure proper resource cleanup and prevent JVM memory leaks.
Example
Prompt
Output
🔴 Issue 1 — Concatenation in loop (Report.build)
Each += allocates a new String; O(n²) performance.
// ✅ Fix
StringBuilder sb = new StringBuilder();
for (var item : list) { sb.append(item); }
return sb.toString();
| # | Location | Category | Issue | Severity |
|---|---|---|---|---|
| 1 | Report.build() | Strings | Loop concat | 🔴 High |