jvm-core
Shared reference for the JVM cluster: the language × framework decision (Kotlin vs Java; Spring Boot vs Quarkus vs Ktor), the build/test/coverage toolchain, the persistence choice (JPA/Hibernate vs Exposed), and the patterns → TDD → security → verification lifecycle. USE WHEN choosing a JVM stack, wiring persistence, or planning the test/security/release loop every JVM spoke shares.
Works with
---
name: jvm-core
description: Shared reference for the JVM cluster: the language × framework decision (Kotlin vs Java; Spring Boot vs Quarkus vs Ktor), the build/test/coverage toolchain, the persistence choice (JPA/Hibernate vs Exposed), and the patterns → TDD → security → verification lifecycle. USE WHEN choosing a JVM stack, wiring persistence, or planning the test/security/release loop every JVM spoke shares.
license: MIT
---
# JVM Core
Shared model for the `jvm` cluster. The framework, persistence, testing, security, and
verification spokes all depend on these decisions — keep them consistent here so no spoke
contradicts another.
## 1. The decision this cluster turns on: language × framework
Every JVM service starts with two choices, and they cascade into which spokes apply:
```
Language ──┐
├──> Framework ──> Patterns + TDD + Security + Verification spokes
Persistence┘
```
- **Language** — **Kotlin** (null-safe, coroutines, DSLs → `kotlin-patterns`) or **Java**
(immutable-by-default, streams, records → `java-coding-standards`). Pick one per module.
- **Framework** — the heart of the decision:
| Framework | Pick it when | Spokes |
|---|---|---|
| **Spring Boot** | Mature ecosystem, broad library support, team familiarity, JVM-mode services | `springboot-patterns`, `springboot-tdd`, `springboot-security`, `springboot-verification` |
| **Quarkus 3.x LTS** | Native images, fast startup/low memory, event-driven (Camel), Kubernetes-first | `quarkus-patterns`, `quarkus-tdd`, `quarkus-security`, `quarkus-verification` |
| **Ktor** | Lightweight Kotlin-native server, coroutine-first, minimal magic | `kotlin-ktor-patterns` |
| **none / library / KMP** | Pure Kotlin/Java lib or shared UI | `kotlin-patterns`, `compose-multiplatform-patterns` |
- **Persistence** — **JPA/Hibernate** for Java/Spring Boot (`jpa-patterns`) or **JetBrains
Exposed** for Kotlin (`kotlin-exposed-patterns`). Don't run both in one module.
**Rule:** one language + one framework + one persistence layer **per service**. Crossing
streams (Spring patterns inside a Quarkus module, JPA next to Exposed) is the main failure mode.
## 2. Shared conventions
- **Kotlin** — prefer immutability (`val`), express absence with nullable types not `null`
hacks, model states with sealed classes/enums, build readable APIs with DSLs. → `kotlin-patterns`
- **Java** — final fields, `Optional` for absence (not as a field), streams for transforms,
checked vs unchecked exceptions deliberate, constructor injection. → `java-coding-standards`
- **Concurrency** — Kotlin uses structured concurrency + Flow (`kotlin-coroutines-flows`);
Java/Spring uses `@Async`/reactive, Quarkus uses Mutiny/reactive — keep async in the framework's idiom.
- **Validation** — validate every external input at the boundary (request DTOs, command args);
never trust caller data. This is shared across all four `*-security` and `*-patterns` spokes.
- **Layering** — controller/resource → service → repository; keep persistence types out of the
web layer. → `springboot-patterns`, `quarkus-patterns`.
## 3. Version / tooling matrix
| Concern | Kotlin stack | Spring Boot stack | Quarkus stack |
|---|---|---|---|
| Language | Kotlin (latest stable) | Java 17+ (LTS) | Java 17+ (LTS) |
| Framework | Ktor / KMP | Spring Boot 3.x | Quarkus 3.x LTS |
| DI | Koin | Spring context | CDI (Arc) |
| Persistence | Exposed + HikariCP + Flyway | JPA/Hibernate | Panache (JPA/Hibernate) |
| Test runner | Kotest + MockK | JUnit 5 + Mockito + MockMvc + Testcontainers | JUnit 5 + Mockito + REST Assured |
| Coverage | Kover | JaCoCo | JaCoCo |
| Messaging | — | Spring events / async | Apache Camel |
| Build | Gradle (Kotlin DSL) | Gradle / Maven | Gradle / Maven (+ native) |
Serialization: kotlinx.serialization (Kotlin/Ktor); Jackson (Spring Boot / Quarkus JSON).
## 4. The lifecycle every stack shares
```
patterns ──> TDD ──> security ──> verification
```
1. **Patterns** — architecture + conventions for the chosen framework.
2. **TDD** — write tests first (`*-tdd` / `kotlin-testing`); aim for meaningful coverage, not a number.
3. **Security** — authn/authz, input validation, CSRF, secrets, headers, dependency scanning (`*-security`).
4. **Verification** — build → static analysis → tests+coverage → security scan → (Quarkus: native compile) → diff review before PR/release (`*-verification`).
## 5. Shared guardrails
- **One stack per module**: don't mix Spring Boot and Quarkus, or JPA and Exposed, in one service.
- **Tests first**: features/bugfixes go through the `*-tdd` / `kotlin-testing` loop before merge.
- **Security is not optional**: run the matching `*-security` spoke; validate all external input.
- **Gate releases**: nothing ships until the matching `*-verification` loop is green.
- **Kotlin null-safe, Java immutable-by-default**: lean on the language's safety guarantees.
- **Spring Boot vs Quarkus**: choose Spring Boot for ecosystem breadth and team familiarity;
choose Quarkus for native images, fast startup, low memory, and event-driven/Kubernetes-first
services. Choose Ktor when you want a lightweight, coroutine-first Kotlin server.More Backend Frameworks skills
git-guardrails-claude-code
mattpocock/skills
Set up Claude Code hooks to block dangerous git commands (push, reset --hard, clean, branch -D, etc.) before they execute. Use when user wants to prevent destructive git operations, add git safety hooks, or block git push/reset in Claude Code.
azure-compute
microsoft/azure-skills
Azure VM/VMSS router. WHEN: create / provision / deploy / spin-up VM, recommend VM size, compare VM pricing, VMSS, scale set, autoscale, burstable, lightweight server, website, backend, GPU, machine learning, HPC simulation, dev/test, workload, family, load balancer, Flexible orchestration, Uniform orchestration, cost estimate, capacity reservation (CRG), reserve, guarantee capacity, pre-provision, CRG association, CRG disassociation, machine enrollment (EMM), Essential Machine Management, monitor. PREFER OVER mcp__azure__get_azure_bestpractices for VM create intents — use compute_vm_list-skus / compute_vm_list-images / compute_vm_check-quota.
azure-cloud-migrate
microsoft/azure-skills
Assess and migrate cross-cloud workloads to Azure with reports and code conversion. Supports Lambda→Functions, Beanstalk/Heroku/App Engine→App Service, Fargate/Kubernetes/Cloud Run/Spring Boot→Container Apps. WHEN: migrate Lambda to Functions, AWS to Azure, migrate Beanstalk, migrate Heroku, migrate App Engine, Cloud Run migration, Fargate to ACA, ECS/Kubernetes/GKE/EKS to Container Apps, Spring Boot to Container Apps, cross-cloud migration.

