Backend · Codex, Cursor, Copilot coding agent
Spring Boot 4 & Java 25 AGENTS.md
An AGENTS.md for Spring Boot 4 & Java 25: setup, commands and the checks coding agents should run before they finish.
- Path
- AGENTS.md
- Loads
- Repo root, nearest file wins
- Format
- Plain Markdown (.md)
- Used by
- Codex, Cursor, Copilot coding agent
What this file tells the agent
AGENTS.md is the file coding agents such as Codex, Cursor and Copilot's coding agent read for project instructions. This one gives them the Spring Boot 4 & Java 25 setup, the commands to run and the conventions to keep.
- Use jakarta.* packages for persistence, validation, and servlets; ban legacy javax.* imports.
- Represent immutable request/response DTOs using native Java Records with Jakarta validation annotations.
- Enable virtual threads (spring.threads.virtual.enabled=true) for high-throughput blocking I/O.
- Configure Spring Security using the modern SecurityFilterChain bean approach; never extend deprecated WebSecurityConfigurerAdapter.
- Avoid N+1 queries in Spring Data JPA: use @EntityGraph or JOIN FETCH JPQL queries for relational fetches.
Code to avoid, and what to write instead
The rule steers the agent away from the left and toward the right.
// Discouraged: Legacy javax namespace, verbose POJO with setters, mutable entity exposure
import javax.persistence.*; // Obsolete since Spring Boot 3; use jakarta.persistence
public class BadOrderDTO {
private String customerId;
public void setCustomerId(String id) { this.customerId = id; }
}package com.example.demo.order;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.Positive;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.math.BigDecimal;
public record CreateOrderRequest(
@NotBlank String customerId,
@Positive BigDecimal amount
) {}
public record OrderResponse(Long id, String customerId, BigDecimal amount) {}
@RestController
@RequestMapping("/api/v1/orders")
public class OrderController {
private final OrderService orderService;
public OrderController(OrderService orderService) {
this.orderService = orderService;
}
@PostMapping
public ResponseEntity<OrderResponse> create(@RequestBody CreateOrderRequest request) {
OrderResponse response = orderService.processOrder(request);
return ResponseEntity.ok(response);
}
}Install it in one command
- 01
Go to your project root
The file goes at AGENTS.md, relative to the root.
- 02
Download the file
Run the command on the right. It downloads this preset and writes the file.
- 03
Make sure it gets used
Codex, Cursor, GitHub Copilot's coding agent and other agents read AGENTS.md when they start a task. For Claude Code, add @AGENTS.md to CLAUDE.md.
$ curl -fsSL "https://www.devscratchpad.tech/api/raw/agents-md/spring-boot-4" -o "AGENTS.md"
writes AGENTS.md
AGENTS.md
To write the file from your own code instead, use Read your code or Convert Legacy Rules in the editor above.
More for Spring Boot 4 & Java 25
Questions
- What agents read AGENTS.md?
- OpenAI Codex, Cursor, GitHub Copilot's coding agent, Google Jules and many other agents read AGENTS.md from the repository root. Claude Code reads CLAUDE.md, which can import it with @AGENTS.md.
- How are verification gates enforced?
- AGENTS.md lists the commands that must pass, for example build and lint exiting 0. Agents that read it run them before they finish, but nothing enforces them outside your CI, so run the same checks there.