hhh-dialect-verify
Skill0 starsChanged 13 days agoMITView on GitHub
Run the Hibernate ORM test suite against CUBRID and measure a dialect change against a baseline: total failures, how many recovered or regressed, and failures grouped by cause. For the run plus a Word report in one go, use /hhh-dialect-verify-report.
In this repository22 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- blogSkill
- ci-checkSkill
- cmt-manualSkill
- commitSkill
- cubrid-manualSkill
- hhh-dialect-verify-reportSkill
- java-formatSkill
- jdbc-ctp-verify-reportSkill
- jira-draftSkill
- jira-fetchSkill
- noteSkill
- pr-draftSkill
- pr-reviewSkill
- reportSkill
- review-triageSkill
- self-reviewSkill
- skill-createSkill
- submodule-bumpSkill
- tutorSkill
- weekly-reportSkill
- worklogSkill
The file
We split this skill into the rules it gives an agent
1 rule. About 0 are common, 0 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 12
Run the hibernate-core suite against CUBRID, then quantify a dialect change: total failures, recovered/regressed vs a baseline, and failure …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Hibernate ORM × CUBRID dialect verification
Run the hibernate-core suite against CUBRID, then quantify a dialect change: total failures, recovered/regressed vs a baseline, and failure families. Requires the Hibernate repo (default ~/Devel/hibernate), Docker, and python3 (stdlib). The full suite is ~16,900 tests and takes ~30 min: use --tests for fast iteration.
Step 1: Decide version, scope, baseline
- Version:
10.2(dialect minimum) or11.4(current). Read from$ARGUMENTS; ask if unset (semantics differ). - Scope: full suite (default) or a
--testsfilter (e.g.--tests 'org.hibernate.orm.test.manytomany.*') for a quick check. - Baseline: the failing-test set to diff against: either a saved
baseline.jsonfrom a prior run, or capture one now by running Step 4–5 on the un-changed dialect first.
Step 2: Start CUBRID
cd ~/Devel/hibernate
CUBRID_IMAGE=docker.io/cubrid/cubrid:<version> ./db.sh cubrid # waits for the csql healthcheckStep 3: Apply the change under test
The change lives in the working tree: e.g. hibernate-community-dialects/.../CUBRIDDialect.java, or a config toggle like hibernate.auto_quote_keyword. For a before/after diff, capture the baseline (Steps 4–5) with the change reverted first, then re-apply it.
Step 4: Run the suite
./gradlew :hibernate-core:test -Pdb=cubrid -Plog-test-progress=true --stacktrace --no-daemon 2>&1 | tee <run>.log
# fast iteration: add --tests '<filter>' ; slow deps: prefix MAVEN_MIRROR="https://maven-central.storage-download.googleapis.com/maven2/"The Gradle task exits non-zero when tests fail: that is expected; continue to Step 5. Profile -Pdb=cubrid selects the CUBRID dialect/JDBC from local-build-plugins/.../local.databases.gradle. Results: hibernate-core/target/test-results/test/TEST-*.xml.
Step 5: Parse results → failure set
python3 ${CLAUDE_SKILL_DIR}/assets/parse_results.py parse \
~/Devel/hibernate/hibernate-core/target/test-results/test <run>.jsonPrints total / passed / failed / skipped and a per-family failure breakdown, and saves the failing-test set (with each failure's exception signature + family) to <run>.json.
Step 6: Diff vs baseline → recovered / regressed
python3 ${CLAUDE_SKILL_DIR}/assets/parse_results.py diff baseline.json <run>.jsonPrints net (baseline − after), +N recovered (failed in baseline, not now), −N regressed (new failures), each broken down by family, and lists the regressed tests.
Step 7: (optional) separate flaky failures
Load-dependent driver NPEs often pass in isolation. Re-run a suspect/regressed subset alone:
./gradlew :hibernate-core:test -Pdb=cubrid --tests '<Class or pattern>' --stacktrace --no-daemonFailures that pass on isolated rerun = flaky → exclude from the regression count and note them.
Step 8: Summarize / hand to the report skill
State: total OFF→ON, +N recovered / −N regressed, net, and the top failure families. To produce the Word report, feed these to the report skill as a 비교 분석: a 전/후 comparison table + a bar chart (failures before→after) + an hbar of recovered-by-family.
Step 9 - Tear down (free disk)
The CUBRID container holds a ~2.7 GB anonymous data volume, and db.sh's built-in compose_down is a no-op unless REMOVE_ORPHANS is set: so re-running Step 2 for a new image/version orphans the old volume and the disk fills up over repeated runs. Always tear down when finished:
docker compose -p hibernate_orm \
-f ~/Devel/hibernate/docker-compose/latest/cubrid/docker-compose.yaml down -v
# sweep stragglers from earlier runs (anonymous = 64-hex; named volumes like jenkins are kept):
docker volume ls -qf dangling=true | grep -E '^[0-9a-f]{64}$' | xargs -r docker volume rm(The hhh-dialect-verify-report orchestrator does this automatically after every version.)
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

