Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
existential-birds avatar

Sqlalchemy Code Review

  • 192 installs
  • 74 repo stars
  • Updated July 21, 2026
  • existential-birds/beagle

Review SQLAlchemy models, sessions, queries, and migrations for N+1 risks, transaction bugs, lazy-loading pitfalls, and schema drift before merge.

About

Provides a structured SQLAlchemy code-review checklist for backend PRs: evaluate models, relationships, sessions, queries, and migrations to catch performance regressions, transaction errors, and schema issues before production deploy.

  • Model and relationship review
  • Session and transaction safety
  • Query performance checks
  • Migration risk detection
  • N+1 and lazy-load traps

Sqlalchemy Code Review by the numbers

  • 192 all-time installs (skills.sh)
  • Ranked #346 of 1,352 Code Review & Quality skills by installs in the Skillselion catalog
  • Data as of Jul 28, 2026 (Skillselion catalog sync)
npx skills add https://github.com/existential-birds/beagle --skill sqlalchemy-code-review

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs192
repo stars74
Last updatedJuly 21, 2026
Repositoryexistential-birds/beagle

What it does

Review SQLAlchemy models, sessions, queries, and migrations for N+1 risks, transaction bugs, lazy-loading pitfalls, and schema drift before merge.

Files

SKILL.mdMarkdownGitHub ↗

SQLAlchemy Code Review

Quick Reference

Issue TypeReference
Session lifecycle, context managers, async sessionsreferences/sessions.md
relationship(), lazy loading, N+1, joinedloadreferences/relationships.md
select() vs query(), ORM overhead, bulk opsreferences/queries.md
Alembic patterns, reversible migrations, data migrationsreferences/migrations.md

Review Checklist

  • [ ] Sessions use context managers (with, async with)
  • [ ] No session sharing across requests or threads
  • [ ] Sessions closed/cleaned up properly
  • [ ] relationship() uses appropriate lazy strategy
  • [ ] Explicit joinedload/selectinload to avoid N+1
  • [ ] No lazy loading in loops (N+1 queries)
  • [ ] Using SQLAlchemy 2.0 select() syntax, not legacy query()
  • [ ] Bulk operations use bulk_insert/bulk_update, not ORM loops
  • [ ] Async sessions use proper async context managers
  • [ ] Migrations are reversible with downgrade()
  • [ ] Data migrations use op.execute() not ORM models
  • [ ] Migration dependencies properly ordered

Gates (SQLAlchemy-specific)

Run once per SQLAlchemy-related finding, after you can anchor `file:line` (see review-verification-protocol) and before the finding ships. If a step’s pass condition is not met, do not assert the finding as written—gather evidence, withdraw, downgrade severity, or rephrase as a question.

Gate 1 — Session scope and lifecycle

StepActionPass condition
1aOpen the module where the session is created or injected (not from memory).`file:line` for Session, sessionmaker, async_session, or the factory/Depends() that yields a session.
1bIf claiming leak, cross-request sharing, or missing cleanup: trace the session’s scope (context manager, try/finally, middleware).Scoped region cited with a `file:line` range, or withdraw if scope is correct after the read.

Gate 2 — N+1, lazy loading, eager loads

StepActionPass condition
2aIdentify the loop or repeated call site (ORM attribute access, execute in a loop).`file:line` for the loop or hot path.
2bIf claiming N+1: name the relationship or query pattern emitted per iteration.Relationship or per-iteration SQL pattern with `file:line`, or rephrase as a question if unclear.

Gate 3 — Migrations (Alembic)

StepActionPass condition
3aOpen the revision file (e.g. under versions/, or the project’s Alembic layout).Repo-relative path + `file:line` for revision / upgrade / downgrade.
3bIf claiming broken downgrade() or risky data migration: point at the op.* / op.execute() involved.Snippet or line range in that file for each claimed op, or withdraw.

When to Load References

  • Reviewing session creation/cleanup → sessions.md
  • Reviewing model relationships → relationships.md
  • Reviewing database queries → queries.md
  • Reviewing Alembic migration files → migrations.md

Review Questions

1. Are all sessions properly managed with context managers? 2. Are relationships configured to avoid N+1 queries? 3. Are queries using SQLAlchemy 2.0 select() syntax? 4. Are all migrations reversible and properly tested?

Related skills

Code Review & Qualitybackendtesting

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.