mit einem Klick
spring-boot-openapi
Use when documenting reactive Spring Boot 4 HTTP APIs with SpringDoc OpenAPI, configuring Swagger UI, annotating endpoints, documenting security schemes, or defining request and response schemas.
Menü
Use when documenting reactive Spring Boot 4 HTTP APIs with SpringDoc OpenAPI, configuring Swagger UI, annotating endpoints, documenting security schemes, or defining request and response schemas.
Use when configuring Spring Boot Actuator for production-grade monitoring, health probes, secured management endpoints, readiness/liveness checks, and Micrometer metrics in Spring Boot 4 applications.
Use when building Model Context Protocol servers in Spring Boot with Spring AI, exposing tools or resources, configuring transports, or integrating AI tool-calling workflows.
Use when adding caching to Spring Boot 4 services, configuring cache providers and TTL policies, invalidating stale data, or diagnosing cache hit and miss behavior.
Use when integrating Neo4j into a Spring Boot 4 backend with graph models, Cypher queries, reactive repositories, relationship mapping, or graph-focused testing patterns.
Use when implementing event-driven or message-based integration in Spring Boot 4, publishing domain events, coordinating Kafka or broker messaging, or applying outbox and idempotency patterns for reliable delivery.
Use when implementing reactive fault-tolerance patterns in Spring Boot 4 with native Spring Framework 7 resilience features or Resilience4j, including retries, concurrency limiting, circuit breakers, rate limiting, timeouts, and fallbacks for downstream calls.
| name | spring-boot-openapi |
| description | Use when documenting reactive Spring Boot 4 HTTP APIs with SpringDoc OpenAPI, configuring Swagger UI, annotating endpoints, documenting security schemes, or defining request and response schemas. |
| allowed-tools | Read, Write, Edit, Bash, Glob, Grep |
OpenAPI and SpringDoc guidance for Spring Boot 4 + WebFlux + Kotlin coroutines.
This skill documents how to describe reactive HTTP APIs clearly and consistently without coupling the API contract to persistence or servlet-era assumptions.
From the official Spring Boot and Spring Framework docs:
@RestController, @GetMapping,
@RequestParam, and @PathVariable@RequestParam is the normal WebFlux mechanism for explicit query parametersProblemDetail is an official error-response type and should be reflected in API documentation
when
applicableUse companion skills instead when the main concern is:
spring-boot-api-standardsspring-bootspring-boot-testing-webfluxspring-boot-securityProblemDetail or equivalent error responses when clients depend on them.Use SpringDoc support that is compatible with your Spring Boot 4 version and WebFlux stack.
@RestController
@RequestMapping("/api/workspaces")
class WorkspaceController {
@Operation(summary = "List workspaces")
@ApiResponses(
value = [
ApiResponse(responseCode = "200", description = "Workspaces returned"),
ApiResponse(responseCode = "401", description = "Unauthenticated"),
],
)
@GetMapping
suspend fun listWorkspaces(
@RequestParam(required = false) ownerId: UUID?,
@RequestParam(required = false, defaultValue = "20") limit: Int,
@RequestParam(required = false) cursor: String?,
): WorkspaceListResponse = TODO()
}
Use DTOs that represent the API contract and document them explicitly.
@Schema(description = "Request to create a workspace")
data class CreateWorkspaceRequest(
@field:Schema(description = "Workspace display name", example = "Profile Tailors")
@field:NotBlank
val name: String,
@field:Schema(description = "Owner user identifier")
@field:NotNull
val ownerId: UUID,
)
data class DTOs.If the API uses ProblemDetail, document it consistently.
@Operation(summary = "Find workspace by id")
@ApiResponses(
value = [
ApiResponse(responseCode = "200", description = "Workspace found"),
ApiResponse(responseCode = "404", description = "Workspace not found"),
],
)
@GetMapping("/{id}")
suspend fun findById(@PathVariable id: UUID): WorkspaceResponse = TODO()
Do not assume Pageable is your default documentation strategy.
Document explicit query parameters that reflect the real public contract:
limitcursorsortownerIdstatus@Operation(summary = "Search products")
@GetMapping("/search")
suspend fun searchProducts(
@Parameter(description = "Search text")
@RequestParam query: String,
@Parameter(description = "Maximum number of items to return")
@RequestParam(defaultValue = "20") limit: Int,
@Parameter(description = "Cursor for next page")
@RequestParam(required = false) cursor: String?,
@Parameter(description = "Sort expression, e.g. createdAt:desc")
@RequestParam(required = false) sort: String?,
): ProductSearchResponse = TODO()
Pageable-style semantics, document them explicitly and intentionally.Document bearer or cookie-based auth requirements explicitly.
@SecurityScheme(
name = "bearerAuth",
type = SecuritySchemeType.HTTP,
scheme = "bearer",
bearerFormat = "JWT",
)
class OpenApiSecurityConfiguration
Pageable as an undocumented implicit contract../SKILL.md — Core reactive controller and DTO boundary rulesspring-boot-api-standards — URL, verb, status code, and contract designspring-boot-testing-webflux — Verifying documented endpoint behaviorspring-boot-security — Authn/authz implementation details