create-spring-boot-java-project
Installation
Summary
Generate a Spring Boot 3.4.5 project skeleton with PostgreSQL, Redis, MongoDB, and Docker Compose.
- Scaffolds a Maven-based Spring Boot project with Java 21, including Lombok, Spring Data JPA, Spring Web, caching, and validation dependencies
- Pre-configures application.properties with connection details for PostgreSQL, Redis, and MongoDB, plus SpringDoc OpenAPI for API documentation
- Generates a docker-compose.yaml file with Redis 6, PostgreSQL 17, and MongoDB 8 services, each with persistent volumes and default credentials
- Adds ArchUnit for architecture testing and springdoc-openapi for Swagger UI integration out of the box
- Requires Java 21, Docker, and Docker Compose installed locally; customizable project name and Spring Boot version via template parameters
SKILL.md
Create a Spring Boot Java project
Scaffold a Spring Boot application with start.spring.io, then apply a small set of opinionated defaults. Out of scope for now: front-ends (Vue/React/Angular), cloud deployment (Azure), Git setup, CRaC and AOT images.
Step 0: Detect before you create
- If the working directory already contains a
pom.xmlorbuild.gradle(.kts), this is an existing project: do not regenerate it. Read its Spring Boot, Java and test-framework versions and follow them. Never upgrade versions implicitly; propose an upgrade and wait for the user's decision. - Check the tools:
java -version(JDK matching the chosen Java version),docker --version(needed for Testcontainers and Compose). On the default path (current Boot via start.spring.io) Maven/Gradle need not be installed: the generated wrapper is used. The Boot 3.5 fallback needs Maven or Gradle installed once to create the wrapper (see versions.md). - Ask only for what is missing: project name, group id, package, build tool (default Maven), dependencies (default: web, actuator, validation, devtools; add
data-jpa,postgresql,security,docker-compose,testcontainerswhen a database or auth is needed).
Step 1: Resolve versions
Follow references/versions.md: query https://start.spring.io/metadata/client at run time for the latest stable Spring Boot release, fall back to the documented pinned values if offline. Do not hardcode latest anywhere.
Step 2: Generate the project
Use the start.spring.io HTTP API with explicit, pinned parameters (no piped installers). Replace the values in capitals.
Maven: