claudeos-core 2.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/CHANGELOG.md +456 -0
  2. package/README.de.md +33 -39
  3. package/README.es.md +33 -39
  4. package/README.fr.md +33 -39
  5. package/README.hi.md +33 -39
  6. package/README.ja.md +33 -39
  7. package/README.ko.md +37 -43
  8. package/README.md +37 -43
  9. package/README.ru.md +35 -39
  10. package/README.vi.md +33 -39
  11. package/README.zh-CN.md +33 -39
  12. package/bin/commands/init.js +81 -45
  13. package/content-validator/index.js +6 -1
  14. package/lib/env-parser.js +317 -0
  15. package/lib/memory-scaffold.js +7 -5
  16. package/package.json +1 -1
  17. package/pass-prompts/templates/angular/pass3.md +28 -13
  18. package/pass-prompts/templates/common/claude-md-scaffold.md +644 -0
  19. package/pass-prompts/templates/common/pass3-footer.md +185 -0
  20. package/pass-prompts/templates/common/pass4.md +6 -3
  21. package/pass-prompts/templates/common/staging-override.md +1 -1
  22. package/pass-prompts/templates/java-spring/pass3.md +31 -21
  23. package/pass-prompts/templates/kotlin-spring/pass3.md +34 -22
  24. package/pass-prompts/templates/node-express/pass3.md +30 -21
  25. package/pass-prompts/templates/node-fastify/pass3.md +28 -14
  26. package/pass-prompts/templates/node-nestjs/pass3.md +29 -14
  27. package/pass-prompts/templates/node-nextjs/pass3.md +34 -21
  28. package/pass-prompts/templates/node-vite/pass3.md +30 -13
  29. package/pass-prompts/templates/python-django/pass3.md +32 -21
  30. package/pass-prompts/templates/python-fastapi/pass3.md +33 -21
  31. package/pass-prompts/templates/python-flask/pass3.md +31 -13
  32. package/pass-prompts/templates/vue-nuxt/pass3.md +32 -13
  33. package/plan-installer/index.js +8 -0
  34. package/plan-installer/prompt-generator.js +18 -1
  35. package/plan-installer/stack-detector.js +16 -0
package/README.es.md CHANGED
@@ -12,20 +12,6 @@ ClaudeOS-Core lee tu codebase, extrae cada patrón que encuentra y genera un con
12
12
 
13
13
  ---
14
14
 
15
- ## Novedades en v2.1.0
16
-
17
- v2.1.0 rediseña Pass 3 para eliminar los fallos `Prompt is too long` en proyectos medianos y grandes. Anteriormente, una única llamada de Pass 3 debía emitir todo el árbol de documentación de golpe — decenas de archivos entre `CLAUDE.md`, reglas, standards, skills y guides — y la salida acumulada superaba de forma confiable la ventana de contexto a partir de ~5 dominios. El fix es **estructural**, no un ajuste de prompt:
18
-
19
- - **Modo split de Pass 3** (siempre activo) — Pass 3 se descompone en llamadas `claude -p` secuenciales (`3a` → `3b-core` → `3b-N` → `3c-core` → `3c-N` → `3d-aux`). Cada etapa arranca con una **ventana de contexto nueva**, así que el overflow por acumulación de salida deja de ser posible sin importar el tamaño del proyecto.
20
- - **Fact sheet entre etapas** — La etapa `3a` lee el análisis de Pass 2 una sola vez y lo destila en un `pass3a-facts.md` de 5–10 KB. Todas las etapas posteriores referencian ese fact sheet en lugar de releer el `pass2-merged.json` de 100–500 KB, preservando la consistencia entre archivos a través de contextos nuevos.
21
- - **Sub-división por lotes** (automática a partir de ≥16 dominios) — Las etapas 3b/3c se subdividen en lotes de 15 dominios cada uno, manteniendo cada etapa por debajo de ~50 archivos de salida. Un admin frontend React 19 + Vite 6 con 18 dominios se completó en **102 minutos con 101 archivos generados en 8 etapas, cero fallos por overflow** (ejecución real de producción, 2026-04-20).
22
- - **Generación de Master plan eliminada** — Los archivos `claudeos-core/plan/*-master.md` ya no se generan. Los master plans eran un backup interno que Claude Code no consumía en runtime, y agregarlos en Pass 3d era una causa principal de overflow. Usa `git` para backup/restore en su lugar.
23
- - **Gap-fill de Pass 4: `skills/00.shared/MANIFEST.md`** — Si Pass 3c omite el registro de skills (proyectos skill-sparse), Pass 4 ahora auto-crea un stub para que `.claude/rules/50.sync/03.skills-sync.md` nunca apunte a un archivo colgante.
24
-
25
- También hay algunos fixes menores: `memory --help` ahora muestra la ayuda del subcomando memory (antes mostraba el top-level); `memory score` ya no deja líneas `importance` duplicadas; los marcadores de resumen de `memory compact` son ahora elementos de lista markdown propiamente formateados. Detalles completos: [CHANGELOG.md](./CHANGELOG.md).
26
-
27
- ---
28
-
29
15
  ## ¿Por qué ClaudeOS-Core?
30
16
 
31
17
  Cualquier otra herramienta de Claude Code funciona así:
@@ -99,10 +85,20 @@ Esta diferencia se acumula. 10 tareas/día × 20 minutos ahorrados = **más de 3
99
85
  | **Vite / React SPA** | `package.json`, `vite.config.*` | 9 categorías, 55 sub-ítems |
100
86
  | **Angular** | `package.json`, `angular.json` | 12 categorías, 78 sub-ítems |
101
87
 
102
- Auto-detectado: lenguaje y versión, framework y versión (incluyendo Vite como framework SPA), 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 — a partir de los nombres de módulos), estructura multi-módulo (desde settings.gradle), monorepo (Turborepo, pnpm-workspace, Lerna, npm/yarn workspaces).
88
+ Auto-detectado: lenguaje y versión, framework y versión (incluyendo Vite como framework SPA), 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 — a partir de los nombres de módulos), estructura multi-módulo (desde settings.gradle), monorepo (Turborepo, pnpm-workspace, Lerna, npm/yarn workspaces), **configuración de runtime desde `.env.example`** (v2.2.0 — extrae port/host/API-target de más de 16 nombres de variable convencionales a través de frameworks Vite · Next.js · Nuxt · Angular · Node · Python).
103
89
 
104
90
  **No tienes que especificar nada. Todo se detecta automáticamente.**
105
91
 
92
+ ### Configuración de runtime desde `.env` (v2.2.0)
93
+
94
+ v2.2.0 añade `lib/env-parser.js` para que el `CLAUDE.md` generado refleje lo que el proyecto declara realmente, en vez de los valores por defecto del framework.
95
+
96
+ - **Orden de búsqueda**: `.env.example` (canónico, commiteado) → `.env.local.example` → `.env.sample` → `.env.template` → `.env` → `.env.local` → `.env.development`. La variante `.example` gana porque es la forma-de-verdad neutral para desarrolladores, no los overrides locales de un contribuidor concreto.
97
+ - **Convenciones de variable de puerto reconocidas**: `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` genérico. Los nombres específicos de framework ganan sobre `PORT` genérico cuando ambos están presentes.
98
+ - **Host y API target**: `VITE_DEV_HOST` / `VITE_API_TARGET` / `NEXT_PUBLIC_API_URL` / `NUXT_PUBLIC_API_BASE` / `BACKEND_URL` / `PROXY_TARGET`, etc.
99
+ - **Precedencia**: `server.port` de `application.yml` de Spring Boot sigue ganando (config framework-native), luego el puerto declarado en `.env`, y finalmente el valor por defecto del framework (Vite 5173, Next.js 3000, Django 8000, etc.) como último recurso.
100
+ - **Redacción de variables sensibles**: los valores de variables que coinciden con patrones `PASSWORD` / `SECRET` / `TOKEN` / `API_KEY` / `ACCESS_KEY` / `PRIVATE_KEY` / `CREDENTIAL` / `JWT_SECRET` / `CLIENT_SECRET` / `SESSION_SECRET` / `BEARER` / `SALT` se sustituyen por `***REDACTED***` antes de llegar a cualquier generador downstream. Defense-in-depth contra secretos commiteados accidentalmente en `.env.example`. `DATABASE_URL` se incluye explícitamente en la lista blanca para retrocompatibilidad con la identificación de DB del stack-detector.
101
+
106
102
  ### Detección de Dominios Java (5 patrones con fallback)
107
103
 
108
104
  | Prioridad | Patrón | Estructura | Ejemplo |
@@ -378,7 +374,7 @@ cat claudeos-core/generated/pass4-prompt.md \
378
374
 
379
375
  **Verificar:** `claudeos-core/memory/` debe contener 4 archivos (`decision-log.md`, `failure-patterns.md`, `compaction.md`, `auto-rule-update.md`), `.claude/rules/60.memory/` debe contener 4 archivos de reglas, y `CLAUDE.md` debe tener ahora una sección `## Memory (L4)` añadida. Marcador: `claudeos-core/generated/pass4-memory.json`.
380
376
 
381
- > **Gap-fill v2.1.0:** Pass 4 también asegura que `claudeos-core/skills/00.shared/MANIFEST.md` exista. Si Pass 3c lo omitió (posible en proyectos skill-sparse porque las plantillas `pass3.md` de cada stack listan `MANIFEST.md` entre los targets de generación sin marcarlo como REQUIRED), el gap-fill crea un stub mínimo para que `.claude/rules/50.sync/03.skills-sync.md` siempre tenga un target de referencia válido. Idempotente: omite el paso si el archivo ya tiene contenido real (>20 caracteres).
377
+ > **Gap-fill v2.1.0:** Pass 4 también asegura que `claudeos-core/skills/00.shared/MANIFEST.md` exista. Si Pass 3c lo omitió (posible en proyectos skill-sparse porque las plantillas `pass3.md` de cada stack listan `MANIFEST.md` entre los targets de generación sin marcarlo como REQUIRED), el gap-fill crea un stub mínimo para que `.claude/rules/50.sync/02.skills-sync.md` (ruta v2.2.0 — el número de reglas de sync se redujo de 3 a 2, por lo que lo que era `03` ahora es `02`) siempre tenga un target de referencia válido. Idempotente: omite el paso si el archivo ya tiene contenido real (>20 caracteres).
382
378
 
