claudeos-core 1.7.0 → 2.0.0

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.
Files changed (39) hide show
  1. package/CHANGELOG.md +138 -0
  2. package/CONTRIBUTING.md +92 -59
  3. package/README.de.md +465 -240
  4. package/README.es.md +446 -223
  5. package/README.fr.md +461 -238
  6. package/README.hi.md +485 -261
  7. package/README.ja.md +440 -235
  8. package/README.ko.md +244 -56
  9. package/README.md +215 -47
  10. package/README.ru.md +462 -238
  11. package/README.vi.md +454 -230
  12. package/README.zh-CN.md +476 -252
  13. package/bin/cli.js +144 -140
  14. package/bin/commands/init.js +550 -46
  15. package/bin/commands/memory.js +426 -0
  16. package/bin/lib/cli-utils.js +206 -143
  17. package/bootstrap.sh +81 -390
  18. package/content-validator/index.js +436 -340
  19. package/lib/expected-guides.js +23 -0
  20. package/lib/expected-outputs.js +91 -0
  21. package/lib/language-config.js +35 -0
  22. package/lib/memory-scaffold.js +1014 -0
  23. package/lib/plan-parser.js +153 -149
  24. package/lib/staged-rules.js +118 -0
  25. package/manifest-generator/index.js +176 -171
  26. package/package.json +1 -1
  27. package/pass-json-validator/index.js +337 -299
  28. package/pass-prompts/templates/common/pass3-footer.md +16 -0
  29. package/pass-prompts/templates/common/pass4.md +317 -0
  30. package/pass-prompts/templates/common/staging-override.md +26 -0
  31. package/pass-prompts/templates/python-flask/pass1.md +119 -0
  32. package/pass-prompts/templates/python-flask/pass2.md +85 -0
  33. package/pass-prompts/templates/python-flask/pass3.md +103 -0
  34. package/plan-installer/domain-grouper.js +2 -1
  35. package/plan-installer/prompt-generator.js +120 -96
  36. package/plan-installer/scanners/scan-frontend.js +219 -10
  37. package/plan-installer/scanners/scan-java.js +226 -223
  38. package/plan-installer/scanners/scan-python.js +21 -0
  39. package/sync-checker/index.js +133 -132
package/README.fr.md CHANGED
@@ -6,7 +6,7 @@
6
6
  npx claudeos-core init
7
7
  ```
8
8
 
9
- ClaudeOS-Core lit votre codebase, extrait chaque pattern qu'il trouve et génère un ensemble complet de Standards, Rules, Skills et Guides adaptés à _votre_ projet. Ensuite, quand vous dites à Claude Code « Crée un CRUD pour les commandes », il produit du code qui correspond exactement à vos patterns existants.
9
+ ClaudeOS-Core lit votre codebase, extrait chaque pattern qu'il y trouve et génère un ensemble complet de Standards, Rules, Skills et Guides adaptés à _votre_ projet. Ensuite, quand vous dites à Claude Code « Crée un CRUD pour les commandes », il produit du code qui correspond exactement à vos patterns existants.
10
10
 
11
11
  [🇺🇸 English](./README.md) · [🇰🇷 한국어](./README.ko.md) · [🇨🇳 中文](./README.zh-CN.md) · [🇯🇵 日本語](./README.ja.md) · [🇪🇸 Español](./README.es.md) · [🇻🇳 Tiếng Việt](./README.vi.md) · [🇮🇳 हिन्दी](./README.hi.md) · [🇷🇺 Русский](./README.ru.md) · [🇩🇪 Deutsch](./README.de.md)
12
12
 
@@ -14,57 +14,67 @@ ClaudeOS-Core lit votre codebase, extrait chaque pattern qu'il trouve et génèr
14
14
 
15
15
  ## Pourquoi ClaudeOS-Core ?
16
16
 
17
- > L'humain décrit le projet Le LLM génère la documentation
17
+ Tous les autres outils Claude Code fonctionnent ainsi :
18
18
 
19
- ClaudeOS-Core:
19
+ > **Un humain décrit le projet → le LLM génère la documentation**
20
20
 
21
- > Le code analyse vos sources → Le code construit un prompt personnalisé → Le LLM génère la documentation → Le code vérifie la sortie
21
+ ClaudeOS-Core fonctionne ainsi :
22
22
 
23
- ### Le problème fondamental : les LLMs devinent. Le code confirme.
23
+ > **Le code analyse vos sources le code construit un prompt sur mesure → le LLM génère la documentation → le code vérifie la sortie**
24
24
 
25
- Quand vous demandez à Claude d'« analyser ce projet », il **devine** votre stack, ORM, structure de domaines.
25
+ Ce n'est pas une petite différence. Voici pourquoi c'est important :
26
26
 
27
- **ClaudeOS-Core ne devine pas.** Claude Node.js:
27
+ ### Le problème fondamental : les LLMs devinent. Le code, non.
28
28
 
29
- - `build.gradle` / `package.json` / `pyproject.toml` **confirmed**
30
- - directory scan **confirmed**
31
- - Java 5 patterns, Kotlin CQRS/BFF, Next.js App Router/FSD → **classified**
32
- - domain groups → **split**
33
- - stack-specific prompt **assembled**
29
+ Quand vous demandez à Claude d'« analyser ce projet », il **devine** votre stack, votre ORM, votre structure de domaines.
30
+ Il peut voir `spring-boot` dans votre `build.gradle` mais ne pas réaliser que vous utilisez MyBatis (et non JPA).
31
+ Il peut détecter un répertoire `user/` sans comprendre que votre projet utilise le packaging layer-first (Pattern A), pas domain-first (Pattern B).
32
+
33
+ **ClaudeOS-Core ne devine pas.** Avant même que Claude ne voie votre projet, le code Node.js a déjà :
34
+
35
+ - Parsé `build.gradle` / `package.json` / `pyproject.toml` et **confirmé** votre stack, ORM, BD et gestionnaire de paquets
36
+ - Scanné votre structure de répertoires et **confirmé** votre liste de domaines avec le nombre de fichiers
37
+ - Classifié la structure de votre projet selon l'un des 5 patterns Java, Kotlin CQRS/BFF, ou Next.js App Router/FSD
38
+ - Divisé les domaines en groupes de taille optimale qui rentrent dans la fenêtre de contexte de Claude
39
+ - Assemblé un prompt spécifique au stack avec tous les faits confirmés injectés
40
+
41
+ Au moment où Claude reçoit le prompt, il n'y a plus rien à deviner. Le stack est confirmé. Les domaines sont confirmés. Le pattern structurel est confirmé. Le seul travail de Claude est de générer une documentation qui correspond à ces **faits confirmés**.
34
42
 
35
43
  ### Le résultat
36
44
 
37
- Les autres outils produisent une documentation « généralement bonne ».
38
- ClaudeOS-Core produit une documentation qui sait que votre projet utilise `ApiResponse.ok()` (pas `ResponseEntity.success()`), que vos mappers MyBatis XML sont dans `src/main/resources/mybatis/mappers/` — parce qu'il a lu votre vrai code.
45
+ Les autres outils produisent une documentation « globalement correcte ».
46
+ ClaudeOS-Core produit une documentation qui sait que votre projet utilise `ApiResponse.ok()` (pas `ResponseEntity.success()`), que vos mappers MyBatis XML vivent dans `src/main/resources/mybatis/mappers/`, et que votre structure de packages est `com.company.module.{domain}.controller` — parce qu'il a lu votre code réel.
39
47
 
40
- ### Before & After
48
+ ### Avant et après
41
49
 
42
- **Sans ClaudeOS-Core**:
50
+ **Sans ClaudeOS-Core** — vous demandez à Claude Code de créer un CRUD Order :
43
51
  ```
44
- JPA repository (MyBatis)
45
- ❌ ResponseEntity.success() (ApiResponse.ok())
46
- ❌ order/controller/ (controller/order/)
47
- 20 min fix per file
52
+ Utilise un repository style JPA (votre projet utilise MyBatis)
53
+ Crée ResponseEntity.success() (votre wrapper est ApiResponse.ok())
54
+ Place les fichiers dans order/controller/ (votre projet utilise controller/order/)
55
+ Génère des commentaires en anglais (votre équipe écrit des commentaires en français)
56
+ → Vous passez 20 minutes à corriger chaque fichier généré
48
57
  ```
49
58
 
50
- **Avec ClaudeOS-Core**:
59
+ **Avec ClaudeOS-Core** — `.claude/rules/` contient déjà vos patterns confirmés :
51
60
  ```
