code-reviewer
Use when asked to review, check or diagnose Spring Boot code: a pull request, diff, module or file before it merges; a slow…
Use when starting a new Spring Boot project or service: scaffolding or bootstrapping a backend, REST API, microservice or modular monolith; choosing how to structure it (layered, package-by-module, modular monolith, tomato, DDD-hexagonal); selecting Spring Boot 4 features;
Claude Code
$ npx -y skills add a-pavithraa/springboot-skills-marketplace --skill creating-springboot-projects --agent claude-code
Codex
$ npx skills add a-pavithraa/springboot-skills-marketplace --skill creating-springboot-projects -a codex -y
Cursor
$ npx skills add a-pavithraa/springboot-skills-marketplace --skill creating-springboot-projects -a cursor -y
Gemini CLI
$ npx skills add a-pavithraa/springboot-skills-marketplace --skill creating-springboot-projects -a gemini-cli -y
GitHub Copilot
$ npx skills add a-pavithraa/springboot-skills-marketplace --skill creating-springboot-projects -a github-copilot -y
OpenCode
$ npx skills add a-pavithraa/springboot-skills-marketplace --skill creating-springboot-projects -a opencode -y
Windsurf
$ npx skills add a-pavithraa/springboot-skills-marketplace --skill creating-springboot-projects -a windsurf -y
name: creating-springboot-projects description: "Use when starting a new Spring Boot project or service: scaffolding or bootstrapping a backend, REST API, microservice or modular monolith; choosing how to structure it (layered, package-by-module, modular monolith, tomato, DDD-hexagonal); selecting Spring Boot 4 features; generating the base project with progen or Spring Initializr; 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.
Pick the generator:
For Spring Initializr, 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. If progen generated the project, skip the assets it already covers (see `references/progen-integration.md`).
Every template uses `{{TOKEN}}` placeholders. Resolve all of them before applying. The 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}}`. A legacy variant, used 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:
-
Claude Code and Codex skills for Spring Boot 4 and Java 25. The main one, spring-boot-team-harness, gives every developer on a team the same agent setup and makes ./mvnw verify (or ./gradlew build) fail on the mistakes agents make.
Use when asked to review, check or diagnose Spring Boot code: a pull request, diff, module or file before it merges; a slow…
Use when a team wants every developer's coding agent (Claude Code or Codex) to follow the same rules and coding conventions on a…
Adds a new application module to this Spring Modulith project with the package layout the ModuleBoundariesTests gate expects, and…
Writes a Flyway database migration for this project following the team's rules for naming, editing and renaming, so migrations…
Moves a Java class or package to another package in this project with OpenRewrite, so every import, fully qualified reference,…
Use when upgrading an existing Spring Boot application, for example from Boot 3.x to Boot 4 or to the latest Spring Boot and…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.