383
379
  > **Nota:** Si `claude -p` falla o `pass4-prompt.md` está ausente, el pipeline automatizado cae a un scaffold estático vía `lib/memory-scaffold.js` (con traducción por Claude cuando `--lang` no es inglés). El fallback estático solo se ejecuta dentro de `npx claudeos-core init` — el modo manual requiere que Pass 4 tenga éxito.
384
380
 
@@ -488,6 +484,8 @@ La plantilla de prompt de Pass 3 también incluye un **bloque Phase 1 "Read Once
488
484
  - **Rule D** — Concisión de salida: una línea (`[WRITE]`/`[SKIP]`) entre escrituras de archivo, sin restatear la tabla de hechos, sin echoar el contenido del archivo.
489
485
  - **Rule E** — Comprobación idempotente por lote: un único `Glob` al inicio de PHASE 2 en vez de llamadas `Read` por cada target.
490
486
 
487
+ En **v2.2.0**, Pass 3 también incrusta en línea un scaffold CLAUDE.md determinista (`pass-prompts/templates/common/claude-md-scaffold.md`) en el prompt. Esto fija los títulos y el orden de las 8 secciones de nivel superior para que el `CLAUDE.md` generado no se desvíe entre proyectos, mientras que el contenido de cada sección sigue adaptándose a cada proyecto. El nuevo parser `.env` del stack-detector (`lib/env-parser.js`) suministra `stack.envInfo` al prompt para que las filas de port/host/API target coincidan con lo que el proyecto realmente declara en lugar de los valores por defecto del framework.
488
+
491
489
  **Pass 4** scaffoldea la capa Memory L4: archivos persistentes de conocimiento de equipo (decision-log, failure-patterns, compaction policy, auto-rule-update) más las reglas `60.memory/` que indican a sesiones futuras cuándo y cómo leer/escribir esos archivos. La capa de memory es lo que permite que Claude Code acumule lecciones entre sesiones en lugar de redescubrirlas cada vez. Cuando `--lang` no es inglés, el contenido estático de fallback se traduce vía Claude antes de ser escrito. v2.1.0 añade un gap-fill para `skills/00.shared/MANIFEST.md` por si Pass 3c lo omitió.
492
490
 
493
491
  ---
