Spring Boot project structure — package-by-feature, record DTOs, Flyway migrations, multi-profile config, actuator, proper test structure
84
76%
Does it follow best practices?
Impact
97%
4.04xAverage score across 5 eval scenarios
Passed
No known issues
{
"instruction": "Organize Spring Boot packages by feature domain, not by technical layer",
"relevant_when": "Agent creates a Spring Boot application with multiple domain concepts (e.g., orders, products, users)",
"context": "Package-by-feature groups each domain concept (order/, product/, user/) into its own package containing controller, service, repository, entity, and DTOs together. This is preferred over package-by-layer (controller/, service/, repository/ at the top level) because it keeps related code together, enables package-private visibility for encapsulation, and makes navigation intuitive. Shared cross-cutting concerns live in config/, shared/, or infrastructure/ packages.",
"sources": [
{
"type": "file",
"filename": "skills/springboot-project-structure/SKILL.md",
"tile": "tessl-labs/springboot-project-structure@0.2.0"
}
],
"checklist": [
{
"name": "feature-packages-exist",
"rule": "Domain concepts are organized into feature packages (e.g., order/, product/) rather than layer packages (e.g., controller/, service/, repository/ at the top level). Each feature package contains its own controller, service, and repository.",
"relevant_when": "Agent creates a Spring Boot application with two or more domain concepts"
},
{
"name": "shared-config-separate",
"rule": "Cross-cutting configuration classes are in a dedicated config/ package, not scattered across feature packages",
"relevant_when": "Agent creates @Configuration classes in a Spring Boot application"
}
]
}evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
skills
springboot-project-structure
verifiers