Skip to main content
skill official · GitHub

quarkus-application-development — GitHub Copilot skill

This skill guides GitHub Copilot through changes in an existing Quarkus project, covering REST, persistence, messaging, security, and operations.

Install into GitHub Copilot · GitHub CLI All methods and platforms ↓
gh skill install github/awesome-copilot quarkus-application-development
Open on GitHub

What quarkus-application-development does

The skill covers Quarkus REST endpoints, validation, exception mapping, OpenAPI, configuration, and ArC CDI. Its guidance also includes Hibernate ORM with Panache, Mutiny, virtual threads, Kafka messaging, OIDC, health checks, metrics, OpenTelemetry, fault tolerance, REST Client, scheduling, and caching.

Before editing, the agent inspects pom.xml or build.gradle for the Quarkus platform version, Java release, and existing extensions. It adds extensions with quarkus extension add <name> or ./mvnw quarkus:add-extension -Dextensions=<name>, then checks the result with ./mvnw quarkus:dev and ./mvnw verify. The scope is an existing application, not project creation.

Ask before adding Kafka, OIDC, or Keycloak: those choices start containers in dev/test and affect deployment needs. Secrets must stay out of application.properties, and drop-and-create is intended for dev/test rather than production schema management.

What it helps with

  • add a REST endpoint to an existing Quarkus app
  • connect a Panache entity to the project database
  • configure Kafka or OIDC without ignoring current extensions
  • expose health, metrics, and tracing data
  • test a feature with @QuarkusTest

Example prompts for the agent

  • Add an order-management REST endpoint to this existing Quarkus project and cover it with @QuarkusTest.
  • Set up Panache for the Order entity after checking the project’s current extensions and Quarkus version.
  • Configure OIDC here, but ask before adding a new infrastructure dependency.

How to install quarkus-application-development

1GitHub CLI

gh skill install github/awesome-copilot quarkus-application-development

2Manually: put the files in place

.github/skills/quarkus-application-development/SKILL.md

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about quarkus-application-development

How do I install quarkus-application-development in GitHub Copilot?

Run gh skill install github/awesome-copilot quarkus-application-development, then use .github/skills/quarkus-application-development/SKILL.md.

What does quarkus-application-development do?

It helps GitHub Copilot implement features in an existing Quarkus application, including REST, configuration, Panache, Kafka, OIDC, and observability.

Does the skill create a new Quarkus project?

No. It targets application code in an existing project; project creation belongs to create-quarkus-project.

Source text

SKILL.md · MIT
---
name: quarkus-application-development
description: 'Write Quarkus application code: REST with Quarkus REST, validation, exception mappers, OpenAPI, configuration, CDI (ArC), Hibernate ORM with Panache, Mutiny and virtual threads, Reactive Messaging with Kafka, OIDC security, health, metrics, OpenTelemetry, fault tolerance, REST Client, scheduler and cache. Use when implementing or changing features in an existing Quarkus project.'
---

# Quarkus Application Development

