| name | handler-db-prisma |
| description | Prisma-specific database operations handler |
| model | claude-haiku-4-5 |
Prisma Database Handler Skill
This handler translates generic database operations into Prisma-specific CLI commands and manages Prisma client interactions.
Example Request
{
"operation": "create-database",
"parameters": {
"database_name": "myapp_dev",
"database_url_env": "DEV_DATABASE_URL",
"working_directory": "/mnt/c/GitHub/myorg/myproject"
}
}
Follow the workflow files in workflow/ for operation-specific instructions:
workflow/create-database.md- Database creation workflowworkflow/generate-migration.md- Migration generation workflowworkflow/apply-migration.md- Migration deployment workflowworkflow/check-status.md- Status checking workflow
High-level process:
- Output start message with operation
- Validate Prisma CLI is installed
- Set working directory context (CLAUDE_DB_CWD)
- Load configuration
- Validate parameters for operation
- Execute Prisma-specific operation via scripts
- Validate operation results
- Output end message with results
- Return structured JSON response
Prisma CLI Commands Used:
prisma init- Initialize Prisma in projectprisma generate- Generate Prisma Clientprisma migrate dev- Create and apply migration (dev)prisma migrate deploy- Apply migrations (production)prisma migrate status- Check migration statusprisma migrate resolve- Resolve migration issuesprisma db push- Push schema to database (prototyping)prisma db pull- Pull schema from database (introspection)
If any step fails:
- Log detailed error with Prisma output
- Suggest corrective actions
- Return error response with recovery steps
Output structured messages:
Start:
🎯 STARTING: Prisma Handler
Operation: create-database
Database: myapp_dev
───────────────────────────────────────
During execution, log key steps:
- ✓ Prisma CLI found (version 5.x.x)
- ✓ prisma/schema.prisma exists
- ✓ Database URL validated
- ✓ Creating database myapp_dev
- ✓ Running prisma migrate dev --name init
- ✓ Migration table created: _prisma_migrations
- ✓ Prisma Client generated
End (success):
✅ COMPLETED: Prisma Handler
Operation: create-database
Database: myapp_dev
Migrations Applied: 1 (init)
Status: Ready
───────────────────────────────────────
Next: Add models to prisma/schema.prisma
Return JSON:
Success:
{
"status": "success",
"operation": "create-database",
"handler": "prisma",
"result": {
"database_name": "myapp_dev",
"prisma_version": "5.8.0",
"schema_path": "prisma/schema.prisma",
"migrations_applied": 1,
"migration_table": "_prisma_migrations",
"client_generated": true
},
"message": "Database created and Prisma initialized successfully"
}
Error:
{
"status": "error",
"operation": "create-database",
"handler": "prisma",
"error": "Prisma CLI not found",
"recovery": {
"suggestions": [
"Install Prisma: npm install -D prisma @prisma/client",
"Or use different migration tool: /faber-db:init --migration-tool typeorm"
],
"prisma_docs": "https://www.prisma.io/docs/getting-started"
}
}
Common errors and handling:
Prisma CLI Not Found:
{
"status": "error",
"error": "Prisma CLI not found in project",
"recovery": {
"suggestions": [
"Install Prisma: npm install -D prisma @prisma/client",
"Verify package.json has prisma in devDependencies",
"Run npm install to install dependencies"
]
}
}
Schema File Missing:
{
"status": "error",
"error": "prisma/schema.prisma not found",
"recovery": {
"suggestions": [
"Initialize Prisma: npx prisma init",
"Or create schema file manually in prisma/ directory",
"See: https://www.prisma.io/docs/concepts/components/prisma-schema"
]
}
}
Migration Failed:
{
"status": "error",
"error": "Migration failed: duplicate column name",
"prisma_output": "Error: P3005 The database schema is not empty...",
"recovery": {
"suggestions": [
"Review migration file: prisma/migrations/.../migration.sql",
"Check for conflicting changes",
"Reset database: npx prisma migrate reset (WARNING: data loss)",
"Or manually fix schema and retry"
]
}
}
Connection Failed:
{
"status": "error",
"error": "Database connection failed",
"prisma_output": "Error: P1001 Can't reach database server...",
"recovery": {
"suggestions": [
"Verify DATABASE_URL environment variable is set correctly",
"Check database server is running",
"Test connection: psql $DATABASE_URL",
"Verify firewall rules allow connection"
]
}
}
Prisma CLI Integration
All operations execute Prisma CLI commands via scripts:
Scripts Location: skills/handler-db-prisma/scripts/
create-database.sh- Database initializationgenerate-migration.sh- Migration generationapply-migration.sh- Migration deploymentcheck-status.sh- Status checkingvalidate-schema.sh- Schema validation
Prisma Files Managed:
prisma/schema.prisma- Database schema definitionprisma/migrations/- Migration history.env- Connection strings (not committed)node_modules/.prisma/client/- Generated Prisma Client
Environment Variables
Prisma uses DATABASE_URL environment variable:
export DATABASE_URL="postgresql://user:password@localhost:5432/myapp_dev"
This handler maps environment-specific variables to DATABASE_URL before Prisma operations:
# Map DEV_DATABASE_URL to DATABASE_URL for Prisma
export DATABASE_URL="${DEV_DATABASE_URL}"
npx prisma migrate dev
Operation-Specific Notes
Create Database
- Runs
prisma initif schema doesn't exist - Creates database using
prisma migrate dev --name init - Generates Prisma Client with
prisma generate - Validates migration table exists
Generate Migration
- Runs
prisma migrate dev --name <name>for dev - Creates migration file in
prisma/migrations/<timestamp>_<name>/ - Includes both
migration.sqland metadata
Apply Migration (Production)
- Uses
prisma migrate deploy(NOTmigrate dev) - Applies pending migrations only
- No interactive prompts
- Idempotent (safe to run multiple times)
Check Status
- Runs
prisma migrate status - Shows pending migrations
- Shows applied migrations
- Detects drift between schema and database
Rollback Migration
- Prisma doesn't have built-in rollback
- Must manually write down migrations
- Or use custom rollback logic with raw SQL
Prisma Versions Supported
Minimum Version: Prisma 4.0.0 Recommended Version: Prisma 5.x.x Tested Version: Prisma 5.8.0
Version checked at runtime and reported in output.