52
- MyBatis mapper + XML (build.gradle)
53
- ✅ ApiResponse.ok() (source code)
54
- ✅ controller/order/ (Pattern A)
55
- immediate match
61
+ Génère un mapper MyBatis + XML (détecté depuis build.gradle)
62
+ Utilise ApiResponse.ok() (extrait de votre vraie source)
63
+ Place les fichiers dans controller/order/ (Pattern A confirmé par le scan structurel)
64
+ Commentaires en français (--lang fr appliqué)
65
+ → Le code généré correspond immédiatement aux conventions de votre projet
56
66
  ```
57
67
 
58
- Cette différence s'accumule. 10 tâches/jour × 20 minutes économisées = **plus de 3 heures/jour**.
68
+ Cette différence se cumule. 10 tâches/jour × 20 minutes économisées = **plus de 3 heures/jour**.
59
69
 
60
70
  ---
61
71
 
62
72
  ## Stacks Supportés
63
73
 
64
- | Stack | Détection | Profondeur d'Analyse |
74
+ | Stack | Détection | Profondeur d'analyse |
65
75
  |---|---|---|
66
- | **Java / Spring Boot** | `build.gradle`, `pom.xml`, 5 patterns de paquets | 10 catégories, 59 sous-éléments |
67
- | **Kotlin / Spring Boot** | `build.gradle.kts`, kotlin plugin, `settings.gradle.kts`, CQRS/BFF auto-detect | 12 catégories, 95 sous-éléments |
76
+ | **Java / Spring Boot** | `build.gradle`, `pom.xml`, 5 patterns de package | 10 catégories, 59 sous-éléments |
77
+ | **Kotlin / Spring Boot** | `build.gradle.kts`, kotlin plugin, `settings.gradle.kts`, auto-détection CQRS/BFF | 12 catégories, 95 sous-éléments |
68
78
  | **Node.js / Express** | `package.json` | 9 catégories, 57 sous-éléments |
69
79
  | **Node.js / NestJS** | `package.json` (`@nestjs/core`) | 10 catégories, 68 sous-éléments |
70
80
  | **Next.js / React** | `package.json`, `next.config.*`, support FSD | 9 catégories, 55 sous-éléments |
@@ -75,47 +85,71 @@ Cette différence s'accumule. 10 tâches/jour × 20 minutes économisées = **pl
75
85
  | **Vite / React SPA** | `package.json`, `vite.config.*` | 9 catégories, 55 sous-éléments |
76
86
  | **Angular** | `package.json`, `angular.json` | 12 catégories, 78 sous-éléments |
77
87
 
78
- Détection automatique : langage et version, framework et version (y compris Vite comme framework SPA), ORM (MyBatis, JPA, Exposed, Prisma, TypeORM, SQLAlchemy, etc.), base de données (PostgreSQL, MySQL, Oracle, MongoDB, SQLite), gestionnaire de paquets (Gradle, Maven, npm, yarn, pnpm, pip, poetry), architecture (CQRS, BFF — détecté à partir des noms de modules), structure multi-module (depuis settings.gradle), monorepo (Turborepo, pnpm-workspace, Lerna, npm/yarn workspaces).
88
+ Auto-détecté : langage et version, framework et version (y compris Vite en tant que framework SPA), ORM (MyBatis, JPA, Exposed, Prisma, TypeORM, SQLAlchemy, etc.), base de données (PostgreSQL, MySQL, Oracle, MongoDB, SQLite), gestionnaire de paquets (Gradle, Maven, npm, yarn, pnpm, pip, poetry), architecture (CQRS, BFF — à partir des noms de modules), structure multi-module (depuis settings.gradle), monorepo (Turborepo, pnpm-workspace, Lerna, npm/yarn workspaces).
79
89
 
80
90
  **Vous n'avez rien à spécifier. Tout est détecté automatiquement.**
81
91
 
82
-
83
92
  ### Détection des Domaines Java (5 patterns avec fallback)
84
93
 
85
94
  | Priorité | Pattern | Structure | Exemple |
86
95
  |---|---|---|---|
87
- | A | Couche d'abord | `controller/{domain}/` | `controller/user/UserController.java` |
96
+ | A | Layer d'abord | `controller/{domain}/` | `controller/user/UserController.java` |
88
97
  | B | Domaine d'abord | `{domain}/controller/` | `user/controller/UserController.java` |
89
- | D | Préfixe module | `{module}/{domain}/controller/` | `front/member/controller/MemberController.java` |
98
+ | D | Préfixe de module | `{module}/{domain}/controller/` | `front/member/controller/MemberController.java` |
90
99
  | E | DDD/Hexagonal | `{domain}/adapter/in/web/` | `user/adapter/in/web/UserController.java` |
91
100
  | C | Plat | `controller/*.java` | `controller/UserController.java` → extrait `user` du nom de classe |
92
101
 
93
- Les domaines sans contrôleurs (service uniquement) sont aussi détectés via les répertoires `service/`, `dao/`, `aggregator/`, `facade/`, `usecase/`, `orchestrator/`, `mapper/`, `repository/`. Ignorés : `common`, `config`, `util`, `core`, `front`, `admin`, `v1`, `v2`, etc.
102
+ Les domaines uniquement service (sans contrôleurs) sont également détectés via les répertoires `service/`, `dao/`, `aggregator/`, `facade/`, `usecase/`, `orchestrator/`, `mapper/`, `repository/`. Ignorés : `common`, `config`, `util`, `core`, `front`, `admin`, `v1`, `v2`, etc.
94
103
 
104
+ ### Détection des Domaines Kotlin Multi-Module
95
105
 
96
- ### Détection des domaines Kotlin multi-modules
106
+ Pour les projets Kotlin avec structure Gradle multi-module (ex : monorepo CQRS) :
97
107
 
98
- Pour les projets Kotlin avec structure Gradle multi-modules (ex : monorepo CQRS) :
99
-
100
- | Étape | Action | Exemple |
108
+ | Étape | Ce que fait l'outil | Exemple |
101
109
  |---|---|---|
102
- | 1 | Scanner `settings.gradle.kts` pour les `include()` | 14 modules trouvés |
103
- | 2 | Détecter le type de module par son nom | `reservation-command-server` → type : `command` |
104
- | 3 | Extraire le domaine du nom du module | `reservation-command-server` → domaine : `reservation` |
105
- | 4 | Regrouper le même domaine entre modules | `reservation-command-server` + `common-query-server` → 1 domaine |
106
- | 5 | Détecter l'architecture | Modules `command` + `query` présents → CQRS |
110
+ | 1 | Scanne `settings.gradle.kts` pour trouver les `include()` | Trouve 14 modules |
111
+ | 2 | Détecte le type de module depuis le nom | `reservation-command-server` → type : `command` |
112
+ | 3 | Extrait le domaine du nom de module | `reservation-command-server` → domaine : `reservation` |
113
+ | 4 | Regroupe le même domaine à travers les modules | `reservation-command-server` + `common-query-server` → 1 domaine |
114
+ | 5 | Détecte l'architecture | Contient modules `command` + `query` → CQRS |
107
115
 
108
- Types de modules supportés : `command`, `query`, `bff`, `integration`, `standalone`, `library`. Les bibliothèques partagées (`shared-lib`, `integration-lib`) sont détectées comme domaines spéciaux.
116
+ Types de module supportés : `command`, `query`, `bff`, `integration`, `standalone`, `library`. Les bibliothèques partagées (`shared-lib`, `integration-lib`) sont détectées comme domaines spéciaux.
109
117
 
110
118
  ### Détection des Domaines Frontend
111
119
 
112
120
  - **App Router** : `app/{domain}/page.tsx` (Next.js)
113
121
  - **Pages Router** : `pages/{domain}/index.tsx`
114
122
  - **FSD (Feature-Sliced Design)** : `features/*/`, `widgets/*/`, `entities/*/`
115
- - **RSC/Client split** : Détecte le pattern `client.tsx`, suit la séparation Server/Client
116
- - **Chemins imbriqués non standard** : détection des pages, composants et couches FSD sous `src/*/pages/`, `src/*/components/`, `src/*/features/` (ex. `src/admin/pages/dashboard/`)
117
- - **Fallback config** : Détecte Next.js/Vite/Nuxt depuis les fichiers de config (support monorepo)
118
- - **Fallback répertoires profonds** : Pour les projets React/CRA/Vite/Vue/RN, scanne `**/components/*/`, `**/views/*/`, `**/screens/*/`, `**/containers/*/`, `**/pages/*/`, `**/routes/*/`, `**/modules/*/`, `**/domains/*/` à toute profondeur
123
+ - **Split RSC/Client** : Détecte le pattern `client.tsx`, suit la séparation Server/Client des composants
124
+ - **Chemins imbriqués non standards** : Détecte pages, components et couches FSD sous les chemins `src/*/` (ex : `src/admin/pages/dashboard/`, `src/admin/components/form/`, `src/admin/features/billing/`)
125
+ - **Détection platform/tier-split (v2.0.0)** : Reconnaît les layouts `src/{platform}/{subapp}/` `{platform}` peut être un mot-clé de device/cible (`desktop`, `pc`, `web`, `mobile`, `mc`, `mo`, `sp`, `tablet`, `tab`, `pwa`, `tv`, `ctv`, `ott`, `watch`, `wear`) ou un mot-clé de niveau d'accès (`admin`, `cms`, `backoffice`, `back-office`, `portal`). Émet un domaine par paire `(platform, subapp)` nommé `{platform}-{subapp}` avec des compteurs par domaine pour routes/components/layouts/hooks. Tourne simultanément sur Angular, Next.js, React et Vue (glob multi-extensions `{tsx,jsx,ts,js,vue}`). Nécessite ≥2 fichiers source par subapp pour éviter des domaines bruyants à 1 seul fichier.
126
+ - **Split plateforme en monorepo (v2.0.0)** : Le scan de plateforme matche aussi `{apps,packages}/*/src/{platform}/{subapp}/` (Turborepo/pnpm workspace avec `src/`) et `{apps,packages}/{platform}/{subapp}/` (workspaces sans wrapper `src/`).
127
+ - **Fallback E — fichier de routes (v2.0.0)** : Quand les scanners primaires + Fallbacks A–D renvoient tous 0, glob `**/routes/*.{tsx,jsx,ts,js,vue}` et regroupe par le nom du répertoire parent de `routes`. Capture les projets à routage par fichiers React Router (CRA/Vite + `react-router`) qui ne matchent ni `page.tsx` de Next.js ni les layouts FSD. Les noms de parent génériques (`src`, `app`, `pages`) sont filtrés.
128
+ - **Fallback de config** : Détecte Next.js/Vite/Nuxt depuis les fichiers de config quand ils ne sont pas dans `package.json` (support monorepo)
129
+ - **Fallback répertoire profond** : Pour les projets React/CRA/Vite/Vue/RN, scanne `**/components/*/`, `**/views/*/`, `**/screens/*/`, `**/containers/*/`, `**/pages/*/`, `**/routes/*/`, `**/modules/*/`, `**/domains/*/` à n'importe quelle profondeur
130
+ - **Listes d'ignore partagées (v2.0.0)** : Tous les scanners partagent `BUILD_IGNORE_DIRS` (`node_modules`, `build`, `dist`, `out`, `.next`, `.nuxt`, `.svelte-kit`, `.angular`, `.turbo`, `.cache`, `.parcel-cache`, `coverage`, `storybook-static`, `.vercel`, `.netlify`) et `TEST_FILE_IGNORE` (spec/test/stories/e2e/cy + `__snapshots__`/`__tests__`) pour que les sorties de build et les fixtures de test ne gonflent pas les compteurs par domaine.
131
+
132
+ ### Overrides de scanner (v2.0.0)
133
+
134
+ Déposez un `.claudeos-scan.json` optionnel à la racine de votre projet pour étendre les valeurs par défaut du scanner sans modifier le toolkit. Tous les champs sont **additifs** — les entrées utilisateur étendent les valeurs par défaut, ne les remplacent jamais :
135
+
136
+ ```json
137
+ {
138
+ "frontendScan": {
139
+ "platformKeywords": ["kiosk"],
140
+ "skipSubappNames": ["legacy"],
141
+ "minSubappFiles": 3
142
+ }
143
+ }
144
+ ```
145
+
146
+ | Champ | Par défaut | But |
147
+ |---|---|---|
148
+ | `platformKeywords` | liste intégrée ci-dessus | Mots-clés `{platform}` supplémentaires pour le scan de plateforme (ex : `kiosk`, `vr`, `embedded`) |
149
+ | `skipSubappNames` | répertoires structurels uniquement | Noms de subapp supplémentaires à exclure de l'émission de domaines du scan de plateforme |
150
+ | `minSubappFiles` | `2` | Remplace le nombre minimum de fichiers requis avant qu'un subapp ne devienne un domaine |
151
+
152
+ Fichier manquant ou JSON mal formé → retombe silencieusement aux valeurs par défaut (pas de crash). Usage typique : activer une abréviation courte (`adm`, `bo`) que la liste intégrée exclut comme trop ambiguë, ou augmenter `minSubappFiles` pour des monorepos bruyants.
119
153
 
120
154
  ---
121
155
 
@@ -124,14 +158,14 @@ Types de modules supportés : `command`, `query`, `bff`, `integration`, `standal
124
158
  ### Prérequis
125
159
 
126
160
  - **Node.js** v18+
127
- - **Claude Code CLI** (installé et authentifié)
161
+ - **CLI Claude Code** (installée et authentifiée)
128
162
 
129
163
  ### Installation
130
164
 
131
165
  ```bash
132
166
  cd /your/project/root
133
167
 
134
- # Option A : npx (recommandé — aucune installation requise)
168
+ # Option A : npx (recommandé — pas d'installation nécessaire)
135
169
  npx claudeos-core init
136
170
 
137
171
  # Option B : installation globale
@@ -145,16 +179,16 @@ npx claudeos-core init
145
179
  # Option D : git clone (pour développement/contribution)
146
180
  git clone https://github.com/claudeos-core/claudeos-core.git claudeos-core-tools
147
181
 
148
- # Multiplateforme (PowerShell, CMD, Bash, Zsh — tout terminal)
182
+ # Cross-plateforme (PowerShell, CMD, Bash, Zsh — n'importe quel terminal)
149
183
  node claudeos-core-tools/bin/cli.js init
150
184
 
151
- # Linux/macOS uniquement (Bash uniquement)
185
+ # Linux/macOS (Bash uniquement)
152
186
  bash claudeos-core-tools/bootstrap.sh
153
187
  ```
154
188
 
155
189
  ### Langue de sortie (10 langues)
156
190
 
157
- En exécutant `init` sans `--lang`, un sélecteur interactif apparaît (touches fléchées ou touches numériques) :
191
+ Quand vous lancez `init` sans `--lang`, un sélecteur interactif apparaît utilisez les flèches ou les touches numériques pour choisir :
158
192
 
159
193
  ```
160
194
  ╔══════════════════════════════════════════════════╗
@@ -162,34 +196,39 @@ En exécutant `init` sans `--lang`, un sélecteur interactif apparaît (touches
162
196
  ╚══════════════════════════════════════════════════╝
163
197
 
164
198
  Les fichiers générés (CLAUDE.md, Standards, Rules,
165
- Skills, Guides) seront rédigés en français.
199
+ Skills, Guides) seront écrits en français.
166
200
 
167
201
  1. en — English
168
- ...
202
+ 2. ko — 한국어 (Korean)
203
+ 3. zh-CN — 简体中文 (Chinese Simplified)
204
+ 4. ja — 日本語 (Japanese)
205
+ 5. es — Español (Spanish)
206
+ 6. vi — Tiếng Việt (Vietnamese)
207
+ 7. hi — हिन्दी (Hindi)
208
+ 8. ru — Русский (Russian)
169
209
  ❯ 9. fr — Français (French)
170
- ...
210
+ 10. de — Deutsch (German)
171
211
 
172
212
  ↑↓ Move 1-0 Jump Enter Select ESC Cancel
173
213
  ```
174
214
 
175
- La description change dans la langue correspondante lors de la navigation. Pour passer le sélecteur :
215
+ La description change vers la langue sélectionnée au fur et à mesure que vous naviguez. Pour sauter le sélecteur, passez directement `--lang` :
176
216
 
177
217
  ```bash
178
- npx claudeos-core init --lang fr # Français
179
- npx claudeos-core init --lang en # English
180
- npx claudeos-core init --lang ko # 한국어
218
+ npx claudeos-core init --lang ko # Coréen
219
+ npx claudeos-core init --lang ja # Japonais
220
+ npx claudeos-core init --lang en # Anglais (par défaut)
181
221
  ```
182
222
 
183
- > **Note :** Ceci ne change que la langue des fichiers de documentation générés. L'analyse du code (Pass 1–2) s'exécute toujours en anglais ; seul le résultat généré (Pass 3) est écrit dans la langue choisie.
223
+ > **Remarque :** Cela définit la langue uniquement pour les fichiers de documentation générés. L'analyse du code (Pass 1–2) tourne toujours en anglais ; la sortie générée (Pass 3) est écrite dans la langue choisie. Les exemples de code à l'intérieur des fichiers générés gardent la syntaxe de leur langage de programmation d'origine.
184
224
 
185
- C'est tout. Après 5–18 minutes, toute la documentation est générée et prête à l'emploi.
186
- Le CLI affiche une barre de progression avec pourcentage, temps écoulé et temps restant estimé pour chaque Pass.
225
+ C'est tout. Après 5–20 minutes (Pass 1×N + Pass 2 + Pass 3 + Pass 4 memory scaffolding), toute la documentation est générée et prête à l'emploi. La CLI affiche une barre de progression avec pourcentage, temps écoulé et ETA pour chaque pass.
187
226
 
188
- ### Installation Manuelle Étape par Étape
227
+ ### Installation Manuelle Pas à Pas
189
228
 
190
- Si vous souhaitez un contrôle total sur chaque phase — ou si le pipeline automatisé échoue à une étape — vous pouvez exécuter chaque étape manuellement. C'est également utile pour comprendre le fonctionnement interne de ClaudeOS-Core.
229
+ Si vous voulez un contrôle total sur chaque phase — ou si le pipeline automatisé échoue à une étape — vous pouvez exécuter chaque étape manuellement. Cela sert également à comprendre le fonctionnement interne de ClaudeOS-Core.
191
230
 
192
- #### Step 1 : Cloner et installer les dépendances
231
+ #### Étape 1 : Cloner et installer les dépendances
193
232
 
194
233
  ```bash
195
234
  cd /your/project/root
@@ -198,11 +237,11 @@ git clone https://github.com/claudeos-core/claudeos-core.git claudeos-core-tools
198
237
  cd claudeos-core-tools && npm install && cd ..
199
238
  ```
200
239
 
201
- #### Step 2 : Créer la structure des répertoires
240
+ #### Étape 2 : Créer la structure de répertoires
202
241
 
203
242
  ```bash
204
- # Rules
205
- mkdir -p .claude/rules/{00.core,10.backend,20.frontend,30.security-db,40.infra,50.sync}
243
+ # Rules (v2.0.0 : ajout de 60.memory)
244
+ mkdir -p .claude/rules/{00.core,10.backend,20.frontend,30.security-db,40.infra,50.sync,60.memory}
206
245
 
207
246
  # Standards
208
247
  mkdir -p claudeos-core/standard/{00.core,10.backend-api,20.frontend-ui,30.security-db,40.infra,50.verification,90.optional}
@@ -210,140 +249,189 @@ mkdir -p claudeos-core/standard/{00.core,10.backend-api,20.frontend-ui,30.securi
210
249
  # Skills
211
250
  mkdir -p claudeos-core/skills/{00.shared,10.backend-crud/scaffold-crud-feature,20.frontend-page/scaffold-page-feature,50.testing,90.experimental}
212
251
 
213
- # Guide, Plan, Database, MCP, Generated
252
+ # Guide, Plan, Database, MCP, Generated, Memory (v2.0.0 : ajout de memory)
214
253
  mkdir -p claudeos-core/guide/{01.onboarding,02.usage,03.troubleshooting,04.architecture}
215
- mkdir -p claudeos-core/{plan,database,mcp-guide,generated}
254
+ mkdir -p claudeos-core/{plan,database,mcp-guide,generated,memory}
216
255
  ```
217
256
 
218
- #### Step 3 : Exécuter plan-installer (analyse du projet)
257
+ #### Étape 3 : Lancer plan-installer (analyse du projet)
219
258
 
220
- Scanne votre projet, détecte le stack, trouve les domaines, les divise en groupes et génère les prompts.
259
+ Cela scanne votre projet, détecte le stack, trouve les domaines, les divise en groupes et génère les prompts.
221
260
 
222
261
  ```bash
223
262
  node claudeos-core-tools/plan-installer/index.js
224
263
  ```
225
264
 
226
- **Sortie (`claudeos-core/generated/`) :**
265
+ **Sortie (dans `claudeos-core/generated/`) :**
227
266
  - `project-analysis.json` — stack détecté, domaines, info frontend
228
- - `domain-groups.json` — groupes de domaines pour le Pass 1
267
+ - `domain-groups.json` — groupes de domaines pour Pass 1
229
268
  - `pass1-backend-prompt.md` / `pass1-frontend-prompt.md` — prompts d'analyse
230
- - `pass2-prompt.md` — prompt de fusion
231
- - `pass3-prompt.md` — prompt de génération
269
+ - `pass2-prompt.md` — prompt de merge
270
+ - `pass3-prompt.md` — prompt de génération (emballé avec la directive `staging-override.md` — voir la note de l'Étape 6)
271
+ - `pass4-prompt.md` — prompt de scaffolding memory L4 (v2.0.0 ; utilise le même `staging-override.md` pour les écritures de règles `60.memory/`)
232
272
 
233
- Vous pouvez inspecter ces fichiers pour vérifier la précision de la détection avant de continuer.
273
+ Vous pouvez inspecter ces fichiers pour vérifier la précision de détection avant de continuer.
234
274
 
235
- #### Step 4 : Pass 1 — Analyse approfondie du code par groupe de domaines
275
+ #### Étape 4 : Pass 1 — Analyse profonde du code (par groupe de domaines)
236
276
 
237
- Exécutez Pass 1 pour chaque groupe de domaines. Vérifiez `domain-groups.json` pour le nombre de groupes.
277
+ Lancez Pass 1 pour chaque groupe de domaines. Consultez `domain-groups.json` pour connaître le nombre de groupes.
238
278
 
239
279
  ```bash
240
- # Check groups
280
+ # Vérifier combien de groupes
241
281
  cat claudeos-core/generated/domain-groups.json | node -e "
242
282
  const g = JSON.parse(require('fs').readFileSync('/dev/stdin','utf-8'));
243
283
  g.groups.forEach((g,i) => console.log('Group '+(i+1)+': ['+g.domains.join(', ')+'] ('+g.type+', ~'+g.estimatedFiles+' files)'));
244
284
  "
245
285
 
246
- # Run Pass 1 for group 1:
247
- cp claudeos-core/generated/pass1-backend-prompt.md /tmp/_pass1.md
248
- DOMAIN_LIST="user, order, product" PASS_NUM=1 \
249
- perl -pi -e 's/\{\{DOMAIN_GROUP\}\}/$ENV{DOMAIN_LIST}/g; s/\{\{PASS_NUM\}\}/$ENV{PASS_NUM}/g' /tmp/_pass1.md
250
- cat /tmp/_pass1.md | claude -p --dangerously-skip-permissions
286
+ # Lancer Pass 1 pour chaque groupe (remplacer les domaines et le numéro de groupe)
287
+ # Note : v1.6.1+ utilise String.replace() de Node.js au lieu de perl — perl n'est
288
+ # plus nécessaire, et la sémantique de fonction de remplacement empêche l'injection
289
+ # regex des caractères $/&/$1 susceptibles d'apparaître dans les noms de domaine.
290
+ #
291
+ # Pour le groupe 1 :
292
+ DOMAIN_LIST="user, order, product" PASS_NUM=1 node -e "
293
+ const fs = require('fs');
294
+ const tpl = fs.readFileSync('claudeos-core/generated/pass1-backend-prompt.md','utf-8');
295
+ const out = tpl
296
+ .replace(/\{\{DOMAIN_GROUP\}\}/g, () => process.env.DOMAIN_LIST)
297
+ .replace(/\{\{PASS_NUM\}\}/g, () => process.env.PASS_NUM);
298
+ process.stdout.write(out);
299
+ " | claude -p --dangerously-skip-permissions
300
+
301
+ # Pour le groupe 2 (si présent) :
302
+ DOMAIN_LIST="payment, system, delivery" PASS_NUM=2 node -e "
303
+ const fs = require('fs');
304
+ const tpl = fs.readFileSync('claudeos-core/generated/pass1-backend-prompt.md','utf-8');
305
+ const out = tpl
306
+ .replace(/\{\{DOMAIN_GROUP\}\}/g, () => process.env.DOMAIN_LIST)
307
+ .replace(/\{\{PASS_NUM\}\}/g, () => process.env.PASS_NUM);
308
+ process.stdout.write(out);
309
+ " | claude -p --dangerously-skip-permissions
310
+
311
+ # Pour les groupes frontend, remplacez pass1-backend-prompt.md → pass1-frontend-prompt.md
312
+ ```
313
+
314
+ **Vérifier :** `ls claudeos-core/generated/pass1-*.json` devrait afficher un JSON par groupe.
315
+
316
+ #### Étape 5 : Pass 2 — Merger les résultats d'analyse
251
317
 
252
- # Pour les groupes frontend, utilisez pass1-frontend-prompt.md
318
+ ```bash
319
+ cat claudeos-core/generated/pass2-prompt.md \
320
+ | claude -p --dangerously-skip-permissions
253
321
  ```
254
322
 
255
- **Vérifier :** `ls claudeos-core/generated/pass1-*.json` doit afficher un JSON par groupe.
323
+ **Vérifier :** `claudeos-core/generated/pass2-merged.json` doit exister avec 9+ clés de niveau supérieur.
256
324
 
257
- #### Step 5 : Pass 2Fusion des résultats d'analyse
325
+ #### Étape 6 : Pass 3Générer toute la documentation
258
326
 
259
327
  ```bash
260
- cat claudeos-core/generated/pass2-prompt.md \
328
+ cat claudeos-core/generated/pass3-prompt.md \
261
329
  | claude -p --dangerously-skip-permissions
262
330
  ```
263
331
 
264
- **Vérifier :** `claudeos-core/generated/pass2-merged.json` doit exister avec 9+ clés de niveau supérieur.
332
+ **Vérifier :** `CLAUDE.md` doit exister à la racine de votre projet, et le marqueur `claudeos-core/generated/pass3-complete.json` doit être écrit.
265
333
 
266
- #### Step 6 : Pass 3 Générer toute la documentation
334
+ > **Remarque (v2.0.0) :** Pass 3 écrit les fichiers de règles d'abord dans `claudeos-core/generated/.staged-rules/` car la politique de chemins sensibles de Claude Code bloque les écritures directes dans `.claude/`. Le pipeline automatisé (`npx claudeos-core init`) gère le déplacement automatiquement. Si vous exécutez cette étape manuellement, vous devrez déplacer l'arbre staged vous-même : `mv claudeos-core/generated/.staged-rules/* .claude/rules/` (en préservant les sous-chemins).
335
+
336
+ #### Étape 7 : Pass 4 — Scaffolding memory
267
337
 
268
338
  ```bash
269
- cat claudeos-core/generated/pass3-prompt.md \
339
+ cat claudeos-core/generated/pass4-prompt.md \
270
340
  | claude -p --dangerously-skip-permissions
271
341
  ```
272
342
 
273
- **Vérifier :** `CLAUDE.md` doit exister à la racine du projet.
343
+ **Vérifier :** `claudeos-core/memory/` doit contenir 4 fichiers (`decision-log.md`, `failure-patterns.md`, `compaction.md`, `auto-rule-update.md`), `.claude/rules/60.memory/` doit contenir 4 fichiers de règles, `claudeos-core/plan/50.memory-master.md` doit exister, et `CLAUDE.md` doit désormais avoir une section `## Memory (L4)` ajoutée. Marqueur : `claudeos-core/generated/pass4-memory.json`.
274
344
 
275
- #### Step 7 : Exécuter les outils de vérification
345
+ > **Remarque :** Si `claude -p` échoue ou si `pass4-prompt.md` est absent, le pipeline automatisé retombe sur un scaffold statique via `lib/memory-scaffold.js` (avec traduction pilotée par Claude quand `--lang` n'est pas l'anglais). Le fallback statique ne tourne qu'à l'intérieur de `npx claudeos-core init` — le mode manuel exige que Pass 4 réussisse.
346
+
347
+ #### Étape 8 : Lancer les outils de vérification
276
348
 
277
349
  ```bash
278
350
  # Générer les métadonnées (requis avant les autres vérifications)
279
351
  node claudeos-core-tools/manifest-generator/index.js
280
352
 
281
- # Exécuter toutes les vérifications
353
+ # Lancer toutes les vérifications
282
354
  node claudeos-core-tools/health-checker/index.js
283
355
 
284
- # Ou exécuter les vérifications individuellement :
285
- node claudeos-core-tools/plan-validator/index.js --check # Plan ↔ disk
286
- node claudeos-core-tools/sync-checker/index.js # Sync status
287
- node claudeos-core-tools/content-validator/index.js # Content quality
288
- node claudeos-core-tools/pass-json-validator/index.js # JSON format
356
+ # Ou lancer des vérifications individuelles :
357
+ node claudeos-core-tools/plan-validator/index.js --check # Cohérence Plan ↔ disque
358
+ node claudeos-core-tools/sync-checker/index.js # Fichiers non enregistrés/orphelins
359
+ node claudeos-core-tools/content-validator/index.js # Vérifications qualité (incl. section memory/ [9/9])
360
+ node claudeos-core-tools/pass-json-validator/index.js # Vérifications JSON Pass 1–4 + marqueur de complétion
289
361
  ```
290
362
 
291
- #### Step 8 : Vérifier les résultats
363
+ #### Étape 9 : Vérifier les résultats
292
364
 
293
365
  ```bash
366
+ # Compter les fichiers générés
294
367
  find .claude claudeos-core -type f | grep -v node_modules | grep -v '/generated/' | wc -l
368
+
369
+ # Regarder CLAUDE.md
295
370
  head -30 CLAUDE.md
371
+
372
+ # Regarder un fichier standard
373
+ cat claudeos-core/standard/00.core/01.project-overview.md | head -20
374
+
375
+ # Regarder les règles
296
376
  ls .claude/rules/*/
