
Spring Boot Engineer
Implement Spring Boot and Spring Cloud patterns—config servers, refreshable beans, and service wiring—while your agent writes production-shaped Java.
Overview
spring-boot-engineer is an agent skill for the Build phase that guides implementation of Spring Boot and Spring Cloud backend and config-server patterns.
Install
npx skills add https://github.com/jeffallan/claude-skills --skill spring-boot-engineerWhat is this skill?
- Spring Cloud Config Server setup with Git-backed repos, native classpath fallbacks, and secured config client imports
- Config client fail-fast and retry policies for resilient bootstrap against a central config server
- @RefreshScope controllers and @Value-driven feature flags for dynamic configuration without redeploys
- Copy-ready application.yml and Java entrypoint snippets for cloud-native Spring Boot services
- Oriented toward distributed systems concerns (externalized config, labels, search-paths) not toy CRUD demos
- Documents Config Client retry max-attempts: 6 with initial-interval 1000 in the bundled example
Adoption & trust: 6.3k installs on skills.sh; 9.7k GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
Your agent keeps generating plain Spring Boot demos when you actually need Config Server, secured clients, and refreshable runtime properties for a multi-service API.
Who is it for?
Solo builders maintaining Java/Spring microservices who want agent-assisted config centralization and feature-flag style property refresh.
Skip if: Greenfield teams on serverless Node or Python-only stacks, or projects with no JVM backend.
When should I use this skill?
The user is implementing or debugging Spring Boot/Spring Cloud services, centralized configuration, or runtime property refresh in Java.
What do I get? / Deliverables
You get aligned Spring Cloud Config Server/Client scaffolding and RefreshScope examples you can drop into services instead of ad-hoc stack-overflow snippets.
- Config Server and Config Client application.yml and Java bootstrap snippets
- RefreshScope REST examples for feature toggles and connection limits
Recommended Skills
Journey fit
Backend microservice and cloud-config work belongs on the Build shelf because it assumes you are actively implementing server code, not validating market fit. Subphase backend captures REST services, @EnableConfigServer clients, and JVM service configuration rather than frontend or launch SEO tasks.
How it compares
A focused Spring Cloud configuration playbook—not a generic Java tutor or a Terraform/infra provisioning skill.
Common Questions / FAQ
Who is spring-boot-engineer for?
Indie and small-team developers building Spring Boot APIs who need cloud-native configuration patterns embedded in agent-assisted coding sessions.
When should I use spring-boot-engineer?
During Build/backend work when adding a config server, wiring spring.config.import clients, or implementing @RefreshScope endpoints before you ship services to staging.
Is spring-boot-engineer safe to install?
It is documentation and code-pattern guidance; review the Security Audits panel on this Prism page and avoid pasting real GIT or CONFIG passwords into prompts or logs.
SKILL.md
READMESKILL.md - Spring Boot Engineer
# Cloud Native - Spring Cloud ## Spring Cloud Config Server ```java // Config Server @SpringBootApplication @EnableConfigServer public class ConfigServerApplication { public static void main(String[] args) { SpringApplication.run(ConfigServerApplication.class, args); } } // application.yml server: port: 8888 spring: cloud: config: server: git: uri: https://github.com/example/config-repo default-label: main search-paths: '{application}' username: ${GIT_USERNAME} password: ${GIT_PASSWORD} native: search-locations: classpath:/config security: user: name: config-user password: ${CONFIG_PASSWORD} // Config Client @SpringBootApplication public class ClientApplication { public static void main(String[] args) { SpringApplication.run(ClientApplication.class, args); } } // application.yml (Config Client) spring: application: name: user-service config: import: "configserver:http://localhost:8888" cloud: config: username: config-user password: ${CONFIG_PASSWORD} fail-fast: true retry: max-attempts: 6 initial-interval: 1000 ``` ## Dynamic Configuration Refresh ```java @RestController @RefreshScope public class ConfigController { @Value("${app.feature.enabled:false}") private boolean featureEnabled; @Value("${app.max-connections:100}") private int maxConnections; @GetMapping("/config") public Map<String, Object> getConfig() { return Map.of( "featureEnabled", featureEnabled, "maxConnections", maxConnections ); } } // Refresh configuration via Actuator endpoint: // POST /actuator/refresh ``` ## Service Discovery - Eureka ```java // Eureka Server @SpringBootApplication @EnableEurekaServer public class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); } } // application.yml (Eureka Server) server: port: 8761 eureka: instance: hostname: localhost client: register-with-eureka: false fetch-registry: false service-url: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ // Eureka Client @SpringBootApplication @EnableDiscoveryClient public class UserServiceApplication { public static void main(String[] args) { SpringApplication.run(UserServiceApplication.class, args); } } // application.yml (Eureka Client) spring: application: name: user-service eureka: client: service-url: defaultZone: http://localhost:8761/eureka/ registry-fetch-interval-seconds: 5 instance: prefer-ip-address: true lease-renewal-interval-in-seconds: 10 lease-expiration-duration-in-seconds: 30 ``` ## Spring Cloud Gateway ```java @SpringBootApplication public class GatewayApplication { public static void main(String[] args) { SpringApplication.run(GatewayApplication.class, args); } @Bean public RouteLocator customRouteLocator(RouteLocatorBuilder builder) { return builder.routes() .route("user-service", r -> r .path("/api/users/**") .filters(f -> f .rewritePath("/api/users/(?<segment>.*)", "/users/${segment}") .addRequestHeader("X-Gateway", "Spring-Cloud-Gateway") .circuitBreaker(config -> config .setName("userServiceCircuitBreaker") .setFallbackUri("forward:/fallback/users") ) .retry(config -> config .setRetries(3) .setStatuses(HttpStatus.SERVICE_UNAVAILABLE) ) ) .uri("lb://user-service") ) .route("order-service", r -> r .path("/api/orders/**")