be-data

Audits R2DBC and MyBatis data-layer code for blocking calls, transaction, schema, and migration issues.

1|Updated Feb 19, 2026
One-click install
npx skills add https://github.com/ohmyhotelco/hare-cc-plugins --skill be-data-ohmyhotelco
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: be-data
Source: https://github.com/ohmyhotelco/hare-cc-plugins/tree/main/backend-webflux-plugin/skills/be-data
Command: npx skills add https://github.com/ohmyhotelco/hare-cc-plugins --skill be-data-ohmyhotelco

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Data-layer defects in reactive Spring backends — blocking JDBC calls on the event loop, network calls inside transaction boundaries, unsafe migrations, and missing indexes — often pass code review and tests but cause production incidents. This Skill statically audits R2DBC and MyBatis data-layer code against 14 rule categories and reports verified findings before merge. ## Core Features & Use Cases - Reactive-blocking detection: Flags MyBatis mapper calls not wrapped in Schedulers.boundedElastic(), .block() calls in production code, and never-subscribed reactive chains. - Transaction and schema review: Detects network calls inside TransactionalOperator boundaries, missing NOT NULL/UNIQUE constraints, and monetary values stored as FLOAT/DOUBLE. - Migration safety checks: Validates sequential versioning, backward compatibility, multi-step NOT NULL additions, and tracking of applied manual SQL migrations. - Use Case: Before merging a pull request that adds a new booking repository and migration, run the audit on the changed directory to catch a vendor HTTP call accidentally placed inside the transactional boundary. ## Quick Start Run the be-data audit on the data layer directory of my Spring WebFlux project after initializing the plugin configuration with be-init.

Frequently Asked Questions about be-data

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I audit R2DBC and MyBatis data-layer code for blocking calls?▼

Run this audit against a file or directory; it scans for MyBatis mapper calls inside Mono/Flux chains without boundedElastic wrapping, .block() calls in production code, and unsubscribed reactive chains, reporting each as a Critical finding with a fix suggestion.

What does a data layer code review check for in Spring WebFlux?▼

It checks 14 rule categories: blocking calls on the event loop, N+1 write loops, missing transaction boundaries, schema constraints, unbounded queries, index fit, SELECT * usage, optimistic locking, cascade risks, migration safety, and MySQL-specific optimizations.

Does the audit support both R2DBC and MyBatis in the same project?▼

Yes. The config.dataProfile setting accepts r2dbc, mybatis, or both, and the audit applies the matching sub-checks. An unrecognized profile value stops the audit and asks the user to correct it rather than guessing.

Can static analysis confirm whether a database index will be used?▼

No. Index-fit findings that depend on data distribution or optimizer behavior, such as sargability and join order, are reported as Suggestions tagged unverified: confirm with EXPLAIN, since the audit cannot run EXPLAIN against a live database.

What happens when the audit finds no files in scope?▼

It stops and reports that no data-layer files were found in the scope, which is explicitly distinct from a successful audit with zero issues. This prevents an unscanned scope from looking like a passing result.