claudeos-core 2.3.1 → 2.4.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 +1460 -73
- package/CODE_OF_CONDUCT.md +15 -0
- package/README.de.md +321 -883
- package/README.es.md +322 -883
- package/README.fr.md +322 -883
- package/README.hi.md +322 -883
- package/README.ja.md +322 -883
- package/README.ko.md +322 -882
- package/README.md +321 -883
- package/README.ru.md +322 -885
- package/README.vi.md +322 -883
- package/README.zh-CN.md +321 -881
- package/SECURITY.md +51 -0
- package/bin/commands/init.js +570 -264
- package/content-validator/index.js +185 -12
- package/health-checker/index.js +44 -10
- package/package.json +92 -90
- package/pass-json-validator/index.js +58 -7
- package/pass-prompts/templates/angular/pass3.md +15 -14
- package/pass-prompts/templates/common/claude-md-scaffold.md +203 -20
- package/pass-prompts/templates/common/pass3-footer.md +297 -56
- package/pass-prompts/templates/common/pass3a-facts.md +48 -3
- package/pass-prompts/templates/common/pass4.md +78 -40
- package/pass-prompts/templates/java-spring/pass1.md +54 -0
- package/pass-prompts/templates/java-spring/pass3.md +20 -19
- package/pass-prompts/templates/kotlin-spring/pass1.md +45 -0
- package/pass-prompts/templates/kotlin-spring/pass3.md +24 -23
- package/pass-prompts/templates/node-express/pass3.md +18 -17
- package/pass-prompts/templates/node-fastify/pass3.md +11 -10
- package/pass-prompts/templates/node-nestjs/pass3.md +11 -10
- package/pass-prompts/templates/node-nextjs/pass3.md +18 -17
- package/pass-prompts/templates/node-vite/pass3.md +11 -10
- package/pass-prompts/templates/python-django/pass3.md +18 -17
- package/pass-prompts/templates/python-fastapi/pass3.md +18 -17
- package/pass-prompts/templates/python-flask/pass3.md +9 -8
- package/pass-prompts/templates/vue-nuxt/pass3.md +9 -8
- package/plan-installer/domain-grouper.js +45 -5
- package/plan-installer/index.js +34 -1
- package/plan-installer/pass3-context-builder.js +14 -0
- package/plan-installer/scanners/scan-frontend.js +2 -1
- package/plan-installer/scanners/scan-java.js +98 -2
- package/plan-installer/source-paths.js +242 -0
- package/plan-installer/stack-detector.js +522 -42
package/README.fr.md
CHANGED
|
@@ -1,1015 +1,454 @@
|
|
|
1
1
|
# ClaudeOS-Core
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/claudeos-core)
|
|
4
|
+
[](https://github.com/claudeos-core/claudeos-core/actions/workflows/test.yml)
|
|
5
|
+
[](https://github.com/claudeos-core/claudeos-core/actions/workflows/test.yml)
|
|
6
|
+
[](https://nodejs.org/)
|
|
7
|
+
[](LICENSE)
|
|
8
|
+
[](https://www.npmjs.com/package/claudeos-core)
|
|
9
|
+
|
|
10
|
+
**Générez automatiquement la documentation Claude Code à partir de votre code source réel.** Un outil CLI qui analyse statiquement votre projet, puis exécute un pipeline Claude en 4 passes pour générer `.claude/rules/`, standards, skills et guides — afin que Claude Code suive les conventions de **votre** projet, pas des conventions génériques.
|
|
4
11
|
|
|
5
12
|
```bash
|
|
6
13
|
npx claudeos-core init
|
|
7
14
|
```
|
|
8
15
|
|
|
9
|
-
|
|
10
|
-
|
|
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)
|
|
16
|
+
[🇺🇸 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
17
|
|
|
13
18
|
---
|
|
14
19
|
|
|
15
|
-
##
|
|
16
|
-
|
|
17
|
-
Tous les autres outils Claude Code fonctionnent ainsi :
|
|
18
|
-
|
|
19
|
-
> **Un humain décrit le projet → le LLM génère la documentation**
|
|
20
|
-
|
|
21
|
-
ClaudeOS-Core fonctionne ainsi :
|
|
22
|
-
|
|
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
|
-
|
|
25
|
-
Ce n'est pas une petite différence. Voici pourquoi c'est important :
|
|
26
|
-
|
|
27
|
-
### Le problème fondamental : les LLMs devinent. Le code, non.
|
|
20
|
+
## C'est quoi cet outil ?
|
|
28
21
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
22
|
+
Vous utilisez Claude Code. Il est intelligent, mais il ne connaît pas **les conventions de votre projet** :
|
|
23
|
+
- Votre équipe utilise MyBatis, mais Claude génère du code JPA.
|
|
24
|
+
- Votre wrapper est `ApiResponse.ok()`, mais Claude écrit `ResponseEntity.success()`.
|
|
25
|
+
- Vos packages sont `controller/order/`, mais Claude crée `order/controller/`.
|
|
32
26
|
|
|
33
|
-
|
|
27
|
+
Du coup, vous passez un temps non négligeable à corriger chaque fichier généré.
|
|
34
28
|
|
|
35
|
-
-
|
|
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
|
|
29
|
+
**ClaudeOS-Core résout ce problème.** Il scanne votre code source réel, identifie vos conventions, et écrit un ensemble complet de règles dans `.claude/rules/` — le répertoire que Claude Code lit automatiquement. La prochaine fois que vous direz *« Crée un CRUD pour les commandes »*, Claude suit vos conventions du premier coup.
|
|
40
30
|
|
|
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**.
|
|
42
|
-
|
|
43
|
-
### Le résultat
|
|
44
|
-
|
|
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.
|
|
47
|
-
|
|
48
|
-
### Avant et après
|
|
49
|
-
|
|
50
|
-
**Sans ClaudeOS-Core** — vous demandez à Claude Code de créer un CRUD Order :
|
|
51
31
|
```
|
|
52
|
-
|
|
53
|
-
|
|
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é
|
|
32
|
+
Avant : Vous → Claude Code → code « globalement bon » → corrections manuelles
|
|
33
|
+
Après : Vous → Claude Code → code qui colle à votre projet → on expédie
|
|
57
34
|
```
|
|
58
35
|
|
|
59
|
-
**Avec ClaudeOS-Core** — `.claude/rules/` contient déjà vos patterns confirmés :
|
|
60
|
-
```
|
|
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
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
Cette différence se cumule. 10 tâches/jour × 20 minutes économisées = **plus de 3 heures/jour**.
|
|
69
|
-
|
|
70
36
|
---
|
|
71
37
|
|
|
72
|
-
##
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
38
|
+
## Démo sur un projet réel
|
|
39
|
+
|
|
40
|
+
Exécution sur [`spring-boot-realworld-example-app`](https://github.com/gothinkster/spring-boot-realworld-example-app) — Java 11 · Spring Boot 2.6 · MyBatis · SQLite · 187 source files. Résultat : **75 generated files**, durée totale **53 minutes**, tous les validators ✅.
|
|
41
|
+
|
|
42
|
+
<p align="center">
|
|
43
|
+
<img src="docs/assets/spring-boot-realworld-demo.gif" alt="ClaudeOS-Core init running on spring-boot-realworld-example-app — stack detection, 4-pass pipeline, validators, completion summary" width="769">
|
|
44
|
+
</p>
|
|
45
|
+
|
|
46
|
+
<details>
|
|
47
|
+
<summary><strong>📺 Sortie terminal (version texte, pour recherche et copie)</strong></summary>
|
|
48
|
+
|
|
49
|
+
```text
|
|
50
|
+
╔════════════════════════════════════════════════════╗
|
|
51
|
+
║ ClaudeOS-Core — Bootstrap (4-Pass) ║
|
|
52
|
+
╚════════════════════════════════════════════════════╝
|
|
53
|
+
Project root: spring-boot-realworld-example-app
|
|
54
|
+
Language: English (en)
|
|
55
|
+
|
|
56
|
+
[Phase 1] Detecting stack...
|
|
57
|
+
Language: java 11
|
|
58
|
+
Framework: spring-boot 2.6.3
|
|
59
|
+
Database: sqlite
|
|
60
|
+
ORM: mybatis
|
|
61
|
+
PackageMgr: gradle
|
|
62
|
+
|
|
63
|
+
[Phase 2] Scanning structure...
|
|
64
|
+
Backend: 2 domains
|
|
65
|
+
Total: 2 domains
|
|
66
|
+
Package: io.spring.infrastructure
|
|
67
|
+
|
|
68
|
+
[Phase 5] Active domains...
|
|
69
|
+
✅ 00.core ✅ 10.backend ⏭️ 20.frontend
|
|
70
|
+
✅ 30.security-db ✅ 40.infra
|
|
71
|
+
✅ 80.verification ✅ 90.optional
|
|
72
|
+
|
|
73
|
+
[4] Pass 1 — Deep analysis per domain group...
|
|
74
|
+
✅ pass1-1.json created (5m 34s)
|
|
75
|
+
[█████░░░░░░░░░░░░░░░] 25% (1/4)
|
|
76
|
+
|
|
77
|
+
[5] Pass 2 — Merging analysis results...
|
|
78
|
+
✅ pass2-merged.json created (4m 22s)
|
|
79
|
+
[██████████░░░░░░░░░░] 50% (2/4)
|
|
80
|
+
|
|
81
|
+
[6] Pass 3 — Generating all files...
|
|
82
|
+
🚀 Pass 3 split mode (3a → 3b → 3c → 3d-aux)
|
|
83
|
+
✅ 3a complete (2m 57s) — pass3a-facts.md (187-path allowlist)
|
|
84
|
+
✅ 3b complete (18m 49s) — CLAUDE.md + 19 standards + 20 rules
|
|
85
|
+
✅ 3c complete (12m 35s) — 13 skills + 9 guides
|
|
86
|
+
✅ 3d-aux complete (3m 18s) — database/ + mcp-guide/
|
|
87
|
+
🎉 Pass 3 split complete: 4/4 stages successful
|
|
88
|
+
[███████████████░░░░░] 75% (3/4)
|
|
89
|
+
|
|
90
|
+
[7] Pass 4 — Memory scaffolding...
|
|
91
|
+
📦 Pass 4 staged-rules: 6 rule files moved to .claude/rules/
|
|
92
|
+
✅ Pass 4 complete (5m)
|
|
93
|
+
📋 Gap-fill: all 12 expected files already present
|
|
94
|
+
[████████████████████] 100% (4/4)
|
|
95
|
+
|
|
96
|
+
╔═══════════════════════════════════════╗
|
|
97
|
+
║ ClaudeOS-Core — Health Checker ║
|
|
98
|
+
╚═══════════════════════════════════════╝
|
|
99
|
+
✅ plan-validator pass
|
|
100
|
+
✅ sync-checker pass
|
|
101
|
+
✅ content-validator pass
|
|
102
|
+
✅ pass-json-validator pass
|
|
103
|
+
✅ All systems operational
|
|
104
|
+
|
|
105
|
+
[Lint] ✅ CLAUDE.md structure valid (25 checks)
|
|
106
|
+
[Content] ✅ All content validation passed
|
|
107
|
+
Total: 0 advisories, 0 notes
|
|
108
|
+
|
|
109
|
+
╔════════════════════════════════════════════════════╗
|
|
110
|
+
║ ✅ ClaudeOS-Core — Complete ║
|
|
111
|
+
║ Files created: 75 ║
|
|
112
|
+
║ Domains analyzed: 1 group ║
|
|
113
|
+
║ L4 scaffolded: memory + rules ║
|
|
114
|
+
║ Output language: English ║
|
|
115
|
+
║ Total time: 53m 8s ║
|
|
116
|
+
╚════════════════════════════════════════════════════╝
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
</details>
|
|
120
|
+
|
|
121
|
+
<details>
|
|
122
|
+
<summary><strong>📄 Ce qui se retrouve dans votre <code>CLAUDE.md</code> (extrait réel)</strong></summary>
|
|
123
|
+
|
|
124
|
+
```markdown
|
|
125
|
+
## 4. Core Architecture
|
|
126
|
+
|
|
127
|
+
### Core Patterns
|
|
128
|
+
|
|
129
|
+
- **Hexagonal ports & adapters**: domain ports live in `io.spring.core.{aggregate}`
|
|
130
|
+
and are implemented by `io.spring.infrastructure.repository.MyBatis{Aggregate}Repository`.
|
|
131
|
+
The domain layer has zero MyBatis imports.
|
|
132
|
+
- **CQRS-lite read/write split (same DB)**: write side goes through repository ports
|
|
133
|
+
+ entities; read side is a separate `readservice` package whose `@Mapper`
|
|
134
|
+
interfaces return `*Data` DTOs directly (no entity hydration).
|
|
135
|
+
- **No aggregator/orchestrator layer**: multi-source orchestration happens inside
|
|
136
|
+
application services (e.g., `ArticleQueryService`); there is no `*Aggregator`
|
|
137
|
+
class in the codebase.
|
|
138
|
+
- **Application-supplied UUIDs**: entity constructors assign their own UUID; PK is
|
|
139
|
+
passed via `#{user.id}` on INSERT. The global
|
|
140
|
+
`mybatis.configuration.use-generated-keys=true` flag is dead config
|
|
141
|
+
(auto-increment is unused).
|
|
142
|
+
- **JWT HS512 authentication**: `io.spring.infrastructure.service.DefaultJwtService`
|
|
143
|
+
is the sole token subject in/out; `io.spring.api.security.JwtTokenFilter`
|
|
144
|
+
extracts the token at the servlet layer.
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Note : chaque affirmation ci-dessus est ancrée dans le code source réel — noms de classes, chemins de packages, clés de configuration et le flag dead-config sont tous extraits par le scanner avant que Claude n'écrive le fichier.
|
|
148
|
+
|
|
149
|
+
</details>
|
|
150
|
+
|
|
151
|
+
<details>
|
|
152
|
+
<summary><strong>🛡️ Une rule réelle auto-chargée (<code>.claude/rules/10.backend/03.data-access-rules.md</code>)</strong></summary>
|
|
153
|
+
|
|
154
|
+
````markdown
|
|
98
155
|
---
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
| Stack | Détection | Profondeur d'analyse |
|
|
103
|
-
|---|---|---|
|
|
104
|
-
| **Java / Spring Boot** | `build.gradle`, `pom.xml`, 5 patterns de package | 10 catégories, 59 sous-éléments |
|
|
105
|
-
| **Kotlin / Spring Boot** | `build.gradle.kts`, kotlin plugin, `settings.gradle.kts`, auto-détection CQRS/BFF | 12 catégories, 95 sous-éléments |
|
|
106
|
-
| **Node.js / Express** | `package.json` | 9 catégories, 57 sous-éléments |
|
|
107
|
-
| **Node.js / NestJS** | `package.json` (`@nestjs/core`) | 10 catégories, 68 sous-éléments |
|
|
108
|
-
| **Next.js / React** | `package.json`, `next.config.*`, support FSD | 9 catégories, 55 sous-éléments |
|
|
109
|
-
| **Vue / Nuxt** | `package.json`, `nuxt.config.*`, Composition API | 9 catégories, 58 sous-éléments |
|
|
110
|
-
| **Python / Django** | `requirements.txt`, `pyproject.toml` | 10 catégories, 55 sous-éléments |
|
|
111
|
-
| **Python / FastAPI** | `requirements.txt`, `pyproject.toml` | 10 catégories, 58 sous-éléments |
|
|
112
|
-
| **Node.js / Fastify** | `package.json` | 10 catégories, 62 sous-éléments |
|
|
113
|
-
| **Vite / React SPA** | `package.json`, `vite.config.*` | 9 catégories, 55 sous-éléments |
|
|
114
|
-
| **Angular** | `package.json`, `angular.json` | 12 catégories, 78 sous-éléments |
|
|
115
|
-
|
|
116
|
-
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), **configuration runtime depuis `.env.example`** (v2.2.0 — extraction de port/host/API-target à partir de plus de 16 noms de variables conventionnelles parmi les frameworks Vite · Next.js · Nuxt · Angular · Node · Python).
|
|
117
|
-
|
|
118
|
-
**Vous n'avez rien à spécifier. Tout est détecté automatiquement.**
|
|
119
|
-
|
|
120
|
-
### Configuration runtime pilotée par `.env` (v2.2.0)
|
|
121
|
-
|
|
122
|
-
v2.2.0 ajoute `lib/env-parser.js` pour que le `CLAUDE.md` généré reflète ce que le projet déclare réellement plutôt que les defaults framework.
|
|
123
|
-
|
|
124
|
-
- **Ordre de recherche** : `.env.example` (canonique, commité) → `.env.local.example` → `.env.sample` → `.env.template` → `.env` → `.env.local` → `.env.development`. La variante `.example` l'emporte parce qu'elle est la shape-of-truth neutre côté développeur, et non les overrides locaux d'un contributeur particulier.
|
|
125
|
-
- **Conventions de variables de port reconnues** : `VITE_PORT` / `VITE_DEV_PORT` / `VITE_DESKTOP_PORT` / `NEXT_PUBLIC_PORT` / `NUXT_PORT` / `NG_PORT` / `APP_PORT` / `SERVER_PORT` / `HTTP_PORT` / `DEV_PORT` / `FLASK_RUN_PORT` / `UVICORN_PORT` / `DJANGO_PORT` / `PORT` générique. Les noms spécifiques au framework l'emportent sur le `PORT` générique quand les deux sont présents.
|
|
126
|
-
- **Host & API target** : `VITE_DEV_HOST` / `VITE_API_TARGET` / `NEXT_PUBLIC_API_URL` / `NUXT_PUBLIC_API_BASE` / `BACKEND_URL` / `PROXY_TARGET`, etc.
|
|
127
|
-
- **Priorité** : le `server.port` de `application.yml` Spring Boot gagne toujours (config framework-native), puis le port déclaré dans `.env`, puis le default framework (Vite 5173, Next.js 3000, Django 8000, etc.) en dernier recours.
|
|
128
|
-
- **Redaction des variables sensibles** : les valeurs des variables correspondant aux patterns `PASSWORD` / `SECRET` / `TOKEN` / `API_KEY` / `ACCESS_KEY` / `PRIVATE_KEY` / `CREDENTIAL` / `JWT_SECRET` / `CLIENT_SECRET` / `SESSION_SECRET` / `BEARER` / `SALT` sont remplacées par `***REDACTED***` avant d'atteindre n'importe quel générateur en aval. Defense-in-depth contre les secrets accidentellement commités dans `.env.example`. `DATABASE_URL` est explicitement whitelisté pour la back-compat d'identification BD du stack-detector.
|
|
129
|
-
|
|
130
|
-
### Détection des Domaines Java (5 patterns avec fallback)
|
|
131
|
-
|
|
132
|
-
| Priorité | Pattern | Structure | Exemple |
|
|
133
|
-
|---|---|---|---|
|
|
134
|
-
| A | Layer d'abord | `controller/{domain}/` | `controller/user/UserController.java` |
|
|
135
|
-
| B | Domaine d'abord | `{domain}/controller/` | `user/controller/UserController.java` |
|
|
136
|
-
| D | Préfixe de module | `{module}/{domain}/controller/` | `front/member/controller/MemberController.java` |
|
|
137
|
-
| E | DDD/Hexagonal | `{domain}/adapter/in/web/` | `user/adapter/in/web/UserController.java` |
|
|
138
|
-
| C | Plat | `controller/*.java` | `controller/UserController.java` → extrait `user` du nom de classe |
|
|
139
|
-
|
|
140
|
-
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.
|
|
141
|
-
|
|
142
|
-
### Détection des Domaines Kotlin Multi-Module
|
|
143
|
-
|
|
144
|
-
Pour les projets Kotlin avec structure Gradle multi-module (ex : monorepo CQRS) :
|
|
145
|
-
|
|
146
|
-
| Étape | Ce que fait l'outil | Exemple |
|
|
147
|
-
|---|---|---|
|
|
148
|
-
| 1 | Scanne `settings.gradle.kts` pour trouver les `include()` | Trouve 14 modules |
|
|
149
|
-
| 2 | Détecte le type de module depuis le nom | `reservation-command-server` → type : `command` |
|
|
150
|
-
| 3 | Extrait le domaine du nom de module | `reservation-command-server` → domaine : `reservation` |
|
|
151
|
-
| 4 | Regroupe le même domaine à travers les modules | `reservation-command-server` + `common-query-server` → 1 domaine |
|
|
152
|
-
| 5 | Détecte l'architecture | Contient modules `command` + `query` → CQRS |
|
|
153
|
-
|
|
154
|
-
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.
|
|
155
|
-
|
|
156
|
-
### Détection des Domaines Frontend
|
|
157
|
-
|
|
158
|
-
- **App Router** : `app/{domain}/page.tsx` (Next.js)
|
|
159
|
-
- **Pages Router** : `pages/{domain}/index.tsx`
|
|
160
|
-
- **FSD (Feature-Sliced Design)** : `features/*/`, `widgets/*/`, `entities/*/`
|
|
161
|
-
- **Split RSC/Client** : Détecte le pattern `client.tsx`, suit la séparation Server/Client des composants
|
|
162
|
-
- **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/`)
|
|
163
|
-
- **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.
|
|
164
|
-
- **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/`).
|
|
165
|
-
- **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.
|
|
166
|
-
- **Fallback de config** : Détecte Next.js/Vite/Nuxt depuis les fichiers de config quand ils ne sont pas dans `package.json` (support monorepo)
|
|
167
|
-
- **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
|
|
168
|
-
- **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.
|
|
169
|
-
|
|
170
|
-
### Overrides de scanner (v2.0.0)
|
|
171
|
-
|
|
172
|
-
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 :
|
|
173
|
-
|
|
174
|
-
```json
|
|
175
|
-
{
|
|
176
|
-
"frontendScan": {
|
|
177
|
-
"platformKeywords": ["kiosk"],
|
|
178
|
-
"skipSubappNames": ["legacy"],
|
|
179
|
-
"minSubappFiles": 3
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
```
|
|
183
|
-
|
|
184
|
-
| Champ | Par défaut | But |
|
|
185
|
-
|---|---|---|
|
|
186
|
-
| `platformKeywords` | liste intégrée ci-dessus | Mots-clés `{platform}` supplémentaires pour le scan de plateforme (ex : `kiosk`, `vr`, `embedded`) |
|
|
187
|
-
| `skipSubappNames` | répertoires structurels uniquement | Noms de subapp supplémentaires à exclure de l'émission de domaines du scan de plateforme |
|
|
188
|
-
| `minSubappFiles` | `2` | Remplace le nombre minimum de fichiers requis avant qu'un subapp ne devienne un domaine |
|
|
189
|
-
|
|
190
|
-
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.
|
|
191
|
-
|
|
156
|
+
paths:
|
|
157
|
+
- "**/*"
|
|
192
158
|
---
|
|
193
159
|
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
### Prérequis
|
|
197
|
-
|
|
198
|
-
- **Node.js** v18+
|
|
199
|
-
- **CLI Claude Code** (installée et authentifiée)
|
|
200
|
-
|
|
201
|
-
### Installation
|
|
202
|
-
|
|
203
|
-
```bash
|
|
204
|
-
cd /your/project/root
|
|
205
|
-
|
|
206
|
-
# Option A : npx (recommandé — pas d'installation nécessaire)
|
|
207
|
-
npx claudeos-core init
|
|
208
|
-
|
|
209
|
-
# Option B : installation globale
|
|
210
|
-
npm install -g claudeos-core
|
|
211
|
-
claudeos-core init
|
|
212
|
-
|
|
213
|
-
# Option C : devDependency du projet
|
|
214
|
-
npm install --save-dev claudeos-core
|
|
215
|
-
npx claudeos-core init
|
|
216
|
-
|
|
217
|
-
# Option D : git clone (pour développement/contribution)
|
|
218
|
-
git clone https://github.com/claudeos-core/claudeos-core.git claudeos-core-tools
|
|
219
|
-
|
|
220
|
-
# Cross-plateforme (PowerShell, CMD, Bash, Zsh — n'importe quel terminal)
|
|
221
|
-
node claudeos-core-tools/bin/cli.js init
|
|
160
|
+
# Data Access Rules
|
|
222
161
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
162
|
+
## XML-only SQL
|
|
163
|
+
- Every SQL statement lives in `src/main/resources/mapper/*.xml`.
|
|
164
|
+
NO `@Select` / `@Insert` / `@Update` / `@Delete` annotations on `@Mapper` methods.
|
|
165
|
+
- Each `@Mapper` interface has exactly one XML file at
|
|
166
|
+
`src/main/resources/mapper/{InterfaceName}.xml`.
|
|
167
|
+
- `<mapper namespace="...">` MUST be the fully qualified Java interface name.
|
|
168
|
+
The single existing exception is `TransferData.xml` (free-form `transfer.data`).
|
|
228
169
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
║ Select generated document language (required) ║
|
|
234
|
-
╚══════════════════════════════════════════════════╝
|
|
235
|
-
|
|
236
|
-
Les fichiers générés (CLAUDE.md, Standards, Rules,
|
|
237
|
-
Skills, Guides) seront écrits en français.
|
|
238
|
-
|
|
239
|
-
1. en — English
|
|
240
|
-
2. ko — 한국어 (Korean)
|
|
241
|
-
3. zh-CN — 简体中文 (Chinese Simplified)
|
|
242
|
-
4. ja — 日本語 (Japanese)
|
|
243
|
-
5. es — Español (Spanish)
|
|
244
|
-
6. vi — Tiếng Việt (Vietnamese)
|
|
245
|
-
7. hi — हिन्दी (Hindi)
|
|
246
|
-
8. ru — Русский (Russian)
|
|
247
|
-
❯ 9. fr — Français (French)
|
|
248
|
-
10. de — Deutsch (German)
|
|
249
|
-
|
|
250
|
-
↑↓ Move 1-0 Jump Enter Select ESC Cancel
|
|
251
|
-
```
|
|
170
|
+
## Dynamic SQL
|
|
171
|
+
- `<if>` predicates MUST guard both null and empty:
|
|
172
|
+
`<if test="X != null and X != ''">`. Empty-only is the existing HIGH-severity bug pattern.
|
|
173
|
+
- Prefer `LIMIT n OFFSET m` over MySQL-style `LIMIT m, n`.
|
|
252
174
|
|
|
253
|
-
|
|
175
|
+
## Examples
|
|
254
176
|
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
177
|
+
✅ Correct:
|
|
178
|
+
```xml
|
|
179
|
+
<update id="update">
|
|
180
|
+
UPDATE articles
|
|
181
|
+
<set>
|
|
182
|
+
<if test="article.title != null and article.title != ''">title = #{article.title},</if>
|
|
183
|
+
updated_at = #{article.updatedAt}
|
|
184
|
+
</set>
|
|
185
|
+
WHERE id = #{article.id}
|
|
186
|
+
</update>
|
|
259
187
|
```
|
|
260
188
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
### Installation Manuelle Pas à Pas
|
|
266
|
-
|
|
267
|
-
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.
|
|
268
|
-
|
|
269
|
-
#### Étape 1 : Cloner et installer les dépendances
|
|
270
|
-
|
|
271
|
-
```bash
|
|
272
|
-
cd /your/project/root
|
|
273
|
-
|
|
274
|
-
git clone https://github.com/claudeos-core/claudeos-core.git claudeos-core-tools
|
|
275
|
-
cd claudeos-core-tools && npm install && cd ..
|
|
189
|
+
❌ Incorrect:
|
|
190
|
+
```xml
|
|
191
|
+
<mapper namespace="article.mapper"> <!-- NO — namespace MUST be FQCN -->
|
|
276
192
|
```
|
|
193
|
+
````
|
|
277
194
|
|
|
278
|
-
|
|
195
|
+
Le glob `paths: ["**/*"]` signifie que Claude Code charge automatiquement cette rule chaque fois que vous éditez un fichier du projet. Les exemples ✅/❌ proviennent directement des conventions réelles et patterns de bugs existants de cette codebase.
|
|
279
196
|
|
|
280
|
-
|
|
281
|
-
# Rules (v2.0.0 : ajout de 60.memory)
|
|
282
|
-
mkdir -p .claude/rules/{00.core,10.backend,20.frontend,30.security-db,40.infra,50.sync,60.memory}
|
|
197
|
+
</details>
|
|
283
198
|
|
|
284
|
-
|
|
285
|
-
|
|
199
|
+
<details>
|
|
200
|
+
<summary><strong>🧠 Un seed <code>decision-log.md</code> auto-généré (extrait réel)</strong></summary>
|
|
286
201
|
|
|
287
|
-
|
|
288
|
-
|
|
202
|
+
```markdown
|
|
203
|
+
## 2026-04-26 — CQRS-lite read/write split inside the persistence layer
|
|
289
204
|
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
205
|
+
- **Context:** Writes go through `core.*Repository` port → `MyBatis*Repository`
|
|
206
|
+
adapter → `io.spring.infrastructure.mybatis.mapper.{Aggregate}Mapper`.
|
|
207
|
+
Reads bypass the domain port: application service →
|
|
208
|
+
`io.spring.infrastructure.mybatis.readservice.{Concept}ReadService` directly,
|
|
209
|
+
returning flat `*Data` DTOs from `io.spring.application.data.*`.
|
|
210
|
+
- **Options considered:** Single repository surface returning hydrated entities
|
|
211
|
+
for both reads and writes.
|
|
212
|
+
- **Decision:** Same database, two `@Mapper` packages — `mapper/` (write side,
|
|
213
|
+
operates on core entities) and `readservice/` (read side, returns `*Data` DTOs).
|
|
214
|
+
Read DTOs avoid entity hydration overhead.
|
|
215
|
+
- **Consequences:** Reads are NOT routed through the domain port — this is
|
|
216
|
+
intentional, not a bug. Application services may inject both a `*Repository`
|
|
217
|
+
(writes) and one or more `*ReadService` interfaces (reads) at the same time.
|
|
218
|
+
Do NOT add hydrate-then-map glue in the read path.
|
|
293
219
|
```
|
|
294
220
|
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
#### Étape 3 : Lancer plan-installer (analyse du projet)
|
|
298
|
-
|
|
299
|
-
Cela scanne votre projet, détecte le stack, trouve les domaines, les divise en groupes et génère les prompts.
|
|
300
|
-
|
|
301
|
-
```bash
|
|
302
|
-
node claudeos-core-tools/plan-installer/index.js
|
|
303
|
-
```
|
|
304
|
-
|
|
305
|
-
**Sortie (dans `claudeos-core/generated/`) :**
|
|
306
|
-
- `project-analysis.json` — stack détecté, domaines, info frontend
|
|
307
|
-
- `domain-groups.json` — groupes de domaines pour Pass 1
|
|
308
|
-
- `pass1-backend-prompt.md` / `pass1-frontend-prompt.md` — prompts d'analyse
|
|
309
|
-
- `pass2-prompt.md` — prompt de merge
|
|
310
|
-
- `pass3-prompt.md` — template de prompt Pass 3 avec le bloc Phase 1 « Read Once, Extract Facts » préfixé (Règles A–E). Le pipeline automatisé découpe Pass 3 en plusieurs stages à l'exécution ; ce template alimente chaque stage.
|
|
311
|
-
- `pass3-context.json` — résumé projet allégé (< 5 Ko, construit après Pass 2) que les prompts Pass 3 préfèrent au `pass2-merged.json` complet (v2.1.0)
|
|
312
|
-
- `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/`)
|
|
313
|
-
|
|
314
|
-
Vous pouvez inspecter ces fichiers pour vérifier la précision de détection avant de continuer.
|
|
315
|
-
|
|
316
|
-
#### Étape 4 : Pass 1 — Analyse profonde du code (par groupe de domaines)
|
|
317
|
-
|
|
318
|
-
Lancez Pass 1 pour chaque groupe de domaines. Consultez `domain-groups.json` pour connaître le nombre de groupes.
|
|
319
|
-
|
|
320
|
-
```bash
|
|
321
|
-
# Vérifier combien de groupes
|
|
322
|
-
cat claudeos-core/generated/domain-groups.json | node -e "
|
|
323
|
-
const g = JSON.parse(require('fs').readFileSync('/dev/stdin','utf-8'));
|
|
324
|
-
g.groups.forEach((g,i) => console.log('Group '+(i+1)+': ['+g.domains.join(', ')+'] ('+g.type+', ~'+g.estimatedFiles+' files)'));
|
|
325
|
-
"
|
|
326
|
-
|
|
327
|
-
# Lancer Pass 1 pour chaque groupe (remplacer les domaines et le numéro de groupe)
|
|
328
|
-
# Note : v1.6.1+ utilise String.replace() de Node.js au lieu de perl — perl n'est
|
|
329
|
-
# plus nécessaire, et la sémantique de fonction de remplacement empêche l'injection
|
|
330
|
-
# regex des caractères $/&/$1 susceptibles d'apparaître dans les noms de domaine.
|
|
331
|
-
#
|
|
332
|
-
# Pour le groupe 1 :
|
|
333
|
-
DOMAIN_LIST="user, order, product" PASS_NUM=1 node -e "
|
|
334
|
-
const fs = require('fs');
|
|
335
|
-
const tpl = fs.readFileSync('claudeos-core/generated/pass1-backend-prompt.md','utf-8');
|
|
336
|
-
const out = tpl
|
|
337
|
-
.replace(/\{\{DOMAIN_GROUP\}\}/g, () => process.env.DOMAIN_LIST)
|
|
338
|
-
.replace(/\{\{PASS_NUM\}\}/g, () => process.env.PASS_NUM);
|
|
339
|
-
process.stdout.write(out);
|
|
340
|
-
" | claude -p --dangerously-skip-permissions
|
|
341
|
-
|
|
342
|
-
# Pour le groupe 2 (si présent) :
|
|
343
|
-
DOMAIN_LIST="payment, system, delivery" PASS_NUM=2 node -e "
|
|
344
|
-
const fs = require('fs');
|
|
345
|
-
const tpl = fs.readFileSync('claudeos-core/generated/pass1-backend-prompt.md','utf-8');
|
|
346
|
-
const out = tpl
|
|
347
|
-
.replace(/\{\{DOMAIN_GROUP\}\}/g, () => process.env.DOMAIN_LIST)
|
|
348
|
-
.replace(/\{\{PASS_NUM\}\}/g, () => process.env.PASS_NUM);
|
|
349
|
-
process.stdout.write(out);
|
|
350
|
-
" | claude -p --dangerously-skip-permissions
|
|
351
|
-
|
|
352
|
-
# Pour les groupes frontend, remplacez pass1-backend-prompt.md → pass1-frontend-prompt.md
|
|
353
|
-
```
|
|
354
|
-
|
|
355
|
-
**Vérifier :** `ls claudeos-core/generated/pass1-*.json` devrait afficher un JSON par groupe.
|
|
356
|
-
|
|
357
|
-
#### Étape 5 : Pass 2 — Merger les résultats d'analyse
|
|
358
|
-
|
|
359
|
-
```bash
|
|
360
|
-
cat claudeos-core/generated/pass2-prompt.md \
|
|
361
|
-
| claude -p --dangerously-skip-permissions
|
|
362
|
-
```
|
|
221
|
+
Pass 4 ensemence `decision-log.md` avec les décisions architecturales extraites de `pass2-merged.json` afin que les sessions futures se souviennent du *pourquoi* la codebase ressemble à ce qu'elle est — pas seulement *à quoi* elle ressemble.
|
|
363
222
|
|
|
364
|
-
|
|
223
|
+
</details>
|
|
365
224
|
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
**Remarque v2.1.0 :** Pass 3 est **toujours exécuté en mode split** par le pipeline automatisé. Chaque stage est un appel `claude -p` séparé avec une fenêtre de contexte fraîche, donc l'overflow par accumulation de sortie est structurellement impossible quelle que soit la taille du projet. Le template `pass3-prompt.md` est assemblé par stage avec une directive `STAGE:` qui indique à Claude quel sous-ensemble de fichiers émettre. En mode manuel, le chemin le plus simple reste d'alimenter le template complet et de laisser Claude tout générer en un seul appel — mais cela n'est fiable que sur les petits projets (≤5 domaines). Pour toute taille supérieure, utilisez `npx claudeos-core init` pour que le runner split s'occupe de l'orchestration des stages.
|
|
369
|
-
|
|
370
|
-
**Mode appel unique (petits projets uniquement, ≤5 domaines) :**
|
|
371
|
-
|
|
372
|
-
```bash
|
|
373
|
-
cat claudeos-core/generated/pass3-prompt.md \
|
|
374
|
-
| claude -p --dangerously-skip-permissions
|
|
375
|
-
```
|
|
376
|
-
|
|
377
|
-
**Mode stage par stage (recommandé pour toutes les tailles de projet) :**
|
|
378
|
-
|
|
379
|
-
Le pipeline automatisé exécute ces stages. La liste des stages est :
|
|
380
|
-
|
|
381
|
-
| Stage | Écrit | Notes |
|
|
382
|
-
|---|---|---|
|
|
383
|
-
| `3a` | `pass3a-facts.md` (fiche de faits distillée 5–10 Ko) | Lit `pass2-merged.json` une seule fois ; les stages suivants référencent ce fichier |
|
|
384
|
-
| `3b-core` | `CLAUDE.md`, `standard/` communs, `.claude/rules/` communs | Fichiers inter-projet ; pas de sortie spécifique à un domaine |
|
|
385
|
-
| `3b-1..N` | `standard/60.domains/*.md` spécifiques aux domaines + règles de domaine | Batch de ≤15 domaines par stage (auto-divisé à partir de 16 domaines) |
|
|
386
|
-
| `3c-core` | `guide/` (9 fichiers), `skills/00.shared/MANIFEST.md`, orchestrateurs `skills/*/` | Skills partagés et tous les guides destinés à l'utilisateur |
|
|
387
|
-
| `3c-1..N` | Sous-skills de domaine sous `skills/20.frontend-page/scaffold-page-feature/` | Batch de ≤15 domaines par stage |
|
|
388
|
-
| `3d-aux` | `database/`, `mcp-guide/` | Taille fixe, indépendante du nombre de domaines |
|
|
389
|
-
|
|
390
|
-
Pour un projet de 1 à 15 domaines, cela se développe en 4 stages (`3a`, `3b-core`, `3c-core`, `3d-aux` — pas de sous-division en batches). Pour 16 à 30 domaines, 8 stages (`3b` et `3c` chacun sous-divisés en 2 batches). Voir [Auto-scaling selon la Taille du Projet](#auto-scaling-selon-la-taille-du-projet) pour le tableau complet.
|
|
391
|
-
|
|
392
|
-
**Vérifier :** `CLAUDE.md` doit exister à la racine de votre projet, et le marqueur `claudeos-core/generated/pass3-complete.json` doit être écrit. En mode split, le marqueur contient `mode: "split"` et un array `groupsCompleted` listant chaque stage terminé — la logique de marqueur partiel s'en sert pour reprendre au bon stage après un crash plutôt que de redémarrer depuis `3a` (qui doublerait le coût en tokens).
|
|
393
|
-
|
|
394
|
-
> **Remarque staging :** 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é gère le déplacement automatiquement après chaque stage. Si vous exécutez un stage 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).
|
|
395
|
-
|
|
396
|
-
#### Étape 7 : Pass 4 — Scaffolding memory
|
|
397
|
-
|
|
398
|
-
```bash
|
|
399
|
-
cat claudeos-core/generated/pass4-prompt.md \
|
|
400
|
-
| claude -p --dangerously-skip-permissions
|
|
401
|
-
```
|
|
402
|
-
|
|
403
|
-
**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, et `CLAUDE.md` doit désormais avoir une section `## Memory (L4)` ajoutée. Marqueur : `claudeos-core/generated/pass4-memory.json`.
|
|
404
|
-
|
|
405
|
-
> **Gap-fill v2.1.0 :** Pass 4 garantit aussi que `claudeos-core/skills/00.shared/MANIFEST.md` existe. Si Pass 3c l'a omis (possible sur les projets skill-sparse car les templates `pass3.md` par stack listent `MANIFEST.md` parmi les cibles de génération sans le marquer REQUIRED), le gap-fill crée un stub minimal pour que `.claude/rules/50.sync/02.skills-sync.md` (chemin v2.2.0 — le nombre de règles sync est passé de 3 à 2, ce qui était `03` est devenu `02`) ait toujours une cible de référence valide. Idempotent : saute si le fichier a déjà du contenu réel (>20 caractères).
|
|
406
|
-
|
|
407
|
-
> **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.
|
|
408
|
-
|
|
409
|
-
#### Étape 8 : Lancer les outils de vérification
|
|
410
|
-
|
|
411
|
-
```bash
|
|
412
|
-
# Générer les métadonnées (requis avant les autres vérifications)
|
|
413
|
-
node claudeos-core-tools/manifest-generator/index.js
|
|
414
|
-
|
|
415
|
-
# Lancer toutes les vérifications
|
|
416
|
-
node claudeos-core-tools/health-checker/index.js
|
|
225
|
+
---
|
|
417
226
|
|
|
418
|
-
|
|
419
|
-
node claudeos-core-tools/plan-validator/index.js --check # Cohérence Plan ↔ disque
|
|
420
|
-
node claudeos-core-tools/sync-checker/index.js # Fichiers non enregistrés/orphelins
|
|
421
|
-
node claudeos-core-tools/content-validator/index.js # Vérifications qualité (incl. section memory/ [9/9])
|
|
422
|
-
node claudeos-core-tools/pass-json-validator/index.js # Vérifications JSON Pass 1–4 + marqueur de complétion
|
|
423
|
-
```
|
|
227
|
+
## Quick Start
|
|
424
228
|
|
|
425
|
-
|
|
229
|
+
**Prérequis :** Node.js 18+, [Claude Code](https://docs.anthropic.com/en/docs/claude-code) installé et authentifié.
|
|
426
230
|
|
|
427
231
|
```bash
|
|
428
|
-
#
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
# Regarder CLAUDE.md
|
|
432
|
-
head -30 CLAUDE.md
|
|
433
|
-
|
|
434
|
-
# Regarder un fichier standard
|
|
435
|
-
cat claudeos-core/standard/00.core/01.project-overview.md | head -20
|
|
436
|
-
|
|
437
|
-
# Regarder les règles
|
|
438
|
-
ls .claude/rules/*/
|
|
439
|
-
```
|
|
440
|
-
|
|
441
|
-
> **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.
|
|
232
|
+
# 1. Aller à la racine du projet
|
|
233
|
+
cd my-spring-boot-project
|
|
442
234
|
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
```
|
|
446
|
-
# Dans Claude Code — demandez simplement naturellement :
|
|
447
|
-
« Crée un CRUD pour le domaine order »
|
|
448
|
-
« Ajoute une API d'authentification utilisateur »
|
|
449
|
-
« Refactorise ce code pour qu'il matche les patterns du projet »
|
|
450
|
-
|
|
451
|
-
# Claude Code référence automatiquement vos Standards, Rules et Skills générés.
|
|
452
|
-
```
|
|
453
|
-
|
|
454
|
-
---
|
|
455
|
-
|
|
456
|
-
## Comment ça marche — Pipeline à 4 Passes
|
|
457
|
-
|
|
458
|
-
```
|
|
235
|
+
# 2. Lancer init (analyse votre code et demande à Claude d'écrire les rules)
|
|
459
236
|
npx claudeos-core init
|
|
460
|
-
│
|
|
461
|
-
├── [1] npm install ← Dépendances (~10s)
|
|
462
|
-
├── [2] Structure de répertoires ← Créer les dossiers (~1s)
|
|
463
|
-
├── [3] plan-installer (Node.js) ← Scan du projet (~5s)
|
|
464
|
-
│ ├── Auto-détecte le stack (multi-stack aware)
|
|
465
|
-
│ ├── Extrait la liste de domaines (tagged : backend/frontend)
|
|
466
|
-
│ ├── Divise en groupes de domaines (par type)
|
|
467
|
-
│ ├── Construit pass3-context.json (résumé allégé, v2.1.0)
|
|
468
|
-
│ └── Sélectionne des prompts spécifiques au stack (par type)
|
|
469
|
-
│
|
|
470
|
-
├── [4] Pass 1 × N (claude -p) ← Analyse profonde du code (~2-8min)
|
|
471
|
-
│ ├── ⚙️ Groupes backend → prompt spécifique backend
|
|
472
|
-
│ └── 🎨 Groupes frontend → prompt spécifique frontend
|
|
473
|
-
│
|
|
474
|
-
├── [5] Pass 2 × 1 (claude -p) ← Merge d'analyse (~1min)
|
|
475
|
-
│ └── Consolide TOUS les résultats de Pass 1 dans pass2-merged.json
|
|
476
|
-
│
|
|
477
|
-
├── [6] Pass 3 (mode split, v2.1.0) ← Génère tout
|
|
478
|
-
│ │
|
|
479
|
-
│ ├── 3a × 1 (claude -p) ← Extraction de faits (~5-10min)
|
|
480
|
-
│ │ └── Lit pass2-merged.json une fois → pass3a-facts.md
|
|
481
|
-
│ │
|
|
482
|
-
│ ├── 3b-core × 1 (claude -p) ← CLAUDE.md + standard/rules communs
|
|
483
|
-
│ ├── 3b-1..N × N (claude -p) ← Standards/règles de domaine (≤15 domaines/batch)
|
|
484
|
-
│ │
|
|
485
|
-
│ ├── 3c-core × 1 (claude -p) ← Guides + skills partagés + MANIFEST.md
|
|
486
|
-
│ ├── 3c-1..N × N (claude -p) ← Sous-skills de domaine (≤15 domaines/batch)
|
|
487
|
-
│ │
|
|
488
|
-
│ └── 3d-aux × 1 (claude -p) ← Stubs database/ + mcp-guide/
|
|
489
|
-
│
|
|
490
|
-
├── [7] Pass 4 × 1 (claude -p) ← Memory scaffolding (~30s-5min)
|
|
491
|
-
│ ├── Seed memory/ (decision-log, failure-patterns, …)
|
|
492
|
-
│ ├── Génère les règles 60.memory/
|
|
493
|
-
│ ├── Ajoute la section « Memory (L4) » à CLAUDE.md
|
|
494
|
-
│ └── Gap-fill : garantit skills/00.shared/MANIFEST.md (v2.1.0)
|
|
495
|
-
│
|
|
496
|
-
└── [8] Vérification ← Auto-exécute le health checker
|
|
497
|
-
```
|
|
498
|
-
|
|
499
|
-
### Pourquoi 4 Passes ?
|
|
500
|
-
|
|
501
|
-
**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.
|
|
502
|
-
|
|
503
|
-
**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.
|
|
504
|
-
|
|
505
|
-
**Pass 3** (mode split, v2.1.0) prend l'analyse mergée et génère tout l'écosystème de fichiers (CLAUDE.md, règles, standards, skills, guides) à travers plusieurs appels `claude -p` séquentiels. L'intuition clé est que l'overflow par accumulation de sortie n'est pas prédictible à partir de la taille d'entrée : le Pass 3 en appel unique fonctionnait bien sur les projets à 2 domaines et échouait de façon fiable autour de 5 domaines, et la frontière d'échec bougeait selon la verbosité de chaque fichier. Le mode split contourne cela entièrement — chaque stage démarre avec une fenêtre de contexte fraîche et écrit un sous-ensemble borné de fichiers. La cohérence inter-stages (qui était le principal avantage de l'approche monolithique) est préservée par `pass3a-facts.md`, une fiche de faits distillée de 5 à 10 Ko que tous les stages suivants référencent.
|
|
506
|
-
|
|
507
|
-
Le template de prompt Pass 3 inclut également un **bloc Phase 1 « Read Once, Extract Facts »** avec cinq règles qui contraignent encore le volume de sortie :
|
|
508
|
-
|
|
509
|
-
- **Règle A** — Référencer la table de faits ; ne pas relire `pass2-merged.json`.
|
|
510
|
-
- **Règle B** — Écriture de fichiers idempotente (skip si la cible existe avec du contenu réel), rendant Pass 3 sûrement rejouable après interruption.
|
|
511
|
-
- **Règle C** — Cohérence inter-fichiers imposée via la table de faits comme unique source de vérité.
|
|
512
|
-
- **Règle D** — Concision de sortie : une seule ligne (`[WRITE]`/`[SKIP]`) entre chaque écriture de fichier, pas de recopie de la table de faits, pas d'écho du contenu des fichiers.
|
|
513
|
-
- **Règle E** — Vérification idempotente par batch : un seul `Glob` au début de PHASE 2 plutôt que des appels `Read` par cible.
|
|
514
237
|
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
**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. v2.1.0 ajoute un gap-fill pour `skills/00.shared/MANIFEST.md` au cas où Pass 3c l'aurait omis.
|
|
518
|
-
|
|
519
|
-
---
|
|
238
|
+
# 3. Terminé. Ouvrez Claude Code et codez — vos rules sont déjà chargées.
|
|
239
|
+
```
|
|
520
240
|
|
|
521
|
-
|
|
241
|
+
**Ce que vous obtenez** une fois `init` terminé :
|
|
522
242
|
|
|
523
243
|
```
|
|
524
244
|
your-project/
|
|
525
|
-
│
|
|
526
|
-
├── CLAUDE.md ← Point d'entrée Claude Code (structure déterministe à 8 sections, v2.2.0)
|
|
527
|
-
│
|
|
528
245
|
├── .claude/
|
|
529
|
-
│ └── rules/
|
|
530
|
-
│ ├── 00.core/
|
|
531
|
-
│ ├── 10.backend/
|
|
532
|
-
│ ├── 20.frontend/
|
|
533
|
-
│ ├── 30.security-db/
|
|
534
|
-
│ ├── 40.infra/
|
|
535
|
-
│ ├── 50.sync/
|
|
536
|
-
│
|
|
537
|
-
│
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
│
|
|
541
|
-
│ │ ├──
|
|
542
|
-
│ │ ├──
|
|
543
|
-
│ │ ├──
|
|
544
|
-
│ │ ├──
|
|
545
|
-
│ │ ├──
|
|
546
|
-
│ │ ├──
|
|
547
|
-
│ │ ├──
|
|
548
|
-
│ │
|
|
549
|
-
│
|
|
550
|
-
│
|
|
551
|
-
│
|
|
552
|
-
│
|
|
553
|
-
│
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
│ │ ├── 00.core/ ← Vue d'ensemble, architecture, naming
|
|
559
|
-
│ │ ├── 10.backend-api/ ← Patterns API (spécifiques au stack)
|
|
560
|
-
│ │ ├── 20.frontend-ui/ ← Patterns frontend (si détecté)
|
|
561
|
-
│ │ ├── 30.security-db/ ← Sécurité, schéma BD, utilitaires
|
|
562
|
-
│ │ ├── 40.infra/ ← Config, logging, CI/CD
|
|
563
|
-
│ │ ├── 50.verification/ ← Vérification de build, testing
|
|
564
|
-
│ │ ├── 60.domains/ ← Standards par-domaine (écrits par Pass 3b-N, v2.1.0)
|
|
565
|
-
│ │ └── 90.optional/ ← Conventions optionnelles (extras spécifiques au stack)
|
|
566
|
-
│ ├── skills/ ← Skills de scaffolding CRUD/page
|
|
567
|
-
│ │ └── 00.shared/MANIFEST.md ← Source unique de vérité pour les skills enregistrés
|
|
568
|
-
│ ├── guide/ ← Onboarding, FAQ, troubleshooting (9 fichiers)
|
|
569
|
-
│ ├── database/ ← Schéma BD, guide de migration
|
|
570
|
-
│ ├── mcp-guide/ ← Guide d'intégration de serveur MCP
|
|
571
|
-
│ └── memory/ ← L4 : connaissance d'équipe (4 fichiers) — commitez-les
|
|
572
|
-
│ ├── decision-log.md ← Le « pourquoi » derrière les décisions de conception
|
|
573
|
-
│ ├── failure-patterns.md ← Erreurs récurrentes et fixes (auto-scoré — `npx claudeos-core memory score`)
|
|
574
|
-
│ ├── compaction.md ← Stratégie de compaction en 4 étapes (lancez `npx claudeos-core memory compact`)
|
|
575
|
-
│ └── auto-rule-update.md ← Propositions d'amélioration de règles (`npx claudeos-core memory propose-rules`)
|
|
576
|
-
│
|
|
577
|
-
└── claudeos-core-tools/ ← Ce toolkit (ne pas modifier)
|
|
578
|
-
```
|
|
579
|
-
|
|
580
|
-
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.
|
|
581
|
-
|
|
582
|
-
> **Remarque v2.1.0 :** `claudeos-core/plan/` n'est plus généré. Les master plans étaient un backup interne que Claude Code ne consommait pas à l'exécution, et leur agrégation dans Pass 3 était une cause majeure d'overflow par accumulation de sortie. Utilisez `git` pour le backup/restore à la place. Les projets qui migrent depuis la v2.0.x peuvent supprimer sans risque un éventuel répertoire `claudeos-core/plan/` existant.
|
|
583
|
-
|
|
584
|
-
### Recommandations de gitignore
|
|
585
|
-
|
|
586
|
-
**À commiter** (connaissance d'équipe — destinée au partage) :
|
|
587
|
-
- `CLAUDE.md` — point d'entrée Claude Code
|
|
588
|
-
- `.claude/rules/**` — règles auto-chargées
|
|
589
|
-
- `claudeos-core/standard/**`, `skills/**`, `guide/**`, `database/**`, `mcp-guide/**`, `plan/**` — documentation générée
|
|
590
|
-
- `claudeos-core/memory/**` — historique de décisions, patterns d'échec, propositions de règles
|
|
591
|
-
|
|
592
|
-
**À NE PAS commiter** (artefacts de build régénérables) :
|
|
593
|
-
|
|
594
|
-
```gitignore
|
|
595
|
-
# ClaudeOS-Core — analyse générée et cache de traduction
|
|
596
|
-
claudeos-core/generated/
|
|
597
|
-
```
|
|
598
|
-
|
|
599
|
-
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`.
|
|
246
|
+
│ └── rules/ ← Auto-chargé par Claude Code
|
|
247
|
+
│ ├── 00.core/ (rules générales — naming, architecture)
|
|
248
|
+
│ ├── 10.backend/ (rules de stack backend, le cas échéant)
|
|
249
|
+
│ ├── 20.frontend/ (rules de stack frontend, le cas échéant)
|
|
250
|
+
│ ├── 30.security-db/ (sécurité & conventions DB)
|
|
251
|
+
│ ├── 40.infra/ (env, logging, CI/CD)
|
|
252
|
+
│ ├── 50.sync/ (rappels de doc-sync — rules only)
|
|
253
|
+
│ ├── 60.memory/ (memory rules — Pass 4, rules only)
|
|
254
|
+
│ ├── 70.domains/{type}/ (rules par domaine, type = backend|frontend)
|
|
255
|
+
│ └── 80.verification/ (stratégie de tests + rappels de vérification du build)
|
|
256
|
+
├── claudeos-core/
|
|
257
|
+
│ ├── standard/ ← Documents de référence (miroir de la structure des catégories)
|
|
258
|
+
│ │ ├── 00.core/ (vue d'ensemble du projet, architecture, naming)
|
|
259
|
+
│ │ ├── 10.backend/ (référence backend — si stack backend)
|
|
260
|
+
│ │ ├── 20.frontend/ (référence frontend — si stack frontend)
|
|
261
|
+
│ │ ├── 30.security-db/ (référence sécurité & DB)
|
|
262
|
+
│ │ ├── 40.infra/ (référence env / logging / CI-CD)
|
|
263
|
+
│ │ ├── 70.domains/{type}/ (référence par domaine)
|
|
264
|
+
│ │ ├── 80.verification/ (référence build / startup / tests — standard only)
|
|
265
|
+
│ │ └── 90.optional/ (extras spécifiques au stack — standard only)
|
|
266
|
+
│ ├── skills/ (patterns réutilisables que Claude peut appliquer)
|
|
267
|
+
│ ├── guide/ (how-to guides pour les tâches courantes)
|
|
268
|
+
│ ├── database/ (vue d'ensemble du schéma, guide de migration)
|
|
269
|
+
│ ├── mcp-guide/ (notes d'intégration MCP)
|
|
270
|
+
│ └── memory/ (decision log, failure patterns, compaction)
|
|
271
|
+
└── CLAUDE.md (l'index que Claude lit en premier)
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
Les catégories partageant le même préfixe numérique entre `rules/` et `standard/` représentent la même zone conceptuelle (par ex. `10.backend` rules ↔ `10.backend` standards). Catégories rules-only : `50.sync` (rappels de sync de docs) et `60.memory` (Pass 4 memory). Catégorie standard-only : `90.optional` (extras spécifiques au stack sans application). Tous les autres préfixes (`00`, `10`, `20`, `30`, `40`, `70`, `80`) apparaissent à la fois dans `rules/` et `standard/`. Désormais, Claude Code connaît votre projet.
|
|
600
275
|
|
|
601
276
|
---
|
|
602
277
|
|
|
603
|
-
##
|
|
604
|
-
|
|
605
|
-
Le mode split de Pass 3 adapte le nombre de stages au nombre de domaines. La sous-division en batches se déclenche à 16 domaines pour garder chaque stage sous ~50 fichiers de sortie, qui est la plage empiriquement sûre pour `claude -p` avant que l'overflow par accumulation de sortie ne commence.
|
|
606
|
-
|
|
607
|
-
| Taille du projet | Domaines | Stages Pass 3 | Total `claude -p` | Temps est. |
|
|
608
|
-
|---|---|---|---|---|
|
|
609
|
-
| Petit | 1–4 | 4 (`3a`, `3b-core`, `3c-core`, `3d-aux`) | 7 (Pass 1 + 2 + 4 stages de Pass 3 + Pass 4) | ~10–15 min |
|
|
610
|
-
| Moyen | 5–15 | 4 | 8–9 | ~25–45 min |
|
|
611
|
-
| Grand | 16–30 | **8** (3b, 3c chacun divisé en 2 batches) | 11–12 | **~60–105 min** |
|
|
612
|
-
| X-Grand | 31–45 | 10 | 13–14 | ~100–150 min |
|
|
613
|
-
| XX-Grand | 46–60 | 12 | 15–16 | ~150–200 min |
|
|
614
|
-
| XXX-Grand | 61+ | 14+ | 17+ | 200 min+ |
|
|
278
|
+
## À qui s'adresse cet outil ?
|
|
615
279
|
|
|
616
|
-
|
|
280
|
+
| Vous êtes... | Cet outil vous aide à... |
|
|
281
|
+
|---|---|
|
|
282
|
+
| **Un développeur solo** qui démarre un nouveau projet avec Claude Code | Sauter entièrement la phase « apprendre mes conventions à Claude » |
|
|
283
|
+
| **Un team lead** qui maintient des standards partagés | Automatiser la corvée de garder `.claude/rules/` à jour |
|
|
284
|
+
| **Déjà utilisateur de Claude Code** mais fatigué de corriger le code généré | Faire en sorte que Claude suive VOS patterns, pas les patterns « globalement bons » |
|
|
617
285
|
|
|
618
|
-
|
|
286
|
+
**Pas adapté si :** vous voulez un bundle preset universel d'agents/skills/rules qui fonctionne dès le premier jour sans étape de scan (voir [docs/fr/comparison.md](docs/fr/comparison.md) pour ce qui convient où), ou si votre projet n'entre pas encore dans l'un des [stacks supportés](#supported-stacks).
|
|
619
287
|
|
|
620
288
|
---
|
|
621
289
|
|
|
622
|
-
##
|
|
623
|
-
|
|
624
|
-
ClaudeOS-Core inclut 5 outils de vérification intégrés qui tournent automatiquement après la génération :
|
|
625
|
-
|
|
626
|
-
```bash
|
|
627
|
-
# Lancer toutes les vérifications d'un coup (recommandé)
|
|
628
|
-
npx claudeos-core health
|
|
290
|
+
## Comment ça marche ?
|
|
629
291
|
|
|
630
|
-
|
|
631
|
-
npx claudeos-core validate # Comparaison Plan ↔ disque
|
|
632
|
-
npx claudeos-core refresh # Sync Disque → Plan
|
|
633
|
-
npx claudeos-core restore # Restore Plan → Disque
|
|
292
|
+
ClaudeOS-Core inverse le workflow Claude Code habituel :
|
|
634
293
|
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
node claudeos-core-tools/plan-validator/index.js --check
|
|
639
|
-
node claudeos-core-tools/sync-checker/index.js
|
|
294
|
+
```
|
|
295
|
+
Habituel : Vous décrivez le projet → Claude devine votre stack → Claude écrit la doc
|
|
296
|
+
Ici : Le code lit votre stack → Le code transmet les faits confirmés à Claude → Claude écrit à partir des faits
|
|
640
297
|
```
|
|
641
298
|
|
|
642
|
-
|
|
643
|
-
|---|---|
|
|
644
|
-
| **manifest-generator** | Construit le JSON de métadonnées (`rule-manifest.json`, `sync-map.json`, initialise `stale-report.json`) ; indexe 7 répertoires dont `memory/` (`totalMemory` dans summary). v2.1.0 : `plan-manifest.json` n'est plus généré puisque les master plans ont été supprimés. |
|
|
645
|
-
| **plan-validator** | Valide les blocs `<file>` du master plan par rapport au disque pour les projets qui ont encore `claudeos-core/plan/` (cas de migration legacy). v2.1.0 : saute l'émission de `plan-sync-status.json` quand `plan/` est absent ou vide — `stale-report.json` enregistre quand même un no-op réussi. |
|
|
646
|
-
| **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). Se termine proprement quand `sync-map.json` n'a aucun mapping (état par défaut v2.1.0). |
|
|
647
|
-
| **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) |
|
|
648
|
-
| **pass-json-validator** | Valide la structure JSON de Pass 1–4 plus les marqueurs de complétion `pass3-complete.json` (forme mode split, v2.1.0) et `pass4-memory.json` |
|
|
649
|
-
|
|
650
|
-
---
|
|
651
|
-
|
|
652
|
-
## Comment Claude Code Utilise Votre Documentation
|
|
653
|
-
|
|
654
|
-
ClaudeOS-Core génère une documentation que Claude Code lit réellement — voici comment :
|
|
299
|
+
L'idée clé : **un scanner Node.js lit d'abord votre code source** (déterministe, sans IA), puis un pipeline Claude en 4 passes écrit la documentation, contrainte par ce que le scanner a trouvé. Claude ne peut pas inventer de chemins ou de frameworks qui ne sont pas réellement dans votre code.
|
|
655
300
|
|
|
656
|
-
|
|
301
|
+
Pour l'architecture complète, voir [docs/fr/architecture.md](docs/fr/architecture.md).
|
|
657
302
|
|
|
658
|
-
|
|
659
|
-
|---|---|---|
|
|
660
|
-
| `CLAUDE.md` | À chaque début de conversation | Toujours |
|
|
661
|
-
| `.claude/rules/00.core/*` | Quand n'importe quel fichier est édité (`paths: ["**/*"]`) | Toujours |
|
|
662
|
-
| `.claude/rules/10.backend/*` | Quand n'importe quel fichier est édité (`paths: ["**/*"]`) | Toujours |
|
|
663
|
-
| `.claude/rules/20.frontend/*` | Quand un fichier frontend est édité (limité aux chemins component/page/style) | Conditionnel |
|
|
664
|
-
| `.claude/rules/30.security-db/*` | Quand n'importe quel fichier est édité (`paths: ["**/*"]`) | Toujours |
|
|
665
|
-
| `.claude/rules/40.infra/*` | Uniquement lors de l'édition de fichiers config/infra (chemins limités) | Conditionnel |
|
|
666
|
-
| `.claude/rules/50.sync/*` | Uniquement lors de l'édition de fichiers claudeos-core (chemins limités) | Conditionnel |
|
|
667
|
-
| `.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) |
|
|
668
|
-
|
|
669
|
-
### Ce que Claude Code lit on-demand via les références de règles
|
|
303
|
+
---
|
|
670
304
|
|
|
671
|
-
|
|
305
|
+
## Supported Stacks
|
|
672
306
|
|
|
673
|
-
|
|
674
|
-
- `claudeos-core/database/**` — schéma BD (pour queries, mappers, migrations)
|
|
675
|
-
- `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.
|
|
307
|
+
12 stacks, auto-détectés depuis vos fichiers projet :
|
|
676
308
|
|
|
677
|
-
|
|
309
|
+
**Backend :** Java/Spring Boot · Kotlin/Spring Boot · Node/Express · Node/Fastify · Node/NestJS · Python/Django · Python/FastAPI · Python/Flask
|
|
678
310
|
|
|
679
|
-
|
|
311
|
+
**Frontend :** Node/Next.js · Node/Vite · Angular · Vue/Nuxt
|
|
680
312
|
|
|
681
|
-
|
|
313
|
+
Les projets multi-stack (par ex. backend Spring Boot + frontend Next.js) fonctionnent d'emblée.
|
|
682
314
|
|
|
683
|
-
|
|
684
|
-
|---|---|
|
|
685
|
-
| `claudeos-core/plan/` | Backups de master plan des projets legacy (v2.0.x et antérieurs). Non généré en v2.1.0. Si présent, Claude Code ne le charge pas automatiquement — lecture on-demand uniquement. |
|
|
686
|
-
| `claudeos-core/generated/` | JSON de métadonnées de build, prompts, marqueurs de Pass, cache de traduction, `.staged-rules/`. Pas pour coder. |
|
|
687
|
-
| `claudeos-core/guide/` | Guides d'onboarding pour humains. |
|
|
688
|
-
| `claudeos-core/mcp-guide/` | Docs de serveur MCP. Pas pour coder. |
|
|
689
|
-
| `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. |
|
|
315
|
+
Pour les règles de détection et ce que chaque scanner extrait, voir [docs/fr/stacks.md](docs/fr/stacks.md).
|
|
690
316
|
|
|
691
317
|
---
|
|
692
318
|
|
|
693
|
-
## Workflow
|
|
319
|
+
## Workflow quotidien
|
|
694
320
|
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
```
|
|
698
|
-
# Utilisez simplement Claude Code normalement — il référence vos standards automatiquement :
|
|
699
|
-
« Crée un CRUD pour le domaine order »
|
|
700
|
-
« Ajoute une API de mise à jour de profil utilisateur »
|
|
701
|
-
« Refactorise ce code pour qu'il matche les patterns du projet »
|
|
702
|
-
```
|
|
703
|
-
|
|
704
|
-
### Après édition manuelle des Standards
|
|
321
|
+
Trois commandes couvrent ~95 % de l'usage :
|
|
705
322
|
|
|
706
323
|
```bash
|
|
707
|
-
#
|
|
708
|
-
npx claudeos-core
|
|
709
|
-
|
|
710
|
-
# Vérifiez que tout est cohérent
|
|
711
|
-
npx claudeos-core health
|
|
712
|
-
```
|
|
713
|
-
|
|
714
|
-
### Quand les docs sont corrompues
|
|
324
|
+
# Première fois sur un projet
|
|
325
|
+
npx claudeos-core init
|
|
715
326
|
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
# ne sont plus générés). Commitez vos docs générés régulièrement pour pouvoir
|
|
719
|
-
# revenir en arrière sur des fichiers spécifiques sans tout régénérer :
|
|
720
|
-
git checkout HEAD -- .claude/rules/ claudeos-core/
|
|
327
|
+
# Après avoir édité manuellement les standards ou rules
|
|
328
|
+
npx claudeos-core lint
|
|
721
329
|
|
|
722
|
-
#
|
|
723
|
-
npx claudeos-core
|
|
330
|
+
# Health check (avant les commits, ou en CI)
|
|
331
|
+
npx claudeos-core health
|
|
724
332
|
```
|
|
725
333
|
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
La couche Memory L4 (`claudeos-core/memory/`) accumule la connaissance d'équipe à travers les sessions. Trois sous-commandes CLI la maintiennent en bonne santé :
|
|
334
|
+
Deux autres pour la maintenance du memory layer :
|
|
729
335
|
|
|
730
336
|
```bash
|
|
731
|
-
#
|
|
337
|
+
# Compacter le log failure-patterns (à exécuter périodiquement)
|
|
732
338
|
npx claudeos-core memory compact
|
|
733
|
-
# Étape 1 : résume les entrées anciennes (>30 jours, corps → une ligne)
|
|
734
|
-
# Étape 2 : merge les headings dupliqués (fréquence sommée, dernier fix conservé)
|
|
735
|
-
# Étape 3 : drop basse-importance + anciennes (importance <3 ET lastSeen >60 jours)
|
|
736
|
-
# Étape 4 : applique le plafond de 400 lignes par fichier (la plus ancienne basse-importance est supprimée en premier)
|
|
737
339
|
|
|
738
|
-
#
|
|
739
|
-
npx claudeos-core memory score
|
|
740
|
-
# importance = round(frequency × 1.5 + recency × 5), plafonné à 10
|
|
741
|
-
# À lancer après avoir ajouté plusieurs nouveaux failure patterns
|
|
742
|
-
|
|
743
|
-
# Propose-rules : fait remonter des candidats d'ajouts de règles depuis les échecs récurrents
|
|
340
|
+
# Promouvoir des failure patterns fréquents en rules proposées
|
|
744
341
|
npx claudeos-core memory propose-rules
|
|
745
|
-
# Lit les entrées de failure-patterns.md avec frequency ≥ 3
|
|
746
|
-
# Calcule la confiance (sigmoïde sur evidence pondérée × multiplicateur d'anchor)
|
|
747
|
-
# Écrit les propositions dans memory/auto-rule-update.md (PAS auto-appliqué)
|
|
748
|
-
# Confiance ≥ 0.70 mérite une revue sérieuse ; accepter → éditer la règle + loguer la décision
|
|
749
|
-
|
|
750
|
-
# v2.1.0 : `memory --help` route désormais vers l'aide des sous-commandes (auparavant top-level)
|
|
751
|
-
npx claudeos-core memory --help
|
|
752
|
-
```
|
|
753
|
-
|
|
754
|
-
> **Corrections v2.1.0 :** `memory score` ne laisse plus de lignes `importance` dupliquées après la première exécution (auparavant la ligne auto-scorée était ajoutée au-dessus tandis que la ligne plate d'origine restait en dessous). Le marqueur de résumé de l'Étape 1 de `memory compact` est désormais un vrai item de liste markdown (`- _Summarized on ..._`) pour qu'il s'affiche proprement et soit correctement re-parsé lors des compactions suivantes.
|
|
755
|
-
|
|
756
|
-
Quand écrire dans memory (Claude le fait on-demand, mais vous pouvez aussi éditer manuellement) :
|
|
757
|
-
- **`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.
|
|
758
|
-
- **`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.
|
|
759
|
-
- `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.
|
|
760
|
-
|
|
761
|
-
### Intégration CI/CD
|
|
762
|
-
|
|
763
|
-
```yaml
|
|
764
|
-
# Exemple GitHub Actions
|
|
765
|
-
- run: npx claudeos-core validate
|
|
766
|
-
# Exit code 1 bloque la PR
|
|
767
|
-
|
|
768
|
-
# Optionnel : housekeeping mensuel de memory (workflow cron séparé)
|
|
769
|
-
- run: npx claudeos-core memory compact
|
|
770
|
-
- run: npx claudeos-core memory score
|
|
771
342
|
```
|
|
772
343
|
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
## En Quoi Est-ce Différent ?
|
|
776
|
-
|
|
777
|
-
### vs autres outils Claude Code
|
|
778
|
-
|
|
779
|
-
| | ClaudeOS-Core | Everything Claude Code (50K+ ⭐) | Harness | specs-generator | Claude `/init` |
|
|
780
|
-
|---|---|---|---|---|---|
|
|
781
|
-
| **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 |
|
|
782
|
-
| **Lit votre code source** | ✅ Analyse statique déterministe | ❌ | ❌ | ❌ (le LLM lit) | ❌ (le LLM lit) |
|
|
783
|
-
| **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 |
|
|
784
|
-
| **Détection de domaines** | Le code confirme (Java 5 patterns, Kotlin CQRS, Next.js FSD) | N/A | Le LLM devine | N/A | N/A |
|
|
785
|
-
| **Même projet → Même résultat** | ✅ Analyse déterministe | ✅ (fichiers statiques) | ❌ (le LLM varie) | ❌ (le LLM varie) | ❌ (le LLM varie) |
|
|
786
|
-
| **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 |
|
|
787
|
-
| **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) |
|
|
788
|
-
| **Emplacement de sortie** | `.claude/rules/` (auto-chargé par Claude Code) | `.claude/` divers | `.claude/agents/` + `.claude/skills/` | `.claude/steering/` + `specs/` | `CLAUDE.md` |
|
|
789
|
-
| **Vérification post-génération** | ✅ 5 validateurs automatiques | ❌ | ❌ | ❌ | ❌ |
|
|
790
|
-
| **Sortie multi-langue** | ✅ 10 langues | ❌ | ❌ | ❌ | ❌ |
|
|
791
|
-
| **Multi-stack** | ✅ Backend + Frontend simultanés | ❌ Stack-agnostic | ❌ | ❌ | Partiel |
|
|
792
|
-
| **Couche memory persistante** | ✅ L4 — decision log + failure patterns + propositions de règles auto-scorées (v2.0.0) | ❌ | ❌ | ❌ | ❌ |
|
|
793
|
-
| **Orchestration d'agents** | ❌ | ✅ 28 agents | ✅ 6 patterns | ❌ | ❌ |
|
|
794
|
-
|
|
795
|
-
### La différence clé en une phrase
|
|
796
|
-
|
|
797
|
-
**Les autres outils donnent à Claude « des instructions globalement correctes ». ClaudeOS-Core donne à Claude « des instructions extraites de votre code réel ».**
|
|
798
|
-
|
|
799
|
-
C'est pourquoi Claude Code arrête de générer du code JPA dans votre projet MyBatis,
|
|
800
|
-
arrête d'utiliser `success()` quand votre codebase utilise `ok()`,
|
|
801
|
-
et arrête de créer des répertoires `user/controller/` quand votre projet utilise `controller/user/`.
|
|
802
|
-
|
|
803
|
-
### Complémentaires, pas concurrents
|
|
804
|
-
|
|
805
|
-
ClaudeOS-Core se concentre sur les **règles et standards spécifiques au projet**.
|
|
806
|
-
Les autres outils se concentrent sur **l'orchestration d'agents et les workflows**.
|
|
807
|
-
|
|
808
|
-
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.
|
|
344
|
+
Pour toutes les options de chaque commande, voir [docs/fr/commands.md](docs/fr/commands.md).
|
|
809
345
|
|
|
810
346
|
---
|
|
811
347
|
|
|
812
|
-
##
|
|
348
|
+
## Ce qui distingue cet outil
|
|
813
349
|
|
|
814
|
-
|
|
815
|
-
Non. Il crée uniquement `CLAUDE.md`, `.claude/rules/` et `claudeos-core/`. Votre code existant n'est jamais modifié.
|
|
350
|
+
La plupart des outils de documentation Claude Code génèrent à partir d'une description (vous expliquez à l'outil, l'outil explique à Claude). ClaudeOS-Core génère à partir de votre code source réel (l'outil lit, l'outil dit à Claude ce qui est confirmé, Claude n'écrit que ce qui est confirmé).
|
|
816
351
|
|
|
817
|
-
|
|
818
|
-
Il appelle `claude -p` plusieurs fois à travers les 4 passes. En mode split v2.1.0, Pass 3 seul se développe en 4–14+ stages selon la taille du projet (voir [Auto-scaling](#auto-scaling-selon-la-taille-du-projet)). Un petit projet typique (1–15 domaines) utilise 8–9 appels `claude -p` au total ; un projet de 18 domaines en utilise 11 ; un projet de 60 domaines en utilise 15–17. Chaque stage tourne avec une fenêtre de contexte fraîche — le coût en tokens par appel est en fait plus bas qu'avec le Pass 3 monolithique, parce qu'aucun stage n'a à retenir l'arbre de fichiers entier dans un seul contexte. 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. Cela reste dans l'usage normal de Claude Code.
|
|
352
|
+
Trois conséquences concrètes :
|
|
819
353
|
|
|
820
|
-
**
|
|
821
|
-
|
|
822
|
-
**
|
|
823
|
-
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).
|
|
354
|
+
1. **Détection de stack déterministe.** Même projet + même code = même sortie. Pas de « Claude a tiré différemment cette fois-ci ».
|
|
355
|
+
2. **Aucun chemin inventé.** Le prompt de Pass 3 liste explicitement chaque chemin source autorisé ; Claude ne peut pas citer de chemins qui n'existent pas.
|
|
356
|
+
3. **Conscience multi-stack.** Backend et frontend domains utilisent des prompts d'analyse différents dans la même exécution.
|
|
824
357
|
|
|
825
|
-
|
|
826
|
-
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 à travers ses stages split — les domaines backend vont dans certains batches 3b/3c, les domaines frontend dans d'autres, tous référençant le même `pass3a-facts.md` pour la cohérence.
|
|
827
|
-
|
|
828
|
-
**Q : Est-ce que ça marche avec les monorepos Turborepo / pnpm workspaces / Lerna ?**
|
|
829
|
-
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.
|
|
830
|
-
|
|
831
|
-
**Q : Que se passe-t-il en cas de re-lancement ?**
|
|
832
|
-
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. En mode split v2.1.0, le resume de Pass 3 fonctionne à la granularité du stage — si l'exécution a crashé pendant `3c-2`, le prochain `init` reprend à `3c-2` plutôt que de redémarrer depuis `3a` (ce qui doublerait le coût en tokens). Le marqueur `pass3-complete.json` enregistre `mode: "split"` plus un array `groupsCompleted` pour piloter cette logique.
|
|
833
|
-
|
|
834
|
-
**Q : NestJS a-t-il son propre template ou utilise-t-il celui d'Express ?**
|
|
835
|
-
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`.
|
|
836
|
-
|
|
837
|
-
**Q : Qu'en est-il des projets Vue / Nuxt ?**
|
|
838
|
-
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`.
|
|
839
|
-
|
|
840
|
-
**Q : Supporte-t-il Kotlin ?**
|
|
841
|
-
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.).
|
|
842
|
-
|
|
843
|
-
**Q : Qu'en est-il de l'architecture CQRS / BFF ?**
|
|
844
|
-
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.
|
|
845
|
-
|
|
846
|
-
**Q : Qu'en est-il des monorepos Gradle multi-module ?**
|
|
847
|
-
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.
|
|
848
|
-
|
|
849
|
-
**Q : Qu'est-ce que la couche Memory L4 (v2.0.0) ? Dois-je commiter `claudeos-core/memory/` ?**
|
|
850
|
-
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.
|
|
851
|
-
|
|
852
|
-
**Q : Et si Pass 4 échoue ?**
|
|
853
|
-
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.
|
|
854
|
-
|
|
855
|
-
**Q : Que font `memory compact` / `memory score` / `memory propose-rules` ?**
|
|
856
|
-
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).
|
|
857
|
-
|
|
858
|
-
**Q : Pourquoi `--force` (ou le mode resume « fresh ») supprime-t-il `.claude/rules/` ?**
|
|
859
|
-
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`). Guard 1 (« déplacement partiel de staged-rules ») et Guard 3 (« sortie incomplète — fichiers guide manquants/vides ou sentinel standard manquant / skills 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. (Remarque v2.1.0 : Guard 3 H1 ne vérifie plus `plan/` puisque les master plans ne sont plus générés.)
|
|
860
|
-
|
|
861
|
-
**Q : Qu'est-ce que `claudeos-core/generated/.staged-rules/` et pourquoi existe-t-il ?**
|
|
862
|
-
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. En mode split v2.1.0, le runner de stage déplace les règles staged dans `.claude/rules/` après chaque stage (pas seulement à la fin), donc un crash en plein Pass 3 laisse en place les règles des stages déjà terminés.
|
|
863
|
-
|
|
864
|
-
**Q : Puis-je lancer Pass 3 manuellement au lieu de `npx claudeos-core init` ?**
|
|
865
|
-
Oui pour les petits projets (≤5 domaines) — les instructions manuelles en appel unique de l'[Étape 6](#étape-6--pass-3--générer-toute-la-documentation-divisée-en-plusieurs-stages) fonctionnent toujours. Pour les projets plus gros vous devriez utiliser `npx claudeos-core init` parce que c'est le runner split qui orchestre l'exécution stage par stage avec des contextes frais, gère la sous-division en batches à partir de 16 domaines, écrit la bonne forme de marqueur `pass3-complete.json` (`mode: "split"` + `groupsCompleted`), et déplace les règles staged entre les stages. Reproduire cette orchestration à la main est possible mais fastidieux. Si vous avez une raison d'exécuter des stages manuellement (ex : débogage d'un stage spécifique), vous pouvez templater `pass3-prompt.md` avec la bonne directive `STAGE:` et l'alimenter à `claude -p` directement — mais pensez à déplacer `.staged-rules/` après chaque stage et à mettre à jour le marqueur vous-même.
|
|
866
|
-
|
|
867
|
-
**Q : Mon projet est une migration depuis la v2.0.x et a un répertoire `claudeos-core/plan/` existant. Que faire ?**
|
|
868
|
-
Rien de requis — les outils v2.1.0 ignorent `plan/` quand il est absent ou vide, et `plan-validator` gère toujours les projets legacy avec des répertoires `plan/` peuplés pour la rétrocompatibilité. Vous pouvez supprimer sans risque `claudeos-core/plan/` si vous n'avez pas besoin des backups de master plan (l'historique git est un meilleur backup de toute façon). Si vous gardez `plan/`, lancer `npx claudeos-core init` ne le mettra pas à jour — le nouveau contenu n'est plus agrégé dans les master plans en v2.1.0. Les outils de vérification gèrent les deux cas proprement.
|
|
358
|
+
Pour une comparaison côte-à-côte de scope avec d'autres outils, voir [docs/fr/comparison.md](docs/fr/comparison.md). La comparaison porte sur **ce que fait chaque outil**, pas **lequel est le meilleur** — la plupart sont complémentaires.
|
|
869
359
|
|
|
870
360
|
---
|
|
871
361
|
|
|
872
|
-
##
|
|
362
|
+
## Vérification (post-génération)
|
|
873
363
|
|
|
874
|
-
|
|
875
|
-
pass-prompts/templates/
|
|
876
|
-
├── common/ # header/footer partagés + pass4 + staging-override + CLAUDE.md scaffold (v2.2.0)
|
|
877
|
-
│ ├── header.md # Rôle + directive de format de sortie (toutes les passes)
|
|
878
|
-
│ ├── pass3-footer.md # Instruction health-check post-Pass-3 + 5 blocs CRITICAL de guardrails (v2.2.0)
|
|
879
|
-
│ ├── pass3-phase1.md # Bloc « Read Once, Extract Facts » avec Rules A-E (v2.1.0)
|
|
880
|
-
│ ├── pass4.md # Prompt de scaffolding mémoire (v2.0.0)
|
|
881
|
-
│ ├── staging-override.md # Redirige les écritures .claude/rules/** vers .staged-rules/** (v2.0.0)
|
|
882
|
-
│ ├── claude-md-scaffold.md # Template CLAUDE.md déterministe à 8 sections (v2.2.0)
|
|
883
|
-
│ └── lang-instructions.json # Directives de sortie par langue (10 langues)
|
|
884
|
-
├── java-spring/ # Java / Spring Boot
|
|
885
|
-
├── kotlin-spring/ # Kotlin / Spring Boot (CQRS, BFF, multi-module)
|
|
886
|
-
├── node-express/ # Node.js / Express
|
|
887
|
-
├── node-nestjs/ # Node.js / NestJS (Module, DI, Guard, Pipe, Interceptor)
|
|
888
|
-
├── node-fastify/ # Node.js / Fastify
|
|
889
|
-
├── node-nextjs/ # Next.js / React (App Router, RSC)
|
|
890
|
-
├── node-vite/ # Vite SPA (React, client-side routing, VITE_ env, Vitest)
|
|
891
|
-
├── vue-nuxt/ # Vue / Nuxt (Composition API, Pinia, Nitro)
|
|
892
|
-
├── angular/ # Angular
|
|
893
|
-
├── python-django/ # Python / Django (DRF)
|
|
894
|
-
├── python-fastapi/ # Python / FastAPI
|
|
895
|
-
└── python-flask/ # Python / Flask (Blueprint, app factory, Jinja2)
|
|
896
|
-
```
|
|
897
|
-
|
|
898
|
-
`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. En v2.1.0, le template Pass 3 est préfixé par `common/pass3-phase1.md` (le bloc « Read Once, Extract Facts » avec les Règles A–E) avant d'être tranché par stage en mode split. Pass 4 utilise le template partagé `common/pass4.md` (memory scaffolding) quel que soit le stack.
|
|
899
|
-
|
|
900
|
-
**Dans v2.2.0**, le prompt Pass 3 intègre également en ligne `common/claude-md-scaffold.md` (le template CLAUDE.md déterministe à 8 sections) entre le bloc phase1 et le corps spécifique au stack — cela fixe la structure des sections afin que les CLAUDE.md générés ne dérivent pas entre projets, tout en laissant le contenu s'adapter à chaque projet. Les templates sont écrits **English-first** ; l'injection de langue depuis `lang-instructions.json` demande au LLM de traduire les titres de section et la prose dans la langue de sortie cible au moment de l'émission.
|
|
901
|
-
|
|
902
|
-
---
|
|
903
|
-
|
|
904
|
-
## Support Monorepo
|
|
364
|
+
Une fois la doc écrite par Claude, le code la vérifie. Cinq validators distincts :
|
|
905
365
|
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
- `
|
|
910
|
-
|
|
911
|
-
- `
|
|
912
|
-
- `
|
|
366
|
+
| Validator | Ce qu'il vérifie | Lancé par |
|
|
367
|
+
|---|---|---|
|
|
368
|
+
| `claude-md-validator` | Invariants structurels de CLAUDE.md (8 sections, language-invariant) | `claudeos-core lint` |
|
|
369
|
+
| `content-validator` | Les chemins cités existent vraiment ; cohérence du manifest | `health` (advisory) |
|
|
370
|
+
| `pass-json-validator` | Sorties Pass 1 / 2 / 3 / 4 bien formées en JSON | `health` (warn) |
|
|
371
|
+
| `plan-validator` | Le plan sauvegardé correspond au disque | `health` (fail-on-error) |
|
|
372
|
+
| `sync-checker` | Les fichiers du disque correspondent aux enregistrements `sync-map.json` (détection orphaned/unregistered) | `health` (fail-on-error) |
|
|
913
373
|
|
|
914
|
-
|
|
374
|
+
Un `health-checker` orchestre les quatre validators d'exécution avec une sévérité à trois niveaux (fail / warn / advisory) et sort avec le code approprié pour la CI. `claude-md-validator` est lancé séparément via la commande `lint` car le drift structurel est un signal de re-init, pas un soft warning. À exécuter à tout moment :
|
|
915
375
|
|
|
916
376
|
```bash
|
|
917
|
-
|
|
918
|
-
npx claudeos-core init
|
|
919
|
-
```
|
|
920
|
-
|
|
921
|
-
**Ce qui est détecté :**
|
|
922
|
-
- Dépendances de `apps/web/package.json` (ex : `next`, `react`) → stack frontend
|
|
923
|
-
- Dépendances de `apps/api/package.json` (ex : `express`, `prisma`) → stack backend
|
|
924
|
-
- Dépendances de `packages/db/package.json` (ex : `drizzle-orm`) → ORM/BD
|
|
925
|
-
- Chemins de workspace personnalisés depuis `pnpm-workspace.yaml` (ex : `services/*`)
|
|
926
|
-
|
|
927
|
-
**Le scan de domaines couvre aussi les layouts monorepo :**
|
|
928
|
-
- `apps/api/src/modules/*/` et `apps/api/src/*/` pour les domaines backend
|
|
929
|
-
- `apps/web/app/*/`, `apps/web/src/app/*/`, `apps/web/pages/*/` pour les domaines frontend
|
|
930
|
-
- `packages/*/src/*/` pour les domaines de packages partagés
|
|
931
|
-
|
|
932
|
-
```
|
|
933
|
-
my-monorepo/ ← Lancez ici : npx claudeos-core init
|
|
934
|
-
├── turbo.json ← Auto-détecté comme Turborepo
|
|
935
|
-
├── apps/
|
|
936
|
-
│ ├── web/ ← Next.js détecté depuis apps/web/package.json
|
|
937
|
-
│ │ ├── app/dashboard/ ← Domaine frontend détecté
|
|
938
|
-
│ │ └── package.json ← { "dependencies": { "next": "^14" } }
|
|
939
|
-
│ └── api/ ← Express détecté depuis apps/api/package.json
|
|
940
|
-
│ ├── src/modules/users/ ← Domaine backend détecté
|
|
941
|
-
│ └── package.json ← { "dependencies": { "express": "^4" } }
|
|
942
|
-
├── packages/
|
|
943
|
-
│ ├── db/ ← Drizzle détecté depuis packages/db/package.json
|
|
944
|
-
│ └── ui/
|
|
945
|
-
└── package.json ← { "workspaces": ["apps/*", "packages/*"] }
|
|
377
|
+
npx claudeos-core health
|
|
946
378
|
```
|
|
947
379
|
|
|
948
|
-
|
|
380
|
+
Pour le détail des checks de chaque validator, voir [docs/fr/verification.md](docs/fr/verification.md).
|
|
949
381
|
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
**« 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).
|
|
953
|
-
|
|
954
|
-
**« npm install failed »** — La version de Node.js est peut-être trop basse. Requiert v18+.
|
|
955
|
-
|
|
956
|
-
**« 0 domains detected »** — La structure de votre projet peut être non standard. Voir les patterns de détection ci-dessus pour votre stack.
|
|
957
|
-
|
|
958
|
-
**« 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/`.
|
|
382
|
+
---
|
|
959
383
|
|
|
960
|
-
|
|
384
|
+
## Memory Layer (optionnel, pour les projets longs)
|
|
961
385
|
|
|
962
|
-
|
|
386
|
+
Depuis v2.0, ClaudeOS-Core écrit un dossier `claudeos-core/memory/` contenant quatre fichiers :
|
|
963
387
|
|
|
964
|
-
|
|
388
|
+
- `decision-log.md` — append-only « pourquoi nous avons choisi X plutôt que Y »
|
|
389
|
+
- `failure-patterns.md` — erreurs récurrentes avec scores frequency/importance
|
|
390
|
+
- `compaction.md` — comment la memory est auto-compactée au fil du temps
|
|
391
|
+
- `auto-rule-update.md` — patterns qui devraient devenir de nouvelles rules
|
|
965
392
|
|
|
966
|
-
|
|
393
|
+
Vous pouvez exécuter `npx claudeos-core memory propose-rules` pour demander à Claude d'examiner les failure patterns récents et de suggérer de nouvelles rules à ajouter.
|
|
967
394
|
|
|
968
|
-
|
|
395
|
+
Pour le modèle memory et son cycle de vie, voir [docs/fr/memory-layer.md](docs/fr/memory-layer.md).
|
|
969
396
|
|
|
970
|
-
|
|
397
|
+
---
|
|
971
398
|
|
|
972
|
-
|
|
399
|
+
## FAQ
|
|
973
400
|
|
|
974
|
-
|
|
401
|
+
**Q : Ai-je besoin d'une clé API Claude ?**
|
|
402
|
+
R : Non. ClaudeOS-Core utilise votre installation Claude Code existante — il pipe les prompts vers `claude -p` sur votre machine. Pas de comptes supplémentaires.
|
|
975
403
|
|
|
976
|
-
|
|
404
|
+
**Q : Cela écrasera-t-il mon CLAUDE.md ou `.claude/rules/` existants ?**
|
|
405
|
+
R : Première exécution sur un projet vierge : ils sont créés. Réexécution sans `--force` : vos éditions sont préservées — les markers de pass de l'exécution précédente sont détectés et les passes sont sautées. Réexécution avec `--force` : tout est wipé et régénéré (vos éditions sont perdues — c'est ce que `--force` veut dire). Voir [docs/fr/safety.md](docs/fr/safety.md).
|
|
977
406
|
|
|
978
|
-
|
|
407
|
+
**Q : Mon stack n'est pas supporté. Puis-je en ajouter un ?**
|
|
408
|
+
R : Oui. Un nouveau stack nécessite ~3 templates de prompt + un domain scanner. Voir [CONTRIBUTING.md](CONTRIBUTING.md) pour le guide en 8 étapes.
|
|
979
409
|
|
|
980
|
-
|
|
410
|
+
**Q : Comment générer la doc en français (ou dans une autre langue) ?**
|
|
411
|
+
R : `npx claudeos-core init --lang fr`. 10 langues supportées : en, ko, ja, zh-CN, es, vi, hi, ru, fr, de.
|
|
981
412
|
|
|
982
|
-
|
|
413
|
+
**Q : Cela fonctionne-t-il avec les monorepos ?**
|
|
414
|
+
R : Oui — Turborepo (`turbo.json`), pnpm workspaces (`pnpm-workspace.yaml`), Lerna (`lerna.json`) et npm/yarn workspaces (`package.json#workspaces`) sont détectés par le stack-detector. Chaque app a sa propre analyse. Les autres layouts de monorepo (par ex. NX) ne sont pas spécifiquement détectés, mais les patterns génériques `apps/*/` et `packages/*/` sont quand même pris en compte par les scanners par stack.
|
|
983
415
|
|
|
984
|
-
|
|
416
|
+
**Q : Et si Claude Code génère des rules avec lesquelles je suis en désaccord ?**
|
|
417
|
+
R : Éditez-les directement. Puis exécutez `npx claudeos-core lint` pour vérifier que CLAUDE.md est toujours structurellement valide. Vos éditions sont préservées sur les exécutions `init` suivantes (sans `--force`) — le mécanisme de resume saute les passes dont les markers existent.
|
|
985
418
|
|
|
986
|
-
|
|
419
|
+
**Q : Où signaler les bugs ?**
|
|
420
|
+
R : [GitHub Issues](https://github.com/claudeos-core/claudeos-core/issues). Pour les problèmes de sécurité, voir [SECURITY.md](SECURITY.md).
|
|
987
421
|
|
|
988
|
-
|
|
422
|
+
---
|
|
989
423
|
|
|
990
|
-
|
|
424
|
+
## Documentation
|
|
991
425
|
|
|
992
|
-
|
|
426
|
+
| Sujet | À lire |
|
|
427
|
+
|---|---|
|
|
428
|
+
| Comment fonctionne le pipeline 4-pass (plus en profondeur que le diagramme) | [docs/fr/architecture.md](docs/fr/architecture.md) |
|
|
429
|
+
| Diagrammes visuels (Mermaid) de l'architecture | [docs/fr/diagrams.md](docs/fr/diagrams.md) |
|
|
430
|
+
| Détection de stack — ce que chaque scanner cherche | [docs/fr/stacks.md](docs/fr/stacks.md) |
|
|
431
|
+
| Memory layer — decision logs et failure patterns | [docs/fr/memory-layer.md](docs/fr/memory-layer.md) |
|
|
432
|
+
| Les 5 validators en détail | [docs/fr/verification.md](docs/fr/verification.md) |
|
|
433
|
+
| Toutes les commandes CLI et options | [docs/fr/commands.md](docs/fr/commands.md) |
|
|
434
|
+
| Installation manuelle (sans `npx`) | [docs/fr/manual-installation.md](docs/fr/manual-installation.md) |
|
|
435
|
+
| Overrides de scanner — `.claudeos-scan.json` | [docs/fr/advanced-config.md](docs/fr/advanced-config.md) |
|
|
436
|
+
| Sécurité : ce qui est préservé lors d'un re-init | [docs/fr/safety.md](docs/fr/safety.md) |
|
|
437
|
+
| Comparaison avec des outils similaires (scope, pas qualité) | [docs/fr/comparison.md](docs/fr/comparison.md) |
|
|
438
|
+
| Erreurs et récupération | [docs/fr/troubleshooting.md](docs/fr/troubleshooting.md) |
|
|
993
439
|
|
|
994
440
|
---
|
|
995
441
|
|
|
996
442
|
## Contribuer
|
|
997
443
|
|
|
998
|
-
Les contributions sont les bienvenues
|
|
999
|
-
|
|
1000
|
-
- **Nouveaux templates de stack** — Ruby/Rails, Go (Gin/Fiber/Echo), PHP (Laravel/Symfony), Rust (Axum/Actix), Svelte/SvelteKit, Remix
|
|
1001
|
-
- **Intégration IDE** — extension VS Code, plugin IntelliJ
|
|
1002
|
-
- **Templates CI/CD** — GitLab CI, CircleCI, exemples Jenkins (GitHub Actions déjà livré — voir `.github/workflows/test.yml`)
|
|
1003
|
-
- **Couverture de test** — Étendre la suite de tests (actuellement 602 tests à travers 30 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), sous-division en batches du mode split Pass 3, resume de marqueur partiel Pass 3 (v2.1.0), validation du contenu du marqueur Pass 4 + rigueur du stale-marker unlink + gap-fill scaffoldSkillsManifest (v2.1.0), guard d'env-skip de traduction + early fail-fast + workflow CI, déplacement de staged-rules, fallback lang-aware de traduction, suite de régression de suppression des master plans (v2.1.0), régression de formatage memory score/compact (v2.1.0), structure du template AI Work Rules, et extraction port/host/API-target du parser `.env` + redaction de variables sensibles (v2.2.0))
|
|
444
|
+
Les contributions sont les bienvenues — ajout de support pour un stack, amélioration des prompts, correction de bugs. Voir [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
1004
445
|
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
---
|
|
446
|
+
Pour le Code of Conduct et la politique de sécurité, voir [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) et [SECURITY.md](SECURITY.md).
|
|
1008
447
|
|
|
1009
|
-
##
|
|
448
|
+
## Licence
|
|
1010
449
|
|
|
1011
|
-
|
|
450
|
+
[ISC](LICENSE) — gratuit pour tout usage, y compris commercial.
|
|
1012
451
|
|
|
1013
|
-
|
|
452
|
+
---
|
|
1014
453
|
|
|
1015
|
-
|
|
454
|
+
<sub>Construit avec soin par [@claudeos-core](https://github.com/claudeos-core). Si cela vous a fait gagner du temps, une ⭐ sur GitHub aide à garder le projet visible.</sub>
|