
Quarkus Patterns
Structure Quarkus 3.x LTS services with REST layers, CDI, Panache, Camel messaging, and async patterns for cloud-native APIs.
Overview
quarkus-patterns is an agent skill for the Build phase that applies Quarkus 3.x LTS layering, REST APIs, CDI services, Panache data access, and Camel messaging patterns for event-driven Java backends.
Install
npx skills add https://github.com/affaan-m/everything-claude-code --skill quarkus-patternsWhat is this skill?
- RESTEasy Reactive / JAX-RS resource → service → repository layering
- Apache Camel and RabbitMQ for event-driven order and fulfillment flows
- Hibernate Panache, @Transactional services, and validation pipelines
- YAML profiles for dev, staging, and production
- CompletableFuture async, GraalVM native compilation, and structured LogContext logging
- Quarkus 3.x LTS scope
- Resource → service → repository layering with Camel messaging
Adoption & trust: 1.1k installs on skills.sh; 210k GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
Your agent produces inconsistent Quarkus services without clear boundaries between resources, transactional services, repositories, and Camel-driven side effects.
Who is it for?
Indie builders shipping JVM microservices on Quarkus with REST plus RabbitMQ/Camel and Panache persistence.
Skip if: Greenfield Node or Python APIs, legacy Java EE without Quarkus, or frontend-only work with no backend module.
When should I use this skill?
Building REST APIs with JAX-RS or RESTEasy Reactive, Panache data access, Apache Camel with RabbitMQ, validation, profiles, async CompletableFuture flows, or GraalVM native builds.
What do I get? / Deliverables
You get repeatable Quarkus 3.x structures for APIs, messaging, validation, profiles, and async processing aligned with cloud-native deployment.
- Layered REST and service classes
- Camel route and publisher integration patterns
- Profile-based configuration and logging setup
Recommended Skills
Journey fit
Backend architecture and API patterns land in Build when you are implementing services, not when you are only validating an idea. Quarkus resource–service–repository layering, transactions, and Camel routes are core backend implementation work.
How it compares
Opinionated Quarkus 3.x architecture skill—not a generic Spring Boot cheat sheet or a CI deploy skill.
Common Questions / FAQ
Who is quarkus-patterns for?
Developers using Claude Code, Cursor, or Codex to build Quarkus 3.x backends with REST, CDI, Panache, and Camel-based messaging.
When should I use quarkus-patterns?
During Build when defining JAX-RS resources, transactional services, Panache repositories, Camel routes, validation, exception mappers, pagination, or dev/staging/prod YAML profiles.
Is quarkus-patterns safe to install?
It is procedural documentation and code patterns only; check the Security Audits panel on this page and follow your org rules for dependencies and broker credentials.
SKILL.md
READMESKILL.md - Quarkus Patterns
# Quarkus Development Patterns Quarkus 3.x architecture and API patterns for cloud-native, event-driven services with Apache Camel. ## When to Activate - Building REST APIs with JAX-RS or RESTEasy Reactive - Structuring resource → service → repository layers - Implementing event-driven patterns with Apache Camel and RabbitMQ - Configuring Hibernate Panache, caching, or reactive streams - Adding validation, exception mapping, or pagination - Setting up profiles for dev/staging/production environments (YAML config) - Custom logging with LogContext and Logback/Logstash encoder - Working with CompletableFuture for async operations - Implementing conditional flow processing - Working with GraalVM native compilation ## Service Layer with Multiple Dependencies ```java @Slf4j @ApplicationScoped @RequiredArgsConstructor public class OrderProcessingService { private final OrderValidator orderValidator; private final EventService eventService; private final OrderRepository orderRepository; private final FulfillmentPublisher fulfillmentPublisher; private final AuditPublisher auditPublisher; @Transactional public OrderReceipt process(CreateOrderCommand command) { ValidationResult validation = orderValidator.validate(command); if (!validation.valid()) { eventService.createErrorEvent(command, "ORDER_REJECTED", validation.message()); throw new WebApplicationException(validation.message(), Response.Status.BAD_REQUEST); } Order order = Order.from(command); orderRepository.persist(order); OrderReceipt receipt = OrderReceipt.from(order); fulfillmentPublisher.publishAsync(receipt); auditPublisher.publish("ORDER_ACCEPTED", receipt); eventService.createSuccessEvent(receipt, "ORDER_ACCEPTED"); log.info("Processed order {}", order.id); return receipt; } } ``` **Key Patterns:** - `@RequiredArgsConstructor` for constructor injection via Lombok - `@Slf4j` for Logback logging - `@Transactional` on service methods that write through Panache or repositories - Validate input before persistence or message publication - Event tracking for success/error scenarios - Async Camel message publishing ## Custom Logging Context Pattern (Logback) ```java @ApplicationScoped public class ProcessingService { public void processDocument(Document doc) { LogContext logContext = CustomLog.getCurrentContext(); try (SafeAutoCloseable ignored = CustomLog.startScope(logContext)) { // Add context to all log statements logContext.put("documentId", doc.getId().toString()); logContext.put("documentType", doc.getType()); logContext.put("userId", SecurityContext.getUserId()); log.info("Starting document processing"); // All logs within this scope inherit the context processInternal(doc); log.info("Document processing completed"); } catch (Exception e) { log.error("Document processing failed", e); throw e; } } } ``` **Logback Configuration (logback.xml):** ```xml <configuration> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="net.logstash.logback.encoder.LogstashEncoder"> <includeContext>true</includeContext> <includeMdc>true</includeMdc> </encoder> </appender> <logger name="com.example" level="INFO"/> <root level="WARN"> <appender-ref ref="CONSOLE"/> </root> </configuration> ``` ## Event Service Pattern ```java @Slf4j @ApplicationScoped @RequiredArgsConstructor public class EventService { priv