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.
- package/CHANGELOG.md +138 -0
- package/CONTRIBUTING.md +92 -59
- package/README.de.md +465 -240
- package/README.es.md +446 -223
- package/README.fr.md +461 -238
- package/README.hi.md +485 -261
- package/README.ja.md +440 -235
- package/README.ko.md +244 -56
- package/README.md +215 -47
- package/README.ru.md +462 -238
- package/README.vi.md +454 -230
- package/README.zh-CN.md +476 -252
- package/bin/cli.js +144 -140
- package/bin/commands/init.js +550 -46
- package/bin/commands/memory.js +426 -0
- package/bin/lib/cli-utils.js +206 -143
- package/bootstrap.sh +81 -390
- package/content-validator/index.js +436 -340
- package/lib/expected-guides.js +23 -0
- package/lib/expected-outputs.js +91 -0
- package/lib/language-config.js +35 -0
- package/lib/memory-scaffold.js +1014 -0
- package/lib/plan-parser.js +153 -149
- package/lib/staged-rules.js +118 -0
- package/manifest-generator/index.js +176 -171
- package/package.json +1 -1
- package/pass-json-validator/index.js +337 -299
- package/pass-prompts/templates/common/pass3-footer.md +16 -0
- package/pass-prompts/templates/common/pass4.md +317 -0
- package/pass-prompts/templates/common/staging-override.md +26 -0
- package/pass-prompts/templates/python-flask/pass1.md +119 -0
- package/pass-prompts/templates/python-flask/pass2.md +85 -0
- package/pass-prompts/templates/python-flask/pass3.md +103 -0
- package/plan-installer/domain-grouper.js +2 -1
- package/plan-installer/prompt-generator.js +120 -96
- package/plan-installer/scanners/scan-frontend.js +219 -10
- package/plan-installer/scanners/scan-java.js +226 -223
- package/plan-installer/scanners/scan-python.js +21 -0
- 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
|
-
|
|
17
|
+
Tous les autres outils Claude Code fonctionnent ainsi :
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
> **Un humain décrit le projet → le LLM génère la documentation**
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
ClaudeOS-Core fonctionne ainsi :
|
|
22
22
|
|
|
23
|
-
|
|
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
|
-
|
|
25
|
+
Ce n'est pas une petite différence. Voici pourquoi c'est important :
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
### Le problème fondamental : les LLMs devinent. Le code, non.
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
-
|
|
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 «
|
|
38
|
-
ClaudeOS-Core produit une documentation qui sait que votre projet utilise `ApiResponse.ok()` (pas `ResponseEntity.success()`), que vos mappers MyBatis XML
|
|
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
|
-
###
|
|
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
|
-
❌
|
|
45
|
-
❌ ResponseEntity.success() (ApiResponse.ok())
|
|
46
|
-
❌ order/controller/ (controller/order/)
|
|
47
|
-
|
|
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
|
-
✅
|
|
53
|
-
✅ ApiResponse.ok() (source
|
|
54
|
-
✅ controller/order/ (Pattern A)
|
|
55
|
-
|
|
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
|
|
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'
|
|
74
|
+
| Stack | Détection | Profondeur d'analyse |
|
|
65
75
|
|---|---|---|
|
|
66
|
-
| **Java / Spring Boot** | `build.gradle`, `pom.xml`, 5 patterns de
|
|
67
|
-
| **Kotlin / Spring Boot** | `build.gradle.kts`, kotlin plugin, `settings.gradle.kts`, CQRS/BFF
|
|
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
|
-
|
|
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 |
|
|
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
|
|
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
|
-
|
|
106
|
+
Pour les projets Kotlin avec structure Gradle multi-module (ex : monorepo CQRS) :
|
|
97
107
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
| Étape | Action | Exemple |
|
|
108
|
+
| Étape | Ce que fait l'outil | Exemple |
|
|
101
109
|
|---|---|---|
|
|
102
|
-
| 1 |
|
|
103
|
-
| 2 |
|
|
104
|
-
| 3 |
|
|
105
|
-
| 4 |
|
|
106
|
-
| 5 |
|
|
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
|
|
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
|
|
116
|
-
- **Chemins imbriqués non
|
|
117
|
-
- **
|
|
118
|
-
- **
|
|
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
|
|
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é —
|
|
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
|
-
#
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
179
|
-
npx claudeos-core init --lang
|
|
180
|
-
npx claudeos-core init --lang
|
|
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
|
-
> **
|
|
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–
|
|
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
|
|
227
|
+
### Installation Manuelle Pas à Pas
|
|
189
228
|
|
|
190
|
-
Si vous
|
|
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
|
-
####
|
|
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
|
-
####
|
|
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
|
-
####
|
|
257
|
+
#### Étape 3 : Lancer plan-installer (analyse du projet)
|
|
219
258
|
|
|
220
|
-
|
|
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
|
|
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
|
|
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
|
|
273
|
+
Vous pouvez inspecter ces fichiers pour vérifier la précision de détection avant de continuer.
|
|
234
274
|
|
|
235
|
-
####
|
|
275
|
+
#### Étape 4 : Pass 1 — Analyse profonde du code (par groupe de domaines)
|
|
236
276
|
|
|
237
|
-
|
|
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
|
-
#
|
|
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
|
-
#
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
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
|
-
|
|
318
|
+
```bash
|
|
319
|
+
cat claudeos-core/generated/pass2-prompt.md \
|
|
320
|
+
| claude -p --dangerously-skip-permissions
|
|
253
321
|
```
|
|
254
322
|
|
|
255
|
-
**Vérifier :** `
|
|
323
|
+
**Vérifier :** `claudeos-core/generated/pass2-merged.json` doit exister avec 9+ clés de niveau supérieur.
|
|
256
324
|
|
|
257
|
-
####
|
|
325
|
+
#### Étape 6 : Pass 3 — Générer toute la documentation
|
|
258
326
|
|
|
259
327
|
```bash
|
|
260
|
-
cat claudeos-core/generated/
|
|
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/
|
|
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
|
-
|
|
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/
|
|
339
|
+
cat claudeos-core/generated/pass4-prompt.md \
|
|
270
340
|
| claude -p --dangerously-skip-permissions
|
|
271
341
|
```
|
|
272
342
|
|
|
273
|
-
**Vérifier :** `
|
|
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
|
-
|
|
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
|
-
#
|
|
353
|
+
# Lancer toutes les vérifications
|
|
282
354
|
node claudeos-core-tools/health-checker/index.js
|
|
283
355
|
|
|
284
|
-
# Ou
|
|
285
|
-
node claudeos-core-tools/plan-validator/index.js --check # Plan ↔
|
|
286
|
-
node claudeos-core-tools/sync-checker/index.js #
|
|
287
|
-
node claudeos-core-tools/content-validator/index.js #
|
|
288
|
-
node claudeos-core-tools/pass-json-validator/index.js # JSON
|
|
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
|
-
####
|
|
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
|
-
> **
|
|
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
|
-
###
|
|
381
|
+
### Commencer à Utiliser
|
|
302
382
|
|
|
303
383
|
```
|
|
304
|
-
# Dans Claude Code —
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
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
|
|
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
|
|
400
|
+
├── [2] Structure de répertoires ← Créer les dossiers (~1s)
|
|
321
401
|
├── [3] plan-installer (Node.js) ← Scan du projet (~5s)
|
|
322
|
-
│ ├── Auto-
|
|
323
|
-
│ ├──
|
|
324
|
-
│ ├──
|
|
325
|
-
│ └──
|
|
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
|
|
328
|
-
│ ├── ⚙️ Groupes backend → prompt
|
|
329
|
-
│ └── 🎨 Groupes frontend → prompt
|
|
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) ←
|
|
332
|
-
│ └──
|
|
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) ←
|
|
414
|
+
├── [6] Pass 3 × 1 (claude -p) ← Génère tout (~3-5min)
|
|
335
415
|
│ └── Prompt combiné (cibles backend + frontend)
|
|
336
416
|
│
|
|
337
|
-
|
|
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
|
|
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
|
|
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**
|
|
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
|
|
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
|
|
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
|
-
│
|
|
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
|
-
│ ├──
|
|
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,
|
|
371
|
-
│ ├── plan/ ← Master
|
|
477
|
+
│ ├── guide/ ← Onboarding, FAQ, troubleshooting (9 fichiers)
|
|
478
|
+
│ ├── plan/ ← Master plans (backup/restore)
|
|
372
479
|
│ ├── database/ ← Schéma BD, guide de migration
|
|
373
|
-
│
|
|
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
|
|
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-
|
|
511
|
+
## Auto-scaling selon la Taille du Projet
|
|
383
512
|
|
|
384
|
-
| Taille | Domaines | Exécutions Pass 1 | Total `claude -p` | Temps
|
|
513
|
+
| Taille | Domaines | Exécutions Pass 1 | Total `claude -p` | Temps est. |
|
|
385
514
|
|---|---|---|---|---|
|
|
386
|
-
| Petit | 1–4 | 1 | 3 | ~5
|
|
387
|
-
| Moyen | 5–8 | 2 |
|
|
388
|
-
| Grand | 9–16 | 3–4 |
|
|
389
|
-
|
|
|
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 | 6–7 | ~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
|
|
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
|
|
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
|
-
#
|
|
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 #
|
|
406
|
-
npx claudeos-core restore #
|
|
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 |
|
|
544
|
+
| Outil | Ce qu'il fait |
|
|
410
545
|
|---|---|
|
|
411
|
-
| **manifest-generator** | Construit
|
|
412
|
-
| **plan-validator** | Compare les blocs `<file>` du Master Plan
|
|
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** |
|
|
415
|
-
| **pass-json-validator** | Valide la structure JSON
|
|
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
|
-
|
|
556
|
+
ClaudeOS-Core génère une documentation que Claude Code lit réellement — voici comment :
|
|
422
557
|
|
|
423
|
-
###
|
|
558
|
+
### Ce que Claude Code lit automatiquement
|
|
424
559
|
|
|
425
560
|
| Fichier | Quand | Garanti |
|
|
426
561
|
|---|---|---|
|
|
427
|
-
| `CLAUDE.md` |
|
|
428
|
-
| `.claude/rules/00.core/*` |
|
|
429
|
-
| `.claude/rules/10.backend/*` |
|
|
430
|
-
| `.claude/rules/
|
|
431
|
-
| `.claude/rules/
|
|
432
|
-
| `.claude/rules/
|
|
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
|
-
###
|
|
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
|
|
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/**` —
|
|
439
|
-
- `claudeos-core/database/**` —
|
|
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
|
|
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
|
-
###
|
|
581
|
+
### Ce que Claude Code NE lit PAS (économise du contexte)
|
|
444
582
|
|
|
445
|
-
|
|
583
|
+
Ces dossiers sont explicitement exclus via la section `DO NOT Read` de la règle standard-reference :
|
|
446
584
|
|
|
447
|
-
| Dossier |
|
|
585
|
+
| Dossier | Pourquoi exclu |
|
|
448
586
|
|---|---|
|
|
449
|
-
| `claudeos-core/plan/` |
|
|
450
|
-
| `claudeos-core/generated/` | JSON de métadonnées build
|
|
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
|
|
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
|
-
##
|
|
595
|
+
## Workflow Quotidien
|
|
457
596
|
|
|
458
|
-
### Après l'
|
|
597
|
+
### Après l'installation
|
|
459
598
|
|
|
460
599
|
```
|
|
461
|
-
# Utilisez Claude Code normalement — il référence vos standards automatiquement :
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
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
|
|
606
|
+
### Après édition manuelle des Standards
|
|
468
607
|
|
|
469
608
|
```bash
|
|
470
|
-
# Après avoir édité des fichiers
|
|
609
|
+
# Après avoir édité des fichiers de standards ou de règles :
|
|
471
610
|
npx claudeos-core refresh
|
|
472
611
|
|
|
473
|
-
#
|
|
612
|
+
# Vérifiez que tout est cohérent
|
|
474
613
|
npx claudeos-core health
|
|
475
614
|
```
|
|
476
615
|
|
|
477
|
-
### Quand les
|
|
616
|
+
### Quand les docs sont corrompues
|
|
478
617
|
|
|
479
618
|
```bash
|
|
480
|
-
#
|
|
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
|
-
#
|
|
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
|
-
##
|
|
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
|
-
| **
|
|
499
|
-
| **
|
|
500
|
-
| **
|
|
501
|
-
| **
|
|
502
|
-
| **
|
|
503
|
-
| **
|
|
504
|
-
| **
|
|
505
|
-
| **
|
|
506
|
-
| **
|
|
507
|
-
| **
|
|
508
|
-
| **Multi-stack** | ✅ Backend + Frontend
|
|
509
|
-
| **
|
|
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 projet → Mê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
|
-
|
|
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
|
-
|
|
695
|
+
### Complémentaires, pas concurrents
|
|
514
696
|
|
|
515
|
-
|
|
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
|
|
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.
|
|
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
|
-
|
|
710
|
+
Il appelle `claude -p` 4–8 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 :
|
|
530
|
-
|
|
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
|
|
533
|
-
|
|
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 :
|
|
536
|
-
Oui. ClaudeOS-Core détecte `turbo.json`, `pnpm-workspace.yaml`, `lerna.json
|
|
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
|
|
539
|
-
Si des résultats Pass 1/2
|
|
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 :
|
|
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
|
|
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 :
|
|
548
|
-
Oui. ClaudeOS-Core détecte
|
|
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
|
-
|
|
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 :
|
|
554
|
-
|
|
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/ #
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
**
|
|
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
|
|
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
|
|
805
|
+
- `packages/*/src/*/` pour les domaines de packages partagés
|
|
606
806
|
|
|
607
807
|
```
|
|
608
|
-
my-monorepo/ ←
|
|
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
|
-
> **
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
**«
|
|
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
|
-
**«
|
|
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
|
-
**«
|
|
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 !
|
|
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
|
-
|
|
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
|
|