Use this skill whenever a user wants to create, scaffold, bootstrap, initialize, generate, or set up a new Quarkus application or microservice. Also trigger when a user asks how to add extensions to an existing Quarkus project, upgrade a Quarkus version, or maintain a Quarkus app's dependencies. This skill ensures all projects are generated using the latest official Quarkus platform version, proper tooling (CLI preferred, Maven plugin as fallback), and official platform or Quarkiverse extensions only. Trigger even for casual phrasing like "spin up a Quarkus app", "start a new Quarkus service", "create a Quarkus REST API", or "add a Quarkus extension".
75
93%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
This skill governs how to create and maintain Quarkus applications. Always follow the decision tree and conventions below.
Before generating any project, always verify the current latest stable Quarkus release. The version baked into this skill may be stale. Use web search or the Maven Central / GitHub releases to confirm.
3.32.x)3.27.x and 3.20.x (use LTS only if user explicitly requests long-term stability)Use the latest stable community version unless told otherwise.
Before generating, collect:
| Parameter | Default | Notes |
|---|---|---|
groupId | io.arrogantprogrammer | Always ask if not provided |
artifactId | (required) | The app name / Maven artifact ID |
version | 1.0.0-SNAPSHOT | Standard Maven SNAPSHOT for new apps |
extensions | (required) | See extension guidance below |
build tool | Maven | Ask if user prefers Gradle |
Java version | 25 | Always ask — suggest 25 as the default |
If the user hasn't specified a Java version, ask which version they'd like to use and suggest 25 as the default.
If the user hasn't specified extensions, ask or propose sensible defaults based on their described use case.
Always prefer the Quarkus CLI. Fall back to the Maven plugin only if:
quarkus CLI is not installed, ORquarkus create app {groupId}:{artifactId}:{version} \
--no-code \
-x={extension1},{extension2},{extension3}Key CLI flags:
-x / --extensions — comma-separated extension list (short names, no spaces after commas)--no-code — skip generated example code (omit if user wants starter code)--gradle — switch to Gradle build (default is Maven)-S io.quarkus.platform:3.32 — pin to a specific stream if neededInstallation note (include if user might not have CLI):
# Via SDKMAN (recommended)
sdk install quarkus
# Via JBang
curl -Ls https://sh.jbang.dev | bash -s - trust add https://repo1.maven.org/maven2/io/quarkus/quarkus-cli/
curl -Ls https://sh.jbang.dev | bash -s - app install --fresh --force quarkus@quarkusio
# Via Homebrew (macOS/Linux)
brew install quarkusio/tap/quarkusUse the io.quarkus.platform group (NOT io.quarkus) — this ensures the full Quarkus Platform BOM is used,
which includes Quarkiverse extensions and correct dependency alignment.
mvn io.quarkus.platform:quarkus-maven-plugin:{QUARKUS_VERSION}:create \
-DprojectGroupId={groupId} \
-DprojectArtifactId={artifactId} \
-DprojectVersion={version} \
-Dextensions='{extension1},{extension2},{extension3}' \
-DnoCodeKey parameters:
-DnoCode — omit generated example classes-DclassName — optional REST resource class name-Dpath — optional REST path (used with -DclassName)| Source | When to use | How to reference |
|---|---|---|
| Quarkus Platform | Core Quarkus features | Short name (e.g., rest-jackson) |
| Quarkiverse | Community/ecosystem features | Short name or io.quarkiverse.*:quarkus-* |
| Never raw | Don't add io.quarkus:quarkus-* manually | Use CLI/Maven plugin to manage |
Short names work in both CLI (-x=rest-jackson) and Maven plugin (-Dextensions='rest-jackson').
For Quarkiverse extensions (not in core platform), use the full artifact coordinates:
# CLI — Quarkiverse extension
quarkus ext add io.quarkiverse.langchain4j:quarkus-langchain4j-openai
# Maven plugin — Quarkiverse extension
-Dextensions='io.quarkiverse.langchain4j:quarkus-langchain4j-openai'See references/extensions.md for a curated list of commonly used extensions by category.
After generating, always remind the user:
./mvnw quarkus:dev (Maven) or quarkus dev (CLI)http://localhost:8080/q/dev — useful for extension managementquarkus ext add {extension} # CLI
./mvnw quarkus:add-extension -Dextensions='{extension}' # Mavensrc/main/resources/application.properties# CLI (preferred)
quarkus update
# Maven plugin
./mvnw quarkus:updateAlways check the migration guide at https://quarkus.io/guides/update-quarkus before upgrading.
quarkus ext add rest-jackson hibernate-orm-panache jdbc-postgresqlquarkus ext lsquarkus ext ls -i # installable from current platform
quarkus ext ls -i -s=ai # search by keywordquarkus create app io.arrogantprogrammer:my-service:1.0.0-SNAPSHOT \
--no-code \
-x=rest-jackson,hibernate-orm-panache,jdbc-postgresqlmvn io.quarkus.platform:quarkus-maven-plugin:3.32.3:create \
-DprojectGroupId=io.arrogantprogrammer \
-DprojectArtifactId=my-service \
-DprojectVersion=1.0.0-SNAPSHOT \
-Dextensions='rest-jackson,hibernate-orm-panache,jdbc-postgresql' \
-DnoCodequarkus create app io.arrogantprogrammer:ai-service:1.0.0-SNAPSHOT \
--no-code \
-x=rest-jackson,io.quarkiverse.langchain4j:quarkus-langchain4j-openaiquarkus create app io.arrogantprogrammer:event-service:1.0.0-SNAPSHOT \
--no-code \
-x=messaging-kafka,rest-jackson<dependency> blocks for io.quarkus:quarkus-* artifacts — always go through the
extension management tooling to ensure BOM alignmentio.quarkus:quarkus-maven-plugin in the create command — always use
io.quarkus.platform:quarkus-maven-plugin (the platform plugin resolves the full BOM)references/rhbq.md for RHBQ-specific guidance393c86e
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.