Use when you need to write or review programmatic JDBC with Spring — including JdbcClient (Spring Framework 7+) as the default API, JdbcTemplate only where batch/streaming APIs require JdbcOperations, NamedParameterJdbcTemplate for legacy named-param code, parameterized SQL, RowMapper mapping to records, batch operations, transactions, safe handling of generated keys, DataAccessException handling, read-only transactions, streaming large result sets, and @JdbcTest slice testing. This should trigg
SkillScore91Maintained
Automatic
◆Coding pack
Last verified 8/20/2026
What it changes
Passed 18 of 20 test cases with the skill, and 15 of 20 without it.
Without skill77%
With skill91%
Checks it passed that the model alone missed
The response uses @JdbcTest to configure the slice test.
The response uses RowCallbackHandler or ResultSetExtractor to stream records.
The response specifies running `./mvnw compile` or `mvn compile` before applying changes.
and 1 more in the full report
4 fixed16 passed either way1 still failing1 broke
Pass-rate lift
+14 pp
Tokens
+5%
Agent turns
0%
Response time
-29%
Model gemini-3.6-flashMeasured 8/20/2026v120 of 22 cases passed with skill · 20 comparable
Tokens, turns and time describe resource use, not a dollar price.
See it in action
One of 4 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 4
Prompt
What is the mandatory build verification command that must be run before applying any code refactoring in a Spring Maven project standard workflow?
What was checked, without and with the skill
Checked
Without skill
With skill
The response specifies running `./mvnw compile` or `mvn compile` before applying changes.
Missed
Passed
case-13 · gemini-3.6-flash · 8/20/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md60 lines2 files
Spring JDBC — JdbcClient (Spring Framework 7+)
Apply Spring JDBC guidelines with JdbcClient as the default; use JdbcTemplate / NamedParameterJdbcTemplate only for legacy code or APIs not covered by JdbcClient (batch updates, KeyHolder, RowCallbackHandler streaming).
What is covered in this Skill?
Parameterized SQL (never concatenate user input)
JdbcClient fluent API (Spring Framework 7+) — preferred for queries and updates
Named parameters via JdbcClient; NamedParameterJdbcTemplate for legacy migration
RowMapper, query(Class), and records
Batch operations and generated keys (JdbcTemplate / JdbcOperations where needed)
Safe handling of generated keys (KeyHolder; single-row JdbcClient updates)
Scope: Apply recommendations based on the reference rules and good/bad code examples.
Constraints
Before applying any Spring JDBC changes, ensure the project compiles. If compilation fails, stop immediately. After applying improvements, run full verification.
MANDATORY: Run ./mvnw compile or mvn compile before applying any change
SAFETY: If compilation fails, stop immediately
VERIFY: Run ./mvnw clean verify or mvn clean verify after applying improvements
SQL INJECTION: Never concatenate untrusted input into SQL strings — always use bind parameters
BEFORE APPLYING: Read the reference for detailed rules and good/bad patterns
When to use this skill
Review Java code for Spring JDBC (JdbcTemplate, JdbcClient, NamedParameterJdbcTemplate)
Apply best practices for Spring JDBC data access in Java code
Detect and fix SQL injection risks in JDBC code
Improve transaction boundaries or exception handling for JDBC operations
Use when you need to add or review Mongock MongoDB data migrations in a Spring Boot application — including Maven coordinates, Spring Data MongoDB drivers, migration scan packages, @ChangeUnit classes, lock/transaction settings, and optional policy-approved MongoDB integration verification. This should trigger for requests such as Add Mongock migrations in Spring Boot; Review Spring MongoDB data migrations; Configure Mongock change units for Spring Data MongoDB; Create Mongock change units for S