code-reviewer
Use when reviewing Spring Boot 4 / Java 17+ code with concrete files or diffs — pull requests, modules, or pasted Java/Spring sources — for migration risks,…
Use when starting a new Spring Boot 4 project — scaffolding a service, REST API, or modular backend; picking an architecture (layered, package-by-module, modular-monolith, tomato, DDD-hexagonal); selecting Spring Boot 4 features; or applying the bundled templates and references
$ npx -y skills add a-pavithraa/springboot-skills-marketplace --skill creating-springboot-projects --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/creating-springboot-projectsContext preview
The summary Claude sees to decide when to auto-load this skill.
Use when starting a new Spring Boot 4 project — scaffolding a service, REST API, or modular backend; picking an architecture (layered, package-by-module, modular-monolith, tomato, DDD-hexagonal); selecting Spring Boot 4 features; or applying the bundled templates and references
name: creating-springboot-projects description: Use when starting a new Spring Boot 4 project — scaffolding a service, REST API, or modular backend; picking an architecture (layered, package-by-module, modular-monolith, tomato, DDD-hexagonal); selecting Spring Boot 4 features; or applying the bundled templates and references in this skill. Not for migrating existing projects or for isolated JPA/repository work without broader project-creation context.
Use this skill to create new Spring Boot 4 projects or define their structure before implementation. The skill adds value when the user needs an architecture decision, Spring Boot 4 feature selection, or the bundled templates in `assets/`.
Collect the project constraints first:
1. Domain complexity: simple CRUD, moderate workflow, or rich domain rules. 2. Team size: 1-3, 3-10, or 10+. 3. Expected lifespan: months, 1-2 years, or 5+ years. 4. Type-safety needs: basic validation or strong value-object-heavy modeling. 5. Bounded contexts: single domain or multiple feature areas. 6. Persistence and infrastructure needs: database choice, migration tool, local development setup.
Use this matrix as the default decision aid. If the choice is not obvious, read `references/architecture-guide.md` before proceeding.
| Pattern | Use when | Complexity | |---------|----------|------------| | `layered` | CRUD services, prototypes, MVPs | Low | | `package-by-module` | 3-5 distinct features with moderate growth | Low-Medium | | `modular-monolith` | Module boundaries matter and Spring Modulith is justified | Medium | | `tomato` | Rich domain modeling, value objects, stronger type safety | Medium-High | | `ddd-hexagonal` | Complex domains, CQRS, strong infrastructure isolation | High |
> `tomato` is a value-object-heavy modular monolith: JPA entities embed VOs, validation lives in VO constructors, and Spring converters bind VOs at the request boundary. See `references/architecture-guide.md` for the full definition.
Use Spring Initializr and capture the baseline:
Baseline dependencies for most projects:
Optional dependencies based on architecture or features:
Read `references/spring-boot-4-features.md` before selecting:
Use the bundled templates from `assets/` and replace placeholders only after the package and module names are settled.
Every template uses `{{TOKEN}}` placeholders. Resolve all of them before applying — templates do not compile until every placeholder is replaced. The full set used across `assets/`:
| Placeholder | Replace with | Example | |-------------|--------------|---------| | `{{PACKAGE}}` | Base Java package | `com.acme.shop` | | `{{MODULE}}` | Feature/module name (lowercase) | `orders` | | `{{NAME}}` | Domain type name (PascalCase) | `Order`, `ProductSKU` | | `{{TYPE}}` | Wrapped scalar type inside a value object | `String`, `Long`, `BigDecimal` | | `{{FIELD}}` | Record field name (camelCase) | `code`, `amount` | | `{{TABLE_NAME}}` | Database table name (used in JPA `@Table`) | `orders` | | `{{TABLE}}` | Same meaning as `{{TABLE_NAME}}` — legacy variant kept only in `flyway-migration.sql` | `orders` | | `{{PROJECT_NAME}}` | Project artifactId / docker prefix (used only in `docker-compose.yml`) | `shop-api` | | `{{name}}` | HTTP service group identifier — **not** a lowercase variant of `{{NAME}}`. Appears only in commented `@ImportHttpServices(group = "...")` examples. | `orders` |
If a template uses a placeholder not listed here, treat it as a typo and confirm the intended value before applying.
Core project templates:
Boot 4 and modularity templates:
Read `references/architecture-guide.md` for package structure and apply the matching templates:
Claude Code skills that help you build Spring Boot apps with architecture that actually fits your needs.
Use when reviewing Spring Boot 4 / Java 17+ code with concrete files or diffs — pull requests, modules, or pasted Java/Spring sources — for migration risks,…
Use when designing or implementing Spring Data JPA on Spring Boot 4 — repository boundaries, projections, query patterns, custom repositories, CQRS read…
Use when upgrading an existing Spring Boot application to Boot 4 — dependency transitions, starter renames, test-annotation migration (e.g. @MockBean →…