Help us improve
Share bugs, ideas, or general feedback.
From godmode
Optimizes ORM usage and data access: detects environment, selects Prisma/Drizzle/SQLAlchemy/Django/GORM, fixes N+1 queries, tunes connection pools, handles transactions, ensures production readiness.
npx claudepluginhub arbazkhan971/godmodeHow this skill is triggered — by the user, by Claude, or both
Slash command
/godmode:ormThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
- `/godmode:orm`, "which ORM", "Prisma vs Drizzle"
Provides ORM best practices for Drizzle and Prisma: N+1 prevention, migrations, transactions, batch operations, and query optimization. Useful for reviewing database queries and schemas.
Implements database layers with Prisma, Drizzle, TypeORM, SQLAlchemy 2.0, GORM, Diesel, EF Core, Hibernate, ActiveRecord, Ecto, Sequelize, Kysely, Knex. Covers migrations, pooling, replicas, query optimization, transactions, Testcontainers testing.
Guides schema design, migration safety, and ORM analysis. Detects database engine and ORM, evaluates normalization and indexing, and validates backward compatibility.
Share bugs, ideas, or general feedback.
/godmode:orm, "which ORM", "Prisma vs Drizzle"grep -r "prisma\|drizzle-orm\|typeorm\|sqlalchemy" \
package.json requirements.txt go.mod 2>/dev/null
grep -r "include:\|select_related\|joinedload" \
--include="*.ts" --include="*.py" -l 2>/dev/null
Language: <TS|Python|Go|Ruby|Java>
ORM: <Prisma|Drizzle|TypeORM|SQLAlchemy|Django|GORM>
Database: <PostgreSQL|MySQL|SQLite>
Connection: <direct|pooler|serverless>
TypeScript/JavaScript:
Python: SQLAlchemy 2.0 (FastAPI), Django ORM. Go: GORM, Ent, sqlc. Ruby: ActiveRecord.
IF edge/serverless: Drizzle (smallest bundle). IF max type safety: Prisma.
Enable query logging, load list page, count queries. If count = 1 + N, you have N+1.
// BAD (N+1): queries in loop
const posts = await prisma.post.findMany();
for (const p of posts) {
await prisma.user.findUnique({
where: { id: p.authorId }
});
}
// GOOD (1 query with JOIN)
const posts = await prisma.post.findMany({
include: { author: true }
});
ORM equivalents: Django select_related/prefetch,
SQLAlchemy joinedload/selectinload,
Rails includes/eager_load, GORM Preload/Joins.
Formula: pool_size = (core_count * 2) + 1
Typical: 10-20 connections per instance
| Dev | Prod
min | 1 | 5
max | 5 | 20
idle_timeout | 30s | 300s
WARNING: PostgreSQL degrades above ~100 connections.
Use PgBouncer/RDS Proxy for multiplexing.
Coordinate: pool * instances < max_conn * 0.8.
IF pool utilization > 80%: alert and investigate.
Interactive transactions (Prisma $transaction,
SQLAlchemy Session). Optimistic locking for
concurrent updates. Set isolation level for financial.
Nested (savepoints): inner failure does not roll back outer. For non-critical side effects.
Distributed (saga): cross-service ops. Each step has execute + compensate. Compensate in reverse on failure.
Composable conditions: and(...conditions).
Cap pagination: min(limit, 100).
Raw SQL escape hatch: Prisma $queryRaw,
Drizzle sql, SQLAlchemy text().
ALWAYS use parameterized queries.
[ ] Pool configured [ ] Query logging in dev
[ ] N+1 fixed [ ] Slow query threshold (>1s)
[ ] Statement timeout [ ] Retry transient failures
[ ] Migration up+down+up [ ] Schema matches DB
Append .godmode/orm-results.tsv:
timestamp orm models_audited n1_found n1_fixed pool_configured query_reduction_pct status
KEEP if: queries under target latency AND no N+1
AND tests pass.
DISCARD if: query regression OR N+1 introduced
OR pool issues.
STOP when ALL of:
- p50 < 50ms, p99 < 200ms
- No N+1 queries detected
- Pool sized correctly
On failure: git reset --hard HEAD~1. Never pause.
| Failure | Action |
|---|---|
| N+1 persists | Verify include on correct relation |
| Pool exhausted | Check leaks, increase with caution |
| Migration fails | Check data deps, add backfill |
| Deadlock | Consistent lock ordering, reduce scope |
| Query timeout | EXPLAIN ANALYZE, add index, paginate |