Agent skill
db
Gère le schéma Prisma et les migrations de Motivia. Utilise ce skill quand l'utilisateur demande de modifier la base de données, ajouter une table, un champ, une relation, ou effectuer une migration. PostgreSQL avec Prisma ORM.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/data/db
SKILL.md
Base de Données Motivia
Stack technique
- ORM: Prisma
- BDD: PostgreSQL (Neon)
- Fichier schema:
prisma/schema.prisma
Commandes Prisma
# Développement
pnpm prisma generate # Générer le client Prisma
pnpm prisma migrate dev # Créer et appliquer une migration
pnpm prisma migrate dev --name add_feature # Migration nommée
pnpm prisma db push # Push direct (dev seulement)
# Production
pnpm prisma migrate deploy # Appliquer les migrations
# Utilitaires
pnpm prisma studio # Interface graphique
pnpm prisma db seed # Exécuter le seed
pnpm prisma format # Formater le schema
Modèles existants
User (central)
model User {
id String @id @default(cuid())
email String @unique
name String @default("")
firstName String?
lastName String?
profileTitle String?
localisation String?
image String?
emailVerified Boolean @default(false)
freeLetters Int @default(5)
keyAchievements String[]
softSkills String[]
technicalSkills String[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
// Relations
accounts Account[]
sessions Session[]
apiKeys ApiKey[]
experiences Experience[]
degrees Degree[]
links Link[]
projects Project[]
motivationLetters MotivationLetter[]
userCV UserCV?
}
Entités métier
| Modèle | Description | Relation |
|---|---|---|
| Experience | Expériences pro | User 1:N |
| Degree | Diplômes | User 1:N |
| Project | Projets portfolio | User 1:N |
| Link | Liens sociaux | User 1:N |
| MotivationLetter | Lettres générées | User 1:N |
| UserCV | CV PDF uploadé | User 1:1 |
| ApiKey | Clés API providers | User 1:N |
Auth (Better Auth)
| Modèle | Description |
|---|---|
| Account | Comptes OAuth/credentials |
| Session | Sessions utilisateur |
| Verification | Tokens de vérification |
| Authenticator | WebAuthn |
Conventions de schéma
Champs obligatoires
model NouveauModele {
id String @id @default(cuid())
// ... champs métier
userId String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
@@index([userId])
}
Types courants
| Usage | Type Prisma |
|---|---|
| ID | String @id @default(cuid()) |
String @unique |
|
| Texte court | String |
| Texte long | String (pas de @db.Text nécessaire) |
| Date | DateTime |
| Date optionnelle | DateTime? |
| Booléen | Boolean @default(false) |
| Entier | Int @default(0) |
| Liste de strings | String[] |
Relations
// 1:N (User a plusieurs Experience)
model User {
experiences Experience[]
}
model Experience {
userId String
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
}
// 1:1 (User a un CV)
model User {
userCV UserCV?
}
model UserCV {
userId String @unique
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
}
Enum
enum ApiProvider {
OPENAI
GOOGLE
ANTHROPIC
MISTRAL
XAI
}
model ApiKey {
provider ApiProvider
}
Workflow modification de schéma
1. Modifier le schéma
// prisma/schema.prisma
model User {
// Ajouter un nouveau champ
newField String?
}
2. Créer la migration
pnpm prisma migrate dev --name add_new_field
3. Mettre à jour le code
- Server actions dans
app/actions/ - Schémas Zod dans
utils/schemas.ts
Ajouter un nouveau modèle
1. Définir le modèle
model NewEntity {
id String @id @default(cuid())
name String
description String?
isActive Boolean @default(true)
userId String
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
user User @relation(fields: [userId], references: [id], onDelete: Cascade)
@@index([userId])
}
2. Ajouter la relation dans User
model User {
// ... existing fields
newEntities NewEntity[]
}
3. Créer la migration
pnpm prisma migrate dev --name add_new_entity
4. Créer les server actions
Créer app/actions/new-entity.ts avec le pattern habituel.
Bonnes pratiques
Indexes
@@index([userId]) // Toujours indexer les FK
@@index([createdAt]) // Si tri fréquent
@@unique([userId, name]) // Contrainte d'unicité
Cascade
Toujours utiliser onDelete: Cascade pour les relations avec User afin de supprimer les données orphelines.
Migrations en production
- Tester localement avec
migrate dev - Commit des fichiers de migration
- En production:
migrate deploy(via script build)
Checklist nouvelle table
- ID avec
@id @default(cuid()) -
createdAtetupdatedAt -
userIdavec relation etonDelete: Cascade -
@@index([userId]) - Relation ajoutée dans User
- Migration créée et testée
- Server actions créées
- Schéma Zod ajouté
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?