CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

jpa-patterns

JPA/Hibernate patterns and common pitfalls (N+1, lazy loading, transactions, queries). Use when user has JPA performance issues, LazyInitializationException, or asks about entity relationships and fetching strategies.

Quality

80%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

Fix and improve this skill with Tessl

tessl review fix ./skills/jpa-patterns/SKILL.md
SKILL.md
Quality
Evals
Security

Quality

Content

65%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

An excellent actionable reference: complete, executable Java/JPQL/YAML examples with curated, genuinely non-obvious pitfalls (constant hashCode, OSIV write path, version-window semantics). Its weaknesses are structural: a 610-line monolithic body with no reference files, some sections re-teaching JPA basics Claude already knows, and missing validation checkpoints for risky operations like bulk updates.

Suggestions

Split detail sections (Entity Design, Modern Hibernate Features, Query Best Practices) into reference files under references/ and keep SKILL.md as the overview plus Quick Reference/Decision tables; also fix the dangling "(see `conventions`)" reference so it points to a real file or skill.

Trim sections that restate basics — FetchType LAZY/EAGER defaults, the N+1 problem demo, 'Always use jakarta.persistence.*' — down to a one-line bad/good code contrast, keeping only the non-obvious guidance.

Add explicit verification to the bulk update/delete workflow (e.g., assert the returned affected-row count and re-read affected entities after clearAutomatically, plus a Testcontainers test), and mention checking SQL logs after enabling the detection config as a validate step for N+1 fixes.

DimensionReasoningScore

Conciseness

Mostly efficient bad/good code pairs and high-value non-obvious notes (e.g., "Hibernate ignores a version set on a managed entity"), but it spends tokens restating concepts Claude already knows: the FetchType LAZY/EAGER defaults walkthrough, "The #1 JPA performance killer" N+1 demo, "Always use jakarta.persistence.* (not javax.persistence.*)", and the well-known self-invocation pitfall. This is more than 'minor instances of over-explanation' (4) but far from pervasive padding (2).

3 / 5

Actionability

Fully executable, copy-paste-ready guidance throughout: complete repository interfaces with @Query/JOIN FETCH, @EntityGraph, @Modifying(clearAutomatically = true, flushAutomatically = true), full @Version entity and service code, YAML config for open-in-view and SQL logging, and JPQL constructor expressions with real package names. The quick-reference and decision tables map concrete symptoms to specific solutions covering the common cases.

5 / 5

Workflow Clarity

Reference-style content with useful triage (Quick Reference and Quick Decision Guide tables) and one strong workflow ("Test none → A, A → B and A → none against the real database (Testcontainers)"), but most operations lack explicit validation checkpoints. In particular the bulk UPDATE/DELETE section — a database/batch operation — gives no verification step (e.g., checking affected rows or re-reading), which caps workflow clarity at 3 per the batch-operations rule.

3 / 5

Progressive Disclosure

No bundle files exist (references/, scripts/, assets/ are absent), so all ~610 lines live inline in SKILL.md; content that would fit reference files (Entity Design, Modern Hibernate Features) is inlined. Section headers and tables give reasonable structure, and one reference exists — "(see `conventions`)" in the Schema drift row — but it is not a clearly signaled link and its target is not part of this bundle. This lands on 'content that should be separate is inline / references not clearly signaled' rather than the well-split structure of a 4.

3 / 5

Total

14

/

20

Passed

Description

87%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

A well-crafted description: it names a specific niche, enumerates concrete coverage areas, and pairs them with an explicit 'Use when' clause containing trigger phrases users would naturally say (LazyInitializationException, N+1, JPA performance issues). Third-person, concise, and free of filler or over-claims. The only improvements are covering the omitted concurrency/entity-design topics and adding common synonyms like Spring Data JPA.

DimensionReasoningScore

Specificity

Names the domain ("JPA/Hibernate patterns and common pitfalls") and lists several concrete coverage areas — "N+1, lazy loading, transactions, queries" — plus concrete triggers like "LazyInitializationException" and "fetching strategies". Not a 5 because it lists topics rather than concrete actions and omits covered areas like optimistic locking and entity design; not a 3 because coverage goes well beyond 1-2 items and contains no vague filler.

4 / 5

Completeness

Explicitly answers both questions: what ("JPA/Hibernate patterns and common pitfalls (N+1, lazy loading, transactions, queries)") and when ("Use when user has JPA performance issues, LazyInitializationException, or asks about entity relationships and fetching strategies") with concrete trigger phrases. This mirrors the anchor-5 structure of a clear what followed by an explicit 'Use when' clause; the 'when' clause is fully explicit, so 4's caveat ('when' could be more specific) does not apply.

5 / 5

Trigger Term Quality

Strong natural keywords a developer would actually say: "N+1", "lazy loading", "JPA performance issues", "LazyInitializationException", "entity relationships". Missing a few common phrasings users would use (e.g., "Spring Data JPA", "repository", "ORM"), which keeps it below the comprehensive-synonym coverage of a 5 but clearly above the partial coverage of a 3.

4 / 5

Distinctiveness Conflict Risk

A clear niche (JPA/Hibernate in Spring applications) with highly distinctive triggers — "LazyInitializationException" and "N+1" would only be said by a user needing exactly this skill. Overlap risk with generic database or Java skills is minimal, matching the clear-niche anchor rather than 4's 'minor overlap risk with closely related skills'.

5 / 5

Total

18

/

20

Passed

Validation

93%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 15 / 16 Passed

Validation for skill structure

CriteriaDescriptionResult

skill_md_line_count

SKILL.md is long (618 lines); consider splitting into references/ and linking

Warning

Total

15

/

16

Passed

Repository

piomin/claude-ai-spring-boot

Path

skills/jpa-patterns/SKILL.md

Reviewed

Table of Contents

Is this your skill?

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.