Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
jeffallan avatar

Spring Boot Engineer

  • 7.1k installs
  • 10.8k repo stars
  • Updated May 20, 2026
  • jeffallan/claude-skills

Generates Spring Boot 3.x REST APIs, Spring Data JPA repositories, Spring Security 6 authentication, and reactive WebFlux microservices with constructor injection and layered architecture

About

This skill generates production-grade Spring Boot 3.x code following modern patterns: constructor injection, layered architecture (entity/repository/service/controller), and type-safe configuration. Developers invoke it when building REST APIs, securing endpoints with Spring Security 6 and OAuth2, designing Spring Data JPA repositories with projections and transactions, or creating reactive WebFlux services. The workflow starts with requirement analysis, proceeds through architecture design and layered implementation, adds security and validation, runs full test suites (unit, integration, slice tests with Testcontainers), and finishes with health-check deployment via Actuator. It enforces strict rules: constructor injection over field injection, validation on all mutating endpoints, externalizing secrets, and avoiding deprecated Spring Boot 2.x patterns. Quick-start templates provide copy-paste entities, repositories, services, controllers, DTOs, exception handlers, and test slices.

  • Generates Spring Boot 3.x REST controllers, Spring Data JPA repositories, Spring Security 6 configs, and reactive WebFlu
  • Enforces layered architecture: entity, repository, service, controller with @Transactional scoping and input validation
  • Provides copy-paste templates for entities, services, DTOs (records), global exception handlers, and @WebMvcTest slices
  • Workflow: analyze requirements, design microservices architecture, implement with security (OAuth2, JWT, method security
  • Strict rules: no field injection, externalize secrets, type-safe @ConfigurationProperties, hide internals via @RestContr

Spring Boot Engineer by the numbers

  • 7,145 all-time installs (skills.sh)
  • +97 installs in the week ending Jul 28, 2026 (Skillselion tracking)
  • Ranked #123 of 4,386 Backend & APIs skills by installs in the Skillselion catalog
  • Security screen: LOW risk (skills.sh audit)
  • Data as of Jul 28, 2026 (Skillselion catalog sync)
At a glance

spring-boot-engineer capabilities & compatibility

Capabilities
code generation · architecture design · security configuration · test generation · validation · exception handling · transaction management · rest api scaffolding
Use cases
api development · security audit · testing · devops
Platforms
macOS · Windows · Linux
Runs
Runs locally
Pricing
Free
From the docs

What spring-boot-engineer says it does

Generates Spring Boot 3.x configurations, creates REST controllers, implements Spring Security 6 authentication flows, sets up Spring Data JPA repositories, and configures reactive WebFlux endpoints.
SKILL.md
A standard Spring Boot feature consists of these layers. Use these as copy-paste starting points.
SKILL.md
npx skills add https://github.com/jeffallan/claude-skills --skill spring-boot-engineer

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs7.1k
repo stars10.8k
Security audit3 / 3 scanners passed
Last updatedMay 20, 2026
Repositoryjeffallan/claude-skills

What it does

Developers use this to generate Spring Boot 3.x REST APIs, configure Spring Security 6, set up Spring Data JPA repositories, and build reactive WebFlux microservices.

Who is it for?

Building Spring Boot 3.x REST APIs, microservices with Spring Cloud, securing endpoints with Spring Security 6 and OAuth2, implementing Spring Data JPA repositories with transactions

Skip if: Non-Java backends, Spring Boot 2.x projects, Spring MVC without Boot, raw Servlet applications, frontend frameworks

When should I use this skill?

Starting a Spring Boot 3.x service, adding REST endpoints with validation, configuring Spring Security 6 with OAuth2/JWT, setting up Spring Data JPA with transactions, building reactive WebFlux services, integrating Spri

What you get

Production-ready Spring Boot 3.x REST APIs with security, data access, validation, exception handling, test coverage, and health checks following current best practices

  • Spring Boot service code
  • Config Server configuration
  • application.yml profiles

By the numbers

  • Enforces 7 MUST DO rules (constructor injection, validation, type-safe config, stereotypes, transactions, exception hidi
  • Provides 6 copy-paste templates (entity, repository, service, controller, DTO record, exception handler, test slice)
  • Covers 5 reference areas: web layer, data access, security, cloud native, testing

Files

SKILL.mdMarkdownGitHub ↗

Spring Boot Engineer

Core Workflow

1. Analyze requirements — Identify service boundaries, APIs, data models, security needs 2. Design architecture — Plan microservices, data access, cloud integration, security; confirm design before coding 3. Implement — Create services with constructor injection and layered architecture (see Quick Start below) 4. Secure — Add Spring Security, OAuth2, method security, CORS configuration; verify security rules compile and pass tests. If compilation or tests fail: review error output, fix the failing rule or configuration, and re-run before proceeding 5. Test — Write unit, integration, and slice tests; run ./mvnw test (or ./gradlew test) and confirm all pass before proceeding. If tests fail: review the stack trace, isolate the failing assertion or component, fix the issue, and re-run the full suite 6. Deploy — Configure health checks and observability via Actuator; validate /actuator/health returns UP. If health is DOWN: check the components detail in the response, resolve the failing component (e.g., datasource, broker), and re-validate

Reference Guide

Load detailed guidance based on context:

TopicReferenceLoad When
Web Layerreferences/web.mdControllers, REST APIs, validation, exception handling
Data Accessreferences/data.mdSpring Data JPA, repositories, transactions, projections
Securityreferences/security.mdSpring Security 6, OAuth2, JWT, method security
Cloud Nativereferences/cloud.mdSpring Cloud, Config, Discovery, Gateway, resilience
Testingreferences/testing.md@SpringBootTest, MockMvc, Testcontainers, test slices

Quick Start — Minimal Working Structure

A standard Spring Boot feature consists of these layers. Use these as copy-paste starting points.

Entity

@Entity
@Table(name = "products")
public class Product {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    @NotBlank
    private String name;

    @DecimalMin("0.0")
    private BigDecimal price;

    // getters / setters or use @Data (Lombok)
}

Repository

public interface ProductRepository extends JpaRepository<Product, Long> {
    List<Product> findByNameContainingIgnoreCase(String name);
}

Service (constructor injection)

@Service
public class ProductService {
    private final ProductRepository repo;

    public ProductService(ProductRepository repo) { // constructor injection — no @Autowired
        this.repo = repo;
    }

    @Transactional(readOnly = true)
    public List<Product> search(String name) {
        return repo.findByNameContainingIgnoreCase(name);
    }

    @Transactional
    public Product create(ProductRequest request) {
        var product = new Product();
        product.setName(request.name());
        product.setPrice(request.price());
        return repo.save(product);
    }
}

REST Controller

@RestController
@RequestMapping("/api/v1/products")
@Validated
public class ProductController {
    private final ProductService service;

    public ProductController(ProductService service) {
        this.service = service;
    }

    @GetMapping
    public List<Product> search(@RequestParam(defaultValue = "") String name) {
        return service.search(name);
    }

    @PostMapping
    @ResponseStatus(HttpStatus.CREATED)
    public Product create(@Valid @RequestBody ProductRequest request) {
        return service.create(request);
    }
}

DTO (record)

public record ProductRequest(
    @NotBlank String name,
    @DecimalMin("0.0") BigDecimal price
) {}

Global Exception Handler

@RestControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(MethodArgumentNotValidException.class)
    @ResponseStatus(HttpStatus.BAD_REQUEST)
    public Map<String, String> handleValidation(MethodArgumentNotValidException ex) {
        return ex.getBindingResult().getFieldErrors().stream()
            .collect(Collectors.toMap(FieldError::getField, FieldError::getDefaultMessage));
    }

    @ExceptionHandler(EntityNotFoundException.class)
    @ResponseStatus(HttpStatus.NOT_FOUND)
    public Map<String, String> handleNotFound(EntityNotFoundException ex) {
        return Map.of("error", ex.getMessage());
    }
}

Test Slice

@WebMvcTest(ProductController.class)
class ProductControllerTest {
    @Autowired MockMvc mockMvc;
    @MockBean ProductService service;

    @Test
    void createProduct_validRequest_returns201() throws Exception {
        var product = new Product(); product.setName("Widget"); product.setPrice(BigDecimal.TEN);
        when(service.create(any())).thenReturn(product);

        mockMvc.perform(post("/api/v1/products")
                .contentType(MediaType.APPLICATION_JSON)
                .content("""{"name":"Widget","price":10.0}"""))
            .andExpect(status().isCreated())
            .andExpect(jsonPath("$.name").value("Widget"));
    }
}

Constraints

MUST DO

RuleCorrect Pattern
Constructor injectionpublic MyService(Dep dep) { this.dep = dep; }
Validate API input@Valid @RequestBody MyRequest req on every mutating endpoint
Type-safe config@ConfigurationProperties(prefix = "app") bound to a record/class
Appropriate stereotype@Service for business logic, @Repository for data, @RestController for HTTP
Transaction scope@Transactional on multi-step writes; @Transactional(readOnly = true) on reads
Hide internalsCatch domain exceptions in @RestControllerAdvice; return problem details, not stack traces
Externalize secretsUse environment variables or Spring Cloud Config — never application.properties

MUST NOT DO

  • Use field injection (@Autowired on fields)
  • Skip input validation on API endpoints
  • Use @Component when @Service/@Repository/@Controller applies
  • Mix blocking and reactive code (e.g., calling .block() inside a WebFlux chain)
  • Store secrets or credentials in application.properties/application.yml
  • Hardcode URLs, credentials, or environment-specific values
  • Use deprecated Spring Boot 2.x patterns (e.g., WebSecurityConfigurerAdapter)

Documentation

Related skills

How it compares

Pick spring-boot-engineer over generic Java skills when agents must emit Spring Cloud Config Server code and Git-backed config repos correctly.

FAQ

Why constructor injection instead of field injection?

Constructor injection enables immutability, makes dependencies explicit for testing, and Spring recommends it over @Autowired fields. Rule: public MyService(Dep dep) pattern required.

When do I use @Transactional(readOnly = true)?

On read operations (queries) to optimize database performance and signal intent. Write operations use @Transactional without readOnly. Scope transactions to service methods.

How do I handle validation errors in REST APIs?

Use @Valid on @RequestBody and catch MethodArgumentNotValidException in @RestControllerAdvice to return field-level error maps. Every mutating endpoint must validate input.

Is Spring Boot Engineer safe to install?

skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.

Backend & APIsbackendintegrations

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.