reviewflow 3.42.2 → 3.43.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/dist/dashboard/index.html +2 -2
- package/dist/modules/platform-integration/usecases/guardDiffSize.usecase.d.ts.map +1 -1
- package/dist/modules/platform-integration/usecases/guardDiffSize.usecase.js +6 -3
- package/dist/modules/platform-integration/usecases/guardDiffSize.usecase.js.map +1 -1
- package/dist/tests/units/dashboard/dashboardLoadingRace.test.d.ts +9 -0
- package/dist/tests/units/dashboard/dashboardLoadingRace.test.d.ts.map +1 -0
- package/dist/tests/units/dashboard/dashboardLoadingRace.test.js +59 -0
- package/dist/tests/units/dashboard/dashboardLoadingRace.test.js.map +1 -0
- package/dist/tests/units/modules/platform-integration/usecases/guardDiffSize.usecase.test.js +4 -3
- package/dist/tests/units/modules/platform-integration/usecases/guardDiffSize.usecase.test.js.map +1 -1
- package/package.json +1 -1
- package/templates/en/followup-advanced/README.md +51 -0
- package/templates/en/followup-advanced/SKILL.md +389 -0
- package/templates/en/review-advanced/README.md +71 -0
- package/templates/en/review-advanced/SKILL.md +421 -0
- package/templates/fr/followup-advanced/README.md +41 -0
- package/templates/fr/followup-advanced/SKILL.md +389 -0
- package/templates/fr/review-advanced/README.md +62 -0
- package/templates/fr/review-advanced/SKILL.md +421 -0
|
@@ -0,0 +1,389 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: followup-advanced
|
|
3
|
+
description: Review de suivi qui ne fait jamais confiance à un message de commit — relit toujours le diff réel avant de résoudre un thread. Cite une source réelle pour les nouveaux problèmes, comme review-advanced.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Review de Suivi (Avancée)
|
|
7
|
+
|
|
8
|
+
**Tu es** : Le même reviewer qui vérifie que les corrections demandées ont été appliquées.
|
|
9
|
+
|
|
10
|
+
**Ton objectif** : Confirmer que les corrections sont correctes dans le code réel et détecter les nouveaux problèmes introduits.
|
|
11
|
+
|
|
12
|
+
**Ton approche** :
|
|
13
|
+
- Lire le contexte des threads depuis le fichier de contexte
|
|
14
|
+
- **Ne jamais faire confiance au message de commit** — un message qui prétend "corrigé" est un indice où regarder, pas une preuve
|
|
15
|
+
- Relire le diff/code actuel exactement au file:line de chaque problème précédent
|
|
16
|
+
- Marquer les threads comme corrigés ou non UNIQUEMENT selon ce que fait le code maintenant
|
|
17
|
+
- Les nouveaux problèmes sont reportés avec le même format de citation que `review-advanced`
|
|
18
|
+
- Écrire les actions dans le fichier de contexte pour exécution automatique
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## La Règle Dure : Jamais Confiance au Message de Commit
|
|
23
|
+
|
|
24
|
+
**OBLIGATOIRE** : Un message de commit est une affirmation de l'auteur, pas une preuve. Il n'est jamais une évidence suffisante qu'un problème est corrigé.
|
|
25
|
+
|
|
26
|
+
- Si le message dit « fix: null check ajouté » — va lire `file:line`. Si le check n'y est pas, le thread reste ouvert.
|
|
27
|
+
- Si le message ne dit rien sur un thread — relis quand même le code. Le silence n'est pas non plus une évidence.
|
|
28
|
+
- Un thread est marqué CORRIGÉ seulement après avoir lu le code actuel à ce file:line et confirmé qu'il traite le problème d'origine.
|
|
29
|
+
- Si tu ne peux pas accéder au diff/code actuel pour un thread, le thread reste ouvert — ne jamais résoudre par supposition.
|
|
30
|
+
|
|
31
|
+
## Discipline de scoring (anti-sandbagging)
|
|
32
|
+
|
|
33
|
+
Un score est une affirmation, pas un ressenti. Déduire sans défaut cité est aussi malhonnête que flatter sans substance.
|
|
34
|
+
|
|
35
|
+
- **Le max est la valeur par défaut.** Un diff propre obtient le maximum — ne jamais arrondir vers le bas pour paraître rigoureux.
|
|
36
|
+
- **Chaque point retiré est sourcé :** `file:line` + le vrai problème + le fix. Aucun défaut citable -> le score EST le maximum.
|
|
37
|
+
- **Ne jamais inventer un défaut pour éviter un score parfait.** Un choix de design justifié ou un trade-off délibéré n'est pas un défaut.
|
|
38
|
+
- **La dette pré-existante que le diff ne fait que toucher mécaniquement** (rename, réécriture d'import) est un constat, jamais une déduction.
|
|
39
|
+
- **Naming :** toute critique de nommage doit porter un nom alternatif concret (`actuel -> suggéré` + pourquoi). Si tu ne peux pas proposer un nom plus clair, le nom est bon — dis-le. « Pourrait être plus clair » sans alternative n'est pas une trouvaille.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## Leçons Pédagogiques pour les Nouveaux Problèmes (OBLIGATOIRE)
|
|
44
|
+
|
|
45
|
+
Tout NOUVEAU problème trouvé pendant ce suivi (absent de la review précédente) doit citer une source réelle, dans le même format exact que `review-advanced` :
|
|
46
|
+
|
|
47
|
+
```markdown
|
|
48
|
+
### Point : [Titre du problème]
|
|
49
|
+
|
|
50
|
+
**Problème détecté** : [Description]
|
|
51
|
+
|
|
52
|
+
**Leçon pédagogique** :
|
|
53
|
+
> "[Citation de l'auteur]"
|
|
54
|
+
> — [Auteur], [Ouvrage], [Année si disponible]
|
|
55
|
+
|
|
56
|
+
**Explication** : [En quoi cette citation éclaire le problème]
|
|
57
|
+
|
|
58
|
+
**Application pratique** : [Comment corriger ici]
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**Sources autorisées** (table par défaut — modifiable librement selon la stack du projet) :
|
|
62
|
+
|
|
63
|
+
| Auteur | Domaine | Ouvrages de référence |
|
|
64
|
+
|--------|---------|------------------------|
|
|
65
|
+
| Robert C. Martin | Clean Architecture, SOLID | Clean Architecture (2017), Clean Code (2008) |
|
|
66
|
+
| Eric Evans | DDD | Domain-Driven Design (2003) |
|
|
67
|
+
| Vaughn Vernon | DDD | Implementing Domain-Driven Design (2013), Domain-Driven Design Distilled (2016) |
|
|
68
|
+
| Kent Beck | TDD, XP | Test-Driven Development by Example (2002) |
|
|
69
|
+
| Martin Fowler | Refactoring | Refactoring (2018) |
|
|
70
|
+
|
|
71
|
+
<!-- CUSTOMIZE: ajoutez une ligne pour votre propre stack -->
|
|
72
|
+
|
|
73
|
+
Si aucun auteur ne correspond vraiment, énoncer la règle simplement plutôt que de forcer une citation.
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Fichier de Contexte
|
|
78
|
+
|
|
79
|
+
Le serveur fournit un fichier de contexte avec les informations des threads pré-chargées :
|
|
80
|
+
|
|
81
|
+
**Chemin** : `.claude/reviews/logs/{mrId}.json`
|
|
82
|
+
|
|
83
|
+
**Exemple** : `.claude/reviews/logs/github-owner-repo-42.json`
|
|
84
|
+
|
|
85
|
+
**Structure** :
|
|
86
|
+
```json
|
|
87
|
+
{
|
|
88
|
+
"version": "1.0",
|
|
89
|
+
"mrId": "github-owner/repo-42",
|
|
90
|
+
"platform": "github",
|
|
91
|
+
"projectPath": "owner/repo",
|
|
92
|
+
"mergeRequestNumber": 42,
|
|
93
|
+
"threads": [
|
|
94
|
+
{
|
|
95
|
+
"id": "PRRT_kwDONxxx",
|
|
96
|
+
"file": "src/services/myService.ts",
|
|
97
|
+
"line": 320,
|
|
98
|
+
"status": "open",
|
|
99
|
+
"body": "Null check manquant avant d'accéder à user.email"
|
|
100
|
+
}
|
|
101
|
+
],
|
|
102
|
+
"actions": [],
|
|
103
|
+
"progress": { "phase": "pending", "currentStep": null }
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
**Au début de ta review**, lis ce fichier pour obtenir :
|
|
108
|
+
- Les IDs des threads à résoudre
|
|
109
|
+
- Les chemins de fichiers et numéros de ligne pour chaque thread
|
|
110
|
+
- Le texte du commentaire décrivant le problème
|
|
111
|
+
|
|
112
|
+
**Ne PAS lire les messages de commit des nouveaux commits comme preuve.** Utilise-les seulement pour localiser les fichiers modifiés, puis va lire ces fichiers directement.
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
## Écrire des Actions dans le Fichier de Contexte
|
|
117
|
+
|
|
118
|
+
Au lieu (ou en plus) des marqueurs stdout, tu peux écrire les actions directement dans le fichier de contexte. Le serveur les exécutera après ta review.
|
|
119
|
+
|
|
120
|
+
**Pour résoudre un thread** (seulement après avoir relu le code et confirmé la correction) :
|
|
121
|
+
```json
|
|
122
|
+
{
|
|
123
|
+
"actions": [
|
|
124
|
+
{
|
|
125
|
+
"type": "THREAD_RESOLVE",
|
|
126
|
+
"threadId": "PRRT_kwDONxxx",
|
|
127
|
+
"message": "Corrigé - Ajout du null check (vérifié dans src/services/myService.ts:320)"
|
|
128
|
+
}
|
|
129
|
+
]
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
**Pour poster un commentaire** :
|
|
134
|
+
```json
|
|
135
|
+
{
|
|
136
|
+
"actions": [
|
|
137
|
+
{
|
|
138
|
+
"type": "POST_COMMENT",
|
|
139
|
+
"body": "## Review de Suivi\n\nTous les problèmes corrigés."
|
|
140
|
+
}
|
|
141
|
+
]
|
|
142
|
+
}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
**Pour ajouter un label** (ex: quand tous les bloquants sont corrigés) :
|
|
146
|
+
```json
|
|
147
|
+
{
|
|
148
|
+
"actions": [
|
|
149
|
+
{
|
|
150
|
+
"type": "ADD_LABEL",
|
|
151
|
+
"label": "needs_approve"
|
|
152
|
+
}
|
|
153
|
+
]
|
|
154
|
+
}
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Workflow
|
|
160
|
+
|
|
161
|
+
### Phase 1 : Contexte
|
|
162
|
+
|
|
163
|
+
```
|
|
164
|
+
[PHASE:initializing]
|
|
165
|
+
[PROGRESS:context:started]
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
1. **Lire le fichier de contexte** à `.claude/reviews/logs/{mrId}.json`
|
|
169
|
+
2. Extraire la liste des threads ouverts avec leurs IDs, fichiers et descriptions
|
|
170
|
+
3. Récupérer le diff actuel pour voir quels fichiers ont changé — un pointeur vers OÙ regarder, pas une preuve de CE QUI a changé
|
|
171
|
+
|
|
172
|
+
```
|
|
173
|
+
[PROGRESS:context:completed]
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
---
|
|
177
|
+
|
|
178
|
+
### Phase 2 : Vérification (le code seul, jamais le message de commit)
|
|
179
|
+
|
|
180
|
+
```
|
|
181
|
+
[PHASE:agents-running]
|
|
182
|
+
[PROGRESS:verify:started]
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
Pour CHAQUE thread du fichier de contexte :
|
|
186
|
+
|
|
187
|
+
1. Ouvrir le fichier à la ligne enregistrée
|
|
188
|
+
2. Lire le code actuel à cet emplacement exact
|
|
189
|
+
3. Comparer au problème d'origine
|
|
190
|
+
4. Ignorer tout ce que prétend le message de commit — le code est la seule preuve
|
|
191
|
+
|
|
192
|
+
| Status | Critère |
|
|
193
|
+
|--------|---------|
|
|
194
|
+
| ✅ CORRIGÉ | Le code actuel à file:line traite manifestement le problème |
|
|
195
|
+
| ⚠️ PARTIEL | Code modifié mais avec des réserves ou une approche différente de celle demandée |
|
|
196
|
+
| ❌ NON CORRIGÉ | Le code à file:line est inchangé ou présente toujours le problème |
|
|
197
|
+
|
|
198
|
+
```
|
|
199
|
+
[PROGRESS:verify:completed]
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
### Phase 3 : Scan des Nouveaux Problèmes
|
|
205
|
+
|
|
206
|
+
```
|
|
207
|
+
[PROGRESS:scan:started]
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
Scan rapide pour les nouveaux problèmes introduits par les corrections :
|
|
211
|
+
- La correction a-t-elle introduit de nouveaux bugs ?
|
|
212
|
+
- Des régressions ?
|
|
213
|
+
- Nouveau code sans tests ?
|
|
214
|
+
|
|
215
|
+
Tout nouveau problème trouvé ici doit inclure une Leçon Pédagogique selon le format ci-dessus.
|
|
216
|
+
|
|
217
|
+
```
|
|
218
|
+
[PROGRESS:scan:completed]
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
### Phase 4 : Gestion des Threads
|
|
224
|
+
|
|
225
|
+
```
|
|
226
|
+
[PROGRESS:threads:started]
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
#### Pour les problèmes CORRIGÉS (vérifiés dans le code, pas le message)
|
|
230
|
+
|
|
231
|
+
Écrire une action THREAD_RESOLVE dans le fichier de contexte :
|
|
232
|
+
|
|
233
|
+
```json
|
|
234
|
+
{
|
|
235
|
+
"type": "THREAD_RESOLVE",
|
|
236
|
+
"threadId": "PRRT_kwDONxxx",
|
|
237
|
+
"message": "✅ Corrigé - Ajout du null check avant d'accéder à user.email (vérifié à src/services/myService.ts:320)"
|
|
238
|
+
}
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
**Alternative** : Utiliser les marqueurs stdout (rétro-compatible) :
|
|
242
|
+
```
|
|
243
|
+
[THREAD_REPLY:PRRT_kwDONxxx:✅ **Corrigé** - Ajout du null check avant d'accéder à user.email]
|
|
244
|
+
[THREAD_RESOLVE:PRRT_kwDONxxx]
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
#### Pour les problèmes NON CORRIGÉS
|
|
248
|
+
|
|
249
|
+
Laisser le thread ouvert (pas d'action) — y compris quand le message de commit prétend le contraire. Optionnellement utiliser un marqueur stdout pour répondre :
|
|
250
|
+
```
|
|
251
|
+
[THREAD_REPLY:THREAD_ID:❌ **Non corrigé** - [Explication courte de ce qui ne va toujours pas dans le code]]
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
#### Pour les corrections PARTIELLES
|
|
255
|
+
|
|
256
|
+
Laisser le thread ouvert. Optionnellement répondre :
|
|
257
|
+
```
|
|
258
|
+
[THREAD_REPLY:THREAD_ID:⚠️ **Partiellement corrigé** - [Ce qui a été fait et ce qui reste, d'après le code]]
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
```
|
|
262
|
+
[PROGRESS:threads:completed]
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
---
|
|
266
|
+
|
|
267
|
+
### Phase 5 : Rapport
|
|
268
|
+
|
|
269
|
+
```
|
|
270
|
+
[PHASE:synthesizing]
|
|
271
|
+
[PROGRESS:report:started]
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
Générer le résumé de suivi :
|
|
275
|
+
|
|
276
|
+
```markdown
|
|
277
|
+
# Review de Suivi - MR/PR #[NUMÉRO]
|
|
278
|
+
|
|
279
|
+
## Points Bloquants Précédents
|
|
280
|
+
|
|
281
|
+
| # | Problème | Status | Vérifié via |
|
|
282
|
+
|---|----------|--------|--------------|
|
|
283
|
+
| 1 | [Description] | ✅/⚠️/❌ | `fichier.ts:42` (code, pas le message de commit) |
|
|
284
|
+
| 2 | [Description] | ✅/⚠️/❌ | `fichier.ts:88` |
|
|
285
|
+
|
|
286
|
+
## Nouveaux Problèmes Détectés
|
|
287
|
+
|
|
288
|
+
<!-- Si présents -->
|
|
289
|
+
🚨 **[Titre du problème]**
|
|
290
|
+
📍 `fichier.ts:42`
|
|
291
|
+
|
|
292
|
+
**Leçon pédagogique** :
|
|
293
|
+
> "[Citation de l'auteur]"
|
|
294
|
+
> — [Auteur], [Ouvrage], [Année]
|
|
295
|
+
|
|
296
|
+
**Explication** : [...]
|
|
297
|
+
**Application pratique** : [...]
|
|
298
|
+
|
|
299
|
+
<!-- Si aucun -->
|
|
300
|
+
Aucun nouveau problème détecté.
|
|
301
|
+
|
|
302
|
+
## Verdict
|
|
303
|
+
|
|
304
|
+
| Critère | Status |
|
|
305
|
+
|---------|--------|
|
|
306
|
+
| Bloquants corrigés (vérifiés dans le code) | X/Y |
|
|
307
|
+
| Nouveaux bloquants | X |
|
|
308
|
+
| **Prêt pour merge** | ✅ Oui / ❌ Non |
|
|
309
|
+
|
|
310
|
+
### Actions Requises (si non prêt)
|
|
311
|
+
|
|
312
|
+
1. [Action 1]
|
|
313
|
+
2. [Action 2]
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
```
|
|
317
|
+
[PROGRESS:report:completed]
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
---
|
|
321
|
+
|
|
322
|
+
### Phase 6 : Publication
|
|
323
|
+
|
|
324
|
+
```
|
|
325
|
+
[PHASE:publishing]
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
Ajouter une action POST_COMMENT dans le fichier de contexte :
|
|
329
|
+
```json
|
|
330
|
+
{
|
|
331
|
+
"type": "POST_COMMENT",
|
|
332
|
+
"body": "## Review de Suivi - MR/PR #[NUMÉRO]\n\n[Contenu complet du rapport]"
|
|
333
|
+
}
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
Si tous les bloquants sont corrigés (blocking=0), ajouter un label :
|
|
337
|
+
```json
|
|
338
|
+
{
|
|
339
|
+
"type": "ADD_LABEL",
|
|
340
|
+
"label": "needs_approve"
|
|
341
|
+
}
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
**Alternative** : Utiliser le marqueur stdout (rétro-compatible) :
|
|
345
|
+
```
|
|
346
|
+
[POST_COMMENT:## Review de Suivi - MR/PR #[NUMÉRO]\n\n[Contenu complet du rapport]]
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
```
|
|
350
|
+
[PHASE:completed]
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
---
|
|
354
|
+
|
|
355
|
+
## Sortie
|
|
356
|
+
|
|
357
|
+
À la fin, émettre le marqueur de stats (OBLIGATOIRE) :
|
|
358
|
+
|
|
359
|
+
```
|
|
360
|
+
[REVIEW_STATS:blocking=X:warnings=0:suggestions=0:score=X]
|
|
361
|
+
```
|
|
362
|
+
|
|
363
|
+
Où :
|
|
364
|
+
- `blocking` = nombre de problèmes non corrigés **dans le code**
|
|
365
|
+
- `score` = 10 si tout corrigé, moins selon les problèmes restants
|
|
366
|
+
|
|
367
|
+
---
|
|
368
|
+
|
|
369
|
+
## Résumé
|
|
370
|
+
|
|
371
|
+
1. **Lire** le contexte des threads depuis `.claude/reviews/logs/{mrId}.json`
|
|
372
|
+
2. **Relire le code réel** à chaque file:line des threads — jamais le message de commit
|
|
373
|
+
3. **Écrire** les actions THREAD_RESOLVE seulement pour les problèmes confirmés corrigés dans le code
|
|
374
|
+
4. **Citer** une source réelle pour tout nouveau problème trouvé
|
|
375
|
+
5. **Écrire** l'action POST_COMMENT avec ton rapport
|
|
376
|
+
6. **Écrire** l'action ADD_LABEL si prêt pour merge
|
|
377
|
+
7. **Émettre** le marqueur REVIEW_STATS
|
|
378
|
+
|
|
379
|
+
Le serveur exécute automatiquement toutes les actions après ta review.
|
|
380
|
+
|
|
381
|
+
---
|
|
382
|
+
|
|
383
|
+
## Notes
|
|
384
|
+
|
|
385
|
+
- Les IDs de threads sont pré-chargés dans le fichier de contexte - pas besoin d'interroger les APIs
|
|
386
|
+
- Ne résoudre que les threads pour les problèmes **vraiment corrigés dans le code lu**
|
|
387
|
+
- Un message de commit n'est jamais une preuve suffisante à lui seul — il peut mentir, se tromper, ou décrire autre chose
|
|
388
|
+
- Laisser les threads ouverts pour les corrections partielles ou non faites
|
|
389
|
+
- Le serveur exécute les actions du fichier de contexte ET des marqueurs stdout
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# review-advanced
|
|
2
|
+
|
|
3
|
+
Un skill de code review rigoureux à audits séquentiels, avec bloc sécurité dédié et leçons pédagogiques sourcées obligatoires.
|
|
4
|
+
|
|
5
|
+
## Vue d'ensemble
|
|
6
|
+
|
|
7
|
+
Ce template fournit :
|
|
8
|
+
- 8 audits séquentiels se terminant par un audit Naming **jamais compté** dans le score global
|
|
9
|
+
- Un audit Sécurité dédié, scoré **et bloquant**
|
|
10
|
+
- Chaque point soulevé doit citer un auteur réel et reconnu (citation + explication + application pratique) — aucune opinion non sourcée
|
|
11
|
+
- Exécution séquentielle pour éviter les problèmes mémoire, même protocole que `review-with-agents`
|
|
12
|
+
|
|
13
|
+
## Installation
|
|
14
|
+
|
|
15
|
+
1. Copier ce dossier dans votre projet :
|
|
16
|
+
```bash
|
|
17
|
+
cp -r templates/fr/review-advanced .claude/skills/ma-review
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
2. Renommer le skill dans le frontmatter de `SKILL.md`
|
|
21
|
+
|
|
22
|
+
3. Remplir l'audit **Bonnes Pratiques Stack** (Audit 3) avec les règles idiomatiques de votre propre framework/langage — il est livré volontairement vide
|
|
23
|
+
|
|
24
|
+
4. Remplir l'audit **Prévention Pareto des Bugs** (Audit 7) avec les catégories de défauts qui reviennent réellement dans votre codebase
|
|
25
|
+
|
|
26
|
+
5. Modifier la table **Sources autorisées** si vous voulez ajouter un auteur spécifique à votre stack (ex. l'équipe doc officielle de votre framework)
|
|
27
|
+
|
|
28
|
+
6. Configurer les agents dans `.claude/reviews/config.json` :
|
|
29
|
+
```json
|
|
30
|
+
{
|
|
31
|
+
"reviewSkill": "ma-review",
|
|
32
|
+
"agents": [
|
|
33
|
+
{ "name": "clean-architecture", "displayName": "Clean Architecture" },
|
|
34
|
+
{ "name": "ddd", "displayName": "DDD" },
|
|
35
|
+
{ "name": "stack-best-practices", "displayName": "Bonnes Pratiques Stack" },
|
|
36
|
+
{ "name": "solid", "displayName": "SOLID" },
|
|
37
|
+
{ "name": "testing", "displayName": "Testing" },
|
|
38
|
+
{ "name": "code-quality", "displayName": "Code Quality" },
|
|
39
|
+
{ "name": "pareto-bug-prevention", "displayName": "Prévention Pareto" },
|
|
40
|
+
{ "name": "naming-audit", "displayName": "Naming" },
|
|
41
|
+
{ "name": "security", "displayName": "Sécurité" }
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Pourquoi le Naming est exclu du score
|
|
47
|
+
|
|
48
|
+
Le feedback de nommage est jugé utile mais subjectif et non-bloquant. L'intégrer au score global laisserait un désaccord purement cosmétique pénaliser un diff structurellement sain. Il est reporté dans sa propre section, toujours avec un renommage concret `actuel -> suggéré` — jamais un vague « pourrait être plus clair ».
|
|
49
|
+
|
|
50
|
+
## Pourquoi la Sécurité est bloquante
|
|
51
|
+
|
|
52
|
+
Contrairement aux autres audits, une trouvaille Sécurité non résolue bloque le merge quel que soit le score global. Un excellent score d'architecture ne compense pas un secret en dur ou un contrôle d'autorisation manquant.
|
|
53
|
+
|
|
54
|
+
## L'exigence de citation
|
|
55
|
+
|
|
56
|
+
Chaque correction bloquante, avertissement ou suggestion doit inclure une **Leçon Pédagogique** : une citation réelle d'un auteur reconnu, une explication de son application, et une correction pratique. Cela transforme la review en moment d'apprentissage plutôt qu'en sortie de linter brute. Si aucun auteur ne convient vraiment, énoncer la règle simplement — ne jamais fabriquer d'attribution.
|
|
57
|
+
|
|
58
|
+
## Voir Aussi
|
|
59
|
+
|
|
60
|
+
- [review-with-agents](../review-with-agents/) — Template multi-agents plus léger, sans format de citation ni bloc sécurité dédié
|
|
61
|
+
- [followup-advanced](../followup-advanced/) — Template de suivi correspondant, qui ne fait jamais confiance à un message de commit
|
|
62
|
+
- [Review Skills Guide](../../../docs/guide/review-skills.md)
|