npx skills add smithery/databayt --skill prisma-query-optimizer
nembie/claude-code-skills
prisma-query-optimizer
Analyze Prisma queries for performance issues and suggest optimizations. Use when asked to optimize, analyze, audit, or review Prisma queries, or when investigating slow database operations in a Prisma-based project.
Installation
npx skills add nembie/claude-code-skills --skill prisma-query-optimizer
Similar popular skills
Related neighbors and high-traction skills in the same topics — useful to compare before installing.
Azure Storage Services including Blob Storage, File Shares, Queue Storage, Table Storage, and D…
567.1K installsQuery and analyze data in Azure Data Explorer (Kusto/ADX) using KQL for log analytics, telemetr…
566.2K installsPostgres best practices maintained by Supabase, for Postgres running anywhere. Load this skill …
391.6K installsGuides for configuring Prisma with different database providers (PostgreSQL, MySQL, SQLite, Mon…
269.8K installsPrisma Client API reference covering model queries, filters, operators, and client methods. Use…
269.3K installsPrisma ORM CLI commands reference covering init, generate, migrate, db, dev, complete, studio, …
267K installsAlso in this package
Other skills from nembie/claude-code-skills · top by installs.
npx skills add nembie/claude-code-skills
More details
Agent compatibility
Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.
Also listed on
Alternate registries and mirrors of this skill.
Repository health
main
Skill metadata
Parsed from SKILL.md frontmatter.
Package contents
Files included with this skill beyond the listing page.
-
skill md
SKILL.md4,031 B -
docs
SUMMARY.md246 B
History
- First seen on skills.sh
- First recorded snapshot · 15 installs
SKILL.md
Prisma Query Optimizer
Before generating any output, read config/defaults.md and adapt all patterns, imports, and code examples to the user's configured stack.
Analysis Process
- Locate all Prisma query calls in the specified files or project
- For each query, check for the issues listed below
- Output a structured report with findings and fixes
Issues to Detect
N+1 Queries
Look for loops that execute Prisma queries inside:
// BAD: N+1 query
const users = await prisma.user.findMany();
for (const user of users) {
const posts = await prisma.post.findMany({ where: { authorId: user.id } });
}
// FIX: Use include
const users = await prisma.user.findMany({
include: { posts: true }
});
Missing Eager Loading
Detect when related data is accessed after the initial query without being included:
// BAD: Lazy loading triggers additional queries
const user = await prisma.user.findUnique({ where: { id } });
console.log(user.posts); // undefined or triggers additional query
// FIX: Include related data upfront
const user = await prisma.user.findUnique({
where: { id },
include: { posts: true }
});
Missing Index Hints
Flag queries filtering on fields that likely need indexes:
- Foreign keys used in
whereclauses - Fields used in
orderBy - Fields used in unique lookups without
@unique
Suggest adding indexes in schema.prisma:
model Post {
authorId Int
author User @relation(fields: [authorId], references: [id])
@@index([authorId]) // Add this
}
Redundant Queries
Identify duplicate queries that fetch the same data multiple times in a request:
// BAD: Same query twice
const user1 = await prisma.user.findUnique({ where: { id } });
// ... later in same function
const user2 = await prisma.user.findUnique({ where: { id } });
// FIX: Reuse the result
const user = await prisma.user.findUnique({ where: { id } });
// Use 'user' throughout
Unnecessary Select/Include Combinations
Detect overly broad data fetching:
// BAD: Fetching everything when only name is needed
const users = await prisma.user.findMany({
include: { posts: true, comments: true, profile: true }
});
const names = users.map(u => u.name);
// FIX: Select only what's needed
const users = await prisma.user.findMany({
select: { name: true }
});
Missing Pagination
Flag findMany without take/skip on large tables:
// BAD: Unbounded query
const allPosts = await prisma.post.findMany();
// FIX: Add pagination
const posts = await prisma.post.findMany({
take: 20,
skip: page * 20,
orderBy: { createdAt: 'desc' }
});
Inefficient Counting
Detect full fetches when only count is needed:
// BAD: Fetching all records to count
const posts = await prisma.post.findMany({ where: { published: true } });
const count = posts.length;
// FIX: Use count
const count = await prisma.post.count({ where: { published: true } });
Output Format
Present findings in this structure:
## Prisma Query Analysis
### Critical Issues
- **N+1 Query** in `src/services/user.ts:45`
- Issue: Loop executes individual post queries for each user
- Fix: [code block with corrected query]
### Warnings
- **Missing Index** in `schema.prisma`
- Issue: `Post.authorId` used in queries but not indexed
- Fix: Add `@@index([authorId])` to Post model
### Suggestions
- **Over-fetching** in `src/api/users.ts:23`
- Issue: Including all relations when only user name is used
- Fix: [code block with select]
### Summary
- Critical: X issues
- Warnings: X issues
- Suggestions: X issues
Reference
See references/patterns.md for additional optimization patterns and advanced techniques.