claudeos-core 1.5.1 → 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/README.de.md +54 -27
  3. package/README.es.md +54 -26
  4. package/README.fr.md +54 -26
  5. package/README.hi.md +54 -27
  6. package/README.ja.md +53 -26
  7. package/README.ko.md +56 -29
  8. package/README.md +53 -26
  9. package/README.ru.md +54 -27
  10. package/README.vi.md +54 -27
  11. package/README.zh-CN.md +54 -27
  12. package/bin/cli.js +6 -2
  13. package/bin/commands/init.js +47 -45
  14. package/bin/lib/cli-utils.js +5 -9
  15. package/bin/lib/lang-selector.js +10 -8
  16. package/bin/lib/resume-selector.js +10 -8
  17. package/bootstrap.sh +26 -20
  18. package/content-validator/index.js +7 -12
  19. package/health-checker/index.js +17 -19
  20. package/lib/plan-parser.js +149 -0
  21. package/lib/safe-fs.js +1 -1
  22. package/lib/stale-report.js +35 -0
  23. package/manifest-generator/index.js +24 -43
  24. package/package.json +1 -1
  25. package/pass-json-validator/index.js +8 -13
  26. package/pass-prompts/templates/node-nestjs/pass1.md +132 -0
  27. package/pass-prompts/templates/node-nestjs/pass2.md +97 -0
  28. package/pass-prompts/templates/node-nestjs/pass3.md +121 -0
  29. package/pass-prompts/templates/vue-nuxt/pass1.md +119 -0
  30. package/pass-prompts/templates/vue-nuxt/pass2.md +83 -0
  31. package/pass-prompts/templates/vue-nuxt/pass3.md +100 -0
  32. package/plan-installer/domain-grouper.js +6 -3
  33. package/plan-installer/index.js +1 -0
  34. package/plan-installer/prompt-generator.js +6 -5
  35. package/plan-installer/scanners/scan-frontend.js +10 -3
  36. package/plan-installer/scanners/scan-java.js +12 -12
  37. package/plan-installer/scanners/scan-kotlin.js +47 -23
  38. package/plan-installer/scanners/scan-node.js +16 -2
  39. package/plan-installer/stack-detector.js +42 -1
  40. package/plan-validator/index.js +22 -124
  41. package/sync-checker/index.js +18 -23
package/CHANGELOG.md CHANGED
@@ -1,5 +1,55 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.6.1] — 2026-04-09
4
+
5
+ ### Fixed
6
+
7
+ - **Path traversal hardening (Windows)** — `plan-validator` and `sync-checker` now use case-insensitive path comparison on Windows, preventing UNC/case-mismatch bypass of root boundary check
8
+ - **Null pointer crash in `stack-detector.js`** — `readFileSafe()` return value for `pnpm-workspace.yaml` now guarded; prevents crash when file exists but is unreadable
9
+ - **Empty pass3 prompt generation** — `prompt-generator.js` now early-returns with warning when pass3 template is missing, instead of silently writing header+footer-only prompt
10
+ - **Domain group boundary off-by-one** — `splitDomainGroups` changed `>=` to `>` for file count threshold; groups now fill up to exactly `MAX_FILES_PER_GROUP` (40) instead of flushing one file early
11
+ - **Perl regex injection in `bootstrap.sh`** — All placeholder substitution migrated from `perl -pi -e` to Node.js `String.replace()`; eliminates regex special character risk in domain names; `perl` is no longer a prerequisite
12
+ - **Flask default port** — `plan-installer` now maps Flask to port 5000 (was falling through to 8080)
13
+ - **Health-checker dependency chain** — `sync-checker` is now automatically skipped when `manifest-generator` fails, instead of running against missing `sync-map.json`
14
+ - **`pass-json-validator` null template crash** — Added null guard before `typeof` check; `null` no longer passes `typeof === "object"` gate
15
+ - **`pass-json-validator` missing backend frameworks** — Added `"fastify"` and `"flask"` to backend framework list; these stacks previously skipped backend section validation
16
+ - **Init error messages** — Pass 1/2/3 failure messages now include actionable guidance (check output above, retry with `--force`, verify prompt file)
17
+ - **Manifest-generator error context** — `.catch()` handler now prefixes error with tool name
18
+ - **Line counting off-by-one** — `statSafe()` and `manifest-generator stat()` no longer count trailing newline as an extra line
19
+ - **Windows CRLF drift** — `plan-validator` now normalizes `\r\n` → `\n` before content comparison; prevents false drift on Windows
20
+ - **`stale-report.js` mutation** — `Object.assign(ex.summary, patch)` replaced with spread operator to avoid in-place mutation
21
+ - **Undefined in sync-checker Set** — Malformed mappings with missing `sourcePath` no longer insert `undefined` into the registered paths Set
22
+ - **BOM frontmatter detection** — `content-validator` now strips UTF-8 BOM (`\uFEFF`) before checking `---` frontmatter marker
23
+ - **Health-checker stderr loss** — Error output now combines both `stdout` and `stderr` instead of preferring one
24
+ - **`bootstrap.sh` exit code preservation** — EXIT trap now captures and restores `$?` instead of always exiting 0
25
+ - **`bootstrap.sh` NODE_MAJOR stderr** — `node -e` stderr redirected to `/dev/null` to prevent parse failure from noise
26
+
27
+ ## [1.6.0] — 2026-04-08
28
+
29
+ ### Added
30
+
31
+ - **JS/TS monorepo support** — Auto-detect `turbo.json`, `pnpm-workspace.yaml`, `lerna.json`, `package.json#workspaces`; scan sub-package `package.json` for framework/ORM/DB dependencies; domain scanning covers `apps/*/src/` and `packages/*/src/` patterns
32
+ - **NestJS dedicated template (`node-nestjs`)** — Separate analysis prompts for `@Module`, `@Injectable`, `@Controller`, Guards, Pipes, Interceptors, DI container, CQRS, `Test.createTestingModule`; previously shared `node-express` template
33
+ - **Vue/Nuxt dedicated template (`vue-nuxt`)** — Separate analysis prompts for Composition API, `<script setup>`, Pinia, `useFetch`/`useAsyncData`, Nitro server routes, `@nuxt/test-utils`; previously shared `node-nextjs` template
34
+ - **Elapsed time tracking** — CLI shows per-pass elapsed time and total time in completion banner
35
+ - **169 new tests** (87 → 256) — Full coverage for `scan-frontend.js` (4-stage fallback), `scan-kotlin.js` (CQRS, shared query resolution), `scan-node.js`, `scan-python.js`, `prompt-generator.js` (multi-stack), `lang-selector.js`, `resume-selector.js`, `init.js`, `plan-parser.js`, monorepo detection
36
+ - **README updates (10 languages)** — Updated all README files (en, ko, zh-CN, ja, es, vi, hi, ru, fr, de) to reflect new stacks table (NestJS/Vue split), monorepo root execution, facade/usecase/orchestrator detection, template structure, 3 new FAQ entries, 256 test count
37
+
38
+ ### Fixed
39
+
40
+ - **Windows backslash glob in `scan-kotlin.js`** — glob returns backslash paths on Windows, causing multi-module detection to silently fail; added `norm()` normalization (no-op on Unix)
41
+ - **Kotlin module key collision** — When same module name exists under different parents (e.g., `servers/command/api-server` + `servers/query/api-server`), both entries now upgrade to full key; `domainMap` merges counts instead of overwriting
42
+ - **Java facade/usecase/orchestrator detection** — `scan-java.js` now detects `facade/`, `usecase/`, `orchestrator/` directories as service-layer (previously only `aggregator/`)
43
+ - **Verification tools exit code** — 4 tools (`content-validator`, `plan-validator`, `sync-checker`, `pass-json-validator`) now exit(1) on unexpected errors instead of exit(0); `health-checker` wrapped in try/catch
44
+
45
+ ### Changed
46
+
47
+ - **`lib/plan-parser.js`** (new) — Extracted shared `parseFileBlocks`, `parseCodeBlocks`, `replaceFileBlock`, `replaceCodeBlock`, `CODE_BLOCK_PLANS` from `manifest-generator` and `plan-validator`; eliminates duplicate code across 2 files
48
+ - **`lib/stale-report.js`** (new) — Extracted shared `updateStaleReport()` from 6 verification tools; eliminates copy-paste pattern
49
+ - **`cli-utils.js`** — `ensureDir` and `fileExists` now delegate to `lib/safe-fs.js` (single source of truth)
50
+ - **`prompt-generator.js`** — Removed dead strip regex (no template matched these patterns)
51
+ - **`init.js` process.exit refactoring** — `process.exit(1)` replaced with `throw InitError`; `lang-selector.js` and `resume-selector.js` return `null` instead of calling `process.exit()`; all errors handled centrally in `cli.js`
52
+
3
53
  ## [1.5.1] — 2026-04-06
