Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when building or changing a Spring Cloud Gateway on Spring Boot 3. Covers route design, authentication, header hygiene, rate limiting, retries, timeouts, observability, and testing.
.claude/skills/rrezartprebreza-spring-cloud-gateway/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 29% | 0% |
| case-02 | ✗→✓ | ▲ Improved | -12% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 1% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 60% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 11% | 0% |
Keep the gateway an edge adapter. Do not move domain workflows into filters.
2025.1.x release train for Spring Boot 4.2025.1.2.spring-cloud-dependencies as a BOM and omit versions from individual Cloud dependencies.xml<!-- Reactive Netty gateway --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway-server-webflux</artifactId> </dependency> <!-- OR servlet gateway: spring-cloud-starter-gateway-server-webmvc -->
Do not use the old spring-cloud-starter-gateway coordinate or force a Boot 3 release train onto Boot 4. WebFlux requires Reactor Netty and cannot run as a traditional servlet WAR; Web MVC uses a servlet runtime and WebMvc.fn.
Gateway 5 separates server implementations in configuration:
spring.cloud.gateway.server.webflux.*spring.cloud.gateway.server.webmvc.*yamlspring: cloud: gateway: server: webflux: httpclient: connect-timeout: 2000 response-timeout: 5s routes: - id: orders-api uri: http://orders.internal predicates: - Path=/api/orders/** filters: - RemoveRequestHeader=X-User-Id
The Boot 3-era spring.cloud.gateway.routes and spring.cloud.gateway.httpclient paths do not bind to Gateway 5's WebFlux server properties.
examples/good-routes.yml shows Gateway 5 WebFlux configuration.examples/good-webmvc-routes.yml shows Gateway 5 Web MVC configuration.examples/bad-routes.yml preserves the stale configuration as a warning.spring.cloud.gateway.routes on Gateway 5 - use the server-specific namespace.spring-cloud-starter-gateway on Boot 4 - select the WebFlux or Web MVC server starter.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 9,318 | 6,975 | -25% | 1 | 1 | 0% | 1,525 | 1,974 | +29% | 0 | 0 | — |
case-02 | fail→pass | 13,141 | 6,120 | -53% | 1 | 1 | 0% | 2,273 | 2,011 | -12% | 0 | 0 | — |
case-03 | fail→pass | 13,947 | 12,097 | -13% | 1 | 1 | 0% | 2,629 | 2,648 | +1% | 0 | 0 | — |
case-04 | pass→pass | 10,569 | 9,216 | -13% | 1 | 1 | 0% | 1,796 | 2,737 | +52% | 0 | 0 | — |
case-05 | pass→pass | 10,424 | 8,385 | -20% | 1 | 1 | 0% | 1,784 | 2,614 | +47% | 0 | 0 | — |
case-06 | pass→pass | 11,008 | 7,936 | -28% | 1 | 1 | 0% | 1,536 | 2,436 | +59% | 0 | 0 | — |
case-07 | fail→pass | 7,924 | 4,814 | -39% | 1 | 1 | 0% | 1,092 | 1,746 | +60% | 0 | 0 | — |
case-08 | fail→pass | 8,441 | 5,561 | -34% | 1 | 1 | 0% | 1,646 | 1,827 | +11% | 0 | 0 | — |
case-09 | fail→pass | 11,860 | 6,284 | -47% | 1 | 1 | 0% | 2,037 | 1,997 | -2% | 0 | 0 | — |
case-10 | fail→pass | 9,302 | 5,550 | -40% | 1 | 1 | 0% | 1,586 | 1,740 | +10% | 0 | 0 | — |
case-11 | pass→pass | 13,714 | 11,995 | -13% | 1 | 1 | 0% | 2,181 | 2,786 | +28% | 0 | 0 | — |
case-12 | fail→pass | 13,201 | 9,373 | -29% | 1 | 1 | 0% | 2,065 | 2,563 | +24% | 0 | 0 | — |
case-13 | pass→pass | 16,060 | 10,041 | -37% | 1 | 1 | 0% | 2,160 | 2,349 | +9% | 0 | 0 | — |
case-14 | pass→pass | 17,941 | 13,630 | -24% | 1 | 1 | 0% | 2,559 | 3,183 | +24% | 0 | 0 | — |
case-15 | fail→pass | 6,539 | 3,462 | -47% | 1 | 1 | 0% | 998 | 1,607 | +61% | 0 | 0 | — |
case-16 | pass→pass | 17,118 | 12,908 | -25% | 1 | 1 | 0% | 2,475 | 2,798 | +13% | 0 | 0 | — |
case-17 | pass→pass | 17,810 | 14,436 | -19% | 1 | 1 | 0% | 2,866 | 3,193 | +11% | 0 | 0 | — |
case-18 | pass→pass | 18,710 | 15,991 | -15% | 1 | 1 | 0% | 3,119 | 3,728 | +20% | 0 | 0 | — |
case-19 | pass→pass | 17,612 | 11,324 | -36% | 1 | 1 | 0% | 2,805 | 2,787 | -1% | 0 | 0 | — |
case-20 | pass→pass | 18,489 | 15,666 | -15% | 1 | 1 | 0% | 3,311 | 3,511 | +6% | 0 | 0 | — |
case-21 | pass→pass | 11,912 | 7,710 | -35% | 1 | 1 | 0% | 1,853 | 2,180 | +18% | 0 | 0 | — |
case-22 | fail→pass | 14,535 | 6,307 | -57% | 1 | 1 | 0% | 2,573 | 1,900 | -26% | 0 | 0 | — |
case-23 | pass→pass | 19,624 | 11,325 | -42% | 1 | 1 | 0% | 2,999 | 2,757 | -8% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +43 percentage points is the difference between those two pass rates over the 23 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.