swe-programming-java
Java, Spring Framework, and Spring Boot coding standards from authoritative docs/explanation/ documentation
How do I install this agent skill?
npx skills add https://smithery.ai --skill swe-programming-javaIs this agent skill safe to install?
No partner audit is available yet. Read the source before installing.
What does this agent skill do?
Java Stack Coding Standards
Purpose
Progressive disclosure of Java stack coding standards for agents writing Java code.
Coverage: Java language → Spring Framework → Spring Boot (full technology stack)
Usage: Auto-loaded for agents when writing any Java/Spring code. Provides quick reference to idioms, best practices, and antipatterns across the full stack.
Java Language Standards
Authoritative Source: docs/explanation/software-engineering/programming-languages/java/README.md
Naming Conventions
Classes and Interfaces: PascalCase
- Classes:
UserAccount,PaymentProcessor - Interfaces:
Comparable,Serializable(adjective form preferred) - Abstract classes:
AbstractProcessor,BaseEntity
Methods and Variables: camelCase
- Methods:
calculateTotal(),findUserById() - Variables:
userName,totalAmount - Constants:
UPPER_SNAKE_CASE(MAX_RETRIES,DEFAULT_TIMEOUT)
Packages: lowercase with dots
com.oseplatform.domain.accountcom.oseplatform.infrastructure.persistence
Modern Java Features (Java 17+)
Records: Use for immutable data carriers
public record UserAccount(String id, String name, LocalDateTime createdAt) {}
Sealed Classes: Use for closed type hierarchies
public sealed interface Payment permits CreditCard, BankTransfer {}
Pattern Matching: Use for type-safe casts
if (obj instanceof String s) {
return s.toUpperCase();
}
Text Blocks: Use for multi-line strings
String json = """
{
"name": "value"
}
""";
Error Handling
Checked Exceptions: For recoverable errors
- Use for business logic failures
- Document with
@throwsjavadoc
Unchecked Exceptions: For programming errors
- Use for validation failures, illegal state
- Extend
RuntimeException
Try-with-resources: Always use for AutoCloseable
try (var reader = Files.newBufferedReader(path)) {
// Use reader
}
Testing Standards
JUnit 5: Primary testing framework
@Testfor test methods@BeforeEach,@AfterEachfor setup/teardown@ParameterizedTestfor data-driven tests
AssertJ: Fluent assertions
assertThat(result)
.isNotNull()
.hasSize(3)
.containsExactly("a", "b", "c");
Mockito: Mocking framework
@Mock
private UserRepository repository;
Security Practices
Input Validation: Always validate external input
- Use Bean Validation annotations (
@NotNull,@Size) - Validate before processing
Sensitive Data: Never log secrets
- Use
SensitiveDataFilterfor logging - Clear sensitive data after use
SQL Injection: Use prepared statements
var stmt = connection.prepareStatement("SELECT * FROM users WHERE id = ?");
stmt.setString(1, userId);
Java Comprehensive Documentation
Spring Framework Standards
Authoritative Source: docs/explanation/software-engineering/platform-web/tools/jvm-spring/README.md
Foundation: Builds on Java language standards above.
IoC Container and ApplicationContext
- Use
ApplicationContextfor production code - Prefer annotation-based configuration (
@Configuration,@Bean) - Use component scanning with explicit base packages
Dependency Injection Patterns
- Constructor injection (preferred): Use for required dependencies
- Field injection (avoid): Creates testing difficulties
- Setter injection: Use for optional dependencies
Bean Lifecycle and Scopes
- Singleton (default): Stateless services
- Prototype: Stateful objects
- Request/Session: Web-scoped beans
- Use
@PostConstructand@PreDestroyfor lifecycle callbacks
AOP Patterns
- Use
@Aspectfor cross-cutting concerns - Prefer declarative transactions (
@Transactional) - Apply aspects for logging, security, caching
Data Access
- Use
JdbcTemplatefor SQL operations - Prefer Spring Data JPA repositories
- Apply transaction management at service layer
- Use
@Transactionalfor declarative transactions
Web MVC
- Use
@RestControllerfor REST APIs - Apply
@RequestMappingfor endpoint routing - Use
@Validfor request validation - Implement
@ControllerAdvicefor global exception handling
Spring Framework Comprehensive Documentation
Core Patterns:
Configuration & Architecture:
Data & Web:
Quality & Operations:
Domain & Design:
Spring Boot Standards
Authoritative Source: docs/explanation/software-engineering/platform-web/tools/jvm-spring-boot/README.md
Foundation: Builds on Spring Framework standards above.
Auto-configuration and Starters
- Use Spring Boot starters for dependency management
- Customize auto-configuration with
application.ymlproperties - Exclude unnecessary auto-configurations explicitly
- Document custom auto-configurations
Configuration Properties
- Use
@ConfigurationPropertiesfor type-safe configuration - Group related properties in dedicated classes
- Validate configuration with Bean Validation annotations
- Use profiles for environment-specific configuration
REST API Development
- Use
@RestControllerfor REST endpoints - Apply
@Validfor request validation - Implement global exception handling with
@ControllerAdvice - Use HATEOAS for hypermedia-driven APIs
- Document APIs with OpenAPI/Swagger
Spring Boot Data Access
- Use Spring Data JPA repositories
- Prefer derived query methods over
@Query - Apply
@Transactionalat service layer - Use
@DataJpaTestfor repository testing
Spring Boot Security
- Use Spring Security with OAuth2/JWT
- Implement method-level security with
@PreAuthorize - Configure CORS for API access
- Use
@AuthenticationPrincipalfor user context
Spring Boot Testing
- Use
@SpringBootTestfor integration tests - Apply test slices:
@WebMvcTest,@DataJpaTest,@JsonTest - Use TestContainers for external dependencies
- Mock external services with
@MockBean
Observability
- Enable Spring Boot Actuator for monitoring
- Expose custom metrics with Micrometer
- Implement custom health indicators
- Use structured logging with Logback
Spring Boot Comprehensive Documentation
Core Patterns:
Configuration & Architecture:
Data & Web:
Quality & Operations:
Domain & Design:
Related Skills
- docs-applying-content-quality
- repo-practicing-trunk-based-development
How can the creator link this skill?
Add the canonical catalog link to the repository README so users can inspect current installs and available audits. The publishing guide covers the complete discovery path.
<a href="https://skillzs.dev/skills/smithery.ai/swe-programming-java">View swe-programming-java on skillZs</a>