From spring-boot
Implements Spring Modulith 2.0 in Spring Boot 4 for bounded contexts as modules with package boundaries, @ApplicationModuleListener events, Kafka/AMQP externalization, and Scenario API testing.
npx claudepluginhub joaquimscosta/arkhe-claude-plugins --plugin spring-bootThis skill uses the workspace's default tool permissions.
Implements DDD bounded contexts as application modules with enforced boundaries and event-driven communication.
Guides Domain-Driven Design for complex business systems: defines bounded contexts, structures domain models, designs aggregates/entities/value objects, chooses monolith vs microservices.
Builds Spring Boot 4.x applications following best practices: MVC REST APIs, Data JPA entities/repositories/services, Modulith, Security, Thymeleaf views, Maven config, ArchUnit/REST tests, Docker Compose, Taskfile.
Creates ddd4j (Domain-Driven Design for Java) projects using ddd4j-boot framework. Supports single-module monolith, multi-module monolith, and microservices architectures.
Share bugs, ideas, or general feedback.
Implements DDD bounded contexts as application modules with enforced boundaries and event-driven communication.
| Concept | Description |
|---|---|
| Application Module | Package-based boundary = bounded context |
| Module API | Types in base package (public) |
| Internal | Types in sub-packages (encapsulated) |
| Events | Cross-module communication mechanism |
src/main/java/
├── com.example/
│ └── Application.java ← @SpringBootApplication
├── com.example.order/ ← Module: order
│ ├── OrderService.java ← Public API
│ ├── OrderCreated.java ← Public event
│ ├── package-info.java ← @ApplicationModule config
│ └── internal/ ← Encapsulated
│ ├── OrderRepository.java
│ └── OrderEntity.java
├── com.example.inventory/ ← Module: inventory
│ ├── InventoryService.java
│ └── internal/
└── com.example.shipping/ ← Module: shipping
Types in com.example.order = public API
Types in com.example.order.internal = hidden from other modules
See EXAMPLES.md for complete working examples including:
@Async + @Transactional(REQUIRES_NEW) + @TransactionalEventListener(AFTER_COMMIT)@Externalized annotation for Kafka/AMQP| Need | Skill |
|---|---|
| DDD concepts | domain-driven-design |
| Data layer per module | spring-boot-data-ddd |
| Module event testing | spring-boot-testing |
| REST APIs for modules | spring-boot-web-api |
| Anti-Pattern | Fix |
|---|---|
| Direct bean injection across modules | Use events or expose API |
| Synchronous cross-module calls | Use @ApplicationModuleListener |
| Module dependencies not declared | Add allowedDependencies in @ApplicationModule |
| Missing verification test | Add ApplicationModules.verify() test |
| Internal types in public API | Move to .internal sub-package |
| Events without data | Include all data handlers need |
ApplicationModules.verify() catches boundary violations@ApplicationModuleListener ensures isolation