@@ -497,7 +495,7 @@ La plantilla de prompt de Pass 3 también incluye un **bloque Phase 1 "Read Once
497
495
  ```
498
496
  your-project/
499
497
 
500
- ├── CLAUDE.md ← Punto de entrada de Claude Code
498
+ ├── CLAUDE.md ← Punto de entrada de Claude Code (estructura determinista de 8 secciones, v2.2.0)
501
499
 
502
500
  ├── .claude/
503
501
  │ └── rules/ ← Reglas disparadas por glob
@@ -591,24 +589,6 @@ Fórmula de conteo de etapas (cuando hay lotes): `1 (3a) + 1 (3b-core) + N (3b-1
591
589
 
592
590
  Pass 4 (memory scaffolding) añade ~30 segundos a 5 minutos encima según si se ejecuta la generación dirigida por Claude o el fallback estático. Para proyectos multi-stack (ej: Java + React), los dominios backend y frontend se cuentan juntos. Un proyecto con 6 dominios backend + 4 frontend = 10 en total = tier Medio.
593
591
 
594
- ### Caso real de producción: admin frontend de 18 dominios (2026-04-20)
595
-
596
- Un admin frontend React 19 + Vite 6 + TypeScript con 18 dominios y 6 grupos de dominios se completó de principio a fin en **102 minutos con 101 archivos generados**. Desglose por etapa:
597
-
598
- | Etapa | Archivos | Tiempo | Archivos/min |
599
- |---|---|---|---|
600
- | `3a` (extracción de hechos) | 1 (`pass3a-facts.md`) | 8m 44s | — |
601
- | `3b-core` (CLAUDE.md + común) | 24 | 22m 10s | 1.1 |
602
- | `3b-1` (15 dominios) | 30 | 10m 6s | **3.0** |
603
- | `3b-2` (3 dominios) | 6 | 4m 34s | 1.3 |
604
- | `3c-core` (guides + compartidos) | 11 | 8m 31s | 1.3 |
605
- | `3c-1` (15 dominios) | 8 | 5m 11s | **1.5** |
606
- | `3c-2` (3 dominios) | 3 | 3m 50s | 0.8 |
607
- | `3d-aux` (database + mcp) | 3 | 2m 52s | 1.0 |
608
- | Pass 4 | 12 | 5m 36s | 2.1 |
609
-
610
- El throughput es notablemente más alto en las etapas de dominio por lote (3b-1: 3.0 archivos/min vs. 3b-core: 1.1 archivos/min) porque las etapas con contexto nuevo se benefician de patrones ajustados y repetibles por dominio. Verificación todo-verde: `plan-validator`, `sync-checker`, `content-validator`, `pass-json-validator` — cero fallos por overflow, cero truncados.
611
-
612
592
  ---
613
593
 
614
594
  ## Herramientas de Verificación
@@ -810,8 +790,7 @@ No. Solo crea `CLAUDE.md`, `.claude/rules/` y `claudeos-core/`. Tu código exist
810
790
  Llama a `claude -p` varias veces a lo largo de 4 passes. En el modo split de v2.1.0, Pass 3 por sí solo se expande en 4–14+ etapas según el tamaño del proyecto (ver [Auto-escalado](#auto-escalado-por-tamaño-del-proyecto)). Un proyecto pequeño típico (1–15 dominios) usa 8–9 llamadas `claude -p` en total; un proyecto de 18 dominios usa 11; un proyecto de 60 dominios usa 15–17. Cada etapa se ejecuta con una ventana de contexto nueva — el coste en tokens por llamada es en realidad más bajo que el del Pass 3 de llamada única, porque ninguna etapa tiene que sostener el árbol de archivos completo en un único contexto. Cuando `--lang` no es inglés, el path de fallback estático puede invocar algunas llamadas adicionales a `claude -p` para traducir; los resultados se cachean en `claudeos-core/generated/.i18n-cache-<lang>.json` para que las ejecuciones posteriores los reutilicen. Esto entra dentro del uso normal de Claude Code.
811
791
 
812
792
  **P: ¿Qué es el modo split de Pass 3 y por qué se añadió en v2.1.0?**
813
- Antes de v2.1.0, Pass 3 hacía una única llamada `claude -p` que debía emitir todo el árbol de archivos generados (`CLAUDE.md`, standards, reglas, skills, guides — típicamente 30–60 archivos) en una sola respuesta. Esto funcionaba en proyectos pequeños pero chocaba de forma confiable con fallos `Prompt is too long` por acumulación de salida a ~5 dominios. El fallo no era predecible desde el tamaño de entrada — dependía de lo verboso que resultara cada archivo generado, y podía darse en el mismo proyecto de forma intermitente. El modo split esquiva el problema de forma estructural: Pass 3 se descompone en etapas secuenciales (`3a` → `3b-core` → `3b-N` → `3c-core` → `3c-N` → `3d-aux`), cada una una llamada `claude -p` separada con una ventana de contexto nueva. La consistencia entre etapas se preserva mediante `pass3a-facts.md`, un fact sheet destilado de 5–10 KB que cada etapa posterior referencia en lugar de releer `pass2-merged.json`. El marcador `pass3-complete.json` lleva un array `groupsCompleted` para que un crash durante `3c-2` reanude desde `3c-2` (no desde `3a`), evitando doblar el coste en tokens. Verificado empíricamente hasta 18 dominios × 101 archivos × 102 minutos sin ningún overflow — ver [Auto-escalado](#auto-escalado-por-tamaño-del-proyecto) para el desglose real de producción.
814
-
793
+ Antes de v2.1.0, Pass 3 hacía una única llamada `claude -p` que debía emitir todo el árbol de archivos generados (`CLAUDE.md`, standards, reglas, skills, guides — típicamente 30–60 archivos) en una sola respuesta. Esto funcionaba en proyectos pequeños pero chocaba de forma confiable con fallos `Prompt is too long` por acumulación de salida a ~5 dominios. El fallo no era predecible desde el tamaño de entrada — dependía de lo verboso que resultara cada archivo generado, y podía darse en el mismo proyecto de forma intermitente. El modo split esquiva el problema de forma estructural: Pass 3 se descompone en etapas secuenciales (`3a` → `3b-core` → `3b-N` → `3c-core` → `3c-N` → `3d-aux`), cada una una llamada `claude -p` separada con una ventana de contexto nueva. La consistencia entre etapas se preserva mediante `pass3a-facts.md`, un fact sheet destilado de 5–10 KB que cada etapa posterior referencia en lugar de releer `pass2-merged.json`. El marcador `pass3-complete.json` lleva un array `groupsCompleted` para que un crash durante `3c-2` reanude desde `3c-2` (no desde `3a`), evitando doblar el coste en tokens.
815
794
  **P: ¿Debería commitear los archivos generados a Git?**
816
795
  Sí, recomendado. Tu equipo puede compartir los mismos standards de Claude Code. Considera añadir `claudeos-core/generated/` a `.gitignore` (el JSON de análisis es regenerable).
817
796
 
@@ -866,7 +845,14 @@ Nada requerido — las herramientas de v2.1.0 ignoran `plan/` cuando está ausen
866
845
 
867
846
  ```
868
847
  pass-prompts/templates/
869
- ├── common/ # Header/footer compartido + pass4 + staging-override
848
+ ├── common/ # header/footer compartidos + pass4 + staging-override + CLAUDE.md scaffold (v2.2.0)
849
+ │ ├── header.md # Rol + directiva de formato de salida (todas las passes)
850
+ │ ├── pass3-footer.md # Instrucción post-Pass-3 health-check + 5 bloques CRITICAL de guardrails (v2.2.0)
851
+ │ ├── pass3-phase1.md # Bloque "Read Once, Extract Facts" con Rules A-E (v2.1.0)
852
+ │ ├── pass4.md # Prompt de scaffolding de memoria (v2.0.0)
853
+ │ ├── staging-override.md # Redirige escrituras .claude/rules/** a .staged-rules/** (v2.0.0)
854
+ │ ├── claude-md-scaffold.md # Plantilla CLAUDE.md determinista de 8 secciones (v2.2.0)
855
+ │ └── lang-instructions.json # Directivas de salida por idioma (10 idiomas)
870
856
  ├── java-spring/ # Java / Spring Boot
871
857
  ├── kotlin-spring/ # Kotlin / Spring Boot (CQRS, BFF, multi-módulo)
872
858
  ├── node-express/ # Node.js / Express
@@ -883,6 +869,8 @@ pass-prompts/templates/
883
869
 
884
870
  `plan-installer` auto-detecta tu stack(s), y luego ensambla prompts específicos del tipo. NestJS, Vue/Nuxt, Vite SPA y Flask usan cada uno plantillas dedicadas con categorías de análisis específicas del framework (ej: `@Module`/`@Injectable`/Guards para NestJS; `<script setup>`/Pinia/useFetch para Vue; client-side routing/`VITE_` env para Vite; Blueprint/`app.factory`/Flask-SQLAlchemy para Flask). Para proyectos multi-stack, se generan `pass1-backend-prompt.md` y `pass1-frontend-prompt.md` por separado, mientras que `pass3-prompt.md` combina los targets de generación de ambos stacks. En v2.1.0, la plantilla de Pass 3 se anteanteponte con `common/pass3-phase1.md` (el bloque "Read Once, Extract Facts" con Rules A–E) antes de ser troceada por etapa en modo split. Pass 4 usa la plantilla compartida `common/pass4.md` (memory scaffolding) independientemente del stack.
885
871
 
872
+ **En v2.2.0**, el prompt de Pass 3 también incrusta en línea `common/claude-md-scaffold.md` (la plantilla CLAUDE.md determinista de 8 secciones) entre el bloque phase1 y el cuerpo específico del stack — esto fija la estructura de secciones para que los CLAUDE.md generados no se desvíen entre proyectos, mientras el contenido se adapta por proyecto. Las plantillas se escriben **English-first**; la inyección de idioma desde `lang-instructions.json` instruye al LLM a traducir títulos de sección y prosa al idioma de salida objetivo en tiempo de emisión.
873
+
886
874
  ---
887
875
 
888
876
  ## Soporte de Monorepo
@@ -969,6 +957,12 @@ my-monorepo/ ← Ejecuta aquí: npx claudeos-core init
969
957
 
970
958
  **"CLAUDEOS_SKIP_TRANSLATION=1 is set but --lang='ko' requires translation" InitError (v2.0.0)** — Tienes la variable de entorno de solo-test `CLAUDEOS_SKIP_TRANSLATION=1` configurada en tu shell (probablemente un resto de setup de CI/test) Y elegiste un `--lang` no-inglés. Esta env var cortocircuita el path de traducción del que dependen el fallback estático y el gap-fill de Pass 4 para la salida no-inglesa. `init` detecta el conflicto en el momento de la selección de idioma y aborta inmediatamente (en vez de crashear a mitad de Pass 4 con un error anidado confuso). Solución: o bien `unset CLAUDEOS_SKIP_TRANSLATION` antes de ejecutar, o usa `npx claudeos-core init --lang en`.
971
959
 
960
+ **Advertencia "⚠️ v2.2.0 upgrade detected" (v2.2.0)** — Tu `CLAUDE.md` existente fue generado con una versión anterior a v2.2.0. La regeneración en modo resume por defecto omitirá los archivos existentes bajo Rule B idempotency, por lo que las mejoras estructurales de v2.2.0 (scaffold CLAUDE.md de 8 secciones, paths por archivo en `40.infra/*`, precisión de puerto basada en `.env.example`, rediseño de Section 8 `Common Rules & Memory (L4)` (rediseñado con dos sub-secciones: Common Rules · L4 Memory), fila de regla `60.memory/*`, `04.doc-writing-guide.md` con forward-reference) NO se aplicarían. Solución: vuelve a ejecutar con `npx claudeos-core init --force`. Sobrescribe los archivos generados (`CLAUDE.md`, `.claude/rules/`, `claudeos-core/standard/`, `claudeos-core/skills/`, `claudeos-core/guide/`) preservando `claudeos-core/memory/` (decision-log, failure-patterns acumulados — append-only). Haz commit del proyecto antes si quieres revisar el diff de las sobrescrituras.
961
+
962
+ **El puerto en CLAUDE.md difiere de `.env.example` (v2.2.0)** — El nuevo parser `.env` del stack-detector (`lib/env-parser.js`) lee `.env.example` primero (canónico, commiteado), luego variantes `.env` como fallback. Variables de puerto reconocidas: `PORT`, `VITE_PORT`, `VITE_DESKTOP_PORT`, `NEXT_PUBLIC_PORT`, `NUXT_PORT`, `DJANGO_PORT`, etc. Para Spring Boot, `server.port` de `application.yml` sigue teniendo prioridad sobre `.env` (config framework-native gana). Si tu proyecto usa un nombre de var env inusual, renómbralo a una convención reconocida o abre un issue para extender `PORT_VAR_KEYS`. Los valores por defecto del framework (Vite 5173, Next.js 3000, Django 8000) se usan solo cuando tanto la detección directa como `.env` están silenciosos.
963
+
964
+ **Valores secretos redactados como `***REDACTED***` en docs generados (v2.2.0)** — Comportamiento esperado. El parser `.env` de v2.2.0 redacta automáticamente valores de variables que coinciden con patrones `PASSWORD`/`SECRET`/`TOKEN`/`API_KEY`/`CREDENTIAL`/`PRIVATE_KEY` antes de que lleguen a cualquier generador. Esto es defense-in-depth contra secretos commiteados accidentalmente en `.env.example`. `DATABASE_URL` se mantiene tal cual por back-compat de identificación de DB en stack-detector. Si ves `***REDACTED***` en algún lugar del `CLAUDE.md` generado, es un bug — los valores redactados no deberían llegar a la tabla; por favor reporta un issue. La config runtime no sensible (port, host, API target, NODE_ENV, etc.) pasa sin cambios.
965
+
972
966
  ---
973
967
 
974
968
  ## Contribuir
@@ -978,7 +972,7 @@ my-monorepo/ ← Ejecuta aquí: npx claudeos-core init
978
972
  - **Nuevas plantillas de stack** — Ruby/Rails, Go (Gin/Fiber/Echo), PHP (Laravel/Symfony), Rust (Axum/Actix), Svelte/SvelteKit, Remix
979
973
  - **Integración IDE** — extensión de VS Code, plugin de IntelliJ
980
974
  - **Plantillas de CI/CD** — GitLab CI, CircleCI, ejemplos de Jenkins (GitHub Actions ya incluido — ver `.github/workflows/test.yml`)
981
- - **Test coverage** — Ampliar la suite de tests (actualmente 563 tests en 29 archivos de test cubriendo scanners, stack detection, domain grouping, plan parsing, prompt generation, CLI selectors, monorepo detection, Vite SPA detection, verification tools, memory scaffold L4, validación de resume de Pass 2, Pass 3 Guards 1/2/3 (H1 sentinel + H2 BOM-aware empty-file + estricto stale-marker unlink), sub-división por lotes de Pass 3 en modo split, resume de Pass 3 con marcador parcial (v2.1.0), validación del contenido del marcador de Pass 4 + rigor del stale-marker unlink + gap-fill de scaffoldSkillsManifest (v2.1.0), guard env-skip de traducción + early fail-fast + workflow CI, movimiento de staged-rules, fallback lang-aware de traducción, suite de regresión por eliminación de master plan (v2.1.0), regresión de formato de memory score/compact (v2.1.0), y estructura de la plantilla AI Work Rules)
975
+ - **Test coverage** — Ampliar la suite de tests (actualmente 602 tests en 30 archivos de test cubriendo scanners, stack detection, domain grouping, plan parsing, prompt generation, CLI selectors, monorepo detection, Vite SPA detection, verification tools, memory scaffold L4, validación de resume de Pass 2, Pass 3 Guards 1/2/3 (H1 sentinel + H2 BOM-aware empty-file + estricto stale-marker unlink), sub-división por lotes de Pass 3 en modo split, resume de Pass 3 con marcador parcial (v2.1.0), validación del contenido del marcador de Pass 4 + rigor del stale-marker unlink + gap-fill de scaffoldSkillsManifest (v2.1.0), guard env-skip de traducción + early fail-fast + workflow CI, movimiento de staged-rules, fallback lang-aware de traducción, suite de regresión por eliminación de master plan (v2.1.0), regresión de formato de memory score/compact (v2.1.0), y estructura de la plantilla AI Work Rules, y extracción de port/host/API-target del parser `.env` + redacción de variables sensibles (v2.2.0))
982
976
 
983
977
  Ver [`CONTRIBUTING.md`](./CONTRIBUTING.md) para la lista completa de áreas, estilo de código, convención de commits y la guía paso a paso para añadir una nueva plantilla de stack.
984
978
 
package/README.fr.md CHANGED
@@ -12,20 +12,6 @@ ClaudeOS-Core lit votre codebase, extrait chaque pattern qu'il y trouve et gén
12
12
 
13
13
  ---
14
14
 
15
- ## Nouveautés de la v2.1.0
16
-
17
- La v2.1.0 réarchitecture Pass 3 pour éliminer les échecs `Prompt is too long` sur les projets moyens à gros. Auparavant, un seul appel Pass 3 devait émettre tout l'arbre de documentation d'un coup — des dizaines de fichiers couvrant `CLAUDE.md`, les règles, les standards, les skills et les guides — et la sortie accumulée dépassait de façon fiable la fenêtre de contexte au-delà de ~5 domaines. La correction est structurelle, pas un simple ajustement de prompt :
18
-
19
- - **Mode Pass 3 split** (toujours actif) — Pass 3 est découpé en appels `claude -p` séquentiels (`3a` → `3b-core` → `3b-N` → `3c-core` → `3c-N` → `3d-aux`). Chaque stage démarre avec une **fenêtre de contexte fraîche**, donc l'overflow par accumulation de sortie n'est structurellement plus possible, quelle que soit la taille du projet.
20
- - **Fiche de faits entre stages** — Le stage `3a` lit l'analyse de Pass 2 une seule fois et la distille en un `pass3a-facts.md` de 5 à 10 Ko. Tous les stages suivants référencent cette fiche au lieu de relire le `pass2-merged.json` de 100 à 500 Ko, préservant la cohérence inter-fichiers à travers les contextes frais.
21
- - **Sous-division en batches** (automatique à partir de 16 domaines) — Les stages 3b/3c sont en outre divisés en batches de 15 domaines, gardant chaque stage sous ~50 fichiers de sortie. Un admin frontend React 19 + Vite 6 de 18 domaines se termine en **102 minutes avec 101 fichiers générés sur 8 stages, zéro échec d'overflow** (exécution de production réelle, 2026-04-20).
22
- - **Génération de master plan supprimée** — Les fichiers `claudeos-core/plan/*-master.md` ne sont plus générés. Les master plans étaient un backup interne que Claude Code ne consommait pas à l'exécution, et leur agrégation dans Pass 3d était l'un des principaux déclencheurs d'overflow. Utilisez `git` pour le backup/restore à la place.
23
- - **Pass 4 gap-fill : `skills/00.shared/MANIFEST.md`** — Si Pass 3c omet le registre des skills (projets skill-sparse), Pass 4 crée désormais automatiquement un stub pour que `.claude/rules/50.sync/03.skills-sync.md` ne pointe jamais sur un fichier fantôme.
24
-
25
- Quelques corrections plus petites : `memory --help` affiche maintenant l'aide des sous-commandes memory (auparavant, c'était l'aide top-level) ; `memory score` ne laisse plus de lignes `importance` dupliquées ; les marqueurs de résumé de `memory compact` sont de vrais items de liste markdown. Détails complets : [CHANGELOG.md](./CHANGELOG.md).
26
-
27
- ---
28
-
29
15
  ## Pourquoi ClaudeOS-Core ?
30
16
 
31
17
  Tous les autres outils Claude Code fonctionnent ainsi :
@@ -99,10 +85,20 @@ Cette différence se cumule. 10 tâches/jour × 20 minutes économisées = **plu
99
85
  | **Vite / React SPA** | `package.json`, `vite.config.*` | 9 catégories, 55 sous-éléments |
100
86
  | **Angular** | `package.json`, `angular.json` | 12 catégories, 78 sous-éléments |
101
87
 
102
- 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).
88
+ Auto-détecté : langage et version, framework et version (y compris Vite en tant que framework SPA), ORM (MyBatis, JPA, Exposed, Prisma, TypeORM, SQLAlchemy, etc.), base de données (PostgreSQL, MySQL, Oracle, MongoDB, SQLite), gestionnaire de paquets (Gradle, Maven, npm, yarn, pnpm, pip, poetry), architecture (CQRS, BFF — à partir des noms de modules), structure multi-module (depuis settings.gradle), monorepo (Turborepo, pnpm-workspace, Lerna, npm/yarn workspaces), **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).
103
89
 
104
90
  **Vous n'avez rien à spécifier. Tout est détecté automatiquement.**
105
91
 
92
+ ### Configuration runtime pilotée par `.env` (v2.2.0)
93
+
94
+ 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.
95
+
96
+ - **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.
97
+ - **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.
98
+ - **Host & API target** : `VITE_DEV_HOST` / `VITE_API_TARGET` / `NEXT_PUBLIC_API_URL` / `NUXT_PUBLIC_API_BASE` / `BACKEND_URL` / `PROXY_TARGET`, etc.
99
+ - **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.
100
+ - **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.
101
+
106
102
  ### Détection des Domaines Java (5 patterns avec fallback)
107
103
 
108
104
  | Priorité | Pattern | Structure | Exemple |
@@ -378,7 +374,7 @@ cat claudeos-core/generated/pass4-prompt.md \
378
374
 
379
375
  **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`.
380
376
 
381
- > **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/03.skills-sync.md` ait toujours une cible de référence valide. Idempotent : saute si le fichier a déjà du contenu réel (>20 caractères).
377
+ > **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).
382
378
 
383
379
  > **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.
384
380
 
@@ -488,6 +484,8 @@ Le template de prompt Pass 3 inclut également un **bloc Phase 1 « Read Once, E
488
484
  - **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.
489
485
  - **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.
490
486
 
487
+ En **v2.2.0**, Pass 3 intègre également en ligne un scaffold CLAUDE.md déterministe (`pass-prompts/templates/common/claude-md-scaffold.md`) dans le prompt. Cela fixe les titres et l'ordre des 8 sections de premier niveau afin que le `CLAUDE.md` généré ne dérive plus entre projets, tandis que le contenu de chaque section continue de s'adapter à chaque projet. Le nouveau parser `.env` du stack-detector (`lib/env-parser.js`) fournit `stack.envInfo` au prompt pour que les lignes port/host/API target correspondent à ce que le projet déclare réellement plutôt qu'aux defaults du framework.
488
+
491
489
  **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.
492
490
 
493
491
  ---
@@ -497,7 +495,7 @@ Le template de prompt Pass 3 inclut également un **bloc Phase 1 « Read Once, E
497
495
  ```
498
496
  your-project/
499
497
 
500
- ├── CLAUDE.md ← Point d'entrée Claude Code
498
+ ├── CLAUDE.md ← Point d'entrée Claude Code (structure déterministe à 8 sections, v2.2.0)
501
499
 
502
500
  ├── .claude/
503
501
  │ └── rules/ ← Règles déclenchées par glob
@@ -591,24 +589,6 @@ Formule du nombre de stages (quand batché) : `1 (3a) + 1 (3b-core) + N (3b-1..N
591
589
 
592
590
  Pass 4 (memory scaffolding) ajoute ~30 secondes à 5 minutes par-dessus selon que la génération pilotée par Claude ou le fallback statique tourne. Pour les projets multi-stack (ex : Java + React), les domaines backend et frontend sont comptés ensemble. Un projet avec 6 domaines backend + 4 frontend = 10 au total = palier Moyen.
593
591
 
594
- ### Cas de production réel : admin frontend de 18 domaines (2026-04-20)
595
-
596
- Un admin frontend React 19 + Vite 6 + TypeScript de 18 domaines et 6 groupes de domaines s'est terminé de bout en bout en **102 minutes avec 101 fichiers générés**. Détail par stage :
597
-
598
- | Stage | Fichiers | Temps | Fichiers/min |
599
- |---|---|---|---|
600
- | `3a` (extraction de faits) | 1 (`pass3a-facts.md`) | 8m 44s | — |
601
- | `3b-core` (CLAUDE.md + commun) | 24 | 22m 10s | 1.1 |
602
- | `3b-1` (15 domaines) | 30 | 10m 6s | **3.0** |
603
- | `3b-2` (3 domaines) | 6 | 4m 34s | 1.3 |
604
- | `3c-core` (guides + partagés) | 11 | 8m 31s | 1.3 |
605
- | `3c-1` (15 domaines) | 8 | 5m 11s | **1.5** |
606
- | `3c-2` (3 domaines) | 3 | 3m 50s | 0.8 |
607
- | `3d-aux` (database + mcp) | 3 | 2m 52s | 1.0 |
608
- | Pass 4 | 12 | 5m 36s | 2.1 |
609
-
610
- Le débit est nettement plus élevé sur les stages de domaines batchés (3b-1 : 3.0 fichiers/min contre 3b-core : 1.1 fichiers/min) car les stages à contexte frais bénéficient de patterns par-domaine serrés et répétables. Vérification tout vert : `plan-validator`, `sync-checker`, `content-validator`, `pass-json-validator` — zéro échec d'overflow, zéro troncation.
611
-
612
592
  ---
613
593
 
614
594
  ## Outils de Vérification
@@ -810,8 +790,7 @@ Non. Il crée uniquement `CLAUDE.md`, `.claude/rules/` et `claudeos-core/`. Votr
810
790
  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.
811
791
 
812
792
  **Q : Qu'est-ce que le mode split de Pass 3 et pourquoi a-t-il été ajouté en v2.1.0 ?**
813
- Avant la v2.1.0, Pass 3 faisait un seul appel `claude -p` qui devait émettre tout l'arbre de fichiers généré (`CLAUDE.md`, standards, règles, skills, guides — typiquement 30–60 fichiers) en une seule réponse. Cela fonctionnait sur les petits projets mais se heurtait de façon fiable à des échecs `Prompt is too long` par accumulation de sortie autour de 5 domaines. L'échec n'était pas prédictible à partir de la taille d'entrée — il dépendait de la verbosité des fichiers générés et pouvait frapper le même projet de façon intermittente. Le mode split contourne le problème structurellement : Pass 3 est découpé en stages séquentiels (`3a` → `3b-core` → `3b-N` → `3c-core` → `3c-N` → `3d-aux`), chacun un appel `claude -p` séparé avec une fenêtre de contexte fraîche. La cohérence inter-stages est préservée par `pass3a-facts.md`, une fiche de faits distillée de 5 à 10 Ko que chaque stage suivant référence au lieu de relire `pass2-merged.json`. Le marqueur `pass3-complete.json` porte un array `groupsCompleted` pour qu'un crash pendant `3c-2` reprenne à `3c-2` (pas à `3a`), évitant de doubler le coût en tokens. Vérifié empiriquement jusqu'à 18 domaines × 101 fichiers × 102 minutes avec zéro overflow — voir [Auto-scaling](#auto-scaling-selon-la-taille-du-projet) pour le détail de production réel.
814
-
793
+ Avant la v2.1.0, Pass 3 faisait un seul appel `claude -p` qui devait émettre tout l'arbre de fichiers généré (`CLAUDE.md`, standards, règles, skills, guides — typiquement 30–60 fichiers) en une seule réponse. Cela fonctionnait sur les petits projets mais se heurtait de façon fiable à des échecs `Prompt is too long` par accumulation de sortie autour de 5 domaines. L'échec n'était pas prédictible à partir de la taille d'entrée — il dépendait de la verbosité des fichiers générés et pouvait frapper le même projet de façon intermittente. Le mode split contourne le problème structurellement : Pass 3 est découpé en stages séquentiels (`3a` → `3b-core` → `3b-N` → `3c-core` → `3c-N` → `3d-aux`), chacun un appel `claude -p` séparé avec une fenêtre de contexte fraîche. La cohérence inter-stages est préservée par `pass3a-facts.md`, une fiche de faits distillée de 5 à 10 Ko que chaque stage suivant référence au lieu de relire `pass2-merged.json`. Le marqueur `pass3-complete.json` porte un array `groupsCompleted` pour qu'un crash pendant `3c-2` reprenne à `3c-2` (pas à `3a`), évitant de doubler le coût en tokens.
815
794
  **Q : Dois-je commiter les fichiers générés dans Git ?**
816
795
  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).
817
796
 
@@ -866,7 +845,14 @@ Rien de requis — les outils v2.1.0 ignorent `plan/` quand il est absent ou vid
866
845
 
867
846
  ```
868
847
  pass-prompts/templates/
869
- ├── common/ # Header/footer partagés + pass4 + staging-override
848
+ ├── common/ # header/footer partagés + pass4 + staging-override + CLAUDE.md scaffold (v2.2.0)
849
+ │ ├── header.md # Rôle + directive de format de sortie (toutes les passes)
850
+ │ ├── pass3-footer.md # Instruction health-check post-Pass-3 + 5 blocs CRITICAL de guardrails (v2.2.0)
851
+ │ ├── pass3-phase1.md # Bloc « Read Once, Extract Facts » avec Rules A-E (v2.1.0)
852
+ │ ├── pass4.md # Prompt de scaffolding mémoire (v2.0.0)
853
+ │ ├── staging-override.md # Redirige les écritures .claude/rules/** vers .staged-rules/** (v2.0.0)
854
+ │ ├── claude-md-scaffold.md # Template CLAUDE.md déterministe à 8 sections (v2.2.0)
855
+ │ └── lang-instructions.json # Directives de sortie par langue (10 langues)
870
856
  ├── java-spring/ # Java / Spring Boot
871
857
  ├── kotlin-spring/ # Kotlin / Spring Boot (CQRS, BFF, multi-module)
872
858
  ├── node-express/ # Node.js / Express
@@ -883,6 +869,8 @@ pass-prompts/templates/
883
869
 
884
870
  `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.
885
871
 
872
+ **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.
873
+
886
874
  ---
887
875
 
888
876
  ## Support Monorepo
@@ -969,6 +957,12 @@ my-monorepo/ ← Lancez ici : npx claudeos-core init
969
957
 
970
958
  **« CLAUDEOS_SKIP_TRANSLATION=1 is set but --lang='ko' requires translation » InitError (v2.0.0)** — Vous avez la variable d'environnement réservée aux tests `CLAUDEOS_SKIP_TRANSLATION=1` définie dans votre shell (probablement un reste de setup CI/test) ET vous avez choisi un `--lang` non-anglais. Cette variable d'environnement court-circuite le chemin de traduction dont dépendent le fallback statique et le gap-fill de Pass 4 pour la sortie non-anglaise. `init` détecte le conflit au moment de la sélection de langue et s'avorte immédiatement (plutôt que de crasher en plein Pass 4 avec une erreur imbriquée confuse). Fix : soit `unset CLAUDEOS_SKIP_TRANSLATION` avant de lancer, soit utilisez `npx claudeos-core init --lang en`.
971
959
 
960
+ **Avertissement "⚠️ v2.2.0 upgrade detected" (v2.2.0)** — Votre `CLAUDE.md` existant a été généré avec une version antérieure à v2.2.0. La régénération par défaut en mode resume ignorera les fichiers existants sous Rule B idempotency, donc les améliorations structurelles de v2.2.0 (scaffold CLAUDE.md à 8 sections, paths par fichier dans `40.infra/*`, précision du port basée sur `.env.example`, redesign de Section 8 `Common Rules & Memory (L4)` (repensée avec deux sous-sections : Common Rules · L4 Memory), ligne de règle `60.memory/*`, `04.doc-writing-guide.md` en forward-reference) NE seront PAS appliquées. Fix : relancez avec `npx claudeos-core init --force`. Cela écrase les fichiers générés (`CLAUDE.md`, `.claude/rules/`, `claudeos-core/standard/`, `claudeos-core/skills/`, `claudeos-core/guide/`) tout en préservant `claudeos-core/memory/` (decision-log, failure-patterns accumulés — append-only). Commitez le projet avant si vous voulez diff les écrasements avant acceptation.
961
+
962
+ **Le port dans CLAUDE.md diffère de `.env.example` (v2.2.0)** — Le nouveau parser `.env` du stack-detector (`lib/env-parser.js`) lit d'abord `.env.example` (canonique, commité), puis les variantes `.env` en fallback. Variables de port reconnues : `PORT`, `VITE_PORT`, `VITE_DESKTOP_PORT`, `NEXT_PUBLIC_PORT`, `NUXT_PORT`, `DJANGO_PORT`, etc. Pour Spring Boot, `server.port` de `application.yml` a toujours la priorité sur `.env` (config framework-native gagne). Si votre projet utilise un nom de var env inhabituel, renommez-la selon une convention reconnue ou ouvrez une issue pour étendre `PORT_VAR_KEYS`. Les defaults framework (Vite 5173, Next.js 3000, Django 8000) ne sont utilisés que quand la détection directe et `.env` sont tous deux silencieux.
963
+
964
+ **Valeurs secrètes redactées en `***REDACTED***` dans les docs générés (v2.2.0)** — Comportement attendu. Le parser `.env` v2.2.0 redacte automatiquement les valeurs des variables correspondant aux patterns `PASSWORD`/`SECRET`/`TOKEN`/`API_KEY`/`CREDENTIAL`/`PRIVATE_KEY` avant qu'elles n'atteignent un générateur. C'est du defense-in-depth contre les secrets accidentellement commités dans `.env.example`. `DATABASE_URL` reste tel quel pour la back-compat d'identification DB du stack-detector. Si vous voyez `***REDACTED***` quelque part dans le `CLAUDE.md` généré, c'est un bug — les valeurs redactées ne devraient pas atteindre le tableau ; veuillez ouvrir une issue. La config runtime non sensible (port, host, API target, NODE_ENV, etc.) passe sans modification.
965
+
972
966
  ---
973
967
 
974
968
  ## Contribuer
@@ -978,7 +972,7 @@ Les contributions sont les bienvenues ! Les domaines où l'aide est la plus néc
978
972
  - **Nouveaux templates de stack** — Ruby/Rails, Go (Gin/Fiber/Echo), PHP (Laravel/Symfony), Rust (Axum/Actix), Svelte/SvelteKit, Remix
979
973
  - **Intégration IDE** — extension VS Code, plugin IntelliJ
980
974
  - **Templates CI/CD** — GitLab CI, CircleCI, exemples Jenkins (GitHub Actions déjà livré — voir `.github/workflows/test.yml`)
981
- - **Couverture de test** — Étendre la suite de tests (actuellement 563 tests à travers 29 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), et structure du template AI Work Rules)
975
+ - **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))
982
976
 
983
977
  Voir [`CONTRIBUTING.md`](./CONTRIBUTING.md) pour la liste complète des domaines, le style de code, la convention de commit et le guide pas à pas pour ajouter un nouveau template de stack.
984
978
 
package/README.hi.md CHANGED
@@ -12,20 +12,6 @@ ClaudeOS-Core आपका कोडबेस पढ़ता है, हर प
12
12
 
13
13
  ---
14
14
 
15
- ## v2.1.0 में नया क्या है
16
-
17
- v2.1.0 मध्यम-से-बड़े प्रोजेक्ट्स पर `Prompt is too long` विफलताओं को हटाने के लिए Pass 3 को फिर से डिज़ाइन करता है। पहले, एक सिंगल Pass 3 कॉल को पूरे डॉक्यूमेंटेशन ट्री को एक साथ emit करना होता था — `CLAUDE.md`, rules, standards, skills, और guides के बीच दर्जनों फ़ाइलें — और संचित आउटपुट ~5 डोमेन के बाद विश्वसनीय रूप से context window को पार कर जाता था। यह फ़िक्स संरचनात्मक है, prompt tweak नहीं:
18
-
19
- - **Pass 3 split mode** (हमेशा सक्रिय) — Pass 3 को क्रमिक `claude -p` कॉल्स में तोड़ दिया गया है (`3a` → `3b-core` → `3b-N` → `3c-core` → `3c-N` → `3d-aux`)। हर stage एक **नए context window** के साथ शुरू होता है, इसलिए प्रोजेक्ट आकार की परवाह किए बिना output-accumulation overflow अब संरचनात्मक रूप से असंभव है।
20
- - **Stages के बीच fact sheet** — Stage `3a` Pass 2 विश्लेषण को एक बार पढ़ता है और उसे 5–10 KB के `pass3a-facts.md` में distil करता है। बाद के सभी stages 100–500 KB `pass2-merged.json` को दोबारा पढ़ने के बजाय इस fact sheet को reference करते हैं, जिससे नए contexts के बीच cross-file consistency संरक्षित रहती है।
21
- - **Batch sub-division** (≥16 डोमेन पर automatic) — Stages 3b/3c को आगे 15 डोमेन प्रति batch में विभाजित किया जाता है, जिससे हर stage का output ~50 फ़ाइलें से नीचे रहता है। 18-डोमेन React 19 + Vite 6 admin frontend **102 मिनट में 101 फ़ाइलें 8 stages पर जेनरेट, शून्य overflow विफलता** के साथ पूर्ण (वास्तविक production run, 2026-04-20)।
22
- - **Master plan generation हटाया गया** — `claudeos-core/plan/*-master.md` फ़ाइलें अब जेनरेट नहीं होतीं। Master plans एक आंतरिक backup थे जिन्हें Claude Code runtime पर नहीं पढ़ता था, और Pass 3d में उन्हें aggregate करना overflow का एक प्रमुख कारण था। इसके बजाय backup/restore के लिए `git` का उपयोग करें।
23
- - **Pass 4 gap-fill: `skills/00.shared/MANIFEST.md`** — यदि Pass 3c skill registry को omit कर देता है (skill-sparse प्रोजेक्ट्स), तो Pass 4 अब स्वतः एक stub बनाता है ताकि `.claude/rules/50.sync/03.skills-sync.md` कभी dangling फ़ाइल को न point करे।
24
-
25
- कुछ छोटे फ़िक्स: `memory --help` अब memory subcommand help दिखाता है (पहले top-level दिखता था); `memory score` अब duplicate `importance` लाइनें नहीं छोड़ता; `memory compact` summary markers अब proper markdown list items हैं। पूरी जानकारी: [CHANGELOG.md](./CHANGELOG.md)।
26
-
27
- ---
28
-
29
15
  ## ClaudeOS-Core क्यों?
30
16
 
31
17
  हर दूसरा Claude Code टूल ऐसे काम करता है:
@@ -99,10 +85,20 @@ ClaudeOS-Core ऐसा डॉक्यूमेंटेशन बनाता
99
85
  | **Vite / React SPA** | `package.json`, `vite.config.*` | 9 कैटेगरी, 55 सब-आइटम |
100
86
  | **Angular** | `package.json`, `angular.json` | 12 कैटेगरी, 78 सब-आइटम |
101
87
 
102
- ऑटो-डिटेक्ट: भाषा और वर्शन, फ्रेमवर्क और वर्शन (Vite को SPA फ्रेमवर्क के रूप में शामिल), ORM (MyBatis, JPA, Exposed, Prisma, TypeORM, SQLAlchemy, आदि), डेटाबेस (PostgreSQL, MySQL, Oracle, MongoDB, SQLite), पैकेज मैनेजर (Gradle, Maven, npm, yarn, pnpm, pip, poetry), आर्किटेक्चर (CQRS, BFF — मॉड्यूल नामों से पता लगाया), मल्टी-मॉड्यूल संरचना (settings.gradle से पता लगाया), मोनोरेपो (Turborepo, pnpm-workspace, Lerna, npm/yarn workspaces)।
88
+ ऑटो-डिटेक्ट: भाषा और वर्शन, फ्रेमवर्क और वर्शन (Vite को SPA फ्रेमवर्क के रूप में शामिल), ORM (MyBatis, JPA, Exposed, Prisma, TypeORM, SQLAlchemy, आदि), डेटाबेस (PostgreSQL, MySQL, Oracle, MongoDB, SQLite), पैकेज मैनेजर (Gradle, Maven, npm, yarn, pnpm, pip, poetry), आर्किटेक्चर (CQRS, BFF — मॉड्यूल नामों से पता लगाया), मल्टी-मॉड्यूल संरचना (settings.gradle से पता लगाया), मोनोरेपो (Turborepo, pnpm-workspace, Lerna, npm/yarn workspaces), **`.env.example` runtime कॉन्फ़िगरेशन** (v2.2.0 — Vite · Next.js · Nuxt · Angular · Node · Python framework के 16+ convention variable नामों से port/host/API-target निकाला जाता है)
103
89
 
104
90
  **आपको कुछ भी स्पेसिफाई करने की ज़रूरत नहीं। सब कुछ ऑटोमैटिकली डिटेक्ट होता है।**
105
91
 
92
+ ### `.env`-driven runtime कॉन्फ़िगरेशन (v2.2.0)
93
+
94
+ v2.2.0 में `lib/env-parser.js` जोड़ा गया है ताकि जेनरेटेड `CLAUDE.md` framework defaults के बजाय वह दर्शाए जो project वास्तव में declare करता है।
95
+
96
+ - **Search क्रम**: `.env.example` (canonical, committed) → `.env.local.example` → `.env.sample` → `.env.template` → `.env` → `.env.local` → `.env.development`। `.example` variant जीतता है क्योंकि यह developer-neutral shape-of-truth है, किसी एक contributor का local override नहीं।
97
+ - **पहचाने जाने वाले port variable conventions**: `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` / generic `PORT`। जब दोनों मौजूद हों, तो framework-specific नाम generic `PORT` पर जीतते हैं।
98
+ - **Host और API target**: `VITE_DEV_HOST` / `VITE_API_TARGET` / `NEXT_PUBLIC_API_URL` / `NUXT_PUBLIC_API_BASE` / `BACKEND_URL` / `PROXY_TARGET` आदि।
99
+ - **Precedence**: Spring Boot `application.yml` `server.port` अभी भी जीतता है (framework-native config), फिर `.env`-declared port, फिर last resort के रूप में framework default (Vite 5173, Next.js 3000, Django 8000, आदि)।
100
+ - **Sensitive-variable redaction**: `PASSWORD` / `SECRET` / `TOKEN` / `API_KEY` / `ACCESS_KEY` / `PRIVATE_KEY` / `CREDENTIAL` / `JWT_SECRET` / `CLIENT_SECRET` / `SESSION_SECRET` / `BEARER` / `SALT` patterns से match होने वाले variables के values किसी भी downstream generator तक पहुंचने से पहले `***REDACTED***` से replace कर दिए जाते हैं। `.env.example` में accidentally committed secrets के खिलाफ defense-in-depth। `DATABASE_URL` stack-detector DB-identification back-compat के लिए explicitly whitelisted है।
101
+
106
102
  ### Java डोमेन डिटेक्शन (5 पैटर्न, फॉलबैक के साथ)
107
103
 
108
104
  | प्राथमिकता | पैटर्न | संरचना | उदाहरण |
@@ -378,7 +374,7 @@ cat claudeos-core/generated/pass4-prompt.md \
378
374
 
379
375
  **सत्यापित करें:** `claudeos-core/memory/` में 4 फ़ाइलें (`decision-log.md`, `failure-patterns.md`, `compaction.md`, `auto-rule-update.md`) होनी चाहिए, `.claude/rules/60.memory/` में 4 rule फ़ाइलें होनी चाहिए, और `CLAUDE.md` में एक `## Memory (L4)` section append होना चाहिए। Marker: `claudeos-core/generated/pass4-memory.json`।
380
376
 
381
- > **v2.1.0 gap-fill:** Pass 4 यह भी सुनिश्चित करता है कि `claudeos-core/skills/00.shared/MANIFEST.md` मौजूद है। यदि Pass 3c ने इसे छोड़ दिया (skill-sparse प्रोजेक्ट्स पर संभव क्योंकि stack `pass3.md` templates `MANIFEST.md` को generation targets में list करते हैं बिना REQUIRED मार्क किए), तो gap-fill एक minimal stub बनाता है ताकि `.claude/rules/50.sync/03.skills-sync.md` के पास हमेशा एक valid reference target हो। Idempotent: यदि फ़ाइल में पहले से real content (>20 chars) है तो skip करता है।
377
+ > **v2.1.0 gap-fill:** Pass 4 यह भी सुनिश्चित करता है कि `claudeos-core/skills/00.shared/MANIFEST.md` मौजूद है। यदि Pass 3c ने इसे छोड़ दिया (skill-sparse प्रोजेक्ट्स पर संभव क्योंकि stack `pass3.md` templates `MANIFEST.md` को generation targets में list करते हैं बिना REQUIRED मार्क किए), तो gap-fill एक minimal stub बनाता है ताकि `.claude/rules/50.sync/02.skills-sync.md` (v2.2.0 पथ — sync rule की संख्या 3 से घटकर 2 हुई, `03` अब `02` है) के पास हमेशा एक valid reference target हो। Idempotent: यदि फ़ाइल में पहले से real content (>20 chars) है तो skip करता है।
382
378
 
383
379
  > **नोट:** यदि `claude -p` विफल हो जाता है या `pass4-prompt.md` गायब है, तो automated pipeline `lib/memory-scaffold.js` के माध्यम से static scaffold पर fallback करता है (जब `--lang` गैर-अंग्रेज़ी होता है तो Claude-driven translation के साथ)। Static fallback केवल `npx claudeos-core init` के अंदर चलता है — मैनुअल मोड के लिए Pass 4 का सफल होना ज़रूरी है।
384
380
 
@@ -488,6 +484,8 @@ Pass 3 prompt template में एक **Phase 1 "Read Once, Extract Facts" blo
488
484
  - **Rule D** — Output conciseness: फ़ाइल writes के बीच एक line (`[WRITE]`/`[SKIP]`), fact table को दोहराना नहीं, फ़ाइल content को echo नहीं।
489
485
  - **Rule E** — Batch idempotent check: per-target `Read` calls के बजाय PHASE 2 start पर एक `Glob`।
490
486
 
487
+ **v2.2.0** में, Pass 3 एक deterministic CLAUDE.md scaffold (`pass-prompts/templates/common/claude-md-scaffold.md`) को prompt में inline embed करता है। यह 8 top-level section titles और order को fix करता है ताकि generated `CLAUDE.md` projects के बीच drift न हो, जबकि हर section का content per-project adapt होता रहे। stack-detector का नया `.env` parser (`lib/env-parser.js`) prompt को `stack.envInfo` supply करता है ताकि port/host/API target rows framework defaults के बजाय project द्वारा actually declare किए गए values से match करें।
488
+
491
489
  **Pass 4** L4 Memory layer को scaffold करता है: स्थायी टीम ज्ञान फ़ाइलें (decision-log, failure-patterns, compaction policy, auto-rule-update) साथ ही `60.memory/` rules जो भविष्य के sessions को बताते हैं कि उन फ़ाइलों को कब और कैसे पढ़ना/लिखना है। Memory layer वह है जो Claude Code को sessions में सबक संचित करने की अनुमति देता है, बजाय हर बार उन्हें फिर से खोजने के। जब `--lang` गैर-अंग्रेज़ी होता है, तो fallback static सामग्री लिखे जाने से पहले Claude के माध्यम से अनुवादित होती है। v2.1.0 यदि Pass 3c ने `skills/00.shared/MANIFEST.md` को omit किया हो तो उसके लिए एक gap-fill जोड़ता है।
492
490
 
493
491
  ---
@@ -497,7 +495,7 @@ Pass 3 prompt template में एक **Phase 1 "Read Once, Extract Facts" blo
497
495
  ```
498
496
  your-project/
499
497
 
500
- ├── CLAUDE.md ← Claude Code entry point
498
+ ├── CLAUDE.md ← Claude Code entry point (deterministic 8-section structure, v2.2.0)
501
499
 
502
500
  ├── .claude/
503
501
  │ └── rules/ ← Glob-triggered rules
@@ -591,24 +589,6 @@ Stage count सूत्र (batch होने पर): `1 (3a) + 1 (3b-core) +
591
589
 
592
590
  Pass 4 (memory scaffolding) ऊपर से ~30 सेकंड से 5 मिनट जोड़ता है, इस पर निर्भर करता है कि Claude-driven generation या static fallback चलता है। Multi-stack प्रोजेक्ट्स (जैसे Java + React) के लिए, backend और frontend डोमेन एक साथ गिने जाते हैं। 6 backend + 4 frontend डोमेन वाला प्रोजेक्ट = 10 कुल = मध्यम tier।
593
591
 
594
- ### वास्तविक production केस: 18-डोमेन admin frontend (2026-04-20)
595
-
596
- 18 डोमेन और 6 डोमेन समूहों वाले एक React 19 + Vite 6 + TypeScript admin frontend ने **102 मिनट में 101 फ़ाइलें जेनरेट के साथ** end-to-end पूरा किया। Stage breakdown:
597
-
598
- | Stage | फ़ाइलें | समय | फ़ाइलें/मिनट |
599
- |---|---|---|---|
600
- | `3a` (fact extraction) | 1 (`pass3a-facts.md`) | 8m 44s | — |
601
- | `3b-core` (CLAUDE.md + common) | 24 | 22m 10s | 1.1 |
602
- | `3b-1` (15 डोमेन) | 30 | 10m 6s | **3.0** |
603
- | `3b-2` (3 डोमेन) | 6 | 4m 34s | 1.3 |
604
- | `3c-core` (guides + shared) | 11 | 8m 31s | 1.3 |
605
- | `3c-1` (15 डोमेन) | 8 | 5m 11s | **1.5** |
606
- | `3c-2` (3 डोमेन) | 3 | 3m 50s | 0.8 |
607
- | `3d-aux` (database + mcp) | 3 | 2m 52s | 1.0 |
608
- | Pass 4 | 12 | 5m 36s | 2.1 |
609
-
610
- Throughput batched domain stages (3b-1: 3.0 फ़ाइलें/मिनट बनाम 3b-core: 1.1 फ़ाइलें/मिनट) पर उल्लेखनीय रूप से अधिक है क्योंकि fresh-context stages tight, repeatable per-domain patterns से लाभ उठाते हैं। सत्यापन all-green: `plan-validator`, `sync-checker`, `content-validator`, `pass-json-validator` — शून्य overflow विफलता, शून्य truncation।
611
-
612
592
  ---
613
593
 
614
594
  ## सत्यापन टूल्स
@@ -810,8 +790,7 @@ ClaudeOS-Core **प्रोजेक्ट-विशिष्ट rules और s
810
790
  यह 4 passes में `claude -p` को कई बार कॉल करता है। v2.1.0 split mode में, Pass 3 अकेले प्रोजेक्ट आकार के आधार पर 4–14+ stages में विस्तारित होता है ([ऑटो-स्केलिंग](#प्रोजेक्ट-आकार-द्वारा-ऑटो-स्केलिंग) देखें)। एक विशिष्ट छोटा प्रोजेक्ट (1–15 डोमेन) कुल 8–9 `claude -p` कॉल्स का उपयोग करता है; एक 18-डोमेन प्रोजेक्ट 11 का उपयोग करता है; एक 60-डोमेन प्रोजेक्ट 15–17 का उपयोग करता है। हर stage fresh context window के साथ चलता है — per-call token cost वास्तव में single-call Pass 3 से कम है, क्योंकि किसी भी stage को पूरे फ़ाइल tree को एक context में रखना नहीं पड़ता। जब `--lang` गैर-अंग्रेज़ी होता है, तो static fallback path अनुवाद के लिए कुछ अतिरिक्त `claude -p` कॉल invoke कर सकता है; परिणाम `claudeos-core/generated/.i18n-cache-<lang>.json` में cached होते हैं ताकि बाद के runs उन्हें पुनः उपयोग करें। यह सामान्य Claude Code उपयोग के भीतर है।
811
791
 
812
792
  **Q: Pass 3 split mode क्या है और इसे v2.1.0 में क्यों जोड़ा गया?**
813
- v2.1.0 से पहले, Pass 3 एक सिंगल `claude -p` कॉल बनाता था जिसे पूरे जेनरेट किए गए फ़ाइल tree (`CLAUDE.md`, standards, rules, skills, guides — आमतौर पर 30–60 फ़ाइलें) को एक response में emit करना होता था। यह छोटे प्रोजेक्ट्स पर काम करता था लेकिन ~5 डोमेन पर विश्वसनीय रूप से `Prompt is too long` output-accumulation विफलताओं को hit करता था। विफलता input size से predictable नहीं थी — यह इस पर निर्भर करती थी कि हर जेनरेट की गई फ़ाइल कितनी verbose हो, और एक ही प्रोजेक्ट को intermittently strike कर सकती थी। Split mode समस्या को संरचनात्मक रूप से bypass करता है: Pass 3 को क्रमिक stages (`3a` → `3b-core` → `3b-N` → `3c-core` → `3c-N` → `3d-aux`) में तोड़ दिया गया है, हर एक fresh context window के साथ एक अलग `claude -p` कॉल। Cross-stage consistency `pass3a-facts.md` द्वारा संरक्षित होती है, एक 5–10 KB distilled fact sheet जिसे हर बाद का stage `pass2-merged.json` को दोबारा पढ़ने के बजाय reference करता है। `pass3-complete.json` marker एक `groupsCompleted` array carry करता है ताकि `3c-2` के दौरान crash `3c-2` से resume हो (not `3a` से), token cost को दोगुना करने से बचाते हुए। 18 डोमेन × 101 फ़ाइलें × 102 मिनट तक शून्य overflow के साथ empirically verified — वास्तविक production breakdown के लिए [ऑटो-स्केलिंग](#प्रोजेक्ट-आकार-द्वारा-ऑटो-स्केलिंग) देखें।
814
-
793
+ v2.1.0 से पहले, Pass 3 एक सिंगल `claude -p` कॉल बनाता था जिसे पूरे जेनरेट किए गए फ़ाइल tree (`CLAUDE.md`, standards, rules, skills, guides — आमतौर पर 30–60 फ़ाइलें) को एक response में emit करना होता था। यह छोटे प्रोजेक्ट्स पर काम करता था लेकिन ~5 डोमेन पर विश्वसनीय रूप से `Prompt is too long` output-accumulation विफलताओं को hit करता था। विफलता input size से predictable नहीं थी — यह इस पर निर्भर करती थी कि हर जेनरेट की गई फ़ाइल कितनी verbose हो, और एक ही प्रोजेक्ट को intermittently strike कर सकती थी। Split mode समस्या को संरचनात्मक रूप से bypass करता है: Pass 3 को क्रमिक stages (`3a` → `3b-core` → `3b-N` → `3c-core` → `3c-N` → `3d-aux`) में तोड़ दिया गया है, हर एक fresh context window के साथ एक अलग `claude -p` कॉल। Cross-stage consistency `pass3a-facts.md` द्वारा संरक्षित होती है, एक 5–10 KB distilled fact sheet जिसे हर बाद का stage `pass2-merged.json` को दोबारा पढ़ने के बजाय reference करता है। `pass3-complete.json` marker एक `groupsCompleted` array carry करता है ताकि `3c-2` के दौरान crash `3c-2` से resume हो (not `3a` से), token cost को दोगुना करने से बचाते हुए।
815
794
  **Q: क्या मुझे जेनरेट की गई फ़ाइलों को Git पर commit करना चाहिए?**
816
795
  हाँ, अनुशंसित। आपकी टीम समान Claude Code standards साझा कर सकती है। `claudeos-core/generated/` को `.gitignore` में जोड़ने पर विचार करें (विश्लेषण JSON पुनर्जेनरेट करने योग्य है)।
817
796
 
@@ -866,7 +845,14 @@ Claude Code की sensitive-path policy `claude -p` subprocess से `.claude/
866
845
 
867
846
  ```
868
847
  pass-prompts/templates/
869
- ├── common/ # साझा header/footer + pass4 + staging-override
848
+ ├── common/ # साझा header/footer + pass4 + staging-override + CLAUDE.md scaffold (v2.2.0)
849
+ │ ├── header.md # भूमिका + output फ़ॉर्मैट निर्देश (सभी pass)
850
+ │ ├── pass3-footer.md # Pass 3 पूरा होने के बाद health-check निर्देश + 5 CRITICAL guardrail ब्लॉक (v2.2.0)
851
+ │ ├── pass3-phase1.md # "Read Once, Extract Facts" ब्लॉक (Rule A-E) (v2.1.0)
852
+ │ ├── pass4.md # Memory scaffolding prompt (v2.0.0)
853
+ │ ├── staging-override.md # .claude/rules/** लिखना .staged-rules/** पर redirect (v2.0.0)
854
+ │ ├── claude-md-scaffold.md # Deterministic 8-section CLAUDE.md टेम्प्लेट (v2.2.0)
855
+ │ └── lang-instructions.json # प्रति-भाषा output निर्देश (10 भाषाएँ)
870
856
  ├── java-spring/ # Java / Spring Boot
871
857
  ├── kotlin-spring/ # Kotlin / Spring Boot (CQRS, BFF, multi-module)
872
858
  ├── node-express/ # Node.js / Express
@@ -883,6 +869,8 @@ pass-prompts/templates/
883
869
 
884
870
  `plan-installer` आपके स्टैक(s) को ऑटो-डिटेक्ट करता है, फिर type-specific प्रॉम्प्ट assemble करता है। NestJS, Vue/Nuxt, Vite SPA, और Flask हर एक framework-विशिष्ट विश्लेषण श्रेणियों के साथ समर्पित templates का उपयोग करते हैं (जैसे NestJS के लिए `@Module`/`@Injectable`/Guards; Vue के लिए `<script setup>`/Pinia/useFetch; Vite के लिए client-side routing/`VITE_` env; Flask के लिए Blueprint/`app.factory`/Flask-SQLAlchemy)। Multi-stack प्रोजेक्ट्स के लिए, अलग `pass1-backend-prompt.md` और `pass1-frontend-prompt.md` जेनरेट किए जाते हैं, जबकि `pass3-prompt.md` दोनों स्टैक्स के generation targets को combine करता है। v2.1.0 में, Pass 3 template के आगे `common/pass3-phase1.md` (Rules A–E वाला "Read Once, Extract Facts" block) prepend किया जाता है, फिर इसे split-mode stage के अनुसार sliced किया जाता है। Pass 4 स्टैक की परवाह किए बिना साझा `common/pass4.md` template (memory scaffolding) का उपयोग करता है।
885
871
 
872
+ **v2.2.0 में**, Pass 3 prompt phase1 ब्लॉक और stack-specific body के बीच `common/claude-md-scaffold.md` (deterministic 8-section CLAUDE.md टेम्प्लेट) को भी inline embed करता है — यह section संरचना को ठीक करता है ताकि जेनरेटेड CLAUDE.md projects के बीच drift न हो, जबकि content प्रति-project adapt होता है। Templates **English-first** लिखे गए हैं; `lang-instructions.json` से language injection LLM को निर्देश देता है कि emit समय पर section titles और prose को target output भाषा में अनुवाद करे।
873
+
886
874
  ---
887
875
 
888
876
  ## Monorepo समर्थन
@@ -969,6 +957,12 @@ my-monorepo/ ← यहाँ चलाएँ: npx claudeos-c
969
957
 
970
958
  **"CLAUDEOS_SKIP_TRANSLATION=1 is set but --lang='ko' requires translation" InitError (v2.0.0)** — आपके shell में test-only env var `CLAUDEOS_SKIP_TRANSLATION=1` set है (संभवतः CI/test setup से leftover) AND गैर-अंग्रेज़ी `--lang` चुना है। यह env var translation path को short-circuit करता है जिस पर Pass 4 की static-fallback और gap-fill गैर-अंग्रेज़ी output के लिए निर्भर करती हैं। `init` language-selection time पर conflict डिटेक्ट करता है और तुरंत abort हो जाता है (mid-Pass-4 में confusing nested error के साथ crash होने के बजाय)। Fix: या तो चलाने से पहले `unset CLAUDEOS_SKIP_TRANSLATION`, या `npx claudeos-core init --lang en` का उपयोग करें।
971
959
 
960
+ **"⚠️ v2.2.0 upgrade detected" warning (v2.2.0)** — आपका existing `CLAUDE.md` pre-v2.2.0 version से generated है। Default resume-mode regeneration Rule B idempotency के तहत existing files को skip करेगा, इसलिए v2.2.0 के structural improvements (8-section CLAUDE.md scaffold, per-file `40.infra/*` paths, `.env.example`-based port accuracy, Section 8 `Common Rules & Memory (L4)` (दो sub-section संरचना के साथ पुनः डिज़ाइन: Common Rules · L4 Memory), `60.memory/*` rule row, forward-referenced `04.doc-writing-guide.md`) apply नहीं होंगे। Fix: `npx claudeos-core init --force` के साथ re-run करें। यह generated files (`CLAUDE.md`, `.claude/rules/`, `claudeos-core/standard/`, `claudeos-core/skills/`, `claudeos-core/guide/`) को overwrite करता है लेकिन `claudeos-core/memory/` content (आपके accumulated decision-log, failure-patterns entries — append-only) को preserve करता है। Overwrite से पहले diff देखना हो तो `--force` से पहले project को git commit कर दें।
961
+
962
+ **CLAUDE.md में port `.env.example` से अलग (v2.2.0)** — stack-detector का नया `.env` parser (`lib/env-parser.js`) पहले `.env.example` (canonical, committed) पढ़ता है, फिर `.env` variants को fallback के रूप में। Recognized port variables: `PORT`, `VITE_PORT`, `VITE_DESKTOP_PORT`, `NEXT_PUBLIC_PORT`, `NUXT_PORT`, `DJANGO_PORT`, etc. Spring Boot के लिए, `application.yml` का `server.port` अभी भी `.env` पर precedence रखता है (framework-native config wins)। अगर project unusual env var name use करता है, तो recognized convention पर rename करें या `PORT_VAR_KEYS` extend करने के लिए issue raise करें। Framework defaults (Vite 5173, Next.js 3000, Django 8000) तब use होते हैं जब direct detection और `.env` दोनों silent हों।
963
+
964
+ **Generated docs में `***REDACTED***` values (v2.2.0)** — Expected behavior। v2.2.0 का `.env` parser `PASSWORD`/`SECRET`/`TOKEN`/`API_KEY`/`CREDENTIAL`/`PRIVATE_KEY` patterns से match करने वाले variables के values को automatically `***REDACTED***` से replace कर देता है before किसी भी generator तक पहुंचे। यह `.env.example` में accidentally committed secrets के खिलाफ defense-in-depth है। `DATABASE_URL` stack-detector DB identification back-compat के लिए as-is रहता है। अगर generated `CLAUDE.md` table में `***REDACTED***` दिखे तो वह bug है, please issue file करें — redacted values table तक नहीं पहुंचने चाहिए। Non-sensitive runtime config (port, host, API target, NODE_ENV, etc.) बिना बदलाव pass होता है।
965
+
972
966
  ---
973
967
 
974
968
  ## योगदान
@@ -978,7 +972,7 @@ my-monorepo/ ← यहाँ चलाएँ: npx claudeos-c
978
972
  - **नए stack templates** — Ruby/Rails, Go (Gin/Fiber/Echo), PHP (Laravel/Symfony), Rust (Axum/Actix), Svelte/SvelteKit, Remix
979
973
  - **IDE integration** — VS Code extension, IntelliJ plugin
980
974
  - **CI/CD templates** — GitLab CI, CircleCI, Jenkins examples (GitHub Actions पहले से shipped — `.github/workflows/test.yml` देखें)
981
- - **Test coverage** — Test suite का विस्तार करना (वर्तमान में 29 test फ़ाइलों में 563 tests जो scanners, stack detection, domain grouping, plan parsing, prompt generation, CLI selectors, monorepo detection, Vite SPA detection, verification tools, L4 memory scaffold, Pass 2 resume validation, Pass 3 Guards 1/2/3 (H1 sentinel + H2 BOM-aware empty-file + strict stale-marker unlink), Pass 3 split-mode batch subdivision, Pass 3 partial-marker resume (v2.1.0), Pass 4 marker content validation + stale-marker unlink strictness + scaffoldSkillsManifest gap-fill (v2.1.0), translation env-skip guard + early fail-fast + CI workflow, staged-rules move, lang-aware translation fallback, master plan removal regression suite (v2.1.0), memory score/compact formatting regression (v2.1.0), और AI Work Rules template संरचना को कवर करते हैं)
975
+ - **Test coverage** — Test suite का विस्तार करना (वर्तमान में 30 test फ़ाइलों में 602 tests जो scanners, stack detection, domain grouping, plan parsing, prompt generation, CLI selectors, monorepo detection, Vite SPA detection, verification tools, L4 memory scaffold, Pass 2 resume validation, Pass 3 Guards 1/2/3 (H1 sentinel + H2 BOM-aware empty-file + strict stale-marker unlink), Pass 3 split-mode batch subdivision, Pass 3 partial-marker resume (v2.1.0), Pass 4 marker content validation + stale-marker unlink strictness + scaffoldSkillsManifest gap-fill (v2.1.0), translation env-skip guard + early fail-fast + CI workflow, staged-rules move, lang-aware translation fallback, master plan removal regression suite (v2.1.0), memory score/compact formatting regression (v2.1.0), और AI Work Rules template संरचना, और `.env` parser port/host/API-target extraction + sensitive-variable redaction (v2.2.0) को कवर करते हैं)
982
976
 
983
977
  क्षेत्रों की पूरी सूची, code style, commit convention, और नया stack template जोड़ने के लिए step-by-step guide के लिए [`CONTRIBUTING.md`](./CONTRIBUTING.md) देखें।
984
978