Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add ShipWithAI/shipwithai-plugins --skill jpa-entitygit clone --depth 1 https://github.com/ShipWithAI/shipwithai-pluginsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/shipwithai/shipwithai-plugins/jpa-entity)<a href="https://agentmods.dev/skills/shipwithai/shipwithai-plugins/jpa-entity"><img src="https://agentmods.dev/badge/skills/shipwithai/shipwithai-plugins/jpa-entity.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00091 | $0.01034 |
| Opus 5 | $0.00046 | $0.00517 |
| Sonnet 5 | $0.00018 | $0.00207 |
| Haiku 4.5 | $0.00009 | $0.00103 |
Grade C, and why
jpa-entity scanned grade C with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 7d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Hidden instructionshighPrompt injection
Directives inside HTML comments, invisible characters or bidirectional overrides are read by the model and not by the person reviewing the file.
- **Package + path:** mirror an existing entity's package (e.g. `….domain` / `….model` / `….entity`). Write to the matching `src/main/java/...` path. - **Lombok:** if the project uses Lombok, use `@Getter/@Setter`; ot How it starts
The opening of the file, as written. The whole thing — 79 lines — stays where its author put it; the contents beside it link to each section on GitHub.
JPA Entity — Scaffold
Generate an entity that is born compliant with ruleset.json. The point: if the
code is correct from the start, jpa-optimistic-lock, jpa-entity-equals, and
friends never need to fire.
Step 1 — Detect project conventions (do not assume)
Read before generating:
- Base class / auditing: look for a
@MappedSuperclass(e.g.BaseEntity,AuditableEntity) andAuditingEntityListener/@EnableJpaAuditing. If present, extend it instead of re-declaring id/audit fields. - Id strategy: match the codebase —
GenerationType.IDENTITY(Postgres/MySQL serial) vs assigned UUID. DefaultIDENTITYfor numeric, or UUID if entities use it. - Package + path: mirror an existing entity's package (e.g.
….domain/….model/….entity). Write to the matchingsrc/main/java/...path. - Lombok: if the project uses Lombok, use
@Getter/@Setter; otherwise write explicit accessors. - Soft-delete: if other entities use a
deleted/deletedAtcolumn or@SQLDelete, offer the same; otherwise skip.
Step 2 — Generate (the non-negotiable invariants)
Every generated entity MUST have:
@Versionfield for optimistic locking.equals/hashCodebased on a stable business key or an assigned UUID — never the generated@Id(null pre-persist, breaks Set/Map membership).- Audit fields via the project's base class, or
@CreatedDate/@LastModifiedDateif auditing is enabled and there's no base class. - Jakarta imports (
jakarta.persistence.*), Spring Boot 3.x.
Use assets/jpa-entity.java.tmpl as the shape; fill {{PACKAGE}}, {{ENTITY}},
{{TABLE}}, {{FIELDS}}, {{ID_STRATEGY}}. The template carries a uid UUID
business key (used by equals/hashCode) and @CreatedDate/@LastModifiedDate audit
fields. If extending a base class, drop the id/version/audit fields it already
provides (but ensure @Version exists somewhere in the hierarchy — if the base lacks
it, keep it on the entity).
What ships with it
3 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 7d ago First seen · 79 lines · 91 tokens per session scan C 4761f5e4c740
jpa-entity is a skill published in the GitHub repository ShipWithAI/shipwithai-plugins (10 stars, last pushed 25d ago), licensed MIT. It adds 91 tokens to every session and 1,034 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it C with 1 finding (hidden instructions). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
supabase-node
Express/Hono with Supabase and Drizzle ORM.
nodejs-backend
Node.js backend patterns with Express/Fastify, repositories.
ring:using-lib-systemplane
Using lib-systemplane, the hot-reload runtime-config plane (Postgres LISTEN/NOTIFY or MongoDB change streams), in two modes. Sweep Mode detects DIY config reload (SIGHUP, fsnotify, viper, pgx LISTEN), manual tenant-scoping, hand-built admin CRUD, and v4 residue. Reference Mode catalogs client lifecycle and…
ring:using-outbox
Using the transactional-outbox pattern across lib-streaming (writer) and lib-commons/v5/commons/outbox (repository + relay), in two modes. Sweep Mode detects DIY outbox tables, hand-rolled relay loops, send-and-pray emits, missing WithOutboxTx wrapping, and broker calls inside DB transactions. Reference Mode catalogs…
ring:mapping-service-resources
Mapping a Go service's Service -> Module -> Resource hierarchy for dispatch-layer registration: detects modules and per-module PostgreSQL/MongoDB/RabbitMQ resources, database names, and shared databases, generates MongoDB index migration pairs (.up.json/.down.json), detects existing Postgres migrations, emits an HTML…
performance-audit
Full-stack performance health check across 12 dimensions. Rendering, bundles, assets, API/network, algorithms, memory, database, caching, Web Vitals, backend runtime, concurrency, and framework-specific pathologies. Evidence-based Impact Models with confidence tiers and a prioritized optimization roadmap. Switches…