Scope: application code inside an existing Quarkus project. Project creation is `create-quarkus-project`; Dev Services and tests are `quarkus-dev-services-and-testing`; native and container images are `quarkus-native-and-container`; core JPA mapping and query design can use the optional `java-hibernate-jpa` skill if installed (otherwise see the Hibernate ORM guide, <https://quarkus.io/guides/hibernate-orm>, and the Jakarta Persistence docs).

## Agent rules

1. Detect first: read `pom.xml`/`build.gradle` for `quarkus.platform.version`, the Java release, and the extensions already present. Keep the version; use what the project already uses (for example `quarkus-resteasy*` stays if present).
2. Add extensions with `quarkus extension add <name>` or `./mvnw quarkus:add-extension -Dextensions=<name>`; never guess artifact ids or versions by hand (the platform BOM manages them). List candidates with `quarkus extension list --installable --search=<text>`.
3. Ask the user before adding Kafka, OIDC/Keycloak or any new infrastructure dependency (they start containers in dev/test and change deployment needs).
4. Never use the Spring compatibility extensions (`quarkus-spring-*`) unless the project already does.
5. Verify with dev mode (`./mvnw quarkus:dev`, then `/q/dev-ui`) and `./mvnw verify`; write a `@QuarkusTest` per feature. Do not claim something works without running it.
6. Use `jakarta.*` imports, records for DTOs, thin resources delegating to services.
7. Never hard-code secrets or add credentials to `application.properties`; see `references/config-cdi.md`.

## Quick decisions

| Need | Use | Details |
|---|---|---|
| JSON REST API | `quarkus-rest-jackson`, `quarkus-hibernate-validator`, `quarkus-smallrye-openapi` | `references/rest.md` |
| Typed config | `@ConfigMapping`; `@ConfigProperty` for single values | `references/config-cdi.md` |
| Beans | `@ApplicationScoped` (default), `@Singleton` only for plain stateless holders | `references/config-cdi.md` |
| Database | `quarkus-hibernate-orm-panache` + JDBC driver, repository pattern | `references/persistence.md` |
| Async / blocking | Imperative by default; `@RunOnVirtualThread` or `Uni` when needed | `references/reactive-messaging.md` |
| Messaging | `quarkus-messaging-kafka` (SmallRye Reactive Messaging) | `references/reactive-messaging.md` |
| AuthN/AuthZ | `quarkus-oidc`, `@RolesAllowed` | `references/security-oidc.md` |
| Ops | `quarkus-smallrye-health`, `quarkus-micrometer-registry-prometheus`, `quarkus-opentelemetry`, `quarkus-smallrye-fault-tolerance` | `references/observability-resilience.md` |
| Outbound HTTP, scheduling, caching | `quarkus-rest-client-jackson`, `quarkus-scheduler`, `quarkus-cache` | `references/observability-resilience.md` |

## Pitfalls that cost time

- Quarkus resolves CDI at build time: an unused bean may be removed. Beans only looked up programmatically need `@Unremovable`.
- Do not read or write public fields of a normal-scoped bean (`@ApplicationScoped`) from another bean or test: you hit the client proxy, not the instance (verified: a counter field read through the proxy returned 0). Use methods.
- Do not block on the event loop (`@NonBlocking` methods, `Uni`/`Multi` return types running on I/O threads). Remove any existing `@NonBlocking` from the method (combining it with `@Blocking` or `@RunOnVirtualThread` fails the build), then add `@Blocking` or `@RunOnVirtualThread` (see `references/reactive-messaging.md`).
- Changes to build-time properties need a rebuild; run-time properties can be overridden by env vars (`QUARKUS_DATASOURCE_JDBC_URL`).
- Do not configure URLs for databases/brokers/Keycloak in `%dev`/`%test`: that disables Dev Services.
- `drop-and-create` schema management is for dev/test only; use Flyway or Liquibase for production.

Verified on Quarkus 3.40.1 and 3.27.6 (Java 21 target, Maven) with a scaffolded app and `mvn verify` (15 tests: REST+validation+mapper, OpenAPI, config mapping, Panache on PostgreSQL Dev Services, Kafka Dev Service round trip, Keycloak Dev Service tokens, health, metrics, fault tolerance, cache, scheduler). Re-check names against the project's version.

© github · MIT · github/awesome-copilot

Similar skills

All skills for Backend and APIs →

From the same set949

The whole set →
java-testcontainers Helps write Java integration tests using Testcontainers 2.x and JUnit Jupiter with Docker dependencies. Useful when adding container tests or migrating from version 1.x. 1installs java-debugging A skill that walks the agent through finding a Java bug: reproduce, narrow down, test one hypothesis, attach a debugger. Useful once logs stop explaining anything. 1installs quarkus-native-and-container Walks the agent through building a Quarkus native executable, fixing reflection failures, and producing container images with Kubernetes manifests. ★ 40,451repo stars quarkus-dev-services-and-testing Guides AI agents in writing Quarkus tests, configuring zero-config Dev Services containers, and managing @QuarkusTest suites. ★ 40,451repo stars npm-trusted-publishing Moves npm releases in GitHub Actions from stored tokens to trusted publishing with OIDC. Useful for ENEEDAUTH, E404, and E422 failures. ★ 40,451repo stars java-hibernate-jpa Troubleshoot Hibernate ORM and Jakarta Persistence issues in Java, from N+1 query traps and lazy loading to identifier batching and entity locking. ★ 40,451repo stars java-diagnostics Guides JVM troubleshooting based on active symptoms like memory leaks, CPU spikes, or thread deadlocks. It selects standard JDK utilities while enforcing permission tiers. ★ 40,451repo stars cypress-flake-fixer A skill that audits an existing Cypress suite for the patterns behind intermittent failures and fixes them. Useful before a jump to Cypress 15 or 16. ★ 40,451repo stars

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor