CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl-labs/springboot-project-structure

Spring Boot project structure — package-by-feature, record DTOs, Flyway migrations, multi-profile config, actuator, proper test structure

84

4.04x
Quality

76%

Does it follow best practices?

Impact

97%

4.04x

Average score across 5 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

springboot-exception-handler.jsonverifiers/

{
  "instruction": "Create a global exception handler with @RestControllerAdvice and consistent error responses",
  "relevant_when": "Agent builds a Spring Boot REST API",
  "context": "Every Spring Boot REST API should have a @RestControllerAdvice class that handles exceptions globally and returns consistent error response objects. This prevents stack trace leaks, provides structured error messages, and centralizes error handling. Handle at minimum: NotFoundException (404), MethodArgumentNotValidException (400 validation), and a catch-all Exception handler (500 with generic message).",
  "sources": [
    {
      "type": "file",
      "filename": "skills/springboot-project-structure/SKILL.md",
      "tile": "tessl-labs/springboot-project-structure@0.2.0"
    }
  ],
  "checklist": [
    {
      "name": "global-handler-exists",
      "rule": "A @RestControllerAdvice class exists that handles exceptions and returns structured error response objects",
      "relevant_when": "Agent creates a Spring Boot REST API with multiple endpoints"
    },
    {
      "name": "consistent-error-shape",
      "rule": "All error responses use a consistent shape (e.g., ErrorResponse record with code and message fields), not ad-hoc ResponseEntity bodies",
      "relevant_when": "Agent handles errors in Spring Boot controllers"
    },
    {
      "name": "no-stack-trace-leaks",
      "rule": "Unexpected exceptions return a generic error message — no stack traces or internal details exposed to the client",
      "relevant_when": "Agent handles unknown/unexpected exceptions in Spring Boot"
    }
  ]
}

tile.json