{"id":"6df07fa8-ea4d-4153-9eec-eb8761e96117","shortId":"XtpLMq","kind":"skill","title":"412-frameworks-quarkus-panache","tagline":"Use when you need data access with Quarkus Hibernate ORM Panache — including PanacheEntity / PanacheEntityBase, PanacheRepository, named queries, JPQL, native SQL, DTO projections (project(Class)), pagination (Page.of()), N+1 avoidance (JOIN FETCH), optimistic locking (@Version /","description":"# Hibernate ORM with Panache\n\nApply Panache patterns for Hibernate ORM in Quarkus.\n\n**What is covered in this Skill?**\n\n- Active record (PanacheEntity) vs PanacheRepository — when to use each\n- Parameterized JPQL / Panache queries: positional (?1) and named (:param) — no unsafe concatenation\n- @NamedQuery on entities for reusable, build-time validated queries\n- DTO projections with project(Class) to avoid exposing managed entities\n- Pagination with Page.of(pageIndex, pageSize) and query.count()\n- N+1 avoidance with JOIN FETCH in JPQL queries\n- Optimistic locking with @Version and handling OptimisticLockException\n- @Transactional application services\n- @TestTransaction for automatic rollback in @QuarkusTest tests\n- Mapping entities vs exposing DTOs at REST boundaries\n- Native queries via Hibernate when you want controlled SQL in the same transaction; pairing with `@411` for JDBC when bypassing Hibernate at the boundary\n\n**Scope:** Apply recommendations based on the reference rules and good/bad code examples.\n\n## Constraints\n\nCompile before persistence changes; verify after.\n\n- **MANDATORY**: Run `./mvnw compile` or `mvn compile` before applying any change\n- **PREREQUISITE**: Project must compile before applying Panache improvements\n- **SAFETY**: If compilation fails, stop immediately\n- **BLOCKING CONDITION**: Compilation errors must be resolved by the user before proceeding\n- **VERIFY**: Run `./mvnw clean verify` or `mvn clean verify` after applying improvements\n- **BEFORE APPLYING**: Read the reference for detailed rules and examples\n\n## When to use this skill\n\n- Review Panache entities or repositories in Quarkus\n- Improve Hibernate ORM data access with Panache\n- Add DTO projections, JOIN FETCH, pagination, or optimistic locking to Panache queries\n- Fix N+1 query problems or add @Version concurrency control in Quarkus Panache\n\n## Workflow\n\n1. **Read reference and assess project context**\n\nRead `references/412-frameworks-quarkus-panache.md` and inspect the current project setup before proposing changes.\n\n2. **Gather scope and decide target improvements**\n\nIdentify requested outcomes, constraints, and the minimum safe set of changes to apply.\n\n3. **Apply framework-aligned changes**\n\nImplement or refactor configuration/code following the reference patterns and project conventions.\n\n4. **Run verification and report results**\n\nExecute appropriate build/tests and summarize what changed, what was verified, and any follow-up actions.\n\n## Reference\n\nFor detailed guidance, examples, and constraints, see [references/412-frameworks-quarkus-panache.md](references/412-frameworks-quarkus-panache.md).","tags":["412","frameworks","quarkus","panache","cursor","rules","java","jabrena","agent-skills","ai-skills","claude","claude-code"],"capabilities":["skill","source-jabrena","skill-412-frameworks-quarkus-panache","topic-agent-skills","topic-ai-skills","topic-claude","topic-claude-code","topic-claude-code-skills","topic-claude-code-subagents","topic-claude-skills","topic-cursor-agent","topic-cursor-ai","topic-cursor-skills","topic-cursorai","topic-github-copilot"],"categories":["cursor-rules-java"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/jabrena/cursor-rules-java/412-frameworks-quarkus-panache","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add jabrena/cursor-rules-java","source_repo":"https://github.com/jabrena/cursor-rules-java","install_from":"skills.sh"}},"qualityScore":"0.631","qualityRationale":"deterministic score 0.63 from registry signals: · indexed on github topic:agent-skills · 362 github stars · SKILL.md body (2,632 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-26T12:53:38.184Z","embedding":null,"createdAt":"2026-04-18T22:02:20.265Z","updatedAt":"2026-04-26T12:53:38.184Z","lastSeenAt":"2026-04-26T12:53:38.184Z","tsv":"'+1':33,107,275 '/mvnw':185,222 '1':72,287 '2':305 '3':325 '4':342 '411':155 '412':1 'access':11,258 'action':363 'activ':58 'add':261,279 'align':329 'appli':44,165,191,199,230,233,324,326 'applic':123 'appropri':349 'assess':291 'automat':127 'avoid':34,95,108 'base':167 'block':208 'boundari':139,163 'build':85 'build-tim':84 'build/tests':350 'bypass':159 'chang':180,193,304,322,330,354 'class':29,93 'clean':223,227 'code':174 'compil':177,186,189,197,204,210 'concaten':78 'concurr':281 'condit':209 'configuration/code':334 'constraint':176,315,370 'context':293 'control':147,282 'convent':341 'cover':54 'current':299 'data':10,257 'decid':309 'detail':238,366 'dto':26,89,262 'dtos':136 'entiti':81,98,133,249 'error':211 'exampl':175,241,368 'execut':348 'expos':96,135 'fail':205 'fetch':36,111,265 'fix':273 'follow':335,361 'follow-up':360 'framework':3,328 'framework-align':327 'frameworks-quarkus-panach':2 'gather':306 'good/bad':173 'guidanc':367 'handl':120 'hibern':14,40,48,143,160,255 'identifi':312 'immedi':207 'implement':331 'improv':201,231,254,311 'includ':17 'inspect':297 'jdbc':157 'join':35,110,264 'jpql':23,68,113 'lock':38,116,269 'manag':97 'mandatori':183 'map':132 'minimum':318 'must':196,212 'mvn':188,226 'n':32,106,274 'name':21,74 'namedqueri':79 'nativ':24,140 'need':9 'optimist':37,115,268 'optimisticlockexcept':121 'orm':15,41,49,256 'outcom':314 'page.of':31,101 'pageindex':102 'pages':103 'pagin':30,99,266 'pair':153 'panach':5,16,43,45,69,200,248,260,271,285 'panacheent':18,60 'panacheentitybas':19 'panacherepositori':20,62 'param':75 'parameter':67 'pattern':46,338 'persist':179 'posit':71 'prerequisit':194 'problem':277 'proceed':219 'project':27,28,90,92,195,263,292,300,340 'propos':303 'quarkus':4,13,51,253,284 'quarkustest':130 'queri':22,70,88,114,141,272,276 'query.count':105 'read':234,288,294 'recommend':166 'record':59 'refactor':333 'refer':170,236,289,337,364 'references/412-frameworks-quarkus-panache.md':295,372,373 'report':346 'repositori':251 'request':313 'resolv':214 'rest':138 'result':347 'reusabl':83 'review':247 'rollback':128 'rule':171,239 'run':184,221,343 'safe':319 'safeti':202 'scope':164,307 'see':371 'servic':124 'set':320 'setup':301 'skill':57,246 'skill-412-frameworks-quarkus-panache' 'source-jabrena' 'sql':25,148 'stop':206 'summar':352 'target':310 'test':131 'testtransact':125 'time':86 'topic-agent-skills' 'topic-ai-skills' 'topic-claude' 'topic-claude-code' 'topic-claude-code-skills' 'topic-claude-code-subagents' 'topic-claude-skills' 'topic-cursor-agent' 'topic-cursor-ai' 'topic-cursor-skills' 'topic-cursorai' 'topic-github-copilot' 'transact':122,152 'unsaf':77 'use':6,65,244 'user':217 'valid':87 'verif':344 'verifi':181,220,224,228,357 'version':39,118,280 'via':142 'vs':61,134 'want':146 'workflow':286","prices":[{"id":"1bae89d3-89e8-445b-984f-f5e991cd0516","listingId":"6df07fa8-ea4d-4153-9eec-eb8761e96117","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"jabrena","category":"cursor-rules-java","install_from":"skills.sh"},"createdAt":"2026-04-18T22:02:20.265Z"}],"sources":[{"listingId":"6df07fa8-ea4d-4153-9eec-eb8761e96117","source":"github","sourceId":"jabrena/cursor-rules-java/412-frameworks-quarkus-panache","sourceUrl":"https://github.com/jabrena/cursor-rules-java/tree/main/skills/412-frameworks-quarkus-panache","isPrimary":false,"firstSeenAt":"2026-04-18T22:02:20.265Z","lastSeenAt":"2026-04-26T12:53:38.184Z"}],"details":{"listingId":"6df07fa8-ea4d-4153-9eec-eb8761e96117","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"jabrena","slug":"412-frameworks-quarkus-panache","github":{"repo":"jabrena/cursor-rules-java","stars":362,"topics":["agent-skills","ai-skills","claude","claude-code","claude-code-skills","claude-code-subagents","claude-skills","cursor-agent","cursor-ai","cursor-skills","cursorai","github-copilot","intellij-idea","java","prompting","system-prompts"],"license":"apache-2.0","html_url":"https://github.com/jabrena/cursor-rules-java","pushed_at":"2026-04-26T12:50:01Z","description":"A curated and opinionated collection of Skills and Agents to be used in modern SDLC workflows for Java Enterprise development with your favorite AI Agent harness.","skill_md_sha":"036217aa9c95626ab54b91783e91f12b9bd38db6","skill_md_path":"skills/412-frameworks-quarkus-panache/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/jabrena/cursor-rules-java/tree/main/skills/412-frameworks-quarkus-panache"},"layout":"multi","source":"github","category":"cursor-rules-java","frontmatter":{"name":"412-frameworks-quarkus-panache","license":"Apache-2.0","description":"Use when you need data access with Quarkus Hibernate ORM Panache — including PanacheEntity / PanacheEntityBase, PanacheRepository, named queries, JPQL, native SQL, DTO projections (project(Class)), pagination (Page.of()), N+1 avoidance (JOIN FETCH), optimistic locking (@Version / OptimisticLockException), @NamedQuery for validated reusable queries, transactions, @TestTransaction for test isolation, and immutable-friendly patterns. This is the Quarkus analogue to Spring Data for relational persistence. This should trigger for requests such as Review Panache entities or repositories in Quarkus; Improve Hibernate ORM data access with Panache; Add DTO projections, JOIN FETCH, pagination, or optimistic locking to Panache queries; Fix N+1 query problems or add @Version concurrency control in Quarkus Panache. Part of cursor-rules-java project"},"skills_sh_url":"https://skills.sh/jabrena/cursor-rules-java/412-frameworks-quarkus-panache"},"updatedAt":"2026-04-26T12:53:38.184Z"}}