What problem does it solve? Scattered ad-hoc null checks and if/throw blocks in controllers and services make validation logic hard to test, reuse, and maintain. This Skill externalizes input validation into dedicated, layered components so business code can assume inputs are already valid. ## Core Features & Use Cases - Two validation styles: Jakarta Bean Validation ConstraintValidator for field/parameter-level rules and Spring Validator for object/cross-field rules, both wired into Spring MVC to return HTTP 400. - Layered architecture: Separates annotations (contracts), validators (orchestration), and domain rule beans (pure testable logic with no framework imports). - Testing strategies: Unit tests for rule beans and validators, plus @WebMvcTest component tests verifying the HTTP 400 path. - Use Case: When building a REST endpoint that must reject an invalid entity ID or enforce that a recurring schedule includes an interval, apply this pattern to create a custom constraint annotation, a validator, and a domain rule bean instead of inline checks. ## Quick Start Apply the validation-pattern skill to add a custom Jakarta constraint annotation and validator for the id path variable in my Spring Boot controller.