4
54
 
5
55
  ### Fixed
package/README.de.md CHANGED
@@ -65,14 +65,16 @@ Dieser Unterschied summiert sich. 10 Aufgaben/Tag × 20 Minuten gespart = **übe
65
65
  |---|---|---|
66
66
  | **Java / Spring Boot** | `build.gradle`, `pom.xml`, 5 Paketmuster | 10 Kategorien, 59 Unterpunkte |
67
67
  | **Kotlin / Spring Boot** | `build.gradle.kts`, kotlin plugin, `settings.gradle.kts`, CQRS/BFF auto-detect | 12 Kategorien, 95 Unterpunkte |
68
- | **Node.js / Express / NestJS** | `package.json` | 9 Kategorien, 57 Unterpunkte |
69
- | **Next.js / React / Vue** | `package.json`, `next.config.*`, FSD-Unterstützung | 9 Kategorien, 55 Unterpunkte |
68
+ | **Node.js / Express** | `package.json` | 9 Kategorien, 57 Unterpunkte |
69
+ | **Node.js / NestJS** | `package.json` (`@nestjs/core`) | 10 Kategorien, 68 Unterpunkte |
70
+ | **Next.js / React** | `package.json`, `next.config.*`, FSD-Unterstützung | 9 Kategorien, 55 Unterpunkte |
71
+ | **Vue / Nuxt** | `package.json`, `nuxt.config.*`, Composition API | 9 Kategorien, 58 Unterpunkte |
70
72
  | **Python / Django** | `requirements.txt`, `pyproject.toml` | 10 Kategorien, 55 Unterpunkte |
71
73
  | **Python / FastAPI** | `requirements.txt`, `pyproject.toml` | 10 Kategorien, 58 Unterpunkte |
72
74
  | **Node.js / Fastify** | `package.json` | 10 Kategorien, 62 Unterpunkte |
73
75
  | **Angular** | `package.json`, `angular.json` | 12 Kategorien, 78 Unterpunkte |
74
76
 
75
- Automatisch erkannt: Sprache und Version, Framework und Version, ORM (MyBatis, JPA, Exposed, Prisma, TypeORM, SQLAlchemy usw.), Datenbank (PostgreSQL, MySQL, Oracle, MongoDB, SQLite), Paketmanager (Gradle, Maven, npm, yarn, pnpm, pip, poetry), Architektur (CQRS, BFF — aus Modulnamen erkannt), Multi-Modul-Struktur (aus settings.gradle).
77
+ Automatisch erkannt: Sprache und Version, Framework und Version, ORM (MyBatis, JPA, Exposed, Prisma, TypeORM, SQLAlchemy usw.), Datenbank (PostgreSQL, MySQL, Oracle, MongoDB, SQLite), Paketmanager (Gradle, Maven, npm, yarn, pnpm, pip, poetry), Architektur (CQRS, BFF — aus Modulnamen erkannt), Multi-Modul-Struktur (aus settings.gradle), Monorepo (Turborepo, pnpm-workspace, Lerna, npm/yarn workspaces).
76
78
 
77
79
  **Sie müssen nichts angeben. Alles wird automatisch erkannt.**
78
80
 