297
377
  ```
298
378
 
299
- > **Conseil :** Si une étape échoue, vous pouvez relancer uniquement cette étape. Les résultats Pass 1/2 sont mis en cache — si `pass1-N.json` ou `pass2-merged.json` existe déjà, le pipeline automatisé les ignore. Utilisez `npx claudeos-core init --force` pour supprimer les résultats précédents et repartir de zéro.
379
+ > **Astuce :** Si une étape échoue, vous pouvez corriger le problème et relancer uniquement cette étape. Les résultats de Pass 1/2 sont cachés — si `pass1-N.json` ou `pass2-merged.json` existe déjà, le pipeline automatisé les saute. Utilisez `npx claudeos-core init --force` pour supprimer les résultats précédents et repartir de zéro.
300
380
 
301
- ### Commencez à Utiliser
381
+ ### Commencer à Utiliser
302
382
 
303
383
  ```
304
- # Dans Claude Code — parlez simplement de manière naturelle :
305
- "Crée un CRUD pour le domaine commandes"
306
- "Ajoute une API d'authentification utilisateur"
307
- "Refactorise ce code selon les patterns du projet"
384
+ # Dans Claude Code — demandez simplement naturellement :
385
+ « Crée un CRUD pour le domaine order »
386
+ « Ajoute une API d'authentification utilisateur »
387
+ « Refactorise ce code pour qu'il matche les patterns du projet »
308
388
 
