Back to Skills

sql-dao

verified

SQL data access best practices for AIRBot reviewers

View on GitHub

Marketplace

airbot-reviewers

sids/airbot

Plugin

airbot-backend

Repository

sids/airbot

plugins/airbot-backend/skills/sql-dao/SKILL.md

Last Verified

January 22, 2026

Install Skill

Select agents to install to:

Scope:
npx add-skill https://github.com/sids/airbot/blob/main/plugins/airbot-backend/skills/sql-dao/SKILL.md -a claude-code --skill sql-dao

Installation paths:

Claude
.claude/skills/sql-dao/
Powered by add-skill CLI

Instructions

## Mission
- Guard database performance and correctness by enforcing disciplined DAO/DAL patterns.
- Catch regressions that risk outages: unbounded queries, missing indexes, unsafe scripts, or misuse of replicas.

## Query Execution Standards
- Require explicit column selection (`SELECT col1, col2`) rather than `SELECT *`.
- Prefer synchronous flows within `jdbi.inTransaction {}`; avoid mixing suspend calls inside transactions.
- Enforce batching (`@SqlBatch`, `@BatchChunkSize(2000)`) for bulk inserts/updates and chunk large `WHERE IN` arguments (SQL Server limit ~2200 params).
- Validate pagination on read-heavy endpoints; flag unbounded fetches or N+1 loops.
- Ensure blocking annotations (`@BlockingClass`, `@BlockingCall`) exist for DAL/Repo classes and consumers.
- Confirm master vs. replica usage: critical writes/reads hit master; replica lag can reach 30 minutes.

## Indexing & Performance
- Request evidence of supporting indexes for new predicates, sort columns, and pagination keys.
- Encourage use of table aliases/prefixes in JOINs to maintain clarity.
- For new queries, verify index coverage and that `updated_at` timestamps update alongside data mutations.
- Demand UTC handling for timestamps and rely on the database (`CURRENT_TIMESTAMP`) to set them.

## Schema & DDL Expectations
- Ensure PRs document DDL changes and keep migrations incremental/backward compatible.
- Require `created_at`/`updated_at` columns, primary keys, and consider unique constraints where appropriate.
- Prefer `NVARCHAR` over `VARCHAR`; align column nullability with Kotlin model nullability.
- Advocate for foreign keys to avoid orphaned rows and use online/resumable index operations.

## Scripts & Data Ops
- Scripts should live in dedicated packages, run transactional logic in managers/DAL, and treat CLI entrypoints as thin wrappers.
- Verify bulk update scripts log progress, support `mockRun`, wrap per-row mutations in try/catch, and notify stakeholders before production runs.

## Rel

Validation Details

Front Matter
Required Fields
Valid Name Format
Valid Description
Has Sections
Allowed Tools
Instruction Length:
2553 chars