@@ -87,7 +89,7 @@ Automatisch erkannt: Sprache und Version, Framework und Version, ORM (MyBatis, J
87
89
  | E | DDD/Hexagonal | `{domain}/adapter/in/web/` | `user/adapter/in/web/UserController.java` |
88
90
  | C | Flach | `controller/*.java` | `controller/UserController.java` → extrahiert `user` aus Klassenname |
89
91
 
90
- Domains nur mit Services (ohne Controller) werden ebenfalls über die Verzeichnisse `service/`, `dao/`, `aggregator/`, `mapper/`, `repository/` erkannt. Übersprungen: `common`, `config`, `util`, `core`, `front`, `admin`, `v1`, `v2` usw.
92
+ Domains nur mit Services (ohne Controller) werden ebenfalls über die Verzeichnisse `service/`, `dao/`, `aggregator/`, `facade/`, `usecase/`, `orchestrator/`, `mapper/`, `repository/` erkannt. Übersprungen: `common`, `config`, `util`, `core`, `front`, `admin`, `v1`, `v2` usw.
91
93
 
92
94
 
93
95
  ### Kotlin Multi-Modul Domain-Erkennung
@@ -177,7 +179,7 @@ npx claudeos-core init --lang ko # 한국어
177
179
 
178
180
  > **Hinweis:** Dies ändert nur die Sprache der generierten Dokumentationsdateien. Die Codeanalyse (Pass 1–2) läuft immer auf Englisch; nur das generierte Ergebnis (Pass 3) wird in der gewählten Sprache geschrieben.
179
181
 
180
- Das war's. Nach 5–18 Minuten ist die gesamte Dokumentation generiert und einsatzbereit.
182
+ Das war's. Nach 5–18 Minuten ist die gesamte Dokumentation generiert und einsatzbereit. Die CLI zeigt die verstrichene Zeit pro Pass und die Gesamtzeit im Abschlussbanner an.
181
183
 
182
184
  ### Manuelle Schritt-für-Schritt-Installation
183
185
 
@@ -529,6 +531,15 @@ Vollständig unterstützt. ClaudeOS-Core erkennt automatisch beide Stacks, taggt
529
531
  **F: Was passiert bei erneutem Ausführen?**
530
532
  Wenn vorherige Pass 1/2-Ergebnisse existieren, können Sie über einen interaktiven Prompt wählen: **Continue** (dort fortfahren, wo es aufgehört hat) oder **Fresh** (alles löschen und neu starten). Verwenden Sie `--force`, um den Prompt zu überspringen und immer neu zu starten. Pass 3 wird immer erneut ausgeführt. Frühere Versionen können aus Master Plans wiederhergestellt werden.
531
533
 
534
+ **F: Funktioniert es mit Turborepo / pnpm Workspaces / Lerna Monorepos?**
535
+ Ja. ClaudeOS-Core erkennt `turbo.json`, `pnpm-workspace.yaml`, `lerna.json` oder `package.json#workspaces` und scannt automatisch die `package.json`-Dateien der Unterpakete nach Framework-/ORM-/DB-Abhängigkeiten. Domain-Scanning deckt `apps/*/src/`- und `packages/*/src/`-Muster ab. Führen Sie es vom Monorepo-Root aus.
536
+
537
+ **F: Bekommt NestJS ein eigenes Template oder nutzt es das Express-Template?**
538
+ NestJS verwendet ein dediziertes `node-nestjs`-Template mit NestJS-spezifischen Analysekategorien: `@Module`, `@Injectable`, `@Controller`-Dekoratoren, Guards, Pipes, Interceptors, DI-Container, CQRS-Patterns und `Test.createTestingModule`. Express-Projekte verwenden das separate `node-express`-Template.
539
+
540
+ **F: Was ist mit Vue / Nuxt-Projekten?**
541
+ Vue/Nuxt verwendet ein dediziertes `vue-nuxt`-Template, das Composition API, `<script setup>`, defineProps/defineEmits, Pinia Stores, `useFetch`/`useAsyncData`, Nitro Server Routes und `@nuxt/test-utils` abdeckt. Next.js/React-Projekte verwenden das `node-nextjs`-Template.
542
+
532
543
  **F: Wird Kotlin unterstützt?**
533
544
  Ja. ClaudeOS-Core erkennt Kotlin automatisch aus `build.gradle.kts` oder dem Kotlin-Plugin in `build.gradle`. Es verwendet ein dediziertes `kotlin-spring`-Template mit Kotlin-spezifischer Analyse (Data Classes, Sealed Classes, Coroutines, Extension Functions, MockK usw.).
534
545
 
@@ -547,50 +558,66 @@ pass-prompts/templates/
547
558
  ├── common/ # Gemeinsamer Header/Footer
548
559
  ├── java-spring/ # Java / Spring Boot
549
560
  ├── kotlin-spring/ # Kotlin / Spring Boot (CQRS, BFF, multi-module)
550
- ├── node-express/ # Node.js / Express / NestJS
551
- ├── node-nextjs/ # Next.js / React / Vue
552
- ├── python-django/ # Python / Django (DRF)
561
+ ├── node-express/ # Node.js / Express
562
+ ├── node-nestjs/ # Node.js / NestJS (Module, DI, Guard, Pipe, Interceptor)
553
563
  ├── node-fastify/ # Node.js / Fastify
564
+ ├── node-nextjs/ # Next.js / React
565
+ ├── vue-nuxt/ # Vue / Nuxt (Composition API, Pinia, Nitro)
554
566
  ├── angular/ # Angular
567
+ ├── python-django/ # Python / Django (DRF)
555
568
  └── python-fastapi/ # Python / FastAPI
556
569
  ```
557
570
 
558
- `plan-installer` erkennt automatisch Ihren Stack / Ihre Stacks und stellt typspezifische Prompts zusammen. Für Multi-Stack-Projekte werden `pass1-backend-prompt.md` und `pass1-frontend-prompt.md` separat generiert, während `pass3-prompt.md` die Generierungsziele beider Stacks kombiniert.
571
+ `plan-installer` erkennt automatisch Ihren Stack / Ihre Stacks und stellt typspezifische Prompts zusammen. NestJS und Vue/Nuxt verwenden dedizierte Templates mit frameworkspezifischen Analysekategorien (z.B. `@Module`/`@Injectable`/Guards für NestJS, `<script setup>`/Pinia/useFetch für Vue). Für Multi-Stack-Projekte werden `pass1-backend-prompt.md` und `pass1-frontend-prompt.md` separat generiert, während `pass3-prompt.md` die Generierungsziele beider Stacks kombiniert.
559
572
 
560
573
  ---
561
574
 
562
575
  ## Monorepo-Unterstützung
563
576
 
564
- ClaudeOS-Core liest die `package.json` im **aktuellen Verzeichnis**. In Monorepo-Setups (Turborepo, Nx, Lerna, pnpm Workspaces) enthält die Root-`package.json` oft keine Framework-Abhängigkeiten wie `next`, `express` oder `react` — diese befinden sich in den einzelnen App-Verzeichnissen.
577
+ ClaudeOS-Core erkennt automatisch JS/TS-Monorepo-Setups und scannt Unterpakete nach Abhängigkeiten.
565
578
 
566
- **Führen Sie ClaudeOS-Core vom App-Verzeichnis aus, nicht vom Monorepo-Root:**
579
+ **Unterstützte Monorepo-Marker** (automatisch erkannt):
580
+ - `turbo.json` (Turborepo)
581
+ - `pnpm-workspace.yaml` (pnpm Workspaces)
582
+ - `lerna.json` (Lerna)
583
+ - `package.json#workspaces` (npm/yarn Workspaces)
567
584
 
568
- ```bash
569
- # Beispiel: Turborepo mit apps/my-app
570
- cd apps/my-app
571
- npx claudeos-core init
585
+ **Führen Sie ClaudeOS-Core vom Monorepo-Root aus** — ClaudeOS-Core liest `apps/*/package.json` und `packages/*/package.json`, um Framework-/ORM-/DB-Abhängigkeiten über Unterpakete hinweg zu erkennen:
572
586
 
573
- # Beispiel: Nx Workspace
574
- cd apps/frontend
587
+ ```bash
588
+ cd my-monorepo
575
589
  npx claudeos-core init
576
590
  ```
577
591
 
578
- Jede App erhält ihren eigenen unabhängigen Satz von Standards, Rules, Skills und Guides, die auf den Stack und die Muster dieser spezifischen App zugeschnitten sind.
592
+ **Was erkannt wird:**
593
+ - Abhängigkeiten aus `apps/web/package.json` (z.B. `next`, `react`) → Frontend-Stack
594
+ - Abhängigkeiten aus `apps/api/package.json` (z.B. `express`, `prisma`) → Backend-Stack
595
+ - Abhängigkeiten aus `packages/db/package.json` (z.B. `drizzle-orm`) → ORM/DB
596
+ - Benutzerdefinierte Workspace-Pfade aus `pnpm-workspace.yaml` (z.B. `services/*`)
579
597
 
580
- **Typische Monorepo-Struktur:**
598
+ **Domain-Scanning deckt auch Monorepo-Layouts ab:**
599
+ - `apps/api/src/modules/*/` und `apps/api/src/*/` für Backend-Domains
600
+ - `apps/web/app/*/`, `apps/web/src/app/*/`, `apps/web/pages/*/` für Frontend-Domains
601
+ - `packages/*/src/*/` für gemeinsame Paket-Domains
581
602
 
582
603
  ```
583
- my-monorepo/ ← Nicht hier ausführen (Root hat keine Framework-Deps)
604
+ my-monorepo/ ← Hier ausführen: npx claudeos-core init
605
+ ├── turbo.json ← Automatisch als Turborepo erkannt
584
606
  ├── apps/
585
- │ ├── web/ ← Hier ausführen: cd apps/web && npx claudeos-core init
586
- │ ├── api/ Hier ausführen: cd apps/api && npx claudeos-core init
587
- │ └── storybook/
607
+ │ ├── web/ ← Next.js erkannt aus apps/web/package.json
608
+ ├── app/dashboard/ Frontend-Domain erkannt
609
+ └── package.json ← { "dependencies": { "next": "^14" } }
610
+ │ └── api/ ← Express erkannt aus apps/api/package.json
611
+ │ ├── src/modules/users/ ← Backend-Domain erkannt
612
+ │ └── package.json ← { "dependencies": { "express": "^4" } }
588
613
  ├── packages/
589
- │ ├── ui/
590
- │ └── utils/
591
- └── package.json ← Nur devDependencies (turbo, eslint usw.)
614
+ │ ├── db/ ← Drizzle erkannt aus packages/db/package.json
615
+ │ └── ui/
616
+ └── package.json ← { "workspaces": ["apps/*", "packages/*"] }
592
617
  ```
593
618
 
619
+ > **Hinweis:** Für Kotlin/Java-Monorepos verwendet die Multi-Modul-Erkennung `settings.gradle.kts` (siehe [Kotlin Multi-Modul Domain-Erkennung](#kotlin-multi-modul-domain-erkennung) oben) und erfordert keine JS-Monorepo-Marker.
620
+
594
621
  ## Fehlerbehebung
595
622
 
596
623
  **"claude: command not found"** — Claude Code CLI ist nicht installiert oder nicht im PATH. Siehe [Claude Code Dokumentation](https://code.claude.com/docs/en/overview).
@@ -613,7 +640,7 @@ Beiträge sind willkommen! Bereiche, in denen am meisten Hilfe benötigt wird:
613
640
 
614
641
  - **Neue Stack-Templates** — Ruby/Rails, Go/Gin, PHP/Laravel, Rust/Axum
615
642
  - **Tiefe Monorepo-Unterstützung** — Separate Unterprojekt-Roots, Workspace-Erkennung
616
- - **Testabdeckung** — Wachsende Testsuite (derzeit 87 Tests für Stack-Erkennung, Domain-Gruppierung, Plan-Validierung, Strukturscan und Verifizierungstools)
643
+ - **Testabdeckung** — Wachsende Testsuite (derzeit 256 Tests für alle Scanner, Stack-Erkennung, Domain-Gruppierung, Plan-Parsing, Prompt-Generierung, CLI-Selektoren, Monorepo-Erkennung und Verifizierungstools)
617
644
 
618
645
  ---
619
646
 
package/README.es.md CHANGED
@@ -65,14 +65,16 @@ Esta diferencia se acumula. 10 tareas/día × 20 minutos ahorrados = **más de 3
65
65
  |---|---|---|
66
66
  | **Java / Spring Boot** | `build.gradle`, `pom.xml`, 5 patrones de paquete | 10 categorías, 59 sub-ítems |
67
67
  | **Kotlin / Spring Boot** | `build.gradle.kts`, kotlin plugin, `settings.gradle.kts`, CQRS/BFF auto-detect | 12 categorías, 95 sub-ítems |
68
- | **Node.js / Express / NestJS** | `package.json` | 9 categorías, 57 sub-ítems |
69
- | **Next.js / React / Vue** | `package.json`, `next.config.*`, soporte FSD | 9 categorías, 55 sub-ítems |
68
+ | **Node.js / Express** | `package.json` | 9 categorías, 57 sub-ítems |
69
+ | **Node.js / NestJS** | `package.json` (`@nestjs/core`) | 10 categorías, 68 sub-ítems |
70
+ | **Next.js / React** | `package.json`, `next.config.*`, soporte FSD | 9 categorías, 55 sub-ítems |
71
+ | **Vue / Nuxt** | `package.json`, `nuxt.config.*`, Composition API | 9 categorías, 58 sub-ítems |
70
72
  | **Python / Django** | `requirements.txt`, `pyproject.toml` | 10 categorías, 55 sub-ítems |
71
73
  | **Python / FastAPI** | `requirements.txt`, `pyproject.toml` | 10 categorías, 58 sub-ítems |
72
74
  | **Node.js / Fastify** | `package.json` | 10 categorías, 62 sub-ítems |
73
75
  | **Angular** | `package.json`, `angular.json` | 12 categorías, 78 sub-ítems |
74
76
 
75
- Detección automática: lenguaje y versión, framework y versión, ORM (MyBatis, JPA, Exposed, Prisma, TypeORM, SQLAlchemy, etc.), base de datos (PostgreSQL, MySQL, Oracle, MongoDB, SQLite), gestor de paquetes (Gradle, Maven, npm, yarn, pnpm, pip, poetry), arquitectura (CQRS, BFF — detectado de nombres de módulos), estructura multi-módulo (desde settings.gradle).
77
+ Detección automática: lenguaje y versión, framework y versión, ORM (MyBatis, JPA, Exposed, Prisma, TypeORM, SQLAlchemy, etc.), base de datos (PostgreSQL, MySQL, Oracle, MongoDB, SQLite), gestor de paquetes (Gradle, Maven, npm, yarn, pnpm, pip, poetry), arquitectura (CQRS, BFF — detectado de nombres de módulos), estructura multi-módulo (desde settings.gradle), monorepo (Turborepo, pnpm-workspace, Lerna, npm/yarn workspaces).
76
78
 
77
79
  **No necesitas especificar nada. Todo se detecta automáticamente.**
78
80
 
@@ -87,7 +89,7 @@ Detección automática: lenguaje y versión, framework y versión, ORM (MyBatis,
87
89
  | E | DDD/Hexagonal | `{domain}/adapter/in/web/` | `user/adapter/in/web/UserController.java` |
88
90
  | C | Plano | `controller/*.java` | `controller/UserController.java` → extrae `user` del nombre de clase |
89
91
 
90
- Los dominios solo con servicios (sin controladores) también se detectan mediante directorios `service/`, `dao/`, `aggregator/`, `mapper/`, `repository/`. Se omiten: `common`, `config`, `util`, `core`, `front`, `admin`, `v1`, `v2`, etc.
92
+ Los dominios solo con servicios (sin controladores) también se detectan mediante directorios `service/`, `dao/`, `aggregator/`, `facade/`, `usecase/`, `orchestrator/`, `mapper/`, `repository/`. Se omiten: `common`, `config`, `util`, `core`, `front`, `admin`, `v1`, `v2`, etc.
91
93
 
92
94
 
93
95
  ### Detección de Dominios Kotlin Multi-Módulo
@@ -179,6 +181,7 @@ npx claudeos-core init --lang ko # 한국어
179
181
  > **Nota:** Solo cambia el idioma de los archivos de documentación generados. El análisis de código (Pass 1–2) siempre se ejecuta en inglés; solo la salida generada (Pass 3) se escribe en el idioma elegido.
180
182
 
181
183
  Eso es todo. Después de 5–18 minutos, toda la documentación estará generada y lista para usar.
184
+ El CLI muestra el tiempo transcurrido por cada Pass y el tiempo total en el banner de finalización.
182
185
 
183
186
  ### Instalación Manual Paso a Paso
184
187
 
@@ -527,9 +530,18 @@ Sí, recomendado. Tu equipo puede compartir los mismos estándares de Claude Cod
527
530
  **P: ¿Qué pasa con proyectos de stack mixto (ej: backend Java + frontend React)?**
528
531
  Totalmente soportado. ClaudeOS-Core auto-detecta ambos stacks, etiqueta dominios como `backend` o `frontend`, y usa prompts de análisis específicos para cada uno. Pass 2 fusiona todo, y Pass 3 genera los estándares de backend y frontend en una sola pasada.
529
532
 
533
+ **P: ¿Funciona con Turborepo / pnpm workspaces / monorepos Lerna?**
534
+ Sí. ClaudeOS-Core detecta `turbo.json`, `pnpm-workspace.yaml`, `lerna.json` o `package.json#workspaces` y escanea automáticamente los `package.json` de sub-paquetes en busca de dependencias de framework/ORM/BD. El escaneo de dominios cubre patrones `apps/*/src/` y `packages/*/src/`. Ejecuta desde la raíz del monorepo.
535
+
530
536
  **P: ¿Qué pasa al re-ejecutar?**
531
537
  Si existen resultados previos de Pass 1/2, un prompt interactivo te permite elegir: **Continue** (reanudar desde donde se detuvo) o **Fresh** (eliminar todo y empezar de nuevo). Usa `--force` para omitir el prompt y siempre empezar de nuevo. Pass 3 siempre se re-ejecuta. Las versiones anteriores pueden restaurarse desde los Master Plans.
532
538
 
539
+ **P: ¿NestJS tiene su propia plantilla o usa la de Express?**
540
+ NestJS usa una plantilla dedicada `node-nestjs` con categorías de análisis específicas de NestJS: decoradores `@Module`, `@Injectable`, `@Controller`, Guards, Pipes, Interceptors, contenedor DI, patrones CQRS y `Test.createTestingModule`. Los proyectos Express usan la plantilla separada `node-express`.
541
+
542
+ **P: ¿Qué hay de los proyectos Vue / Nuxt?**
543
+ Vue/Nuxt usa una plantilla dedicada `vue-nuxt` que cubre Composition API, `<script setup>`, defineProps/defineEmits, stores Pinia, `useFetch`/`useAsyncData`, rutas de servidor Nitro y `@nuxt/test-utils`. Los proyectos Next.js/React usan la plantilla `node-nextjs`.
544
+
533
545
  **P: ¿Soporta Kotlin?**
534
546
  Sí. ClaudeOS-Core detecta automáticamente Kotlin desde `build.gradle.kts` o el plugin kotlin en `build.gradle`. Utiliza una plantilla dedicada `kotlin-spring` con análisis específico de Kotlin (data classes, sealed classes, coroutines, extension functions, MockK, etc.).
535
547
 
@@ -548,50 +560,66 @@ pass-prompts/templates/
548
560
  ├── common/ # Encabezado/pie compartido
549
561
  ├── java-spring/ # Java / Spring Boot
550
562
  ├── kotlin-spring/ # Kotlin / Spring Boot (CQRS, BFF, multi-module)
551
- ├── node-express/ # Node.js / Express / NestJS
552
- ├── node-nextjs/ # Next.js / React / Vue
553
- ├── python-django/ # Python / Django (DRF)
563
+ ├── node-express/ # Node.js / Express
564
+ ├── node-nestjs/ # Node.js / NestJS (Module, DI, Guard, Pipe, Interceptor)
554
565
  ├── node-fastify/ # Node.js / Fastify
566
+ ├── node-nextjs/ # Next.js / React
567
+ ├── vue-nuxt/ # Vue / Nuxt (Composition API, Pinia, Nitro)
555
568
  ├── angular/ # Angular
569
+ ├── python-django/ # Python / Django (DRF)
556
570
  └── python-fastapi/ # Python / FastAPI
557
571
  ```
558
572
 
559
- `plan-installer` auto-detecta tu(s) stack(s) y ensambla prompts específicos por tipo. Para proyectos multi-stack, se generan `pass1-backend-prompt.md` y `pass1-frontend-prompt.md` por separado, mientras que `pass3-prompt.md` combina los objetivos de generación de ambos stacks.
573
+ `plan-installer` auto-detecta tu(s) stack(s) y ensambla prompts específicos por tipo. NestJS y Vue/Nuxt usan plantillas dedicadas con categorías de análisis específicas del framework (ej: `@Module`/`@Injectable`/Guards para NestJS, `<script setup>`/Pinia/useFetch para Vue). Para proyectos multi-stack, se generan `pass1-backend-prompt.md` y `pass1-frontend-prompt.md` por separado, mientras que `pass3-prompt.md` combina los objetivos de generación de ambos stacks.
560
574
 
561
575
  ---
562
576
 
563
577
  ## Soporte Monorepo
564
578
 
565
- ClaudeOS-Core lee el `package.json` del **directorio actual**. En configuraciones monorepo (Turborepo, Nx, Lerna, pnpm workspaces), el `package.json` raíz generalmente no contiene dependencias de framework como `next`, `express` o `react` — están en los directorios individuales de cada app.
579
+ ClaudeOS-Core detecta automáticamente configuraciones de monorepo JS/TS y escanea sub-paquetes en busca de dependencias.
566
580
 
567
- **Ejecuta ClaudeOS-Core desde el directorio de la app, no desde la raíz del monorepo:**
581
+ **Marcadores de monorepo soportados** (auto-detectados):
582
+ - `turbo.json` (Turborepo)
583
+ - `pnpm-workspace.yaml` (pnpm workspaces)
584
+ - `lerna.json` (Lerna)
585
+ - `package.json#workspaces` (npm/yarn workspaces)
568
586
 
569
- ```bash
570
- # Ejemplo: Turborepo con apps/my-app
571
- cd apps/my-app
572
- npx claudeos-core init
587
+ **Ejecuta desde la raíz del monorepo** — ClaudeOS-Core lee `apps/*/package.json` y `packages/*/package.json` para descubrir dependencias de framework/ORM/BD en los sub-paquetes:
573
588
 
574
- # Ejemplo: Workspace Nx
575
- cd apps/frontend
589
+ ```bash
590
+ cd my-monorepo
576
591
  npx claudeos-core init
577
592
  ```
578
593
 
579
- Cada app obtiene su propio conjunto independiente de Standards, Rules, Skills y Guides adaptados al stack y patrones de esa app específica.
594
+ **Qué se detecta:**
595
+ - Dependencias de `apps/web/package.json` (ej: `next`, `react`) → stack frontend
596
+ - Dependencias de `apps/api/package.json` (ej: `express`, `prisma`) → stack backend
597
+ - Dependencias de `packages/db/package.json` (ej: `drizzle-orm`) → ORM/BD
598
+ - Rutas de workspace personalizadas desde `pnpm-workspace.yaml` (ej: `services/*`)
580
599
 
581
- **Estructura típica de monorepo:**
600
+ **El escaneo de dominios también cubre layouts de monorepo:**
601
+ - `apps/api/src/modules/*/` y `apps/api/src/*/` para dominios backend
602
+ - `apps/web/app/*/`, `apps/web/src/app/*/`, `apps/web/pages/*/` para dominios frontend
603
+ - `packages/*/src/*/` para dominios de paquetes compartidos
582
604
 
583
605
  ```
584
- my-monorepo/ ← No ejecutes aquí (la raíz no tiene deps de framework)
606
+ my-monorepo/ ← Ejecuta aquí: npx claudeos-core init
607
+ ├── turbo.json ← Auto-detectado como Turborepo
585
608
  ├── apps/
586
- │ ├── web/ ← Ejecuta aquí: cd apps/web && npx claudeos-core init
587
- │ ├── api/ Ejecuta aquí: cd apps/api && npx claudeos-core init
588
- │ └── storybook/
609
+ │ ├── web/ ← Next.js detectado desde apps/web/package.json
610
+ ├── app/dashboard/ Dominio frontend detectado
611
+ └── package.json ← { "dependencies": { "next": "^14" } }
612
+ │ └── api/ ← Express detectado desde apps/api/package.json
613
+ │ ├── src/modules/users/ ← Dominio backend detectado
614
+ │ └── package.json ← { "dependencies": { "express": "^4" } }
589
615
  ├── packages/
590
- │ ├── ui/
591
- │ └── utils/
592
- └── package.json ← Solo devDependencies (turbo, eslint, etc.)
616
+ │ ├── db/ ← Drizzle detectado desde packages/db/package.json
617
+ │ └── ui/
618
+ └── package.json ← { "workspaces": ["apps/*", "packages/*"] }
593
619
  ```
594
620
 
621
+ > **Nota:** Para monorepos Kotlin/Java, la detección multi-módulo usa `settings.gradle.kts` (ver [Detección de Dominios Kotlin Multi-Módulo](#detección-de-dominios-kotlin-multi-módulo) arriba) y no requiere marcadores de monorepo JS.
622
+
595
623
  ## Solución de Problemas
596
624
 
597
625
  **"claude: command not found"** — Claude Code CLI no está instalado o no está en el PATH. Consulta la [documentación de Claude Code](https://code.claude.com/docs/en/overview).
@@ -614,7 +642,7 @@ my-monorepo/ ← No ejecutes aquí (la raíz no tiene deps de
614
642
 
615
643
  - **Nuevas plantillas de stack** — Ruby/Rails, Go/Gin, PHP/Laravel, Rust/Axum
616
644
  - **Soporte profundo para monorepos** — Raíces de sub-proyectos separadas, detección de workspaces
617
- - **Cobertura de tests** — Suite de tests en expansión (actualmente 87 tests cubriendo detección de stack, agrupación de dominios, validación de planes, escaneo de estructura y herramientas de verificación)
645
+ - **Cobertura de tests** — Suite de tests en expansión (actualmente 256 tests cubriendo todos los scanners, detección de stack, agrupación de dominios, parsing de planes, generación de prompts, selectores CLI, detección de monorepos y herramientas de verificación)
618
646
 
619
647
  ---
620
648
 
package/README.fr.md CHANGED
@@ -65,14 +65,16 @@ Cette différence s'accumule. 10 tâches/jour × 20 minutes économisées = **pl
65
65
  |---|---|---|
66
66
  | **Java / Spring Boot** | `build.gradle`, `pom.xml`, 5 patterns de paquets | 10 catégories, 59 sous-éléments |
67
67
  | **Kotlin / Spring Boot** | `build.gradle.kts`, kotlin plugin, `settings.gradle.kts`, CQRS/BFF auto-detect | 12 catégories, 95 sous-éléments |
68
- | **Node.js / Express / NestJS** | `package.json` | 9 catégories, 57 sous-éléments |
69
- | **Next.js / React / Vue** | `package.json`, `next.config.*`, support FSD | 9 catégories, 55 sous-éléments |
68
+ | **Node.js / Express** | `package.json` | 9 catégories, 57 sous-éléments |
69
+ | **Node.js / NestJS** | `package.json` (`@nestjs/core`) | 10 catégories, 68 sous-éléments |
70
+ | **Next.js / React** | `package.json`, `next.config.*`, support FSD | 9 catégories, 55 sous-éléments |
71
+ | **Vue / Nuxt** | `package.json`, `nuxt.config.*`, Composition API | 9 catégories, 58 sous-éléments |
70
72
  | **Python / Django** | `requirements.txt`, `pyproject.toml` | 10 catégories, 55 sous-éléments |
71
73
  | **Python / FastAPI** | `requirements.txt`, `pyproject.toml` | 10 catégories, 58 sous-éléments |
72
74
  | **Node.js / Fastify** | `package.json` | 10 catégories, 62 sous-éléments |
73
75
  | **Angular** | `package.json`, `angular.json` | 12 catégories, 78 sous-éléments |
74
76
 
75
- Détection automatique : langage et version, framework et version, ORM (MyBatis, JPA, Exposed, Prisma, TypeORM, SQLAlchemy, etc.), base de données (PostgreSQL, MySQL, Oracle, MongoDB, SQLite), gestionnaire de paquets (Gradle, Maven, npm, yarn, pnpm, pip, poetry), architecture (CQRS, BFF — détecté à partir des noms de modules), structure multi-module (depuis settings.gradle).
77
+ Détection automatique : langage et version, framework et version, ORM (MyBatis, JPA, Exposed, Prisma, TypeORM, SQLAlchemy, etc.), base de données (PostgreSQL, MySQL, Oracle, MongoDB, SQLite), gestionnaire de paquets (Gradle, Maven, npm, yarn, pnpm, pip, poetry), architecture (CQRS, BFF — détecté à partir des noms de modules), structure multi-module (depuis settings.gradle), monorepo (Turborepo, pnpm-workspace, Lerna, npm/yarn workspaces).
76
78
 
77
79
  **Vous n'avez rien à spécifier. Tout est détecté automatiquement.**
78
80
 
@@ -87,7 +89,7 @@ Détection automatique : langage et version, framework et version, ORM (MyBatis,
87
89
  | E | DDD/Hexagonal | `{domain}/adapter/in/web/` | `user/adapter/in/web/UserController.java` |
88
90
  | C | Plat | `controller/*.java` | `controller/UserController.java` → extrait `user` du nom de classe |
89
91
 
90
- Les domaines sans contrôleurs (service uniquement) sont aussi détectés via les répertoires `service/`, `dao/`, `aggregator/`, `mapper/`, `repository/`. Ignorés : `common`, `config`, `util`, `core`, `front`, `admin`, `v1`, `v2`, etc.
92
+ Les domaines sans contrôleurs (service uniquement) sont aussi détectés via les répertoires `service/`, `dao/`, `aggregator/`, `facade/`, `usecase/`, `orchestrator/`, `mapper/`, `repository/`. Ignorés : `common`, `config`, `util`, `core`, `front`, `admin`, `v1`, `v2`, etc.
91
93
 
92
94
 
93
95
  ### Détection des domaines Kotlin multi-modules
@@ -179,6 +181,7 @@ npx claudeos-core init --lang ko # 한국어
179
181
  > **Note :** Ceci ne change que la langue des fichiers de documentation générés. L'analyse du code (Pass 1–2) s'exécute toujours en anglais ; seul le résultat généré (Pass 3) est écrit dans la langue choisie.
180
182
 
181
183
  C'est tout. Après 5–18 minutes, toute la documentation est générée et prête à l'emploi.
184
+ Le CLI affiche le temps écoulé par Pass et le temps total dans la bannière de fin.
182
185
 
183
186
  ### Installation Manuelle Étape par Étape
184
187
 
@@ -527,9 +530,18 @@ Recommandé. Votre équipe peut partager les mêmes standards Claude Code. Envis
527
530
  **Q : Qu'en est-il des projets multi-stack (ex : backend Java + frontend React) ?**
528
531
  Entièrement supporté. ClaudeOS-Core auto-détecte les deux stacks, étiquette les domaines comme `backend` ou `frontend`, et utilise des prompts d'analyse spécifiques pour chacun. Pass 2 fusionne tout, et Pass 3 génère les standards backend et frontend en un seul pass.
529
532
 
533
+ **Q : Fonctionne-t-il avec Turborepo / pnpm workspaces / Lerna ?**
534
+ Oui. ClaudeOS-Core détecte `turbo.json`, `pnpm-workspace.yaml`, `lerna.json` ou `package.json#workspaces` et scanne automatiquement les `package.json` des sous-packages pour les dépendances framework/ORM/BD. Le scan de domaines couvre les patterns `apps/*/src/` et `packages/*/src/`. Exécutez depuis la racine du monorepo.
535
+
530
536
  **Q : Que se passe-t-il lors d'une ré-exécution ?**
531
537
  Si des résultats Pass 1/2 précédents existent, un prompt interactif vous permet de choisir : **Continue** (reprendre là où ça s'est arrêté) ou **Fresh** (tout supprimer et repartir de zéro). Utilisez `--force` pour ignorer le prompt et toujours repartir de zéro. Pass 3 est toujours ré-exécuté. Les versions précédentes peuvent être restaurées depuis les Master Plans.
532
538
 
539
+ **Q : NestJS a-t-il son propre template ou utilise-t-il celui d'Express ?**
540
+ NestJS utilise un template dédié `node-nestjs` avec des catégories d'analyse spécifiques à NestJS : décorateurs `@Module`, `@Injectable`, `@Controller`, Guards, Pipes, Interceptors, conteneur DI, patterns CQRS et `Test.createTestingModule`. Les projets Express utilisent le template séparé `node-express`.
541
+
542
+ **Q : Qu'en est-il des projets Vue / Nuxt ?**
543
+ Vue/Nuxt utilise un template dédié `vue-nuxt` couvrant la Composition API, `<script setup>`, defineProps/defineEmits, les stores Pinia, `useFetch`/`useAsyncData`, les routes serveur Nitro et `@nuxt/test-utils`. Les projets Next.js/React utilisent le template `node-nextjs`.
544
+
533
545
  **Q : Kotlin est-il supporté ?**
534
546
  Oui. ClaudeOS-Core détecte automatiquement Kotlin à partir de `build.gradle.kts` ou du plugin kotlin dans `build.gradle`. Il utilise un template dédié `kotlin-spring` avec une analyse spécifique à Kotlin (data classes, sealed classes, coroutines, fonctions d'extension, MockK, etc.).
535
547
 
@@ -548,50 +560,66 @@ pass-prompts/templates/
548
560
  ├── common/ # En-tête/pied de page partagés
549
561
  ├── java-spring/ # Java / Spring Boot
550
562
  ├── kotlin-spring/ # Kotlin / Spring Boot (CQRS, BFF, multi-module)
551
- ├── node-express/ # Node.js / Express / NestJS
552
- ├── node-nextjs/ # Next.js / React / Vue
553
- ├── python-django/ # Python / Django (DRF)
563
+ ├── node-express/ # Node.js / Express
564
+ ├── node-nestjs/ # Node.js / NestJS (Module, DI, Guard, Pipe, Interceptor)
554
565
  ├── node-fastify/ # Node.js / Fastify
566
+ ├── node-nextjs/ # Next.js / React
567
+ ├── vue-nuxt/ # Vue / Nuxt (Composition API, Pinia, Nitro)
555
568
  ├── angular/ # Angular
569
+ ├── python-django/ # Python / Django (DRF)
556
570
  └── python-fastapi/ # Python / FastAPI
557
571
  ```
558
572
 
559
- `plan-installer` auto-détecte votre/vos stack(s) puis assemble des prompts spécifiques au type. Pour les projets multi-stack, `pass1-backend-prompt.md` et `pass1-frontend-prompt.md` sont générés séparément, tandis que `pass3-prompt.md` combine les cibles de génération des deux stacks.
573
+ `plan-installer` auto-détecte votre/vos stack(s) puis assemble des prompts spécifiques au type. NestJS et Vue/Nuxt utilisent des templates dédiés avec des catégories d'analyse spécifiques au framework (ex : `@Module`/`@Injectable`/Guards pour NestJS, `<script setup>`/Pinia/useFetch pour Vue). Pour les projets multi-stack, `pass1-backend-prompt.md` et `pass1-frontend-prompt.md` sont générés séparément, tandis que `pass3-prompt.md` combine les cibles de génération des deux stacks.
560
574
 
561
575
  ---
562
576
 
563
577
  ## Support Monorepo
564
578
 
565
- ClaudeOS-Core lit le `package.json` du **répertoire courant**. Dans les configurations monorepo (Turborepo, Nx, Lerna, pnpm workspaces), le `package.json` racine ne contient généralement pas les dépendances de framework comme `next`, `express` ou `react` — elles se trouvent dans les répertoires individuels des applications.
579
+ ClaudeOS-Core détecte automatiquement les configurations monorepo JS/TS et scanne les sous-packages pour les dépendances.
566
580
 
567
- **Exécutez ClaudeOS-Core depuis le répertoire de l'application, pas depuis la racine du monorepo :**
581
+ **Marqueurs monorepo supportés** (auto-détectés) :
582
+ - `turbo.json` (Turborepo)
583
+ - `pnpm-workspace.yaml` (pnpm workspaces)
584
+ - `lerna.json` (Lerna)
585
+ - `package.json#workspaces` (npm/yarn workspaces)
568
586
 
569
- ```bash
570
- # Exemple : Turborepo avec apps/my-app
571
- cd apps/my-app
572
- npx claudeos-core init
587
+ **Exécutez depuis la racine du monorepo** — ClaudeOS-Core lit `apps/*/package.json` et `packages/*/package.json` pour découvrir les dépendances framework/ORM/BD dans les sous-packages :
573
588
 
574
- # Exemple : Workspace Nx
575
- cd apps/frontend
589
+ ```bash
590
+ cd my-monorepo
576
591
  npx claudeos-core init
577
592
  ```
578
593
 
579
- Chaque application obtient son propre ensemble indépendant de Standards, Rules, Skills et Guides adaptés au stack et aux patterns de cette application spécifique.
594
+ **Ce qui est détecté :**
595
+ - Dépendances de `apps/web/package.json` (ex : `next`, `react`) → stack frontend
596
+ - Dépendances de `apps/api/package.json` (ex : `express`, `prisma`) → stack backend
597
+ - Dépendances de `packages/db/package.json` (ex : `drizzle-orm`) → ORM/BD
598
+ - Chemins de workspace personnalisés depuis `pnpm-workspace.yaml` (ex : `services/*`)
580
599
 
581
- **Structure monorepo typique :**
600
+ **Le scan de domaines couvre aussi les structures monorepo :**
601
+ - `apps/api/src/modules/*/` et `apps/api/src/*/` pour les domaines backend
602
+ - `apps/web/app/*/`, `apps/web/src/app/*/`, `apps/web/pages/*/` pour les domaines frontend
603
+ - `packages/*/src/*/` pour les domaines des packages partagés
582
604
 
583
605
  ```
584
- my-monorepo/ ← Ne pas exécuter ici (la racine n'a pas de deps framework)
606
+ my-monorepo/ ← Exécuter ici : npx claudeos-core init
607
+ ├── turbo.json ← Auto-détecté comme Turborepo
585
608
  ├── apps/
586
- │ ├── web/ ← Exécuter ici : cd apps/web && npx claudeos-core init
587
- │ ├── api/ Exécuter ici : cd apps/api && npx claudeos-core init
588
- │ └── storybook/
609
+ │ ├── web/ ← Next.js détecté depuis apps/web/package.json
610
+ ├── app/dashboard/ Domaine frontend détecté
611
+ └── package.json ← { "dependencies": { "next": "^14" } }
612
+ │ └── api/ ← Express détecté depuis apps/api/package.json
613
+ │ ├── src/modules/users/ ← Domaine backend détecté
614
+ │ └── package.json ← { "dependencies": { "express": "^4" } }
589
615
  ├── packages/
590
- │ ├── ui/
591
- │ └── utils/
592
- └── package.json ← Seulement devDependencies (turbo, eslint, etc.)
616
+ │ ├── db/ ← Drizzle détecté depuis packages/db/package.json
617
+ │ └── ui/
618
+ └── package.json ← { "workspaces": ["apps/*", "packages/*"] }
593
619
  ```
594
620
 
621
+ > **Note :** Pour les monorepos Kotlin/Java, la détection multi-modules utilise `settings.gradle.kts` (voir [Détection des domaines Kotlin multi-modules](#détection-des-domaines-kotlin-multi-modules) ci-dessus) et ne nécessite pas de marqueurs monorepo JS.
622
+
595
623
  ## Dépannage
596
624
 
597
625
  **"claude: command not found"** — Claude Code CLI n'est pas installé ou pas dans le PATH. Voir la [documentation Claude Code](https://code.claude.com/docs/en/overview).
@@ -614,7 +642,7 @@ Les contributions sont les bienvenues ! Domaines où l'aide est la plus nécessa
614
642
 
615
643
  - **Nouveaux templates de stack** — Ruby/Rails, Go/Gin, PHP/Laravel, Rust/Axum
616
644
  - **Support approfondi monorepo** — Racines de sous-projets séparées, détection de workspaces
617
- - **Couverture de tests** — Suite de tests en expansion (actuellement 87 tests couvrant la détection de stack, le groupement de domaines, la validation de plans, le scan de structure et les outils de vérification)
645
+ - **Couverture de tests** — Suite de tests en expansion (actuellement 256 tests couvrant tous les scanners, la détection de stack, le groupement de domaines, le parsing de plans, la génération de prompts, les sélecteurs CLI, la détection de monorepos et les outils de vérification)
618
646
 
619
647
  ---
620
648