309
389
  # Claude Code référence automatiquement vos Standards, Rules et Skills générés.
310
390
  ```
311
391
 
312
392
  ---
313
393
 
314
- ## Comment ça Marche — Pipeline 3-Pass
394
+ ## Comment ça marche — Pipeline à 4 Passes
315
395
 
316
396
  ```
317
397
  npx claudeos-core init
318
398
 
319
399
  ├── [1] npm install ← Dépendances (~10s)
320
- ├── [2] Structure des répertoires Création des dossiers (~1s)
400
+ ├── [2] Structure de répertoires Créer les dossiers (~1s)
321
401
  ├── [3] plan-installer (Node.js) ← Scan du projet (~5s)
322
- │ ├── Auto-détection du stack (multi-stack)
323
- │ ├── Extraction de la liste des domaines (tags : backend/frontend)
324
- │ ├── Division en groupes de domaines (par type)
325
- │ └── Sélection des prompts spécifiques au stack (par type)
402
+ │ ├── Auto-détecte le stack (multi-stack aware)
403
+ │ ├── Extrait la liste de domaines (tagged : backend/frontend)
404
+ │ ├── Divise en groupes de domaines (par type)
405
+ │ └── Sélectionne des prompts spécifiques au stack (par type)
326
406
 
327
- ├── [4] Pass 1 × N (claude -p) ← Analyse approfondie du code (~2-8 min)
328
- │ ├── ⚙️ Groupes backend → prompt d'analyse backend
329
- │ └── 🎨 Groupes frontend → prompt d'analyse frontend
407
+ ├── [4] Pass 1 × N (claude -p) ← Analyse profonde du code (~2-8min)
408
+ │ ├── ⚙️ Groupes backend → prompt spécifique backend
409
+ │ └── 🎨 Groupes frontend → prompt spécifique frontend
330
410
 
331
- ├── [5] Pass 2 × 1 (claude -p) ← Fusion de l'analyse (~1 min)
332
- │ └── Consolidation de TOUS les résultats Pass 1 (backend + frontend)
411
+ ├── [5] Pass 2 × 1 (claude -p) ← Merge d'analyse (~1min)
412
+ │ └── Consolide TOUS les résultats de Pass 1 (backend + frontend)
333
413
 
334
- ├── [6] Pass 3 × 1 (claude -p) ← Génération complète (~3-5 min)
414
+ ├── [6] Pass 3 × 1 (claude -p) ← Génère tout (~3-5min)
335
415
  │ └── Prompt combiné (cibles backend + frontend)
336
416
 
337
- └── [7] Vérification ← Exécution auto du health checker
417
+ ├── [7] Pass 4 × 1 (claude -p) ← Memory scaffolding (~30s)
418
+ │ ├── Seed memory/ (decision-log, failure-patterns, …)
419
+ │ ├── Génère les règles 60.memory/
420
+ │ ├── Ajoute la section « Memory (L4) » à CLAUDE.md
421
+ │ └── Construit le plan 50.memory-master.md
422
+
423
+ └── [8] Vérification ← Auto-exécute le health checker
338
424
  ```
339
425
 
340
- ### Pourquoi 3 Pass ?
426
+ ### Pourquoi 4 Passes ?
341
427
 
342
- **Pass 1** est le seul pass qui lit votre code source. Il sélectionne des fichiers représentatifs par domaine et extrait les patterns sur 55–95 catégories d'analyse (par stack). Pour les grands projets, Pass 1 s'exécute plusieurs fois — une par groupe de domaines. Dans les projets multi-stack (ex : backend Java + frontend React), backend et frontend utilisent **des prompts d'analyse différents** adaptés à chaque stack.
428
+ **Pass 1** est le seul pass qui lit votre code source. Il sélectionne des fichiers représentatifs par domaine et extrait des patterns à travers 55–95 catégories d'analyse (selon le stack). Pour les gros projets, Pass 1 tourne plusieurs fois — une par groupe de domaines. Dans les projets multi-stack (ex : Java backend + React frontend), les domaines backend et frontend utilisent des **prompts d'analyse différents** adaptés à chaque stack.
343
429
 
344
- **Pass 2** fusionne tous les résultats de Pass 1 en une analyse unifiée : patterns communs (100% partagés), patterns majoritaires (50%+ partagés), patterns spécifiques au domaine, anti-patterns par sévérité et préoccupations transversales (nommage, sécurité, BD, tests, journalisation, performance).
430
+ **Pass 2** merge tous les résultats de Pass 1 en une analyse unifiée : patterns communs (100% partagés), patterns majoritaires (50%+ partagés), patterns spécifiques à un domaine, anti-patterns par sévérité et préoccupations transverses (naming, sécurité, BD, testing, logging, performance). Les résultats backend et frontend sont mergés ensemble.
345
431
 
346
- **Pass 3** prend l'analyse fusionnée et génère tout l'écosystème de fichiers. Il ne lit jamais le code source — uniquement le JSON d'analyse. En mode multi-stack, le prompt de génération combine les cibles backend et frontend pour générer les deux ensembles de standards en un seul pass.
432
+ **Pass 3** prend l'analyse mergée et génère tout l'écosystème de fichiers (CLAUDE.md, règles, standards, skills, guides). Il ne lit jamais le code source — seulement le JSON d'analyse. En mode multi-stack, le prompt de génération combine les cibles backend et frontend pour que les deux ensembles de standards soient générés en un seul pass.
433
+
434
+ **Pass 4** scaffolde la couche Memory L4 : fichiers persistants de connaissance d'équipe (decision-log, failure-patterns, politique de compaction, auto-rule-update) plus les règles `60.memory/` qui indiquent aux futures sessions quand et comment lire/écrire ces fichiers. La couche memory est ce qui permet à Claude Code d'accumuler des leçons entre les sessions au lieu de les redécouvrir à chaque fois. Quand `--lang` n'est pas l'anglais, le contenu statique de fallback est traduit via Claude avant d'être écrit.
347
435
 
348
436
  ---
349
437
 
@@ -355,203 +443,313 @@ your-project/
355
443
  ├── CLAUDE.md ← Point d'entrée Claude Code
356
444
 
357
445
  ├── .claude/
358
- │ └── rules/ ← Règles déclenchées par Glob
446
+ │ └── rules/ ← Règles déclenchées par glob
359
447
  │ ├── 00.core/
360
448
  │ ├── 10.backend/
361
449
  │ ├── 20.frontend/
362
450
  │ ├── 30.security-db/
363
451
  │ ├── 40.infra/
364
- └── 50.sync/ ← Règles de rappel de synchronisation
452
+ ├── 50.sync/ ← Règles de rappel de sync
453
+ │ └── 60.memory/ ← Règles de scope on-demand de la memory L4 (v2.0.0)
365
454
 
366
455
  ├── claudeos-core/ ← Répertoire principal de sortie
367
- │ ├── generated/ ← JSON d'analyse + prompts dynamiques
368
- │ ├── standard/ Standards de code (15-19 fichiers)
456
+ │ ├── generated/ ← JSON d'analyse + prompts dynamiques + marqueurs de Pass (mettre en gitignore)
457
+ ├── project-analysis.json Info du stack (multi-stack aware)
458
+ │ │ ├── domain-groups.json ← Groupes avec type : backend/frontend
459
+ │ │ ├── pass1-backend-prompt.md ← Prompt d'analyse backend
460
+ │ │ ├── pass1-frontend-prompt.md ← Prompt d'analyse frontend (si détecté)
461
+ │ │ ├── pass2-prompt.md ← Prompt de merge
462
+ │ │ ├── pass3-prompt.md ← Prompt de génération (combiné)
463
+ │ │ ├── pass4-prompt.md ← Prompt de scaffolding memory (v2.0.0)
464
+ │ │ ├── pass3-complete.json ← Marqueur de complétion Pass 3 (skip au resume)
465
+ │ │ ├── pass4-memory.json ← Marqueur de complétion Pass 4 (skip au resume)
466
+ │ │ ├── .i18n-cache-<lang>.json ← Cache de traduction (non-anglais `--lang`)
467
+ │ │ └── .staged-rules/ ← Répertoire de staging transitoire pour les écritures `.claude/rules/` (auto-déplacé + nettoyé)
468
+ │ ├── standard/ ← Standards de codage (15-19 fichiers)
469
+ │ │ ├── 00.core/ ← Vue d'ensemble, architecture, naming
470
+ │ │ ├── 10.backend-api/ ← Patterns API (spécifiques au stack)
471
+ │ │ ├── 20.frontend-ui/ ← Patterns frontend (si détecté)
472
+ │ │ ├── 30.security-db/ ← Sécurité, schéma BD, utilitaires
473
+ │ │ ├── 40.infra/ ← Config, logging, CI/CD
474
+ │ │ ├── 50.verification/ ← Vérification de build, testing
475
+ │ │ └── 90.optional/ ← Conventions optionnelles (extras spécifiques au stack)
369
476
  │ ├── skills/ ← Skills de scaffolding CRUD
370
- │ ├── guide/ ← Onboarding, FAQ, dépannage (9 fichiers)
371
- │ ├── plan/ ← Master Plans (sauvegarde/restauration)
477
+ │ ├── guide/ ← Onboarding, FAQ, troubleshooting (9 fichiers)
478
+ │ ├── plan/ ← Master plans (backup/restore)
372
479
  │ ├── database/ ← Schéma BD, guide de migration
373
- └── mcp-guide/ ← Guide d'intégration serveur MCP
480
+ ├── mcp-guide/ ← Guide d'intégration de serveur MCP
481
+ │ └── memory/ ← L4 : connaissance d'équipe (4 fichiers) — commitez-les
482
+ │ ├── decision-log.md ← Le « pourquoi » derrière les décisions de conception
483
+ │ ├── failure-patterns.md ← Erreurs récurrentes et fixes (auto-scoré — `npx claudeos-core memory score`)
484
+ │ ├── compaction.md ← Stratégie de compaction en 4 étapes (lancez `npx claudeos-core memory compact`)
485
+ │ └── auto-rule-update.md ← Propositions d'amélioration de règles (`npx claudeos-core memory propose-rules`)
374
486
 
375
487
  └── claudeos-core-tools/ ← Ce toolkit (ne pas modifier)
376
488
  ```
377
489
 
