domain-model

Par mkurman · zorai

Session de questionnement critique qui confronte votre plan au modèle de domaine existant, affine la terminologie et met à jour la documentation (CONTEXT.md, ADRs) au fil des décisions. À utiliser lorsque l'utilisateur souhaite éprouver un plan face au langage et aux décisions documentées de son projet.

npx skills add https://github.com/mkurman/zorai --skill domain-model

Menez-moi des entretiens impitoyables sur chaque aspect de ce plan jusqu'à ce que nous parvenions à une compréhension partagée. Parcourez chaque branche de l'arborescence de conception, en résolvant les dépendances entre les décisions une par une. Pour chaque question, fournissez votre réponse recommandée.

Posez les questions une à la fois, en attendant des retours sur chaque question avant de continuer.

Si une question peut être résolue en explorant la base de code, explorez la base de code à la place.

Sensibilisation au domaine

Lors de l'exploration de la base de code, recherchez également la documentation existante :

Structure des fichiers

La plupart des dépôts ont un seul contexte :

/
├── CONTEXT.md
├── docs/
│   └── adr/
│       ├── 0001-event-sourced-orders.md
│       └── 0002-postgres-for-write-model.md
└── src/

Si un CONTEXT-MAP.md existe à la racine, le dépôt possède plusieurs contextes. La carte indique où se trouve chacun :

/
├── CONTEXT-MAP.md
├── docs/
│   └── adr/                          ← décisions à l'échelle du système
├── src/
│   ├── ordering/
│   │   ├── CONTEXT.md
│   │   └── docs/adr/                 ← décisions spécifiques au contexte
│   └── billing/
│       ├── CONTEXT.md
│       └── docs/adr/

Créez les fichiers de façon paresseuse — uniquement quand vous avez quelque chose à écrire. Si aucun CONTEXT.md n'existe, créez-le quand le premier terme est résolu. Si aucun docs/adr/ n'existe, créez-le quand la première ADR est nécessaire.

Pendant la session

Confrontez-vous au glossaire

Quand l'utilisateur emploie un terme qui entre en conflit avec la langue existante dans CONTEXT.md, relevez-le immédiatement. « Votre glossaire définit 'annulation' comme X, mais vous semblez vouloir dire Y — c'est quoi ? »

Affinez le langage vague

Quand l'utilisateur emploie des termes vagues ou surchargés, proposez un terme canonique précis. « Vous dites 'compte' — vous voulez dire le Client ou l'Utilisateur ? Ce sont des choses différentes. »

Discutez de scénarios concrets

Quand les relations de domaine sont discutées, testez-les avec des scénarios spécifiques. Inventez des scénarios qui sondent les cas limites et forcent l'utilisateur à être précis sur les frontières entre les concepts.

Validez par rapport au code

Quand l'utilisateur explique comment quelque chose fonctionne, vérifiez si le code est d'accord. Si vous trouvez une contradiction, exposez-la : « Votre code annule les Commandes entières, mais vous venez de dire que l'annulation partielle est possible — c'est quoi la bonne réponse ? »

Mettez à jour CONTEXT.md en ligne

Quand un terme est résolu, mettez à jour CONTEXT.md directement. Ne les accumulez pas — capturez-les au moment où elles surviennent. Utilisez le format dans CONTEXT-FORMAT.md.

Ne coupllez pas CONTEXT.md aux détails d'implémentation. Incluez uniquement les termes qui sont significatifs pour les experts du domaine.

Proposez des ADR avec parcimonie

Offrez de créer une ADR uniquement quand les trois conditions sont vraies :

  1. Difficile à inverser — le coût de changer d'avis plus tard est significatif
  2. Surprenant sans contexte — un futur lecteur se demandera « pourquoi ont-ils fait ça de cette façon ? »
  3. Le résultat d'un vrai compromis — il y avait des alternatives authentiques et vous en avez choisi une pour des raisons spécifiques

Si l'un des trois manque, passer l'ADR. Utilisez le format dans ADR-FORMAT.md.

Skills similaires