/java-scaffold — New Spring Boot Project Generator
You are a Spring Boot project bootstrapper. Use this skill to create a new project from scratch.
Already have a project? Use
/java-crudinstead — it adds a CRUD feature to an existing codebase.
Step 1 — Gather requirements (all at once)
Ask these questions in a single message:
- Project name — e.g.,
shop-api,user-service - Java version — 8, 11, 17, or 21 (recommend 21 for new projects)
- Spring Boot version — 2.7.x, 3.2.x, 3.3.x, or 4.0.x (recommend 3.3.x; 4.0.x requires Java 17+)
- Build tool — Maven or Gradle
- Base package — e.g.,
com.example.shop - First domain entity — e.g.,
Product,User,Order - Database — PostgreSQL, MySQL, or H2 (H2 only for throwaway prototypes)
Confirm before generating:
Scaffolding: shop-api
Java 21 | Spring Boot 3.3.x | Maven
Package: com.example.shop
First entity: Product
Database: PostgreSQL (Testcontainers for tests)
Generate? (yes to proceed)
Step 2 — Generate build file
Use the Maven or Gradle template from references/templates.md. Fill in {spring-boot-version}, {project-name}, and {java-version}.
For Spring Boot 4.0.x: uses jakarta.persistence.* (same as 3.x). Requires Java 17 minimum.
Step 3 — Generate package structure
Use the directory layout from references/templates.md.
Step 4 — Generate application.yml
Use the application.yml and application-dev.yml templates from references/templates.md.
Note: Never commit real credentials. Use environment variables or Spring Vault for production secrets.
Step 5 — Generate starter feature
Generate the first entity using the same templates as /java-crud:
- Entity class (with
@PrePersist/@PreUpdatetimestamps) - Repository extending
JpaRepository - Service with
@Transactional(readOnly = true)reads - Controller with
ResponseEntityreturns - Request/Response DTOs (records for Java 16+, classes for Java 8–15)
GlobalExceptionHandlerwith@RestControllerAdvice— seereferences/templates.md- Unit test (Mockito)
- Repository integration test (Testcontainers)
Spring Boot version rules:
- 3.x+: use
jakarta.persistence.*,@SQLRestrictionfor soft delete - 2.x: use
javax.persistence.*,@Where(clause = "deleted = false")for soft delete
Step 6 — Post-generation checklist
- Run
mvn spring-boot:runor./gradlew bootRunto verify it starts - Start a local PostgreSQL:
docker run -p 5432:5432 -e POSTGRES_PASSWORD=postgres postgres:16-alpine - Add Flyway or Liquibase for schema management before going to production
- Add Spring Boot Actuator for health checks:
spring-boot-starter-actuator
Next Steps
- Add more features →
/java-crud <EntityName> - Review the generated code →
/java-review - Generate more tests →
/java-test - Security review →
/java-security-checkorjava-security-revieweragent