378
- Chaque fichier de standard inclut des exemples corrects, des exemples incorrects et un tableau récapitulatif des règles — le tout dérivé de vos patterns de code réels, pas de templates génériques.
490
+ Chaque fichier standard inclut des exemples corrects, des exemples incorrects et une table récapitulative des règles — tout dérivé des vrais patterns de votre code, pas de templates génériques.
491
+
492
+ ### Recommandations de gitignore
493
+
494
+ **À commiter** (connaissance d'équipe — destinée au partage) :
495
+ - `CLAUDE.md` — point d'entrée Claude Code
496
+ - `.claude/rules/**` — règles auto-chargées
497
+ - `claudeos-core/standard/**`, `skills/**`, `guide/**`, `database/**`, `mcp-guide/**`, `plan/**` — documentation générée
498
+ - `claudeos-core/memory/**` — historique de décisions, patterns d'échec, propositions de règles
499
+
500
+ **À NE PAS commiter** (artefacts de build régénérables) :
501
+
502
+ ```gitignore
503
+ # ClaudeOS-Core — analyse générée et cache de traduction
504
+ claudeos-core/generated/
505
+ ```
506
+
507
+ Le répertoire `generated/` contient le JSON d'analyse (`pass1-*.json`, `pass2-merged.json`), les prompts (`pass1/2/3/4-prompt.md`), les marqueurs de complétion de Pass (`pass3-complete.json`, `pass4-memory.json`), le cache de traduction (`.i18n-cache-<lang>.json`) et le répertoire transitoire de staging (`.staged-rules/`) — tout reconstruisible en relançant `npx claudeos-core init`.
379
508
 
380
509
  ---
381
510
 
382
- ## Auto-dimensionnement par Taille de Projet
511
+ ## Auto-scaling selon la Taille du Projet
383
512
 
384
- | Taille | Domaines | Exécutions Pass 1 | Total `claude -p` | Temps Estimé |
513
+ | Taille | Domaines | Exécutions Pass 1 | Total `claude -p` | Temps est. |
385
514
  |---|---|---|---|---|
386
- | Petit | 1–4 | 1 | 3 | ~5 min |
387
- | Moyen | 5–8 | 2 | 4 | ~8 min |
388
- | Grand | 9–16 | 3–4 | 56 | ~12 min |
389
- | Très Grand | 17+ | 5+ | 7+ | ~18 min+ |
515
+ | Petit | 1–4 | 1 | 4 (Pass 1 + 2 + 3 + 4) | ~5–6min |
516
+ | Moyen | 5–8 | 2 | 5 | ~8–9min |
517
+ | Grand | 9–16 | 3–4 | 67 | ~12–13min |
518
+ | X-Grand | 17+ | 5+ | 8+ | ~18min+ |
390
519
 
391
- Pour les projets multi-stack (ex : Java + React), les domaines backend et frontend sont comptés ensemble. 6 backend + 4 frontend = 10 domaines, dimensionné comme « Grand ».
520
+ Pass 4 (memory scaffolding) ajoute ~30s au-dessus des passes d'analyse. Pour les projets multi-stack (ex : Java + React), les domaines backend et frontend sont comptés ensemble. Un projet avec 6 domaines backend + 4 frontend = 10 au total, scaling en « Grand ».
392
521
 
393
522
  ---
394
523
 
395
524
  ## Outils de Vérification
396
525
 
397
- ClaudeOS-Core inclut 5 outils de vérification intégrés, exécutés automatiquement après la génération :
526
+ ClaudeOS-Core inclut 5 outils de vérification intégrés qui tournent automatiquement après la génération :
398
527
 
399
528
  ```bash
400
- # Exécuter toutes les vérifications (recommandé)
529
+ # Lancer toutes les vérifications d'un coup (recommandé)
401
530
  npx claudeos-core health
402
531
 
403
532
  # Commandes individuelles
404
533
  npx claudeos-core validate # Comparaison Plan ↔ disque
405
- npx claudeos-core refresh # Synchronisation Disque → Plan
406
- npx claudeos-core restore # Restauration Plan → Disque
534
+ npx claudeos-core refresh # Sync Disque → Plan
535
+ npx claudeos-core restore # Restore Plan → Disque
536
+
537
+ # Ou utiliser node directement (utilisateurs git clone)
538
+ node claudeos-core-tools/health-checker/index.js
539
+ node claudeos-core-tools/manifest-generator/index.js
540
+ node claudeos-core-tools/plan-validator/index.js --check
541
+ node claudeos-core-tools/sync-checker/index.js
407
542
  ```
408
543
 
409
- | Outil | Fonction |
544
+ | Outil | Ce qu'il fait |
410
545
  |---|---|
411
- | **manifest-generator** | Construit les JSON de métadonnées (rule-manifest, sync-map, plan-manifest) |
412
- | **plan-validator** | Compare les blocs `<file>` du Master Plan avec le disque — 3 modes : check, refresh, restore |
413
- | **sync-checker** | Détecte les fichiers non enregistrés (sur disque mais pas dans le plan) et les entrées orphelines |
414
- | **content-validator** | Valide la qualité des fichiers — fichiers vides, exemples ✅/❌ manquants, sections requises |
415
- | **pass-json-validator** | Valide la structure JSON des Pass 1–3, clés requises et complétude des sections |
546
+ | **manifest-generator** | Construit le JSON de métadonnées (rule-manifest, sync-map, plan-manifest) ; indexe 7 répertoires dont `memory/` (`totalMemory` dans summary) |
547
+ | **plan-validator** | Compare les blocs `<file>` du Master Plan au disque — 3 modes : check, refresh, restore |
548
+ | **sync-checker** | Détecte les fichiers non enregistrés (sur disque mais pas dans le plan) et les entrées orphelines — couvre 7 répertoires (ajout de `memory/` en v2.0.0) |
549
+ | **content-validator** | Vérification qualité en 9 sections — fichiers vides, exemples ✅/❌ manquants, sections requises, plus intégrité du scaffold memory L4 (dates de headings de decision-log, champs requis de failure-pattern, parsing fence-aware) |
550
+ | **pass-json-validator** | Valide la structure JSON de Pass 1–4 plus les marqueurs de complétion `pass3-complete.json` et `pass4-memory.json` |
416
551
 
417
552
  ---
418
553
 
419
554
  ## Comment Claude Code Utilise Votre Documentation
420
555
 
421
- Voici comment Claude Code lit effectivement la documentation générée par ClaudeOS-Core :
556
+ ClaudeOS-Core génère une documentation que Claude Code lit réellement voici comment :
422
557
 
423
- ### Fichiers lus automatiquement
558
+ ### Ce que Claude Code lit automatiquement
424
559
 
425
560
  | Fichier | Quand | Garanti |
426
561
  |---|---|---|
427
- | `CLAUDE.md` | Au début de chaque conversation | Toujours |
428
- | `.claude/rules/00.core/*` | Lors de l'édition de fichiers (`paths: ["**/*"]`) | Toujours |
429
- | `.claude/rules/10.backend/*` | Lors de l'édition de fichiers (`paths: ["**/*"]`) | Toujours |
430
- | `.claude/rules/30.security-db/*` | Lors de l'édition de fichiers (`paths: ["**/*"]`) | Toujours |
431
- | `.claude/rules/40.infra/*` | Uniquement pour les fichiers config/infra (paths scopés) | Conditionnel |
432
- | `.claude/rules/50.sync/*` | Uniquement pour les fichiers claudeos-core (paths scopés) | Conditionnel |
562
+ | `CLAUDE.md` | À chaque début de conversation | Toujours |
563
+ | `.claude/rules/00.core/*` | Quand n'importe quel fichier est édité (`paths: ["**/*"]`) | Toujours |
564
+ | `.claude/rules/10.backend/*` | Quand n'importe quel fichier est édité (`paths: ["**/*"]`) | Toujours |
565
+ | `.claude/rules/20.frontend/*` | Quand un fichier frontend est édité (limité aux chemins component/page/style) | Conditionnel |
566
+ | `.claude/rules/30.security-db/*` | Quand n'importe quel fichier est édité (`paths: ["**/*"]`) | Toujours |
567
+ | `.claude/rules/40.infra/*` | Uniquement lors de l'édition de fichiers config/infra (chemins limités) | Conditionnel |
568
+ | `.claude/rules/50.sync/*` | Uniquement lors de l'édition de fichiers claudeos-core (chemins limités) | Conditionnel |
569
+ | `.claude/rules/60.memory/*` | Quand `claudeos-core/memory/*` est édité (limité aux chemins memory) — indique **comment** lire/écrire la couche memory on-demand | Conditionnel (v2.0.0) |
433
570
 
434
- ### Fichiers lus à la demande via les références des règles
571
+ ### Ce que Claude Code lit on-demand via les références de règles
435
572
 
436
- Chaque fichier de règle lie son standard correspondant dans la section `## Reference`. Claude ne lit que le standard pertinent pour la tâche en cours :
573
+ Chaque fichier de règle lie à son standard correspondant via une section `## Reference`. Claude lit uniquement le standard pertinent pour la tâche courante :
437
574
 
438
- - `claudeos-core/standard/**` — Patterns de code, exemples ✅/❌, conventions de nommage
439
- - `claudeos-core/database/**` — Schéma DB (pour requêtes, mappers, migrations)
575
+ - `claudeos-core/standard/**` — patterns de codage, exemples ✅/❌, conventions de naming
576
+ - `claudeos-core/database/**` — schéma BD (pour queries, mappers, migrations)
577
+ - `claudeos-core/memory/**` (v2.0.0) — couche de connaissance d'équipe L4 ; **pas** auto-chargée (serait trop bruyante à chaque conversation). À la place, les règles `60.memory/*` indiquent à Claude *quand* Read ces fichiers : au début de session (skim du `decision-log.md` récent + `failure-patterns.md` à haute importance), et append-on-demand lors de décisions ou d'erreurs récurrentes.
440
578
 
441
- `00.standard-reference.md` sert de répertoire pour découvrir les standards sans règle correspondante.
579
+ Le `00.standard-reference.md` sert d'annuaire de tous les fichiers standard pour découvrir des standards qui n'ont pas de règle correspondante.
442
580
 
443
- ### Fichiers NON lus (économie de contexte)
581
+ ### Ce que Claude Code NE lit PAS (économise du contexte)
444
582
 
445
- Explicitement exclus par la section `DO NOT Read` de la règle standard-reference :
583
+ Ces dossiers sont explicitement exclus via la section `DO NOT Read` de la règle standard-reference :
446
584
 
447
- | Dossier | Raison d'exclusion |
585
+ | Dossier | Pourquoi exclu |
448
586
  |---|---|
449
- | `claudeos-core/plan/` | Sauvegardes Master Plan (~340Ko). Utilisez `npx claudeos-core refresh` pour synchroniser. |
450
- | `claudeos-core/generated/` | JSON de métadonnées build. Pas une référence de code. |
587
+ | `claudeos-core/plan/` | Backups de Master Plan (~340KB). Utilisez `npx claudeos-core refresh` pour sync. |
588
+ | `claudeos-core/generated/` | JSON de métadonnées de build, prompts, marqueurs de Pass, cache de traduction, `.staged-rules/`. Pas pour coder. |
451
589
  | `claudeos-core/guide/` | Guides d'onboarding pour humains. |
452
- | `claudeos-core/mcp-guide/` | Docs serveur MCP. Pas une référence de code. |
590
+ | `claudeos-core/mcp-guide/` | Docs de serveur MCP. Pas pour coder. |
591
+ | `claudeos-core/memory/` (auto-load) | **Auto-load désactivé** par design — gonflerait le contexte à chaque conversation. Lu on-demand via les règles `60.memory/*` à la place (ex : scan de début de session de `failure-patterns.md`). Commitez toujours ces fichiers. |
453
592
 
454
593
  ---
455
594
 
456
- ## Flux de Travail Quotidien
595
+ ## Workflow Quotidien
457
596
 
458
- ### Après l'Installation
597
+ ### Après l'installation
459
598
 
460
599
  ```
461
- # Utilisez Claude Code normalement — il référence vos standards automatiquement :
462
- "Crée un CRUD pour le domaine commandes"
463
- "Ajoute une API de mise à jour du profil utilisateur"
464
- "Refactorise ce code selon les patterns du projet"
600
+ # Utilisez simplement Claude Code normalement — il référence vos standards automatiquement :
601
+ « Crée un CRUD pour le domaine order »
602
+ « Ajoute une API de mise à jour de profil utilisateur »
603
+ « Refactorise ce code pour qu'il matche les patterns du projet »
465
604
  ```
466
605
 
467
- ### Après Modification Manuelle des Standards
606
+ ### Après édition manuelle des Standards
468
607
 
469
608
  ```bash
470
- # Après avoir édité des fichiers standard ou rules :
609
+ # Après avoir édité des fichiers de standards ou de règles :
471
610
  npx claudeos-core refresh
472
611
 
473
- # Vérifier la cohérence
612
+ # Vérifiez que tout est cohérent
474
613
  npx claudeos-core health
475
614
  ```
476
615
 
477
- ### Quand les Docs sont Corrompus
616
+ ### Quand les docs sont corrompues
478
617
 
479
618
  ```bash
480
- # Tout restaurer depuis le Master Plan
619
+ # Restaurer tout depuis le Master Plan
481
620
  npx claudeos-core restore
482
621
  ```
483
622
 
623
+ ### Maintenance de la couche Memory (v2.0.0)
624
+
625
+ La couche Memory L4 (`claudeos-core/memory/`) accumule la connaissance d'équipe à travers les sessions. Trois sous-commandes CLI la maintiennent en bonne santé :
626
+
627
+ ```bash
628
+ # Compact : applique la politique de compaction en 4 étapes (à lancer périodiquement — ex : mensuellement)
629
+ npx claudeos-core memory compact
630
+ # Étape 1 : résume les entrées anciennes (>30 jours, corps → une ligne)
631
+ # Étape 2 : merge les headings dupliqués (fréquence sommée, dernier fix conservé)
632
+ # Étape 3 : drop basse-importance + anciennes (importance <3 ET lastSeen >60 jours)
633
+ # Étape 4 : applique le plafond de 400 lignes par fichier (la plus ancienne basse-importance est supprimée en premier)
634
+
635
+ # Score : re-classe les entrées de failure-patterns.md par importance
636
+ npx claudeos-core memory score
637
+ # importance = round(frequency × 1.5 + recency × 5), plafonné à 10
638
+ # À lancer après avoir ajouté plusieurs nouveaux failure patterns
639
+
640
+ # Propose-rules : fait remonter des candidats d'ajouts de règles depuis les échecs récurrents
641
+ npx claudeos-core memory propose-rules
642
+ # Lit les entrées de failure-patterns.md avec frequency ≥ 3
643
+ # Calcule la confiance (sigmoïde sur evidence pondérée × multiplicateur d'anchor)
644
+ # Écrit les propositions dans memory/auto-rule-update.md (PAS auto-appliqué)
645
+ # Confiance ≥ 0.70 mérite une revue sérieuse ; accepter → éditer la règle + loguer la décision
646
+ ```
647
+
648
+ Quand écrire dans memory (Claude le fait on-demand, mais vous pouvez aussi éditer manuellement) :
649
+ - **`decision-log.md`** — ajoutez une nouvelle entrée quand vous choisissez entre des patterns concurrents, sélectionnez une bibliothèque, définissez une convention d'équipe ou décidez de NE PAS faire quelque chose. Append-only ; n'éditez jamais les entrées historiques.
650
+ - **`failure-patterns.md`** — ajoutez à la **deuxième occurrence** d'une erreur récurrente ou d'une root cause non évidente. Les erreurs de première fois n'ont pas besoin d'entrée.
651
+ - `compaction.md` et `auto-rule-update.md` — générés/gérés par les sous-commandes CLI ci-dessus ; ne pas éditer à la main.
652
+
484
653
  ### Intégration CI/CD
485
654
 
486
655
  ```yaml
487
656
  # Exemple GitHub Actions
488
657
  - run: npx claudeos-core validate
489
- # Code de sortie 1 bloque la PR
658
+ # Exit code 1 bloque la PR
659
+
660
+ # Optionnel : housekeeping mensuel de memory (workflow cron séparé)
661
+ - run: npx claudeos-core memory compact
662
+ - run: npx claudeos-core memory score
490
663
  ```
491
664
 
492
665
  ---
493
666
 
494
- ## Quelle Différence ?
667
+ ## En Quoi Est-ce Différent ?
668
+
669
+ ### vs autres outils Claude Code
495
670
 
496
671
  | | ClaudeOS-Core | Everything Claude Code (50K+ ⭐) | Harness | specs-generator | Claude `/init` |
497
672
  |---|---|---|---|---|---|
498
- | **Approach** | Code analyzes first, then LLM generates | Pre-built config presets | LLM designs agent teams | LLM generates spec docs | LLM writes CLAUDE.md |
499
- | **Reads your source code** | ✅ Deterministic static analysis | ❌ | ❌ | ❌ (LLM reads) | ❌ (LLM reads) |
500
- | **Stack detection** | Code confirms (ORM, DB, build tool, pkg manager) | N/A (stack-agnostic) | LLM guesses | LLM guesses | LLM guesses |
501
- | **Domain detection** | Code confirms (Java 5 patterns, Kotlin CQRS, Next.js FSD) | N/A | LLM guesses | N/A | N/A |
502
- | **Same projectSame result** | ✅ Deterministic analysis | ✅ (static files) | ❌ (LLM varies) | ❌ (LLM varies) | ❌ (LLM varies) |
503
- | **Large project handling** | Domain group splitting (4 domains / 40 files per group) | N/A | No splitting | No splitting | Context window limit |
504
- | **Output** | CLAUDE.md + Rules + Standards + Skills + Guides + Plans (40-50+ files) | Agents + Skills + Commands + Hooks | Agents + Skills | 6 spec documents | CLAUDE.md (1 file) |
505
- | **Output location** | `.claude/rules/` (auto-loaded by Claude Code) | `.claude/` various | `.claude/agents/` + `.claude/skills/` | `.claude/steering/` + `specs/` | `CLAUDE.md` |
506
- | **Post-generation verification** | ✅ 5 automated validators | ❌ | ❌ | ❌ | ❌ |
507
- | **Multi-language output** | ✅ 10 languages | ❌ | ❌ | ❌ | ❌ |
508
- | **Multi-stack** | ✅ Backend + Frontend simultaneous | ❌ Stack-agnostic | ❌ | ❌ | Partial |
509
- | **Agent orchestration** | | 28 agents | 6 patterns | ❌ | ❌ |
673
+ | **Approche** | Code analyse d'abord, puis LLM génère | Presets de config pré-construits | Le LLM conçoit des équipes d'agents | Le LLM génère des docs de spec | Le LLM écrit CLAUDE.md |
674
+ | **Lit votre code source** | ✅ Analyse statique déterministe | ❌ | ❌ | ❌ (le LLM lit) | ❌ (le LLM lit) |
675
+ | **Détection de stack** | Le code confirme (ORM, BD, build tool, pkg manager) | N/A (stack-agnostic) | Le LLM devine | Le LLM devine | Le LLM devine |
676
+ | **Détection de domaines** | Le code confirme (Java 5 patterns, Kotlin CQRS, Next.js FSD) | N/A | Le LLM devine | N/A | N/A |
677
+ | **Même projetMême résultat** | ✅ Analyse déterministe | ✅ (fichiers statiques) | ❌ (le LLM varie) | ❌ (le LLM varie) | ❌ (le LLM varie) |
678
+ | **Gestion des gros projets** | Split en groupes de domaines (4 domaines / 40 fichiers par groupe) | N/A | Pas de split | Pas de split | Limite de fenêtre de contexte |
679
+ | **Sortie** | CLAUDE.md + Rules + Standards + Skills + Guides + Plans (40-50+ fichiers) | Agents + Skills + Commands + Hooks | Agents + Skills | 6 documents de spec | CLAUDE.md (1 fichier) |
680
+ | **Emplacement de sortie** | `.claude/rules/` (auto-chargé par Claude Code) | `.claude/` divers | `.claude/agents/` + `.claude/skills/` | `.claude/steering/` + `specs/` | `CLAUDE.md` |
681
+ | **Vérification post-génération** | ✅ 5 validateurs automatiques | ❌ | ❌ | ❌ | ❌ |
682
+ | **Sortie multi-langue** | ✅ 10 langues | ❌ | ❌ | ❌ | ❌ |
683
+ | **Multi-stack** | ✅ Backend + Frontend simultanés | ❌ Stack-agnostic | ❌ | ❌ | Partiel |
684
+ | **Couche memory persistante** | L4 decision log + failure patterns + propositions de règles auto-scorées (v2.0.0) | | | ❌ | ❌ |
685
+ | **Orchestration d'agents** | ❌ | ✅ 28 agents | ✅ 6 patterns | ❌ | ❌ |
686
+
687
+ ### La différence clé en une phrase
688
+
689
+ **Les autres outils donnent à Claude « des instructions globalement correctes ». ClaudeOS-Core donne à Claude « des instructions extraites de votre code réel ».**
510
690
 
511
- ### Key difference
691
+ C'est pourquoi Claude Code arrête de générer du code JPA dans votre projet MyBatis,
692
+ arrête d'utiliser `success()` quand votre codebase utilise `ok()`,
693
+ et arrête de créer des répertoires `user/controller/` quand votre projet utilise `controller/user/`.
512
694
 
513
- **Other tools give Claude "generally good instructions." ClaudeOS-Core gives Claude "instructions extracted from your actual code."**
695
+ ### Complémentaires, pas concurrents
514
696
 
515
- ### Complementary, not competing
697
+ ClaudeOS-Core se concentre sur les **règles et standards spécifiques au projet**.
698
+ Les autres outils se concentrent sur **l'orchestration d'agents et les workflows**.
516
699
 
517
- ClaudeOS-Core: **project-specific rules**. Other tools: **agent orchestration**.
518
- Use both together.
700
+ Vous pouvez utiliser ClaudeOS-Core pour générer les règles de votre projet, puis utiliser ECC ou Harness par-dessus pour les équipes d'agents et l'automatisation des workflows. Ils résolvent des problèmes différents.
519
701
 
520
702
  ---
703
+
521
704
  ## FAQ
522
705
 
523
706
  **Q : Est-ce que ça modifie mon code source ?**
524
- Non. Seuls `CLAUDE.md`, `.claude/rules/` et `claudeos-core/` sont créés. Votre code existant n'est jamais modifié.
707
+ Non. Il crée uniquement `CLAUDE.md`, `.claude/rules/` et `claudeos-core/`. Votre code existant n'est jamais modifié.
525
708
 
526
709
  **Q : Combien ça coûte ?**
527
- Appelle `claude -p` 37 fois. C'est dans les limites d'utilisation normale de Claude Code.
710
+ Il appelle `claude -p` 48 fois (Pass 1 × N + Pass 2 + Pass 3 + Pass 4). C'est dans l'usage normal de Claude Code. Quand `--lang` n'est pas l'anglais, le chemin de fallback statique peut invoquer quelques appels supplémentaires à `claude -p` pour traduire ; les résultats sont cachés dans `claudeos-core/generated/.i18n-cache-<lang>.json` pour que les exécutions suivantes les réutilisent.
528
711
 
529
- **Q : Faut-il commiter les fichiers générés dans Git ?**
530
- Recommandé. Votre équipe peut partager les mêmes standards Claude Code. Envisagez d'ajouter `claudeos-core/generated/` au `.gitignore` (le JSON d'analyse est regénérable).
712
+ **Q : Dois-je commiter les fichiers générés dans Git ?**
713
+ Oui, recommandé. Votre équipe peut partager les mêmes standards Claude Code. Pensez à ajouter `claudeos-core/generated/` à `.gitignore` (le JSON d'analyse est régénérable).
531
714
 
532
- **Q : Qu'en est-il des projets multi-stack (ex : backend Java + frontend React) ?**
533
- Entièrement supporté. ClaudeOS-Core auto-détecte les deux stacks, étiquette les domaines comme `backend` ou `frontend`, et utilise des prompts d'analyse spécifiques pour chacun. Pass 2 fusionne tout, et Pass 3 génère les standards backend et frontend en un seul pass.
715
+ **Q : Qu'en est-il des projets stack mixte (ex : Java backend + React frontend) ?**
716
+ Totalement supporté. ClaudeOS-Core auto-détecte les deux stacks, tagge les domaines comme `backend` ou `frontend`, et utilise des prompts d'analyse spécifiques au stack pour chacun. Pass 2 merge tout, et Pass 3 génère les standards backend et frontend en un seul pass.
534
717
 
535
- **Q : Fonctionne-t-il avec Turborepo / pnpm workspaces / Lerna ?**
536
- Oui. ClaudeOS-Core détecte `turbo.json`, `pnpm-workspace.yaml`, `lerna.json` ou `package.json#workspaces` et scanne automatiquement les `package.json` des sous-packages pour les dépendances framework/ORM/BD. Le scan de domaines couvre les patterns `apps/*/src/` et `packages/*/src/`. Exécutez depuis la racine du monorepo.
718
+ **Q : Est-ce que ça marche avec les monorepos Turborepo / pnpm workspaces / Lerna ?**
719
+ Oui. ClaudeOS-Core détecte `turbo.json`, `pnpm-workspace.yaml`, `lerna.json`, ou `package.json#workspaces` et scanne automatiquement les `package.json` des sous-packages pour les dépendances framework/ORM/BD. Le scan de domaines couvre les patterns `apps/*/src/` et `packages/*/src/`. Lancez depuis la racine du monorepo.
537
720
 
538
- **Q : Que se passe-t-il lors d'une ré-exécution ?**
539
- Si des résultats Pass 1/2 précédents existent, un prompt interactif vous permet de choisir : **Continue** (reprendre là où ça s'est arrêté) ou **Fresh** (tout supprimer et repartir de zéro). Utilisez `--force` pour ignorer le prompt et toujours repartir de zéro. Pass 3 est toujours ré-exécuté. Les versions précédentes peuvent être restaurées depuis les Master Plans.
721
+ **Q : Que se passe-t-il en cas de re-lancement ?**
722
+ Si des résultats précédents de Pass 1/2 existent, un prompt interactif vous laisse choisir : **Continue** (reprendre là où ça s'est arrêté) ou **Fresh** (tout supprimer et repartir de zéro). Utilisez `--force` pour sauter le prompt et toujours repartir de zéro. Pass 3 relance toujours. Les versions précédentes peuvent être restaurées depuis les Master Plans.
540
723
 
541
724
  **Q : NestJS a-t-il son propre template ou utilise-t-il celui d'Express ?**
542
- NestJS utilise un template dédié `node-nestjs` avec des catégories d'analyse spécifiques à NestJS : décorateurs `@Module`, `@Injectable`, `@Controller`, Guards, Pipes, Interceptors, conteneur DI, patterns CQRS et `Test.createTestingModule`. Les projets Express utilisent le template séparé `node-express`.
725
+ NestJS utilise un template dédié `node-nestjs` avec des catégories d'analyse spécifiques à NestJS : decorators `@Module`, `@Injectable`, `@Controller`, Guards, Pipes, Interceptors, container DI, patterns CQRS et `Test.createTestingModule`. Les projets Express utilisent le template séparé `node-express`.
543
726
 
544
727
  **Q : Qu'en est-il des projets Vue / Nuxt ?**
545
- Vue/Nuxt utilise un template dédié `vue-nuxt` couvrant la Composition API, `<script setup>`, defineProps/defineEmits, les stores Pinia, `useFetch`/`useAsyncData`, les routes serveur Nitro et `@nuxt/test-utils`. Les projets Next.js/React utilisent le template `node-nextjs`.
728
+ Vue/Nuxt utilise un template dédié `vue-nuxt` couvrant Composition API, `<script setup>`, defineProps/defineEmits, Pinia stores, `useFetch`/`useAsyncData`, routes serveur Nitro et `@nuxt/test-utils`. Les projets Next.js/React utilisent le template `node-nextjs`.
546
729
 
547
- **Q : Kotlin est-il supporté ?**
548
- Oui. ClaudeOS-Core détecte automatiquement Kotlin à partir de `build.gradle.kts` ou du plugin kotlin dans `build.gradle`. Il utilise un template dédié `kotlin-spring` avec une analyse spécifique à Kotlin (data classes, sealed classes, coroutines, fonctions d'extension, MockK, etc.).
730
+ **Q : Supporte-t-il Kotlin ?**
731
+ Oui. ClaudeOS-Core auto-détecte Kotlin depuis `build.gradle.kts` ou le plugin kotlin dans `build.gradle`. Il utilise un template dédié `kotlin-spring` avec une analyse spécifique Kotlin (data classes, sealed classes, coroutines, extension functions, MockK, etc.).
549
732
 
550
733
  **Q : Qu'en est-il de l'architecture CQRS / BFF ?**
551
- Entièrement supporté pour les projets Kotlin multi-modules. ClaudeOS-Core lit `settings.gradle.kts`, détecte les types de modules (command, query, bff, integration) à partir de leurs noms, et regroupe le même domaine à travers les modules Command/Query. Les standards générés incluent des règles séparées pour les command controllers vs query controllers, les patterns BFF/Feign et les conventions de communication inter-modules.
734
+ Totalement supporté pour les projets Kotlin multi-module. ClaudeOS-Core lit `settings.gradle.kts`, détecte les types de module (command, query, bff, integration) depuis les noms de module, et regroupe le même domaine à travers les modules Command/Query. Les standards générés incluent des règles séparées pour command controllers vs query controllers, patterns BFF/Feign et conventions de communication inter-modules.
735
+
736
+ **Q : Qu'en est-il des monorepos Gradle multi-module ?**
737
+ ClaudeOS-Core scanne tous les sous-modules (`**/src/main/kotlin/**/*.kt`) indépendamment de la profondeur d'imbrication. Les types de module sont inférés des conventions de naming (ex : `reservation-command-server` → domaine : `reservation`, type : `command`). Les bibliothèques partagées (`shared-lib`, `integration-lib`) sont également détectées.
738
+
739
+ **Q : Qu'est-ce que la couche Memory L4 (v2.0.0) ? Dois-je commiter `claudeos-core/memory/` ?**
740
+ Oui — **commitez toujours** `claudeos-core/memory/`. C'est une connaissance d'équipe persistante : `decision-log.md` enregistre le *pourquoi* des choix architecturaux (append-only), `failure-patterns.md` enregistre les erreurs récurrentes avec des scores d'importance pour que les futures sessions les évitent, `compaction.md` définit la politique de compaction en 4 étapes, et `auto-rule-update.md` collecte les propositions d'amélioration de règles générées par la machine. Contrairement aux règles (auto-chargées par chemin), les fichiers memory sont **on-demand** — Claude ne les lit que quand les règles `60.memory/*` le lui indiquent (ex : scan de début de session des échecs à haute importance). Cela maintient le coût de contexte bas tout en préservant la connaissance à long terme.
552
741
 
553
- **Q : Qu'en est-il des monorepos multi-modules Gradle ?**
554
- ClaudeOS-Core analyse tous les sous-modules (`**/src/main/kotlin/**/*.kt`) quelle que soit la profondeur d'imbrication. Les types de modules sont déduits des conventions de nommage (ex : `reservation-command-server` domaine : `reservation`, type : `command`). Les bibliothèques partagées (`shared-lib`, `integration-lib`) sont également détectées.
742
+ **Q : Et si Pass 4 échoue ?**
743
+ Le pipeline automatisé (`npx claudeos-core init`) a un fallback statique : si `claude -p` échoue ou si `pass4-prompt.md` est absent, il scaffolde la couche memory directement via `lib/memory-scaffold.js`. Quand `--lang` n'est pas l'anglais, le fallback statique **doit** traduire via la CLI `claude` si ça échoue aussi, l'exécution s'avorte avec `InitError` (pas de fallback silencieux vers l'anglais). Relancez quand `claude` est authentifié, ou utilisez `--lang en` pour sauter la traduction. Les résultats de traduction sont cachés dans `claudeos-core/generated/.i18n-cache-<lang>.json` pour que les exécutions suivantes les réutilisent.
744
+
745
+ **Q : Que font `memory compact` / `memory score` / `memory propose-rules` ?**
746
+ Voir la section [Maintenance de la couche Memory](#maintenance-de-la-couche-memory-v200) ci-dessus. Version courte : `compact` lance la politique en 4 étapes (résumer anciennes, merger duplicats, drop basse-importance anciennes, appliquer plafond 400 lignes) ; `score` re-classe `failure-patterns.md` par importance (fréquence × récence) ; `propose-rules` fait remonter les candidats d'ajouts de règles depuis les échecs récurrents dans `auto-rule-update.md` (pas auto-appliqué — revoyez et acceptez/rejetez manuellement).
747
+
748
+ **Q : Pourquoi `--force` (ou le mode resume « fresh ») supprime-t-il `.claude/rules/` ?**
749
+ v2.0.0 a ajouté trois guards de silent-failure à Pass 3 (Guard 3 couvre deux variantes de sortie incomplète : H2 pour `guide/` et H1 pour `standard/skills/plan`). Guard 1 (« déplacement partiel de staged-rules ») et Guard 3 (« sortie incomplète — fichiers guide manquants/vides ou sentinel standard manquant / skills vide / plan vide ») ne dépendent pas des règles existantes, mais Guard 2 (« zéro règles détectées ») si — il se déclenche quand Claude a ignoré la directive `staging-override.md` et a tenté d'écrire directement dans `.claude/` (où la politique de chemins sensibles de Claude Code bloque). Des règles obsolètes d'une exécution précédente feraient que Guard 2 produise un faux négatif — donc `--force`/`fresh` efface `.claude/rules/` pour assurer une détection propre. **Les éditions manuelles des fichiers de règles seront perdues** sous `--force`/`fresh` ; sauvegardez d'abord si besoin.
750
+
751
+ **Q : Qu'est-ce que `claudeos-core/generated/.staged-rules/` et pourquoi existe-t-il ?**
752
+ La politique de chemins sensibles de Claude Code refuse les écritures directes dans `.claude/` depuis le sous-processus `claude -p` (même avec `--dangerously-skip-permissions`). v2.0.0 contourne cela en faisant que les prompts Pass 3/4 redirigent toutes les écritures `.claude/rules/` vers le répertoire de staging ; l'orchestrateur Node.js (qui n'est pas soumis à cette politique) déplace ensuite l'arbre staged dans `.claude/rules/` après chaque pass. C'est transparent pour l'utilisateur — le répertoire est auto-créé, auto-nettoyé et auto-déplacé. Si une exécution précédente a crashé en plein milieu du déplacement, la suivante efface le répertoire de staging avant de réessayer.
555
753
 
556
754
  ---
557
755
 
@@ -559,34 +757,36 @@ ClaudeOS-Core analyse tous les sous-modules (`**/src/main/kotlin/**/*.kt`) quell
559
757
 
560
758
  ```
561
759
  pass-prompts/templates/
562
- ├── common/ # En-tête/pied de page partagés
760
+ ├── common/ # Header/footer partagés + pass4 + staging-override
563
761
  ├── java-spring/ # Java / Spring Boot
564
762
  ├── kotlin-spring/ # Kotlin / Spring Boot (CQRS, BFF, multi-module)
565
763
  ├── node-express/ # Node.js / Express
566
764
  ├── node-nestjs/ # Node.js / NestJS (Module, DI, Guard, Pipe, Interceptor)
567
765
  ├── node-fastify/ # Node.js / Fastify
568
- ├── node-nextjs/ # Next.js / React
766
+ ├── node-nextjs/ # Next.js / React (App Router, RSC)
767
+ ├── node-vite/ # Vite SPA (React, client-side routing, VITE_ env, Vitest)
569
768
  ├── vue-nuxt/ # Vue / Nuxt (Composition API, Pinia, Nitro)
570
769
  ├── angular/ # Angular
571
770
  ├── python-django/ # Python / Django (DRF)
572
- └── python-fastapi/ # Python / FastAPI
771
+ ├── python-fastapi/ # Python / FastAPI
772
+ └── python-flask/ # Python / Flask (Blueprint, app factory, Jinja2)
573
773
  ```
574
774
 
575
- `plan-installer` auto-détecte votre/vos stack(s) puis assemble des prompts spécifiques au type. NestJS et Vue/Nuxt utilisent des templates dédiés avec des catégories d'analyse spécifiques au framework (ex : `@Module`/`@Injectable`/Guards pour NestJS, `<script setup>`/Pinia/useFetch pour Vue). Pour les projets multi-stack, `pass1-backend-prompt.md` et `pass1-frontend-prompt.md` sont générés séparément, tandis que `pass3-prompt.md` combine les cibles de génération des deux stacks.
775
+ `plan-installer` auto-détecte votre(vos) stack(s), puis assemble des prompts spécifiques au type. NestJS, Vue/Nuxt, Vite SPA et Flask utilisent chacun des templates dédiés avec des catégories d'analyse spécifiques au framework (ex : `@Module`/`@Injectable`/Guards pour NestJS ; `<script setup>`/Pinia/useFetch pour Vue ; client-side routing/`VITE_` env pour Vite ; Blueprint/`app.factory`/Flask-SQLAlchemy pour Flask). Pour les projets multi-stack, des `pass1-backend-prompt.md` et `pass1-frontend-prompt.md` séparés sont générés, tandis que `pass3-prompt.md` combine les cibles de génération des deux stacks. Pass 4 utilise le template partagé `common/pass4.md` (memory scaffolding) quel que soit le stack.
576
776
 
577
777
  ---
578
778
 
579
779
  ## Support Monorepo
580
780
 
581
- ClaudeOS-Core détecte automatiquement les configurations monorepo JS/TS et scanne les sous-packages pour les dépendances.
781
+ ClaudeOS-Core auto-détecte les setups de monorepo JS/TS et scanne les sous-packages à la recherche de dépendances.
582
782
 
583
- **Marqueurs monorepo supportés** (auto-détectés) :
783
+ **Marqueurs de monorepo supportés** (auto-détectés) :
584
784
  - `turbo.json` (Turborepo)
585
785
  - `pnpm-workspace.yaml` (pnpm workspaces)
586
786
  - `lerna.json` (Lerna)
587
787
  - `package.json#workspaces` (npm/yarn workspaces)
588
788
 
589
- **Exécutez depuis la racine du monorepo** — ClaudeOS-Core lit `apps/*/package.json` et `packages/*/package.json` pour découvrir les dépendances framework/ORM/BD dans les sous-packages :
789
+ **Lancez depuis la racine du monorepo** — ClaudeOS-Core lit `apps/*/package.json` et `packages/*/package.json` pour découvrir les dépendances framework/ORM/BD entre sous-packages :
590
790
 
591
791
  ```bash
592
792
  cd my-monorepo
@@ -599,13 +799,13 @@ npx claudeos-core init
599
799
  - Dépendances de `packages/db/package.json` (ex : `drizzle-orm`) → ORM/BD
600
800
  - Chemins de workspace personnalisés depuis `pnpm-workspace.yaml` (ex : `services/*`)
601
801
 
602
- **Le scan de domaines couvre aussi les structures monorepo :**
802
+ **Le scan de domaines couvre aussi les layouts monorepo :**
603
803
  - `apps/api/src/modules/*/` et `apps/api/src/*/` pour les domaines backend
604
804
  - `apps/web/app/*/`, `apps/web/src/app/*/`, `apps/web/pages/*/` pour les domaines frontend
605
- - `packages/*/src/*/` pour les domaines des packages partagés
805
+ - `packages/*/src/*/` pour les domaines de packages partagés
606
806
 
607
807
  ```
608
- my-monorepo/ ← Exécuter ici : npx claudeos-core init
808
+ my-monorepo/ ← Lancez ici : npx claudeos-core init
609
809
  ├── turbo.json ← Auto-détecté comme Turborepo
610
810
  ├── apps/
611
811
  │ ├── web/ ← Next.js détecté depuis apps/web/package.json
@@ -620,31 +820,54 @@ my-monorepo/ ← Exécuter ici : npx claudeos-core init
620
820
  └── package.json ← { "workspaces": ["apps/*", "packages/*"] }
621
821
  ```
622
822
 
623
- > **Note :** Pour les monorepos Kotlin/Java, la détection multi-modules utilise `settings.gradle.kts` (voir [Détection des domaines Kotlin multi-modules](#détection-des-domaines-kotlin-multi-modules) ci-dessus) et ne nécessite pas de marqueurs monorepo JS.
823
+ > **Remarque :** Pour les monorepos Kotlin/Java, la détection multi-module utilise `settings.gradle.kts` (voir [Détection des Domaines Kotlin Multi-Module](#détection-des-domaines-kotlin-multi-module) ci-dessus) et ne nécessite pas de marqueurs de monorepo JS.
824
+
825
+ ## Troubleshooting
826
+
827
+ **« claude: command not found »** — La CLI Claude Code n'est pas installée ou pas dans le PATH. Voir [docs Claude Code](https://code.claude.com/docs/en/overview).
828
+
829
+ **« npm install failed »** — La version de Node.js est peut-être trop basse. Requiert v18+.
830
+
831
+ **« 0 domains detected »** — La structure de votre projet peut être non standard. Voir les patterns de détection ci-dessus pour votre stack.
624
832
 
625
- ## Dépannage
833
+ **« 0 domains detected » sur projet Kotlin** — Assurez-vous que votre projet a `build.gradle.kts` (ou `build.gradle` avec plugin kotlin) à la racine, et que les fichiers source sont sous `**/src/main/kotlin/`. Pour les projets multi-module, assurez-vous que `settings.gradle.kts` contient des instructions `include()`. Les projets Kotlin single-module (sans `settings.gradle`) sont aussi supportés — les domaines sont extraits de la structure package/classe sous `src/main/kotlin/`.
626
834
 
627
- **"claude: command not found"**Claude Code CLI n'est pas installé ou pas dans le PATH. Voir la [documentation Claude Code](https://code.claude.com/docs/en/overview).
835
+ **« Language detected as java instead of kotlin »** ClaudeOS-Core vérifie d'abord le `build.gradle(.kts)` racine, puis les fichiers build des sous-modules. Si le fichier de build racine utilise le plugin `java` sans `kotlin`, mais que les sous-modules utilisent Kotlin, l'outil vérifie jusqu'à 5 fichiers de build de sous-modules en fallback. Si toujours pas détecté, assurez-vous qu'au moins un `build.gradle.kts` contient `kotlin("jvm")` ou `org.jetbrains.kotlin`.
628
836
 
629
- **"npm install failed"** — La version de Node.js peut être trop ancienne. v18+ requis.
837
+ **« CQRS not detected »** — La détection d'architecture dépend du fait que les noms de module contiennent les mots-clés `command` et `query`. Si vos modules utilisent un naming différent (ex : `write-server`, `read-server`), l'architecture CQRS ne sera pas auto-détectée. Vous pouvez ajuster manuellement les prompts générés après l'exécution de plan-installer.
630
838
 
631
- **"0 domains detected"** — La structure de votre projet peut être non standard. Consultez les patterns de détection dans la [documentation coréenne](./README.ko.md#트러블슈팅) pour votre stack.
839
+ **« Pass 3 produced 0 rule files under .claude/rules/ » (v2.0.0)** — Guard 2 s'est déclenché : Claude a ignoré la directive `staging-override.md` et a essayé d'écrire directement dans `.claude/`, où la politique de chemins sensibles de Claude Code bloque les écritures. Relancez avec `npx claudeos-core init --force`. Si l'erreur persiste, inspectez `claudeos-core/generated/pass3-prompt.md` pour vérifier que le bloc `staging-override.md` est en haut.
632
840
 
633
- **« 0 domaines détectés » sur un projet Kotlin** Vérifiez que `build.gradle.kts` (ou `build.gradle` avec le plugin kotlin) existe à la racine, et que les fichiers source sont sous `**/src/main/kotlin/`. Pour les projets multi-modules, `settings.gradle.kts` doit contenir des instructions `include()`. Les projets Kotlin mono-module (sans `settings.gradle`) sont également pris en charge les domaines sont extraits de la structure des packages/classes sous `src/main/kotlin/`.
841
+ **« Pass 3 finished but N rule file(s) could not be moved from staging » (v2.0.0)** Guard 1 s'est déclenché : le déplacement depuis staging a heurté un file lock transitoire (typiquement antivirus Windows ou file-watcher). Le marqueur n'est PAS écrit, donc l'exécution `init` suivante réessaie Pass 3 automatiquement. Relancez simplement `npx claudeos-core init`.
634
842
 
635
- **« Langage détecté comme java au lieu de kotlin »**ClaudeOS-Core vérifie d'abord le `build.gradle(.kts)` racine, puis les fichiers build des sous-modules. Assurez-vous qu'au moins un contient `kotlin("jvm")` ou `org.jetbrains.kotlin`.
843
+ **« Pass 3 produced CLAUDE.md and rules but N/9 guide files are missing or empty » (v2.0.0)** Guard 3 (H2) s'est déclenché : Claude a tronqué sa réponse au milieu après avoir écrit CLAUDE.md + règles mais avant de finir (ou de commencer) la section `claudeos-core/guide/` (9 fichiers attendus). Se déclenche aussi sur un fichier uniquement BOM ou uniquement whitespace (le heading a été écrit mais le corps a été tronqué). Sans ce guard, le marqueur de complétion serait quand même écrit, laissant `guide/` vide de façon permanente aux exécutions suivantes. Ici le marqueur n'est PAS écrit, donc l'exécution `init` suivante réessaie Pass 3 à partir des mêmes résultats de Pass 2. Si ça continue de se répéter, relancez avec `npx claudeos-core init --force` pour régénérer depuis zéro.
636
844
 
637
- **« CQRS non détecté »**La détection d'architecture repose sur la présence des mots-clés `command` et `query` dans les noms de modules. Si vos modules utilisent des noms différents, vous pouvez ajuster manuellement les prompts générés.
845
+ **« Pass 3 finished but the following required output(s) are missing or empty » (v2.0.0)** Guard 3 (H1) s'est déclenché : Claude a tronqué APRÈS `claudeos-core/guide/` mais avant (ou pendant) `claudeos-core/standard/`, `claudeos-core/skills/` ou `claudeos-core/plan/`. Exigences : (a) `standard/00.core/01.project-overview.md` existe et n'est pas vide (sentinel écrit par le prompt Pass 3 de chaque stack), (b) `skills/` a ≥1 `.md` non vide, (c) `plan/` a ≥1 `.md` non vide. `database/` et `mcp-guide/` sont intentionnellement exclus (certains stacks produisent légitimement zéro fichier). Même chemin de récupération que Guard 3 (H2) : relancez `init`, ou `--force` si ça persiste.
846
+
847
+ **« pass2-merged.json exists but is malformed or incomplete (<5 top-level keys), re-running » (v2.0.0)** — Log info, pas une erreur. Au resume, `init` parse et valide désormais `pass2-merged.json` (≥5 clés de niveau supérieur requises, reflétant le seuil `INSUFFICIENT_KEYS` de `pass-json-validator`). Un squelette `{}` ou un JSON mal formé d'une exécution précédente crashée est automatiquement supprimé et Pass 2 est relancé. Pas d'action manuelle nécessaire — le pipeline s'auto-répare. Si ça récurre, inspectez `claudeos-core/generated/pass2-prompt.md` et réessayez avec `--force`.
848
+
849
+ **« Static fallback failed while translating to lang='ko' » (v2.0.0)** — Quand `--lang` n'est pas l'anglais, Pass 4 / fallback statique / gap-fill requièrent tous la CLI `claude` pour traduire. Si la traduction échoue (CLI non authentifiée, timeout réseau, ou la validation stricte a rejeté la sortie : longueur <40%, code fences cassés, frontmatter perdu, etc.), l'exécution s'avorte plutôt que d'écrire silencieusement en anglais. Fix : assurez-vous que `claude` est authentifié, ou relancez avec `--lang en` pour sauter la traduction.
850
+
851
+ **« pass4-memory.json exists but memory/ is empty » (v2.0.0)** — Une exécution précédente a écrit le marqueur mais l'utilisateur (ou un script de nettoyage) a supprimé `claudeos-core/memory/`. La CLI auto-détecte ce marqueur obsolète et relance Pass 4 au prochain `init`. Pas d'action manuelle nécessaire.
852
+
853
+ **« pass4-memory.json exists but is malformed (missing passNum/memoryFiles) — re-running Pass 4 » (v2.0.0)** — Log info, pas une erreur. Le contenu du marqueur de Pass 4 est désormais validé (`passNum === 4` + array `memoryFiles` non vide), pas seulement son existence. Un échec partiel de Claude qui aurait émis quelque chose comme `{"error":"timeout"}` comme corps du marqueur était précédemment accepté comme succès pour toujours ; maintenant le marqueur est supprimé et Pass 4 est relancé automatiquement.
854
+
855
+ **« Could not delete stale pass3-complete.json / pass4-memory.json » InitError (v2.0.0)** — `init` a détecté un marqueur obsolète (Pass 3 : CLAUDE.md a été supprimé extérieurement ; Pass 4 : memory/ vide ou corps de marqueur mal formé) et a tenté de le supprimer, mais l'appel `unlinkSync` a échoué — typiquement parce qu'un antivirus Windows ou un file-watcher (éditeur, indexeur IDE) retient le handle du fichier. Auparavant ceci était silencieusement ignoré, faisant que le pipeline sautait le pass et réutilisait le marqueur obsolète. Maintenant il échoue bruyamment. Fix : fermez tout éditeur/scanner AV qui pourrait avoir le fichier ouvert, puis relancez `npx claudeos-core init`.
856
+
857
+ **« CLAUDEOS_SKIP_TRANSLATION=1 is set but --lang='ko' requires translation » InitError (v2.0.0)** — Vous avez la variable d'environnement réservée aux tests `CLAUDEOS_SKIP_TRANSLATION=1` définie dans votre shell (probablement un reste de setup CI/test) ET vous avez choisi un `--lang` non-anglais. Cette variable d'environnement court-circuite le chemin de traduction dont dépendent le fallback statique et le gap-fill de Pass 4 pour la sortie non-anglaise. `init` détecte le conflit au moment de la sélection de langue et s'avorte immédiatement (plutôt que de crasher en plein Pass 4 avec une erreur imbriquée confuse). Fix : soit `unset CLAUDEOS_SKIP_TRANSLATION` avant de lancer, soit utilisez `npx claudeos-core init --lang en`.
638
858
 
639
859
  ---
640
860
 
641
861
  ## Contribuer
642
862
 
643
- Les contributions sont les bienvenues ! Domaines où l'aide est la plus nécessaire :
863
+ Les contributions sont les bienvenues ! Les domaines où l'aide est la plus nécessaire :
864
+
865
+ - **Nouveaux templates de stack** — Ruby/Rails, Go (Gin/Fiber/Echo), PHP (Laravel/Symfony), Rust (Axum/Actix), Svelte/SvelteKit, Remix
866
+ - **Intégration IDE** — extension VS Code, plugin IntelliJ
867
+ - **Templates CI/CD** — GitLab CI, CircleCI, exemples Jenkins (GitHub Actions déjà livré — voir `.github/workflows/test.yml`)
868
+ - **Couverture de test** — Étendre la suite de tests (actuellement 489 tests à travers 24 fichiers de test couvrant scanners, stack detection, domain grouping, plan parsing, prompt generation, CLI selectors, monorepo detection, Vite SPA detection, outils de vérification, memory scaffold L4, validation de resume de Pass 2, Pass 3 Guards 1/2/3 (H1 sentinel + H2 BOM-aware empty-file + strict stale-marker unlink), validation du contenu du marqueur Pass 4 + rigueur du stale-marker unlink, guard d'env-skip de traduction + early fail-fast + workflow CI, déplacement de staged-rules, fallback lang-aware de traduction, et structure du template AI Work Rules)
644
869
 
645
- - **Nouveaux templates de stack** Ruby/Rails, Go/Gin, PHP/Laravel, Rust/Axum
646
- - **Support approfondi monorepo** — Racines de sous-projets séparées, détection de workspaces
647
- - **Couverture de tests** — Suite de tests en expansion (actuellement 269 tests couvrant tous les scanners, la détection de stack, le groupement de domaines, le parsing de plans, la génération de prompts, les sélecteurs CLI, la détection de monorepos, les outils de vérification et la détection Vite SPA)
870
+ Voir [`CONTRIBUTING.md`](./CONTRIBUTING.md) pour la liste complète des domaines, le style de code, la convention de commit et le guide pas à pas pour ajouter un nouveau template de stack.
648
871
 
649
872
  ---
650
873