Review Spring Boot (Enterprise Production Readiness)
Full-project review skill for Spring Boot applications (single- or multi-module). Spring Boot and JDK versions are detected from the project — never assumed. The review is split into focused area modules; the user selects which areas to run, and the consolidated report is written to a timestamped file in the project root.
Adopt this framing for every module:
Act as a Principal Software Architect, JVM Performance Engineer, Spring Boot Expert, Security Architect, Distributed Systems Expert, and Production Reliability Engineer, performing an enterprise production readiness assessment for a high-scale, mission-critical application.
How to run
Step 0 — Detect stack & layout (before any review module):
- Read build files to determine the project's actual stack:
- Build tool:
pom.xml (Maven) or build.gradle / build.gradle.kts / settings.gradle / settings.gradle.kts (Gradle).
- Spring Boot version: from
spring-boot-starter-parent, org.springframework.boot plugin, or dependency management BOM.
- JDK version: from
<java.version> / <maven.compiler.release> (Maven), sourceCompatibility / Java toolchain (Gradle), or fallback .java-version / .sdkmanrc.
- Language(s): detect Java, Kotlin, and/or Groovy from source file extensions (
.java / .kt / .groovy) and Gradle Kotlin DSL. Every module must scan all detected languages — do not assume Java-only.
- Layout: single-module vs multi-module — check
<modules> in pom.xml, include in settings.gradle, or multiple submodule directories.
- Configuration: locate
application.properties / application.yml / application-*.yml|properties and the active profiles. Config files are in-scope for every review area.
- Guardrail — is this even a Spring Boot project? If no Spring Boot build file is found (no
spring-boot-starter-*, no org.springframework.boot plugin or BOM), STOP and report "Not a Spring Boot project — nothing to review." Do the same if the target path is empty or unreadable. Do not fabricate findings.
- If any version cannot be determined, state that explicitly. Do not assume defaults.
- Project inventory: build a lightweight inventory before running any module — controllers, services, repositories, entities, configuration files, and the module list. This anchors the review and prevents missed areas on large repos.
- Record all detected values; use them in every review framing and recommendation.
Step 1 — Ask which areas to review. After Step 0, print the 8 review areas as a numbered text list (numbers and names from the Review areas table below) and ask the user to reply with the numbers of the areas to run — e.g. 1 2 7. Accept all as a shortcut for every area. Multiple selection is expected. Do not use AskUserQuestion for this — there are more areas than it can present. There is no preset default: do not pre-select or auto-pick any subset — print the list, then wait for the user's reply before running anything. Only the selected areas execute; the final report (module 09) always runs. Record the selection so the report can list which areas ran and which were skipped.
Present exactly this list:
Which areas should I review? Reply with the numbers (e.g. 1 2 7), or "all".
1. Architecture & Design
2. Spring Boot & JDK
3. Performance & Runtime
4. Data & API
5. Security & Resilience
6. Observability & Testing
7. Ops, Cloud & Build
8. Quality & Scalability
Step 2 — Run the selected area modules.
- Run strategy: for large projects, dispatch the selected areas as parallel subagents (one per module), each given the Step 0 detected stack + inventory, each returning findings in the standard output format. For small projects or a single selected area, running inline/sequentially is fine. State which mode was used.
- Scan the entire project for each selected area — every module, package, source language, and configuration file — whether single- or multi-module.
Step 3 — Always run modules/09-final-report.md last to produce the consolidated Review + Fix report and write it to a timestamped file (see below).
Review areas
| # |
Area |
Covers sections |
Load |
| 1 |
Architecture & Design |
1 Architecture, 2 Multi-Module, 5 SOLID, 6 OO Design, 7 Design Patterns |
modules/01-architecture-design.md |
| 2 |
Spring Boot & JDK |
3 Spring Boot, 4 JDK |
modules/02-spring-jdk.md |
| 3 |
Performance & Runtime |
8 Performance, 9 Memory, 10 GC, 11 Concurrency |
modules/03-performance-runtime.md |
| 4 |
Data & API |
12 Database, 13 API Design |
modules/04-data-api.md |
| 5 |
Security & Resilience |
14 Security, 15 Resilience, 16 Caching, 17 Messaging |
modules/05-security-resilience.md |
| 6 |
Observability & Testing |
18 Logging, 19 Observability, 20 Testing, 21 Configuration |
modules/06-observability-testing.md |
| 7 |
Ops, Cloud & Build |
22 Docker/K8s, 23 Cloud, 24 Production, 26 Dependencies, 27 Build |
modules/07-ops-cloud-build.md |
| 8 |
Quality & Scalability |
25 Code Quality, 28 Maintainability, 29 Scalability |
modules/08-quality-scalability.md |
| 9 |
Final Report (always runs) |
Consolidated findings and prioritized fix list |
modules/09-final-report.md |
Global rules (apply to every module)
Do not make assumptions. If information is missing, explicitly state what additional code, configuration, infrastructure, or documentation is needed before reaching a conclusion.
Be evidence-driven: reference the specific code or configuration that supports each finding, distinguish confirmed issues from potential risks, and avoid speculative recommendations.
Reproducibility: findings must be evidence-only (cite file + line/method), free of speculation, and deterministically ordered. Identical inputs should yield the same report on re-run.
Severity definitions (assign severity consistently)
| Severity |
Meaning |
| Critical |
Production outage, data loss, or security breach — exploitable/triggerable now. Fix before anything ships. |
| High |
Serious risk under load or likely to cause incidents. Fix before release. |
| Medium |
Meaningful weakness that degrades reliability, security, or maintainability. Schedule soon. |
| Low |
Minor, stylistic, or best-practice nit. |
Output format
For every issue identified, use this structure (describe only; do not edit project code):
### [ID] [Severity] Short title
- Location: `path/File.{java|kt}` (Class#method) — Module: <name> (include only if multi-module)
- Review: what's wrong and why it's a production risk (evidence-based, 1-3 sentences)
- Fix: the concrete recommended change; include a code snippet when it clarifies
- ID is a stable, area-prefixed identifier:
<AREA>-NNN — e.g. ARCH-001, PERF-003, SEC-002, DATA-004, OBS-001, OPS-002, QUAL-001. It is used to cross-link the Findings section and the Prioritized Fix List in the final report.
- Severity is one of Critical / High / Medium / Low, per the definitions above.
Report file
The consolidated final report is written to a file, not just printed:
- Path:
reviews/spring-boot-review-{YYYY-MM-DD-HHMM}.md, relative to the project root.
- Create the
reviews/ directory if it does not exist. Derive the timestamp from the current date-time. Never overwrite a prior run — each run produces a new timestamped file.
- After writing, print a short summary (counts + verdict) and the report file path to chat.
1---2name: review-spring-boot3description: Performs a full enterprise production-readiness review of Spring Boot projects (single- or multi-module) across architecture, Spring/JDK practices, performance, memory, concurrency, data, API, security, resilience, caching, messaging, observability, testing, ops, cloud, quality, and scalability. Auto-detects Spring Boot and JDK versions from the project, lets the user pick which review areas to run, and writes a timestamped report to the project root. Use when the user asks to review a Spring Boot project or backend, requests a production-readiness or enterprise-readiness assessment, or invokes /review-spring-boot.4---56# Review Spring Boot (Enterprise Production Readiness)78Full-project review skill for Spring Boot applications (single- or multi-module). Spring Boot and JDK versions are detected from the project — never assumed. The review is split into focused area modules; the user selects which areas to run, and the consolidated report is written to a timestamped file in the project root.910Adopt this framing for every module:1112> Act as a Principal Software Architect, JVM Performance Engineer, Spring Boot Expert, Security Architect, Distributed Systems Expert, and Production Reliability Engineer, performing an enterprise production readiness assessment for a high-scale, mission-critical application.1314## How to run15161. **Step 0 — Detect stack & layout** (before any review module):17 - Read build files to determine the project's actual stack:18 - **Build tool:** `pom.xml` (Maven) or `build.gradle` / `build.gradle.kts` / `settings.gradle` / `settings.gradle.kts` (Gradle).19 - **Spring Boot version:** from `spring-boot-starter-parent`, `org.springframework.boot` plugin, or dependency management BOM.20 - **JDK version:** from `<java.version>` / `<maven.compiler.release>` (Maven), `sourceCompatibility` / Java toolchain (Gradle), or fallback `.java-version` / `.sdkmanrc`.21 - **Language(s):** detect Java, Kotlin, and/or Groovy from source file extensions (`.java` / `.kt` / `.groovy`) and Gradle Kotlin DSL. Every module must scan **all** detected languages — do not assume Java-only.22 - **Layout:** single-module vs multi-module — check `<modules>` in `pom.xml`, `include` in `settings.gradle`, or multiple submodule directories.23 - **Configuration:** locate `application.properties` / `application.yml` / `application-*.yml|properties` and the active profiles. Config files are in-scope for every review area.24 - **Guardrail — is this even a Spring Boot project?** If no Spring Boot build file is found (no `spring-boot-starter-*`, no `org.springframework.boot` plugin or BOM), STOP and report *"Not a Spring Boot project — nothing to review."* Do the same if the target path is empty or unreadable. Do not fabricate findings.25 - If any version cannot be determined, state that explicitly. Do not assume defaults.26 - **Project inventory:** build a lightweight inventory before running any module — controllers, services, repositories, entities, configuration files, and the module list. This anchors the review and prevents missed areas on large repos.27 - Record all detected values; use them in every review framing and recommendation.28292. **Step 1 — Ask which areas to review.** After Step 0, print the 8 review areas as a **numbered text list** (numbers and names from the Review areas table below) and ask the user to **reply with the numbers** of the areas to run — e.g. `1 2 7`. Accept `all` as a shortcut for every area. Multiple selection is expected. Do **not** use `AskUserQuestion` for this — there are more areas than it can present. There is **no preset default**: do not pre-select or auto-pick any subset — print the list, then **wait for the user's reply** before running anything. Only the selected areas execute; the final report (module 09) always runs. Record the selection so the report can list which areas ran and which were skipped.3031 Present exactly this list:3233 ```34 Which areas should I review? Reply with the numbers (e.g. 1 2 7), or "all".3536 1. Architecture & Design37 2. Spring Boot & JDK38 3. Performance & Runtime39 4. Data & API40 5. Security & Resilience41 6. Observability & Testing42 7. Ops, Cloud & Build43 8. Quality & Scalability44 ```45463. **Step 2 — Run the selected area modules.**47 - **Run strategy:** for large projects, dispatch the selected areas as **parallel subagents** (one per module), each given the Step 0 detected stack + inventory, each returning findings in the standard output format. For small projects or a single selected area, running inline/sequentially is fine. State which mode was used.48 - Scan the **entire project** for each selected area — every module, package, source language, and configuration file — whether single- or multi-module.49504. **Step 3 — Always run** `modules/09-final-report.md` last to produce the consolidated Review + Fix report and **write it to a timestamped file** (see below).5152## Review areas5354| # | Area | Covers sections | Load |55|---|------|-----------------|------|56| 1 | Architecture & Design | 1 Architecture, 2 Multi-Module, 5 SOLID, 6 OO Design, 7 Design Patterns | `modules/01-architecture-design.md` |57| 2 | Spring Boot & JDK | 3 Spring Boot, 4 JDK | `modules/02-spring-jdk.md` |58| 3 | Performance & Runtime | 8 Performance, 9 Memory, 10 GC, 11 Concurrency | `modules/03-performance-runtime.md` |59| 4 | Data & API | 12 Database, 13 API Design | `modules/04-data-api.md` |60| 5 | Security & Resilience | 14 Security, 15 Resilience, 16 Caching, 17 Messaging | `modules/05-security-resilience.md` |61| 6 | Observability & Testing | 18 Logging, 19 Observability, 20 Testing, 21 Configuration | `modules/06-observability-testing.md` |62| 7 | Ops, Cloud & Build | 22 Docker/K8s, 23 Cloud, 24 Production, 26 Dependencies, 27 Build | `modules/07-ops-cloud-build.md` |63| 8 | Quality & Scalability | 25 Code Quality, 28 Maintainability, 29 Scalability | `modules/08-quality-scalability.md` |64| 9 | Final Report (always runs) | Consolidated findings and prioritized fix list | `modules/09-final-report.md` |6566## Global rules (apply to every module)6768Do not make assumptions. If information is missing, explicitly state what additional code, configuration, infrastructure, or documentation is needed before reaching a conclusion.6970Be evidence-driven: reference the specific code or configuration that supports each finding, distinguish confirmed issues from potential risks, and avoid speculative recommendations.7172**Reproducibility:** findings must be evidence-only (cite file + line/method), free of speculation, and deterministically ordered. Identical inputs should yield the same report on re-run.7374### Severity definitions (assign severity consistently)7576| Severity | Meaning |77|----------|---------|78| **Critical** | Production outage, data loss, or security breach — exploitable/triggerable now. Fix before anything ships. |79| **High** | Serious risk under load or likely to cause incidents. Fix before release. |80| **Medium** | Meaningful weakness that degrades reliability, security, or maintainability. Schedule soon. |81| **Low** | Minor, stylistic, or best-practice nit. |8283### Output format8485For every issue identified, use this structure (describe only; do not edit project code):8687```88### [ID] [Severity] Short title89- Location: `path/File.{java|kt}` (Class#method) — Module: <name> (include only if multi-module)90- Review: what's wrong and why it's a production risk (evidence-based, 1-3 sentences)91- Fix: the concrete recommended change; include a code snippet when it clarifies92```9394- **ID** is a stable, area-prefixed identifier: `<AREA>-NNN` — e.g. `ARCH-001`, `PERF-003`, `SEC-002`, `DATA-004`, `OBS-001`, `OPS-002`, `QUAL-001`. It is used to cross-link the Findings section and the Prioritized Fix List in the final report.95- **Severity** is one of Critical / High / Medium / Low, per the definitions above.9697### Report file9899The consolidated final report is **written to a file**, not just printed:100101- Path: `reviews/spring-boot-review-{YYYY-MM-DD-HHMM}.md`, relative to the **project root**.102- Create the `reviews/` directory if it does not exist. Derive the timestamp from the current date-time. **Never overwrite** a prior run — each run produces a new timestamped file.103- After writing, print a short summary (counts + verdict) and the report file path to chat.