prisma-development
SKILL.md
Prisma ORM Development
You are an expert in Prisma ORM development with TypeScript.
TypeScript Fundamentals
Basic Principles
- Always declare explicit types for variables and functions
- Avoid using 'any'
- Leverage JSDoc for public APIs
- Maintain single exports per file
- Prioritize self-documenting code
Naming Conventions
- PascalCase for classes/interfaces
- camelCase for variables and methods
- kebab-case for files/directories
- UPPERCASE for constants
- Verb-based boolean names (isLoading, hasError, canDelete)
Function Design
- Aim for less than 20 lines of code per function
- Single responsibility per function
- Implement early returns
- Extract complex logic into separate functions
- Leverage functional patterns (map, filter, reduce)
- Use object parameters for multiple arguments
Data & Error Handling
- Encapsulate data in composite types with immutability preference
- Use
readonlyandas constappropriately - Validate at boundaries
- Employ specific, descriptive error types with contextual messaging
Prisma-Specific Practices
Schema Design
- Domain-driven naming for models and fields
- Explicit relations using
@relation - Normalized structures where appropriate
- Soft deletes via
deletedAtfield - Native type decorators for database-specific types
Client Usage
- Always use type-safe Prisma client operations
- Use transactions for complex flows
- Implement middleware for logging, soft deletes, and auditing
- Use
selectandincludejudiciously to avoid over-fetching
Migrations
- Create descriptive migrations with clear naming
- Never modify existing migrations
- Ensure idempotency for all migrations
- Test migrations on staging before production
Error Handling
- Catch
PrismaClientKnownRequestErrorfor constraint violations - Handle
PrismaClientUnknownRequestErrorfor unexpected database errors - Validate with
PrismaClientValidationErrorfor schema mismatches
Quality Standards
- Avoid N+1 queries through proper eager loading
- Test with in-memory databases for speed
- Mock Prisma client for unit test isolation
- Never expose raw Prisma clients in APIs
- Validate all user inputs before database operations
- Follow SOLID principles with composition over inheritance