/api-versioning
Use when versioning Spring MVC or WebFlux APIs in Spring Boot 3 / Spring Framework 6. Covers explicit URL, header, and media-type strategies, compatibility rules, and deprecation handling.
$ npx -y skills add rrezartprebreza/spring-boot-skills --skill api-versioning --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/api-versioning
Context preview
The summary Claude sees to decide when to auto-load this skill.
Use when versioning Spring MVC or WebFlux APIs in Spring Boot 3 / Spring Framework 6. Covers explicit URL, header, and media-type strategies, compatibility rules, and deprecation handling.
SKILL.md
api-versioning.SKILL.mdname: api-versioning
description: >
Use when versioning Spring MVC or WebFlux APIs in Spring Boot 3 / Spring Framework 6. Covers
explicit URL, header, and media-type strategies, compatibility rules, and deprecation handling.
API Versioning (Boot 3 / Framework 6)
Boot 3 does not provide Boot 4's built-in mapping `version` attribute. Choose one explicit strategy and keep it consistent: URL segments, a request header, or media-type parameters.
Prefer a visible, testable contract
For a public API, `/api/v1/orders` and `/api/v2/orders` are usually the clearest choice. If URLs must remain stable, resolve a request header at the web boundary and route to versioned handlers. Do not hide version selection in business services or duplicate it across filters and controllers.
@RestController
@RequestMapping("/api/v1/orders")
class OrderV1Controller {
@GetMapping("/{id}")
OrderV1 get(@PathVariable UUID id) { ... }
}Document supported versions in OpenAPI, define a removal policy, and return a consistent error for unsupported versions. Add `Deprecation`, `Sunset`, and `Link` headers through a response advice or filter when retiring a version.
Migration boundary
Keep version-specific DTOs and controllers thin. Map both versions to the same application use case, and do not copy domain logic into each version. Add contract tests for every supported version and verify content negotiation if using media types.
Gotchas
- Agent uses Boot 4's `version` attribute on Boot 3 - it is not available; choose an explicit routing strategy.
- Agent mixes URL, header, and media-type resolution - select one source of truth.
- Agent puts version branching in services - keep compatibility at the web adapter boundary.
- Agent changes response fields without versioning - preserve old contracts or publish a new version.
- Agent invents deprecation headers per controller - centralize them in advice or a filter.
- Agent documents only the latest version - keep OpenAPI and contract tests for every supported version.
Read more
name: api-versioning description: > Use when versioning Spring MVC or WebFlux APIs in Spring Boot 3 / Spring Framework 6. Covers explicit URL, header, and media-type strategies, compatibility rules, and deprecation handling.
API Versioning (Boot 3 / Framework 6)
Boot 3 does not provide Boot 4's built-in mapping `version` attribute. Choose one explicit strategy and keep it consistent: URL segments, a request header, or media-type parameters.
Prefer a visible, testable contract
For a public API, `/api/v1/orders` and `/api/v2/orders` are usually the clearest choice. If URLs must remain stable, resolve a request header at the web boundary and route to versioned handlers. Do not hide version selection in business services or duplicate it across filters and controllers.
@RestController
@RequestMapping("/api/v1/orders")
class OrderV1Controller {
@GetMapping("/{id}")
OrderV1 get(@PathVariable UUID id) { ... }
}Document supported versions in OpenAPI, define a removal policy, and return a consistent error for unsupported versions. Add `Deprecation`, `Sunset`, and `Link` headers through a response advice or filter when retiring a version.
Migration boundary
Keep version-specific DTOs and controllers thin. Map both versions to the same application use case, and do not copy domain logic into each version. Add contract tests for every supported version and verify content negotiation if using media types.
Gotchas
- Agent uses Boot 4's `version` attribute on Boot 3 - it is not available; choose an explicit routing strategy.
- Agent mixes URL, header, and media-type resolution - select one source of truth.
- Agent puts version branching in services - keep compatibility at the web adapter boundary.
- Agent changes response fields without versioning - preserve old contracts or publish a new version.
- Agent invents deprecation headers per controller - centralize them in advice or a filter.
- Agent documents only the latest version - keep OpenAPI and contract tests for every supported version.
Production-grade Claude Code and Codex skills for Spring Boot developers
Other skills on spring-boot-skills.
- /ai-observability
Use when adding monitoring, metrics, logging, or tracing to Spring AI or LLM integration code. Covers token tracking, latency measurement, cost estimation, and prompt/response logging. Use when user mentions AI monitoring, token costs, or LLM observability.
Open skill - /domain-driven-design
Use when working with domain models, aggregates, value objects, domain events, or repositories in a DDD-style project. Ensures rich domain model over anemic CRUD.
Open skill - /flyway-migrations
Use when creating database migrations, schema changes, seed data, or any SQL that modifies database structure. Covers Flyway naming conventions, versioning, and safe migration patterns.
Open skill - /hateoas
Use when adding hypermedia links to REST responses, building self-describing APIs, or implementing Spring HATEOAS. Use when you see EntityModel, CollectionModel, or RepresentationModel in the project.
Open skill - /hexagonal-architecture
Use when the project follows hexagonal (ports & adapters) architecture. Prevents domain code from depending on Spring or JPA. Use when you see packages like domain/, application/, infrastructure/, or adapters/ in the project structure.
Open skill - /http-interface-clients
Use when calling external HTTP APIs from Spring Boot 3 / Spring Framework 6 with declarative HttpExchange interfaces. Covers manual proxy registration, RestClient versus WebClient, and timeout and error handling conventions.
Open skill

