Héritage du style legacy
Empêche la dérive stylistique du code généré par l'IA dans les projets legacy en scannant le codebase à la recherche de conventions implicites selon 4 dimensions méta-architecturales, en résolvant les conflits avec l'utilisateur un par un, et en cristallisant le consensus dans un .ai-style-rules.md exécutable. Totalement indépendant du langage et du framework.
Quand activer
- L'utilisateur saisit
/inherit-legacy-style - L'utilisateur mentionne l'intégration d'une IA sur un projet legacy manuscrit
- L'utilisateur craint que le code généré par l'IA ne « dérive » des conventions existantes du projet
- L'utilisateur souhaite extraire et codifier les règles de codage implicites de son projet
Quand utiliser
Utilisez cette compétence lorsque vous devez préserver le style d'un projet legacy et empêcher la dérive stylistique générée par l'IA. Voir Quand activer ci-dessus pour les conditions de déclenchement.
Prérequis
- Git (recommandé ; les projets non-Git utilisent les horodatages des fichiers en mode incrémental)
- Accès en lecture/écriture à la racine du projet (génère
.ai-style-rules.mdet éventuellementCLAUDE.md)
Déroulement
Étape 0 — Détection automatique du mode
Vérifiez silencieusement la présence de .ai-style-rules.md à la racine du projet :
| Fichier existe ? | Mode |
|---|---|
| Non | Branche A — Premier scan complet |
| Oui | Branche B — Détection incrémentale |
Annoncez le mode en une ligne et poursuivez — ne demandez jamais à l'utilisateur de choisir.
Branche A — Premier scan complet
1. Mesurez l'échelle, choisissez un niveau de scan
git ls-files | grep -cE '\.(js|ts|jsx|tsx|vue|py|go|rs|java|kt|rb|php|cs|swift|c|cpp|h)$'
| Niveau | Fichiers source | Stratégie |
|---|---|---|
| Petit | ≲ 50 | Lecture complète de chaque source |
| Moyen | 50–500 | Couche infrastructure = lecture complète ; couche métier = échantillon de 2-3 par dimension |
| Grand | ≳ 500 | Échantillonnage strict + budget limité ; résumé --stat d'abord, puis lectures ciblées |
2. Scannez selon 4 dimensions
- Anatomie des fichiers — ordre des déclarations dans le fichier (imports → types → logique principale → helpers → export)
- Flux d'état et de contrôle — conventions de nommage pour l'état asynchrone, la pagination, les indicateurs
- Infrastructure — emplacement des utilitaires transversaux (intercepteurs, formateurs, middleware)
- Gestion des erreurs — try/catch vs interceptor global vs retour Result ; habitudes de vérification des nulls
3. Appliquez la réduction du bruit par seuil de signal
Avant d'interrompre l'utilisateur, évaluez la force du signal :
- Signal faible → suppression automatique : minorité <5% ET nombre <10 → la majorité l'emporte, la minorité va dans les DONTs
- Signal fort → grillade : partage quasi-égal, ou fourche sémantique sur une dimension centrale
- Exception pour petit projet : sources ≲50, « 3 contre 2 » n'est PAS une majorité → grillade
4. Résolvez les conflits un par un (Protocole de grillade)
Pour chaque conflit à signal fort, présentez EXACTEMENT une question avec 4 options :
Preuve :
pathAutilise le style X,pathButilise le style Y ATTENTION : Risque : mélanger les deux fracture le style du projet Choisissez :1suivre X2suivre Y3c'est une évolution, mettez à jour les règles4j'ai une nouvelle règle
Suspendre jusqu'à ce que l'utilisateur réponde, puis passez au conflit suivant. N'empilez jamais les questions.
5. Générez .ai-style-rules.md avec trois sections obligatoires :
- [Fichiers Dorés] — chemins d'exemples réels annotés avec ce qu'ils démontrent
- [Règles de nommage et de contrôle d'état] — conventions concrètes et vérifiables
- [DONTs] — anti-patrons qui ne doivent pas se propager
6. Installez le hook persistant
Demandez à l'utilisateur la force d'application (utilisez AskUserQuestion) :
| Option | Mécanisme |
|---|---|
| 1 Hook logiciel (recommandé) | Écrire la référence @.ai-style-rules.md dans le CLAUDE.md du projet |
| 2 Hook matériel | Hook logiciel + Hook `PreToolUse[Write |
| 3 Aucun hook | Conserver le fichier de règles ; l'utilisateur le référence manuellement |
Branche B — Détection incrémentale
- Lisez le
.ai-style-rules.mdexistant ; s'il contient une empreinte de commit,git diff <last_hash> HEAD --statpour identifier le delta - Lisez les modifications Git récentes (
git log -3 --stat→ inspectez les fichiers suspects à la demande) - Pour les diffs surdimensionnés (>centaines de fichiers) : résumé
--statuniquement + échantillon des plus grandes modifications - Comparez le nouveau code aux règles enregistrées → les conflits passent par le Protocole de grillade
- Ajoutez un journal d'évolution à la fin de
.ai-style-rules.md(ne jamais écraser les anciennes règles)
Application par tâche
Lorsque .ai-style-rules.md est en contexte (chargé via CLAUDE.md), chaque tâche de rédaction de code doit commencer par une déclaration de conformité dans la chaîne de raisonnement, nommant l'exemple suivi et les DONTs évités.
Comment ça marche
Cette compétence détecte automatiquement s'il s'agit d'une première exécution ou d'une mise à jour incrémentale via la présence de .ai-style-rules.md :
- Première exécution (Branche A) — Mesure l'échelle du projet, scanne le codebase selon 4 dimensions méta-architecturales (Anatomie des fichiers, Flux d'état et de contrôle, Infrastructure, Gestion des erreurs), applique la réduction du bruit par seuil de signal pour supprimer les conflits faibles, résout les conflits à signal fort un par un avec l'utilisateur, génère
.ai-style-rules.mdavec Fichiers Dorés / Règles de nommage / DONTs, et propose des hooks d'application optionnels. - Incrémental (Branche B) — Lit les règles existantes, vérifie les diffs Git récents pour de nouveaux patrons ou des conflits, exécute le même protocole de grillade un par un pour les conflits trouvés, et ajoute des journaux d'évolution sans écraser les règles existantes.
- Application par tâche — Lorsqu'il est hooké via
CLAUDE.md, chaque tâche de rédaction de code commence par une déclaration de conformité nommant l'exemple suivi et les DONTs évités.
Spécification de sortie
.ai-style-rules.mdà la racine du projet (avec empreinte de commit + niveau d'échelle dans l'en-tête)- Éventuellement
CLAUDE.mdavec la référence@.ai-style-rules.md - Journaux d'évolution ajoutés sous forme d'entrées
### [AAAA-MM-JJ] Journal d'évolution du style
Anti-patrons
- ÉCHEC : Ne PAS sauter l'étape de mesure de l'échelle — échantillonner un projet de 30 fichiers « l'affame » ; scanner complètement un dépôt de 5 000 fichiers explose
- ÉCHEC : Ne PAS empiler plusieurs questions de conflit à la fois — la grillade est strictement une par une
- ÉCHEC : Ne PAS écraser les anciennes règles en mode incrémental — toujours ajouter des journaux d'évolution
- ÉCHEC : Ne PAS utiliser par défaut le « hook matériel » sans demander — la force d'application est le choix de l'utilisateur
- ÉCHEC : Ne PAS juger la syntaxe ou la qualité de la stack technique — cette compétence aligne uniquement la méta-architecture
- ÉCHEC : Ne PAS copier les bogues des fichiers exemplaires — réutiliser la structure, signaler les défauts
Bonnes pratiques
- Annoncez le mode détecté (première exécution vs incrémental) et le niveau d'échelle en une ligne avant le scan
- Pour les grands projets, lisez d'abord les résumés
--stat, puis desReadciblés sur les fichiers suspects - Laissez le seuil de signal gérer le bruit — une répartition de nommage 843 contre 8 devrait se résoudre automatiquement sans interrompre l'utilisateur
- En cas de doute sur la force du signal, penchez-vous vers la question
- Le hook logiciel CLAUDE.md (
@.ai-style-rules.md) est généralement suffisant ; le hook matériel seulement si l'utilisateur souhaite une application mécanique
Compétences associées
init— initialiser un nouveau CLAUDE.md avec la documentation du codebasecode-review— examiner les diffs pour la correction et les problèmes de stylesimplify— examiner le code pour les opportunités de réutilisation et de simplification
Exemples
-
Première intégration
- Utilisateur : « Aidez-moi à intégrer l'IA à cette ancienne base de code sans en changer le style. »
- Action : Exécuter la Branche A scan complet → mesurer l'échelle → scanner 4 dimensions → griller les conflits → générer
.ai-style-rules.md→ proposer la force du hook (logiciel/matériel/aucun).
-
Mise à jour incrémentale après changements d'équipe
- Utilisateur : « Nous avons ajouté un nouveau module ; conservez les règles de style existantes intactes. »
- Action : Exécuter la Branche B détection incrémentale → comparer les deltas Git aux règles enregistrées → griller les nouveaux conflits → ajouter le journal d'évolution sans écraser.
-
Application des DONTs via CLAUDE.md
- Utilisateur : « Assurez-vous que tout nouveau code reste cohérent avec les règles du projet. »
- Action : Hook logiciel installé →
.ai-style-rules.mdchargé automatiquement à chaque session → chaque tâche de rédaction de code commence par une déclaration de conformité, réutilisant les patrons exemplaires et évitant les DONTs.