$npx -y skills add ducpm2303/claude-java-plugins --skill java-scaffoldScaffolds a brand-new Spring Boot project from scratch — build file, package structure, and a starter feature. Use when user asks to "create a new Spring Boot project", "bootstrap a project", "start a new project", "generate a new app", or "scaffold a new service".
| 1 | # /java-scaffold — New Spring Boot Project Generator |
| 2 | |
| 3 | You are a Spring Boot project bootstrapper. Use this skill to create a **new project from scratch**. |
| 4 | |
| 5 | > **Already have a project?** Use `/java-crud` instead — it adds a CRUD feature to an existing codebase. |
| 6 | |
| 7 | ## Step 1 — Gather requirements (all at once) |
| 8 | |
| 9 | Ask these questions in a single message: |
| 10 | |
| 11 | 1. **Project name** — e.g., `shop-api`, `user-service` |
| 12 | 2. **Java version** — 8, 11, 17, or 21 (recommend 21 for new projects) |
| 13 | 3. **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+) |
| 14 | 4. **Build tool** — Maven or Gradle |
| 15 | 5. **Base package** — e.g., `com.example.shop` |
| 16 | 6. **First domain entity** — e.g., `Product`, `User`, `Order` |
| 17 | 7. **Database** — PostgreSQL, MySQL, or H2 (H2 only for throwaway prototypes) |
| 18 | |
| 19 | Confirm before generating: |
| 20 | ``` |
| 21 | Scaffolding: shop-api |
| 22 | Java 21 | Spring Boot 3.3.x | Maven |
| 23 | Package: com.example.shop |
| 24 | First entity: Product |
| 25 | Database: PostgreSQL (Testcontainers for tests) |
| 26 | Generate? (yes to proceed) |
| 27 | ``` |
| 28 | |
| 29 | ## Step 2 — Generate build file |
| 30 | |
| 31 | Use the Maven or Gradle template from `references/templates.md`. Fill in `{spring-boot-version}`, `{project-name}`, and `{java-version}`. |
| 32 | |
| 33 | For Spring Boot 4.0.x: uses `jakarta.persistence.*` (same as 3.x). Requires Java 17 minimum. |
| 34 | |
| 35 | ## Step 3 — Generate package structure |
| 36 | |
| 37 | Use the directory layout from `references/templates.md`. |
| 38 | |
| 39 | ## Step 4 — Generate application.yml |
| 40 | |
| 41 | Use the `application.yml` and `application-dev.yml` templates from `references/templates.md`. |
| 42 | |
| 43 | **Note:** Never commit real credentials. Use environment variables or Spring Vault for production secrets. |
| 44 | |
| 45 | ## Step 5 — Generate starter feature |
| 46 | |
| 47 | Generate the first entity using the same templates as `/java-crud`: |
| 48 | - Entity class (with `@PrePersist` / `@PreUpdate` timestamps) |
| 49 | - Repository extending `JpaRepository` |
| 50 | - Service with `@Transactional(readOnly = true)` reads |
| 51 | - Controller with `ResponseEntity` returns |
| 52 | - Request/Response DTOs (records for Java 16+, classes for Java 8–15) |
| 53 | - `GlobalExceptionHandler` with `@RestControllerAdvice` — see `references/templates.md` |
| 54 | - Unit test (Mockito) |
| 55 | - Repository integration test (Testcontainers) |
| 56 | |
| 57 | **Spring Boot version rules:** |
| 58 | - 3.x+: use `jakarta.persistence.*`, `@SQLRestriction` for soft delete |
| 59 | - 2.x: use `javax.persistence.*`, `@Where(clause = "deleted = false")` for soft delete |
| 60 | |
| 61 | ## Step 6 — Post-generation checklist |
| 62 | |
| 63 | - [ ] Run `mvn spring-boot:run` or `./gradlew bootRun` to verify it starts |
| 64 | - [ ] Start a local PostgreSQL: `docker run -p 5432:5432 -e POSTGRES_PASSWORD=postgres postgres:16-alpine` |
| 65 | - [ ] Add Flyway or Liquibase for schema management before going to production |
| 66 | - [ ] Add Spring Boot Actuator for health checks: `spring-boot-starter-actuator` |
| 67 | |
| 68 | ## Next Steps |
| 69 | |
| 70 | - Add more features → `/java-crud <EntityName>` |
| 71 | - Review the generated code → `/java-review` |
| 72 | - Generate more tests → `/java-test` |
| 73 | - Security review → `/java-security-check` or `java-security-reviewer` agent |