claudeos-core 1.7.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/CHANGELOG.md +138 -0
  2. package/CONTRIBUTING.md +92 -59
  3. package/README.de.md +465 -240
  4. package/README.es.md +446 -223
  5. package/README.fr.md +461 -238
  6. package/README.hi.md +485 -261
  7. package/README.ja.md +440 -235
  8. package/README.ko.md +244 -56
  9. package/README.md +215 -47
  10. package/README.ru.md +462 -238
  11. package/README.vi.md +454 -230
  12. package/README.zh-CN.md +476 -252
  13. package/bin/cli.js +144 -140
  14. package/bin/commands/init.js +550 -46
  15. package/bin/commands/memory.js +426 -0
  16. package/bin/lib/cli-utils.js +206 -143
  17. package/bootstrap.sh +81 -390
  18. package/content-validator/index.js +436 -340
  19. package/lib/expected-guides.js +23 -0
  20. package/lib/expected-outputs.js +91 -0
  21. package/lib/language-config.js +35 -0
  22. package/lib/memory-scaffold.js +1014 -0
  23. package/lib/plan-parser.js +153 -149
  24. package/lib/staged-rules.js +118 -0
  25. package/manifest-generator/index.js +176 -171
  26. package/package.json +1 -1
  27. package/pass-json-validator/index.js +337 -299
  28. package/pass-prompts/templates/common/pass3-footer.md +16 -0
  29. package/pass-prompts/templates/common/pass4.md +317 -0
  30. package/pass-prompts/templates/common/staging-override.md +26 -0
  31. package/pass-prompts/templates/python-flask/pass1.md +119 -0
  32. package/pass-prompts/templates/python-flask/pass2.md +85 -0
  33. package/pass-prompts/templates/python-flask/pass3.md +103 -0
  34. package/plan-installer/domain-grouper.js +2 -1
  35. package/plan-installer/prompt-generator.js +120 -96
  36. package/plan-installer/scanners/scan-frontend.js +219 -10
  37. package/plan-installer/scanners/scan-java.js +226 -223
  38. package/plan-installer/scanners/scan-python.js +21 -0
  39. package/sync-checker/index.js +133 -132
package/README.es.md CHANGED
@@ -1,12 +1,12 @@
1
1
  # ClaudeOS-Core
2
2
 
3
- **La única herramienta que lee tu código fuente primero, confirma tu stack y patrones con análisis determinístico, y genera reglas de Claude Code adaptadas exactamente a tu proyecto.**
3
+ **La única herramienta que lee primero tu código fuente, confirma tu stack y tus patrones mediante análisis determinístico, y luego genera reglas de Claude Code adaptadas exactamente a tu proyecto.**
4
4
 
5
5
  ```bash
6
6
  npx claudeos-core init
7
7
  ```
8
8
 
9
- ClaudeOS-Core lee tu código fuente, extrae cada patrón que encuentra y genera un conjunto completo de Standards, Rules, Skills y Guides adaptados a _tu_ proyecto. Después, cuando le digas a Claude Code "Crea un CRUD para pedidos", generará código que coincide exactamente con tus patrones existentes.
9
+ ClaudeOS-Core lee tu codebase, extrae cada patrón que encuentra y genera un conjunto completo de Standards, Rules, Skills y Guides adaptados a _tu_ proyecto. Después, cuando le digas a Claude Code "Crea un CRUD para pedidos", producirá código que coincide exactamente con tus patrones existentes.
10
10
 
11
11
  [🇺🇸 English](./README.md) · [🇰🇷 한국어](./README.ko.md) · [🇨🇳 中文](./README.zh-CN.md) · [🇯🇵 日本語](./README.ja.md) · [🇻🇳 Tiếng Việt](./README.vi.md) · [🇮🇳 हिन्दी](./README.hi.md) · [🇷🇺 Русский](./README.ru.md) · [🇫🇷 Français](./README.fr.md) · [🇩🇪 Deutsch](./README.de.md)
12
12
 
@@ -14,45 +14,55 @@ ClaudeOS-Core lee tu código fuente, extrae cada patrón que encuentra y genera
14
14
 
15
15
  ## ¿Por qué ClaudeOS-Core?
16
16
 
17
- > Humano describe el proyecto LLM genera documentación
17
+ Cualquier otra herramienta de Claude Code funciona así:
18
18
 
19
- ClaudeOS-Core:
19
+ > **El humano describe el proyecto → el LLM genera la documentación**
20
20
 
21
- > Código analiza tu fuente → Código construye prompt personalizado → LLM genera documentación → Código verifica la salida
21
+ ClaudeOS-Core funciona así:
22
22
 
23
- ### El problema central: Los LLMs adivinan. El código confirma.
23
+ > **El código analiza tu fuente el código construye un prompt adaptado → el LLM genera la documentación → el código verifica el resultado**
24
24
 
25
- Cuando le pides a Claude "analiza este proyecto", **adivina** tu stack, ORM y estructura de dominios.
25
+ No es una pequeña diferencia. Aquí está por qué importa:
26
26
 
27
- **ClaudeOS-Core no adivina.** Claude Node.js:
27
+ ### El problema central: los LLMs adivinan. El código, no.
28
28
 
29
- - `build.gradle` / `package.json` / `pyproject.toml` **confirmed**
30
- - directory scan **confirmed**
31
- - Java 5 patterns, Kotlin CQRS/BFF, Next.js App Router/FSD **classified**
32
- - domain groups → **split**
33
- - stack-specific prompt **assembled**
29
+ Cuando le pides a Claude que "analice este proyecto", **adivina** tu stack, tu ORM, tu estructura de dominios.
30
+ Puede ver `spring-boot` en tu `build.gradle` pero no darse cuenta de que usas MyBatis (no JPA).
31
+ Puede detectar un directorio `user/` sin percatarse de que tu proyecto usa empaquetado por capas primero (Patrón A), no por dominio primero (Patrón B).
32
+
33
+ **ClaudeOS-Core no adivina.** Antes de que Claude siquiera vea tu proyecto, el código Node.js ya ha:
34
+
35
+ - Parseado `build.gradle` / `package.json` / `pyproject.toml` y **confirmado** tu stack, ORM, BD y gestor de paquetes
36
+ - Escaneado tu estructura de directorios y **confirmado** tu lista de dominios con el conteo de archivos
37
+ - Clasificado la estructura de tu proyecto en uno de los 5 patrones Java, Kotlin CQRS/BFF, o Next.js App Router/FSD
38
+ - Dividido los dominios en grupos de tamaño óptimo que caben en la ventana de contexto de Claude
39
+ - Ensamblado un prompt específico del stack con todos los hechos confirmados inyectados
40
+
41
+ Cuando Claude recibe el prompt, no queda nada por adivinar. El stack está confirmado. Los dominios están confirmados. El patrón estructural está confirmado. El único trabajo de Claude es generar documentación que coincida con estos **hechos confirmados**.
34
42
 
35
43
  ### El resultado
36
44
 
37
45
  Otras herramientas producen documentación "generalmente buena".
38
- ClaudeOS-Core produce documentación que sabe que tu proyecto usa `ApiResponse.ok()` (no `ResponseEntity.success()`), que tus mappers MyBatis XML están en `src/main/resources/mybatis/mappers/` — porque leyó tu código real.
46
+ ClaudeOS-Core produce documentación que sabe que tu proyecto usa `ApiResponse.ok()` (no `ResponseEntity.success()`), que tus mappers MyBatis XML viven en `src/main/resources/mybatis/mappers/`, y que tu estructura de paquetes es `com.company.module.{domain}.controller` — porque leyó tu código real.
39
47
 
40
- ### Before & After
48
+ ### Antes y después
41
49
 
42
- **Sin ClaudeOS-Core**:
50
+ **Sin ClaudeOS-Core** — le pides a Claude Code que cree un CRUD de Order:
43
51
  ```
44
- JPA repository (MyBatis)
45
- ❌ ResponseEntity.success() (ApiResponse.ok())
46
- ❌ order/controller/ (controller/order/)
47
- 20 min fix per file
52
+ Usa un repository estilo JPA (tu proyecto usa MyBatis)
53
+ Crea ResponseEntity.success() (tu wrapper es ApiResponse.ok())
54
+ Coloca archivos en order/controller/ (tu proyecto usa controller/order/)
55
+ Genera comentarios en inglés (tu equipo escribe comentarios en español)
56
+ → Pasas 20 minutos corrigiendo cada archivo generado
48
57
  ```
49
58
 
50
- **Con ClaudeOS-Core**:
59
+ **Con ClaudeOS-Core** — `.claude/rules/` ya contiene tus patrones confirmados:
51
60
  ```
52
- MyBatis mapper + XML (build.gradle)
53
- ✅ ApiResponse.ok() (source code)
54
- ✅ controller/order/ (Pattern A)
55
- immediate match
61
+ Genera mapper MyBatis + XML (detectado desde build.gradle)
62
+ Usa ApiResponse.ok() (extraído de tu fuente real)
63
+ Coloca archivos en controller/order/ (Patrón A confirmado por el escaneo estructural)
64
+ Comentarios en español (--lang es aplicado)
65
+ → El código generado coincide con las convenciones de tu proyecto al instante
56
66
  ```
57
67
 
58
68
  Esta diferencia se acumula. 10 tareas/día × 20 minutos ahorrados = **más de 3 horas/día**.
@@ -61,10 +71,10 @@ Esta diferencia se acumula. 10 tareas/día × 20 minutos ahorrados = **más de 3
61
71
 
62
72
  ## Stacks Soportados
63
73
 
64
- | Stack | Detección | Profundidad de Análisis |
74
+ | Stack | Detección | Profundidad de análisis |
65
75
  |---|---|---|
66
76
  | **Java / Spring Boot** | `build.gradle`, `pom.xml`, 5 patrones de paquete | 10 categorías, 59 sub-ítems |
67
- | **Kotlin / Spring Boot** | `build.gradle.kts`, kotlin plugin, `settings.gradle.kts`, CQRS/BFF auto-detect | 12 categorías, 95 sub-ítems |
77
+ | **Kotlin / Spring Boot** | `build.gradle.kts`, kotlin plugin, `settings.gradle.kts`, auto-detección CQRS/BFF | 12 categorías, 95 sub-ítems |
68
78
  | **Node.js / Express** | `package.json` | 9 categorías, 57 sub-ítems |
69
79
  | **Node.js / NestJS** | `package.json` (`@nestjs/core`) | 10 categorías, 68 sub-ítems |
70
80
  | **Next.js / React** | `package.json`, `next.config.*`, soporte FSD | 9 categorías, 55 sub-ítems |
@@ -75,10 +85,9 @@ Esta diferencia se acumula. 10 tareas/día × 20 minutos ahorrados = **más de 3
75
85
  | **Vite / React SPA** | `package.json`, `vite.config.*` | 9 categorías, 55 sub-ítems |
76
86
  | **Angular** | `package.json`, `angular.json` | 12 categorías, 78 sub-ítems |
77
87
 
78
- Detección automática: 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 — detectado de nombres de módulos), estructura multi-módulo (desde settings.gradle), monorepo (Turborepo, pnpm-workspace, Lerna, npm/yarn workspaces).
79
-
80
- **No necesitas especificar nada. Todo se detecta automáticamente.**
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).
81
89
 
90
+ **No tienes que especificar nada. Todo se detecta automáticamente.**
82
91
 
83
92
  ### Detección de Dominios Java (5 patrones con fallback)
84
93
 
@@ -92,18 +101,17 @@ Detección automática: lenguaje y versión, framework y versión (incluyendo Vi
92
101
 
93
102
  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.
94
103
 
95
-
96
104
  ### Detección de Dominios Kotlin Multi-Módulo
97
105
 
98
- Para proyectos Kotlin con estructura Gradle multi-módulo (ej: monorepo CQRS):
106
+ Para proyectos Kotlin con estructura Gradle multi-módulo (por ejemplo, monorepo CQRS):
99
107
 
100
- | Paso | Acción | Ejemplo |
108
+ | Paso | Qué hace | Ejemplo |
101
109
  |---|---|---|
102
- | 1 | Escanear `settings.gradle.kts` buscando `include()` | Encuentra 14 módulos |
103
- | 2 | Detectar tipo de módulo por nombre | `reservation-command-server` → tipo: `command` |
104
- | 3 | Extraer dominio del nombre del módulo | `reservation-command-server` → dominio: `reservation` |
105
- | 4 | Agrupar mismo dominio entre módulos | `reservation-command-server` + `common-query-server` → 1 dominio |
106
- | 5 | Detectar arquitectura | Tiene módulos `command` + `query` → CQRS |
110
+ | 1 | Escanea `settings.gradle.kts` en busca de `include()` | Encuentra 14 módulos |
111
+ | 2 | Detecta el tipo de módulo desde el nombre | `reservation-command-server` → tipo: `command` |
112
+ | 3 | Extrae el dominio del nombre del módulo | `reservation-command-server` → dominio: `reservation` |
113
+ | 4 | Agrupa el mismo dominio entre módulos | `reservation-command-server` + `common-query-server` → 1 dominio |
114
+ | 5 | Detecta la arquitectura | Tiene módulos `command` + `query` → CQRS |
107
115
 
108
116
  Tipos de módulo soportados: `command`, `query`, `bff`, `integration`, `standalone`, `library`. Las bibliotecas compartidas (`shared-lib`, `integration-lib`) se detectan como dominios especiales.
109
117
 
@@ -112,16 +120,42 @@ Tipos de módulo soportados: `command`, `query`, `bff`, `integration`, `standalo
112
120
  - **App Router**: `app/{domain}/page.tsx` (Next.js)
113
121
  - **Pages Router**: `pages/{domain}/index.tsx`
114
122
  - **FSD (Feature-Sliced Design)**: `features/*/`, `widgets/*/`, `entities/*/`
115
- - **RSC/Client split**: Detecta patrón `client.tsx`, rastrea separación Server/Client
116
- - **Rutas anidadas no estándar**: Detecta páginas, componentes y capas FSD bajo `src/*/pages/`, `src/*/components/`, `src/*/features/` (ej. `src/admin/pages/dashboard/`)
117
- - **Config fallback**: Detecta Next.js/Vite/Nuxt desde archivos de configuración (soporte monorepo)
118
- - **Fallback de directorios profundos**: Para proyectos React/CRA/Vite/Vue/RN, escanea `**/components/*/`, `**/views/*/`, `**/screens/*/`, `**/containers/*/`, `**/pages/*/`, `**/routes/*/`, `**/modules/*/`, `**/domains/*/` a cualquier profundidad
123
+ - **División RSC/Client**: Detecta el patrón `client.tsx`, realiza seguimiento de la separación de componentes Server/Client
124
+ - **Rutas anidadas no estándar**: Detecta pages, components y capas FSD bajo rutas `src/*/` (ej: `src/admin/pages/dashboard/`, `src/admin/components/form/`, `src/admin/features/billing/`)
125
+ - **Detección platform/tier-split (v2.0.0)**: Reconoce layouts `src/{platform}/{subapp}/` — `{platform}` puede ser una palabra clave de dispositivo/objetivo (`desktop`, `pc`, `web`, `mobile`, `mc`, `mo`, `sp`, `tablet`, `tab`, `pwa`, `tv`, `ctv`, `ott`, `watch`, `wear`) o una palabra clave de nivel de acceso (`admin`, `cms`, `backoffice`, `back-office`, `portal`). Emite un dominio por cada par `(platform, subapp)` con el nombre `{platform}-{subapp}` y recuentos por dominio para routes/components/layouts/hooks. Se ejecuta simultáneamente sobre Angular, Next.js, React y Vue (glob multi-extensión `{tsx,jsx,ts,js,vue}`). Requiere ≥2 archivos fuente por subapp para evitar dominios ruidosos de 1 solo archivo.
126
+ - **División por plataforma en monorepo (v2.0.0)**: El escaneo de plataforma también coincide con `{apps,packages}/*/src/{platform}/{subapp}/` (Turborepo/pnpm workspace con `src/`) y `{apps,packages}/{platform}/{subapp}/` (workspaces sin envoltorio `src/`).
127
+ - **Fallback E — archivo de rutas (v2.0.0)**: Cuando los escáneres principales + los fallbacks A–D devuelven 0, hace un glob `**/routes/*.{tsx,jsx,ts,js,vue}` y agrupa por el nombre del directorio padre de `routes`. Captura proyectos de enrutamiento por archivo con React Router (CRA/Vite + `react-router`) que no encajan en los layouts `page.tsx` de Next.js ni de FSD. Se filtran los nombres de padre genéricos (`src`, `app`, `pages`).
128
+ - **Fallback de configuración**: Detecta Next.js/Vite/Nuxt desde archivos de configuración cuando no están en `package.json` (soporte de monorepo)
129
+ - **Fallback de directorio profundo**: Para proyectos React/CRA/Vite/Vue/RN, escanea `**/components/*/`, `**/views/*/`, `**/screens/*/`, `**/containers/*/`, `**/pages/*/`, `**/routes/*/`, `**/modules/*/`, `**/domains/*/` a cualquier profundidad
130
+ - **Listas de ignorados compartidas (v2.0.0)**: Todos los escáneres comparten `BUILD_IGNORE_DIRS` (`node_modules`, `build`, `dist`, `out`, `.next`, `.nuxt`, `.svelte-kit`, `.angular`, `.turbo`, `.cache`, `.parcel-cache`, `coverage`, `storybook-static`, `.vercel`, `.netlify`) y `TEST_FILE_IGNORE` (spec/test/stories/e2e/cy + `__snapshots__`/`__tests__`) para que los resultados de build y las fixtures de test no inflen los recuentos por dominio.
131
+
132
+ ### Overrides de escáner (v2.0.0)
133
+
134
+ Coloca un `.claudeos-scan.json` opcional en la raíz de tu proyecto para extender los valores por defecto del escáner sin modificar el toolkit. Todos los campos son **aditivos** — las entradas del usuario extienden los valores por defecto, nunca los reemplazan:
135
+
136
+ ```json
137
+ {
138
+ "frontendScan": {
139
+ "platformKeywords": ["kiosk"],
140
+ "skipSubappNames": ["legacy"],
141
+ "minSubappFiles": 3
142
+ }
143
+ }
144
+ ```
145
+
146
+ | Campo | Por defecto | Propósito |
147
+ |---|---|---|
148
+ | `platformKeywords` | lista integrada indicada arriba | Palabras clave `{platform}` adicionales para el escaneo de plataforma (ej: `kiosk`, `vr`, `embedded`) |
149
+ | `skipSubappNames` | solo directorios estructurales | Nombres de subapp adicionales para excluir de la emisión de dominios del escaneo de plataforma |
150
+ | `minSubappFiles` | `2` | Anula el recuento mínimo de archivos requerido para que un subapp se convierta en dominio |
151
+
152
+ Archivo ausente o JSON mal formado → cae silenciosamente a los valores por defecto (no crashea). Uso típico: activar una abreviatura corta (`adm`, `bo`) que la lista integrada excluye por ser demasiado ambigua, o aumentar `minSubappFiles` para monorepos ruidosos.
119
153
 
120
154
  ---
121
155
 
122
156
  ## Inicio Rápido
123
157
 
124
- ### Requisitos Previos
158
+ ### Prerrequisitos
125
159
 
126
160
  - **Node.js** v18+
127
161
  - **Claude Code CLI** (instalado y autenticado)
@@ -131,7 +165,7 @@ Tipos de módulo soportados: `command`, `query`, `bff`, `integration`, `standalo
131
165
  ```bash
132
166
  cd /your/project/root
133
167
 
134
- # Opción A: npx (recomendado — sin instalación)
168
+ # Opción A: npx (recomendado — no requiere instalación)
135
169
  npx claudeos-core init
136
170
 
137
171
  # Opción B: instalación global
@@ -148,13 +182,13 @@ git clone https://github.com/claudeos-core/claudeos-core.git claudeos-core-tools
148
182
  # Multiplataforma (PowerShell, CMD, Bash, Zsh — cualquier terminal)
149
183
  node claudeos-core-tools/bin/cli.js init
150
184
 
151
- # Solo Linux/macOS (solo Bash)
185
+ # Linux/macOS (solo Bash)
152
186
  bash claudeos-core-tools/bootstrap.sh
153
187
  ```
154
188
 
155
189
  ### Idioma de salida (10 idiomas)
156
190
 
157
- Al ejecutar `init` sin `--lang`, aparece un selector interactivo con teclas de flecha o teclas numéricas:
191
+ Cuando ejecutas `init` sin `--lang`, aparece un selector interactivo usa las flechas o las teclas numéricas para elegir:
158
192
 
159
193
  ```
160
194
  ╔══════════════════════════════════════════════════╗
@@ -165,31 +199,36 @@ Al ejecutar `init` sin `--lang`, aparece un selector interactivo con teclas de f
165
199
  Skills, Guides) se escribirán en español.
166
200
 
167
201
  1. en — English
168
- ...
202
+ 2. ko — 한국어 (Korean)
203
+ 3. zh-CN — 简体中文 (Chinese Simplified)
204
+ 4. ja — 日本語 (Japanese)
169
205
  ❯ 5. es — Español (Spanish)
170
- ...
206
+ 6. vi — Tiếng Việt (Vietnamese)
207
+ 7. hi — हिन्दी (Hindi)
208
+ 8. ru — Русский (Russian)
209
+ 9. fr — Français (French)
210
+ 10. de — Deutsch (German)
171
211
 
172
212
  ↑↓ Move 1-0 Jump Enter Select ESC Cancel
173
213
  ```
174
214
 
175
- La descripción cambia al idioma seleccionado al navegar. Para saltar el selector:
215
+ La descripción cambia al idioma seleccionado a medida que navegas. Para saltarte el selector, pasa `--lang` directamente:
176
216
 
177
217
  ```bash
178
- npx claudeos-core init --lang es # Español
179
- npx claudeos-core init --lang en # English
180
- npx claudeos-core init --lang ko # 한국어
218
+ npx claudeos-core init --lang ko # Coreano
219
+ npx claudeos-core init --lang ja # Japonés
220
+ npx claudeos-core init --lang en # Inglés (por defecto)
181
221
  ```
182
222
 
183
- > **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.
223
+ > **Nota:** Esto establece el idioma solo para los archivos de documentación generados. El análisis de código (Pass 1–2) siempre se ejecuta en inglés; la salida generada (Pass 3) se escribe en el idioma elegido. Los ejemplos de código dentro de los archivos generados mantienen la sintaxis original del lenguaje de programación.
184
224
 
185
- Eso es todo. Después de 5–18 minutos, toda la documentación estará generada y lista para usar.
186
- El CLI muestra una barra de progreso con porcentaje, tiempo transcurrido y tiempo estimado restante para cada Pass.
225
+ Eso es todo. Después de 5–20 minutos (Pass 1×N + Pass 2 + Pass 3 + Pass 4 memory scaffolding), toda la documentación se genera y queda lista para usar. La CLI muestra una barra de progreso con porcentaje, tiempo transcurrido y ETA para cada pass.
187
226
 
188
227
  ### Instalación Manual Paso a Paso
189
228
 
190
- Si deseas control total sobre cada fase, o si el pipeline automatizado falla en algún paso, puedes ejecutar cada etapa manualmente. También es útil para entender cómo funciona ClaudeOS-Core internamente.
229
+ Si quieres control total sobre cada fase o si el pipeline automatizado falla en algún paso puedes ejecutar cada etapa manualmente. Esto también sirve para entender cómo funciona ClaudeOS-Core internamente.
191
230
 
192
- #### Step 1: Clonar e instalar dependencias
231
+ #### Paso 1: Clonar e instalar dependencias
193
232
 
194
233
  ```bash
195
234
  cd /your/project/root
@@ -198,11 +237,11 @@ git clone https://github.com/claudeos-core/claudeos-core.git claudeos-core-tools
198
237
  cd claudeos-core-tools && npm install && cd ..
199
238
  ```
200
239
 
201
- #### Step 2: Crear estructura de directorios
240
+ #### Paso 2: Crear la estructura de directorios
202
241
 
203
242
  ```bash
204
- # Rules
205
- mkdir -p .claude/rules/{00.core,10.backend,20.frontend,30.security-db,40.infra,50.sync}
243
+ # Rules (v2.0.0: añadido 60.memory)
244
+ mkdir -p .claude/rules/{00.core,10.backend,20.frontend,30.security-db,40.infra,50.sync,60.memory}
206
245
 
207
246
  # Standards
208
247
  mkdir -p claudeos-core/standard/{00.core,10.backend-api,20.frontend-ui,30.security-db,40.infra,50.verification,90.optional}
@@ -210,108 +249,149 @@ mkdir -p claudeos-core/standard/{00.core,10.backend-api,20.frontend-ui,30.securi
210
249
  # Skills
211
250
  mkdir -p claudeos-core/skills/{00.shared,10.backend-crud/scaffold-crud-feature,20.frontend-page/scaffold-page-feature,50.testing,90.experimental}
212
251
 
213
- # Guide, Plan, Database, MCP, Generated
252
+ # Guide, Plan, Database, MCP, Generated, Memory (v2.0.0: añadido memory)
214
253
  mkdir -p claudeos-core/guide/{01.onboarding,02.usage,03.troubleshooting,04.architecture}
215
- mkdir -p claudeos-core/{plan,database,mcp-guide,generated}
254
+ mkdir -p claudeos-core/{plan,database,mcp-guide,generated,memory}
216
255
  ```
217
256
 
218
- #### Step 3: Ejecutar plan-installer (análisis del proyecto)
257
+ #### Paso 3: Ejecutar plan-installer (análisis del proyecto)
219
258
 
220
- Escanea tu proyecto, detecta el stack, encuentra dominios, los divide en grupos y genera prompts.
259
+ Esto escanea tu proyecto, detecta el stack, encuentra dominios, los divide en grupos y genera prompts.
221
260
 
222
261
  ```bash
223
262
  node claudeos-core-tools/plan-installer/index.js
224
263
  ```
225
264
 
226
- **Salida (`claudeos-core/generated/`):**
265
+ **Salida (en `claudeos-core/generated/`):**
227
266
  - `project-analysis.json` — stack detectado, dominios, info de frontend
228
267
  - `domain-groups.json` — grupos de dominios para Pass 1
229
268
  - `pass1-backend-prompt.md` / `pass1-frontend-prompt.md` — prompts de análisis
230
- - `pass2-prompt.md` — prompt de fusión
231
- - `pass3-prompt.md` — prompt de generación
269
+ - `pass2-prompt.md` — prompt de merge
270
+ - `pass3-prompt.md` — prompt de generación (envuelto con la directiva `staging-override.md` — ver nota en el Paso 6)
271
+ - `pass4-prompt.md` — prompt de scaffolding de memory L4 (v2.0.0; usa el mismo `staging-override.md` para las escrituras de reglas `60.memory/`)
232
272
 
233
273
  Puedes inspeccionar estos archivos para verificar la precisión de la detección antes de continuar.
234
274
 
235
- #### Step 4: Pass 1 — Análisis profundo de código por grupo de dominio
275
+ #### Paso 4: Pass 1 — Análisis profundo del código (por grupo de dominios)
236
276
 
237
- Ejecuta Pass 1 para cada grupo de dominio. Revisa `domain-groups.json` para el número de grupos.
277
+ Ejecuta Pass 1 por cada grupo de dominios. Consulta `domain-groups.json` para saber cuántos grupos hay.
238
278
 
239
279
  ```bash
240
- # Check groups
280
+ # Comprueba cuántos grupos hay
241
281
  cat claudeos-core/generated/domain-groups.json | node -e "
242
282
  const g = JSON.parse(require('fs').readFileSync('/dev/stdin','utf-8'));
243
283
  g.groups.forEach((g,i) => console.log('Group '+(i+1)+': ['+g.domains.join(', ')+'] ('+g.type+', ~'+g.estimatedFiles+' files)'));
244
284
  "
245
285
 
246
- # Run Pass 1 for group 1:
247
- cp claudeos-core/generated/pass1-backend-prompt.md /tmp/_pass1.md
248
- DOMAIN_LIST="user, order, product" PASS_NUM=1 \
249
- perl -pi -e 's/\{\{DOMAIN_GROUP\}\}/$ENV{DOMAIN_LIST}/g; s/\{\{PASS_NUM\}\}/$ENV{PASS_NUM}/g' /tmp/_pass1.md
250
- cat /tmp/_pass1.md | claude -p --dangerously-skip-permissions
286
+ # Ejecuta Pass 1 para cada grupo (reemplaza los dominios y el número de grupo)
287
+ # Nota: v1.6.1+ usa String.replace() de Node.js en vez de perl — perl ya
288
+ # no es necesario, y la semántica de funciones de reemplazo previene la inyección
289
+ # regex de los caracteres $/&/$1 que pudieran aparecer en los nombres de dominio.
290
+ #
291
+ # Para el grupo 1:
292
+ DOMAIN_LIST="user, order, product" PASS_NUM=1 node -e "
293
+ const fs = require('fs');
294
+ const tpl = fs.readFileSync('claudeos-core/generated/pass1-backend-prompt.md','utf-8');
295
+ const out = tpl
296
+ .replace(/\{\{DOMAIN_GROUP\}\}/g, () => process.env.DOMAIN_LIST)
297
+ .replace(/\{\{PASS_NUM\}\}/g, () => process.env.PASS_NUM);
298
+ process.stdout.write(out);
299
+ " | claude -p --dangerously-skip-permissions
300
+
301
+ # Para el grupo 2 (si existe):
302
+ DOMAIN_LIST="payment, system, delivery" PASS_NUM=2 node -e "
303
+ const fs = require('fs');
304
+ const tpl = fs.readFileSync('claudeos-core/generated/pass1-backend-prompt.md','utf-8');
305
+ const out = tpl
306
+ .replace(/\{\{DOMAIN_GROUP\}\}/g, () => process.env.DOMAIN_LIST)
307
+ .replace(/\{\{PASS_NUM\}\}/g, () => process.env.PASS_NUM);
308
+ process.stdout.write(out);
309
+ " | claude -p --dangerously-skip-permissions
310
+
311
+ # Para grupos frontend, sustituye pass1-backend-prompt.md → pass1-frontend-prompt.md
312
+ ```
313
+
314
+ **Verificar:** `ls claudeos-core/generated/pass1-*.json` debería mostrar un JSON por grupo.
315
+
316
+ #### Paso 5: Pass 2 — Combinar resultados del análisis
251
317
 
252
- # Para grupos frontend, use pass1-frontend-prompt.md
318
+ ```bash
319
+ cat claudeos-core/generated/pass2-prompt.md \
320
+ | claude -p --dangerously-skip-permissions
253
321
  ```
254
322
 
255
- **Verificar:** `ls claudeos-core/generated/pass1-*.json` debe mostrar un JSON por grupo.
323
+ **Verificar:** `claudeos-core/generated/pass2-merged.json` debe existir con 9+ claves de nivel superior.
256
324
 
257
- #### Step 5: Pass 2Fusionar resultados de análisis
325
+ #### Paso 6: Pass 3Generar toda la documentación
258
326
 
259
327
  ```bash
260
- cat claudeos-core/generated/pass2-prompt.md \
328
+ cat claudeos-core/generated/pass3-prompt.md \
261
329
  | claude -p --dangerously-skip-permissions
262
330
  ```
263
331
 
264
- **Verificar:** `claudeos-core/generated/pass2-merged.json` debe existir con 9+ claves de nivel superior.
332
+ **Verificar:** `CLAUDE.md` debe existir en la raíz de tu proyecto, y debe escribirse el marcador `claudeos-core/generated/pass3-complete.json`.
265
333
 
266
- #### Step 6: Pass 3 Generar toda la documentación
334
+ > **Nota (v2.0.0):** Pass 3 escribe los archivos de reglas primero en `claudeos-core/generated/.staged-rules/` porque la política de rutas sensibles de Claude Code bloquea las escrituras directas a `.claude/`. El pipeline automatizado (`npx claudeos-core init`) gestiona el movimiento automáticamente. Si ejecutas este paso manualmente, tendrás que mover el árbol staged tú mismo: `mv claudeos-core/generated/.staged-rules/* .claude/rules/` (preservando los sub-paths).
335
+
336
+ #### Paso 7: Pass 4 — Scaffolding de memory
267
337
 
268
338
  ```bash
269
- cat claudeos-core/generated/pass3-prompt.md \
339
+ cat claudeos-core/generated/pass4-prompt.md \
270
340
  | claude -p --dangerously-skip-permissions
271
341
  ```
272
342
 
273
- **Verificar:** `CLAUDE.md` debe existir en la raíz del proyecto.
343
+ **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, `claudeos-core/plan/50.memory-master.md` debe existir, y `CLAUDE.md` debe tener ahora una sección `## Memory (L4)` añadida. Marcador: `claudeos-core/generated/pass4-memory.json`.
274
344
 
275
- #### Step 7: Ejecutar herramientas de verificación
345
+ > **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.
346
+
347
+ #### Paso 8: Ejecutar las herramientas de verificación
276
348
 
277
349
  ```bash
278
- # Generar metadatos (requerido antes de otras verificaciones)
350
+ # Generar metadata (requerido antes de otras comprobaciones)
279
351
  node claudeos-core-tools/manifest-generator/index.js
280
352
 
281
- # Ejecutar todas las verificaciones
353
+ # Ejecutar todas las comprobaciones
282
354
  node claudeos-core-tools/health-checker/index.js
283
355
 
284
- # O ejecutar verificaciones individuales:
285
- node claudeos-core-tools/plan-validator/index.js --check # Plan ↔ disk
286
- node claudeos-core-tools/sync-checker/index.js # Sync status
287
- node claudeos-core-tools/content-validator/index.js # Content quality
288
- node claudeos-core-tools/pass-json-validator/index.js # JSON format
356
+ # O ejecutar comprobaciones individuales:
357
+ node claudeos-core-tools/plan-validator/index.js --check # Consistencia Plan ↔ disco
358
+ node claudeos-core-tools/sync-checker/index.js # Archivos no registrados/huérfanos
359
+ node claudeos-core-tools/content-validator/index.js # Comprobaciones de calidad de archivos (incl. sección memory/ [9/9])
360
+ node claudeos-core-tools/pass-json-validator/index.js # Comprobaciones de JSON Pass 1–4 + marcador de finalización
289
361
  ```
290
362
 
291
- #### Step 8: Verificar los resultados
363
+ #### Paso 9: Verificar los resultados
292
364
 
293
365
  ```bash
366
+ # Contar archivos generados
294
367
  find .claude claudeos-core -type f | grep -v node_modules | grep -v '/generated/' | wc -l
368
+
369
+ # Revisar CLAUDE.md
295
370
  head -30 CLAUDE.md
371
+
372
+ # Revisar un archivo standard
373
+ cat claudeos-core/standard/00.core/01.project-overview.md | head -20
374
+
375
+ # Revisar reglas
296
376
  ls .claude/rules/*/
297
377
  ```
298
378
 
299
- > **Consejo:** Si un paso falla, puedes volver a ejecutar solo ese paso. Los resultados de Pass 1/2 se cachean — si `pass1-N.json` o `pass2-merged.json` ya existen, el pipeline automatizado los omite. Usa `npx claudeos-core init --force` para eliminar resultados anteriores y empezar de nuevo.
379
+ > **Consejo:** Si algún paso falla, puedes corregir el problema y volver a ejecutar solo ese paso. Los resultados de Pass 1/2 se cachean — si `pass1-N.json` o `pass2-merged.json` ya existe, el pipeline automatizado los omite. Usa `npx claudeos-core init --force` para eliminar resultados previos y empezar desde cero.
300
380
 
301
- ### Empieza a Usar
381
+ ### Empezar a Usar
302
382
 
303
383
  ```
304
- # En Claude Code — simplemente habla de forma natural:
305
- "Crea un CRUD para el dominio de pedidos"
306
- "Añade una API de autenticación de usuarios"
307
- "Refactoriza este código según los patrones del proyecto"
384
+ # En Claude Code — simplemente pregunta de forma natural:
385
+ "Crea un CRUD para el dominio order"
386
+ "Añade un API de autenticación de usuarios"
387
+ "Refactoriza este código para que coincida con los patrones del proyecto"
308
388
 
309
389
  # Claude Code referencia automáticamente tus Standards, Rules y Skills generados.
310
390
  ```
311
391
 
312
392
  ---
313
393
 
314
- ## Cómo Funciona — Pipeline de 3 Pasadas
394
+ ## Cómo Funciona — Pipeline de 4 Passes
315
395
 
316
396
  ```
317
397
  npx claudeos-core init
@@ -319,31 +399,39 @@ npx claudeos-core init
319
399
  ├── [1] npm install ← Dependencias (~10s)
320
400
  ├── [2] Estructura de directorios ← Crear carpetas (~1s)
321
401
  ├── [3] plan-installer (Node.js) ← Escaneo del proyecto (~5s)
322
- │ ├── Auto-detección de stack (multi-stack)
323
- │ ├── Extracción de lista de dominios (etiquetados: backend/frontend)
324
- │ ├── División en grupos de dominios (por tipo)
325
- │ └── Selección de prompts específicos por stack (por tipo)
402
+ │ ├── Auto-detecta stack (multi-stack aware)
403
+ │ ├── Extrae la lista de dominios (tagged: backend/frontend)
404
+ │ ├── Divide en grupos de dominios (por tipo)
405
+ │ └── Selecciona prompts específicos del stack (por tipo)
406
+
407
+ ├── [4] Pass 1 × N (claude -p) ← Análisis profundo del código (~2-8min)
408
+ │ ├── ⚙️ Grupos backend → prompt específico de backend
409
+ │ └── 🎨 Grupos frontend → prompt específico de frontend
326
410
 
327
- ├── [4] Pass 1 × N (claude -p) ← Análisis profundo de código (~2-8min)
328
- ├── ⚙️ Grupos backend prompt de análisis backend
329
- │ └── 🎨 Grupos frontend → prompt de análisis frontend
411
+ ├── [5] Pass 2 × 1 (claude -p) ← Merge del análisis (~1min)
412
+ └── Consolida TODOS los resultados de Pass 1 (backend + frontend)
330
413
 
331
- ├── [5] Pass 2 × 1 (claude -p) ← Fusión de análisis (~1min)
332
- │ └── Consolidar TODOS los resultados de Pass 1 (backend + frontend)
414
+ ├── [6] Pass 3 × 1 (claude -p) ← Genera todo (~3-5min)
415
+ │ └── Prompt combinado (targets backend + frontend)
333
416
 
334
- ├── [6] Pass 3 × 1 (claude -p) ← Generar todo (~3-5min)
335
- └── Prompt combinado (objetivos backend + frontend)
417
+ ├── [7] Pass 4 × 1 (claude -p) ← Memory scaffolding (~30s)
418
+ ├── Seedea memory/ (decision-log, failure-patterns, )
419
+ │ ├── Genera reglas 60.memory/
420
+ │ ├── Añade la sección "Memory (L4)" al CLAUDE.md
421
+ │ └── Construye el plan 50.memory-master.md
336
422
 
337
- └── [7] Verificación ← Ejecución automática del health checker
423
+ └── [8] Verificación ← Auto-ejecuta el health checker
338
424
  ```
339
425
 
340
- ### ¿Por Qué 3 Pasadas?
426
+ ### ¿Por qué 4 Passes?
341
427
 
342
- **Pass 1** es la única pasada que lee tu código fuente. Selecciona archivos representativos por dominio y extrae patrones en 55–95 categorías de análisis (por stack). Para proyectos grandes, Pass 1 se ejecuta múltiples veces — una por grupo de dominios. En proyectos multi-stack (ej: backend Java + frontend React), backend y frontend usan **prompts de análisis diferentes** adaptados a cada stack.
428
+ **Pass 1** es el único pass que lee tu código fuente. Selecciona archivos representativos por dominio y extrae patrones de 55–95 categorías de análisis (según el stack). Para proyectos grandes, Pass 1 se ejecuta varias veces — una por cada grupo de dominios. En proyectos multi-stack (por ejemplo, Java backend + React frontend), los dominios backend y frontend usan **prompts de análisis diferentes** adaptados a cada stack.
343
429
 
344
- **Pass 2** fusiona todos los resultados de Pass 1 en un análisis unificado: patrones comunes (100% compartidos), patrones mayoritarios (50%+ compartidos), patrones específicos de dominio, anti-patrones por severidad y preocupaciones transversales (nombrado, seguridad, BD, testing, logging, rendimiento).
430
+ **Pass 2** combina todos los resultados de Pass 1 en un análisis unificado: patrones comunes (100% compartidos), patrones mayoritarios (50%+ compartidos), patrones específicos de dominio, anti-patrones por severidad y preocupaciones transversales (naming, seguridad, BD, testing, logging, rendimiento). Los resultados de backend y frontend se combinan.
345
431
 
346
- **Pass 3** toma el análisis fusionado y genera todo el ecosistema de archivos. Nunca lee código fuente — solo el JSON de análisis. En modo multi-stack, el prompt de generación combina los objetivos de backend y frontend para generar ambos conjuntos de estándares en una sola pasada.
432
+ **Pass 3** toma el análisis combinado y genera todo el ecosistema de archivos (CLAUDE.md, reglas, standards, skills, guides). Nunca lee código fuente — solo el JSON de análisis. En modo multi-stack, el prompt de generación combina los targets de backend y frontend para que ambos conjuntos de standards se generen en un solo pass.
433
+
434
+ **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.
347
435
 
348
436
  ---
349
437
 
@@ -355,40 +443,81 @@ your-project/
355
443
  ├── CLAUDE.md ← Punto de entrada de Claude Code
356
444
 
357
445
  ├── .claude/
358
- │ └── rules/ ← Reglas activadas por Glob
446
+ │ └── rules/ ← Reglas disparadas por glob
359
447
  │ ├── 00.core/
360
448
  │ ├── 10.backend/
361
449
  │ ├── 20.frontend/
362
450
  │ ├── 30.security-db/
363
451
  │ ├── 40.infra/
364
- └── 50.sync/ ← Reglas de recordatorio de sincronización
452
+ ├── 50.sync/ ← Reglas de recordatorio de sync
453
+ │ └── 60.memory/ ← Reglas de scope on-demand de memory L4 (v2.0.0)
365
454
 
366
455
  ├── claudeos-core/ ← Directorio principal de salida
367
- │ ├── generated/ ← JSON de análisis + prompts dinámicos
368
- │ ├── standard/ Estándares de código (15-19 archivos)
456
+ │ ├── generated/ ← JSON de análisis + prompts dinámicos + marcadores de Pass (añadir a gitignore)
457
+ ├── project-analysis.json Info del stack (multi-stack aware)
458
+ │ │ ├── domain-groups.json ← Grupos con type: backend/frontend
459
+ │ │ ├── pass1-backend-prompt.md ← Prompt de análisis backend
460
+ │ │ ├── pass1-frontend-prompt.md ← Prompt de análisis frontend (si detectado)
461
+ │ │ ├── pass2-prompt.md ← Prompt de merge
462
+ │ │ ├── pass3-prompt.md ← Prompt de generación (combinado)
463
+ │ │ ├── pass4-prompt.md ← Prompt de scaffolding de memory (v2.0.0)
464
+ │ │ ├── pass3-complete.json ← Marcador de finalización de Pass 3 (salta en resume)
465
+ │ │ ├── pass4-memory.json ← Marcador de finalización de Pass 4 (salta en resume)
466
+ │ │ ├── .i18n-cache-<lang>.json ← Caché de traducción (no inglés `--lang`)
467
+ │ │ └── .staged-rules/ ← Dir de staging transitorio para escrituras de `.claude/rules/` (auto-movido + limpiado)
468
+ │ ├── standard/ ← Estándares de codificación (15-19 archivos)
469
+ │ │ ├── 00.core/ ← Visión general, arquitectura, naming
470
+ │ │ ├── 10.backend-api/ ← Patrones de API (específicos del stack)
471
+ │ │ ├── 20.frontend-ui/ ← Patrones frontend (si detectado)
472
+ │ │ ├── 30.security-db/ ← Seguridad, esquema BD, utilidades
473
+ │ │ ├── 40.infra/ ← Config, logging, CI/CD
474
+ │ │ ├── 50.verification/ ← Build verification, testing
475
+ │ │ └── 90.optional/ ← Convenciones opcionales (extras específicos del stack)
369
476
  │ ├── skills/ ← Skills de scaffolding CRUD
370
477
  │ ├── guide/ ← Onboarding, FAQ, troubleshooting (9 archivos)
371
- │ ├── plan/ ← Master Plans (backup/restauración)
372
- │ ├── database/ ← Esquema BD, guía de migración
373
- └── mcp-guide/ ← Guía de integración de servidor MCP
478
+ │ ├── plan/ ← Master plans (backup/restore)
479
+ │ ├── database/ ← Esquema de BD, guía de migración
480
+ ├── mcp-guide/ ← Guía de integración de servidor MCP
481
+ │ └── memory/ ← L4: conocimiento de equipo (4 archivos) — commitea estos
482
+ │ ├── decision-log.md ← El "porqué" detrás de las decisiones de diseño
483
+ │ ├── failure-patterns.md ← Errores recurrentes y sus fixes (auto-scored — `npx claudeos-core memory score`)
484
+ │ ├── compaction.md ← Estrategia de compaction de 4 etapas (ejecuta `npx claudeos-core memory compact`)
485
+ │ └── auto-rule-update.md ← Propuestas de mejora de reglas (`npx claudeos-core memory propose-rules`)
374
486
 
375
487
  └── claudeos-core-tools/ ← Este toolkit (no modificar)
376
488
  ```
377
489
 
378
- Cada archivo de estándar incluye ejemplos correctos, ejemplos incorrectos y una tabla resumen de reglas — todo derivado de tus patrones de código reales, no de plantillas genéricas.
490
+ Cada archivo standard incluye ejemplos correctos, ejemplos incorrectos y una tabla resumen de reglas — todo derivado de los patrones reales de tu código, no de plantillas genéricas.
491
+
492
+ ### Recomendaciones de gitignore
493
+
494
+ **Sí commitear** (conocimiento de equipo — pensado para compartir):
495
+ - `CLAUDE.md` — punto de entrada de Claude Code
496
+ - `.claude/rules/**` — reglas auto-cargadas
497
+ - `claudeos-core/standard/**`, `skills/**`, `guide/**`, `database/**`, `mcp-guide/**`, `plan/**` — documentación generada
498
+ - `claudeos-core/memory/**` — historial de decisiones, patrones de fallo, propuestas de reglas
499
+
500
+ **NO commitear** (artefactos de build regenerables):
501
+
502
+ ```gitignore
503
+ # ClaudeOS-Core — análisis generado y caché de traducción
504
+ claudeos-core/generated/
505
+ ```
506
+
507
+ El directorio `generated/` contiene el JSON de análisis (`pass1-*.json`, `pass2-merged.json`), prompts (`pass1/2/3/4-prompt.md`), marcadores de finalización de Pass (`pass3-complete.json`, `pass4-memory.json`), caché de traducción (`.i18n-cache-<lang>.json`) y el directorio transitorio de staging (`.staged-rules/`) — todo reconstruible volviendo a ejecutar `npx claudeos-core init`.
379
508
 
380
509
  ---
381
510
 
382
- ## Auto-escalado por Tamaño de Proyecto
511
+ ## Auto-escalado por Tamaño del Proyecto
383
512
 
384
- | Tamaño | Dominios | Ejecuciones Pass 1 | Total `claude -p` | Tiempo Est. |
513
+ | Tamaño | Dominios | Ejecuciones de Pass 1 | Total `claude -p` | Tiempo Est. |
385
514
  |---|---|---|---|---|
386
- | Pequeño | 1–4 | 1 | 3 | ~5min |
387
- | Mediano | 5–8 | 2 | 4 | ~8min |
388
- | Grande | 9–16 | 3–4 | 56 | ~12min |
389
- | Extra Grande | 17+ | 5+ | 7+ | ~18min+ |
515
+ | Pequeño | 1–4 | 1 | 4 (Pass 1 + 2 + 3 + 4) | ~5–6min |
516
+ | Medio | 5–8 | 2 | 5 | ~8–9min |
517
+ | Grande | 9–16 | 3–4 | 67 | ~12–13min |
518
+ | XL | 17+ | 5+ | 8+ | ~18min+ |
390
519
 
391
- Para proyectos multi-stack (ej: Java + React), los dominios de backend y frontend se cuentan juntos. Un proyecto con 6 dominios backend + 4 frontend = 10 total, escalando como "Grande".
520
+ Pass 4 (memory scaffolding) añade ~30s sobre los passes de análisis. 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, escalando como "Grande".
392
521
 
393
522
  ---
394
523
 
@@ -397,161 +526,230 @@ Para proyectos multi-stack (ej: Java + React), los dominios de backend y fronten
397
526
  ClaudeOS-Core incluye 5 herramientas de verificación integradas que se ejecutan automáticamente después de la generación:
398
527
 
399
528
  ```bash
400
- # Ejecutar todas las verificaciones a la vez (recomendado)
529
+ # Ejecutar todas las comprobaciones a la vez (recomendado)
401
530
  npx claudeos-core health
402
531
 
403
532
  # Comandos individuales
404
533
  npx claudeos-core validate # Comparación Plan ↔ disco
405
- npx claudeos-core refresh # Sincronización Disco → Plan
406
- npx claudeos-core restore # Restauración Plan → Disco
534
+ npx claudeos-core refresh # Sync Disco → Plan
535
+ npx claudeos-core restore # Restore Plan → Disco
536
+
537
+ # O usar node directamente (usuarios de git clone)
538
+ node claudeos-core-tools/health-checker/index.js
539
+ node claudeos-core-tools/manifest-generator/index.js
540
+ node claudeos-core-tools/plan-validator/index.js --check
541
+ node claudeos-core-tools/sync-checker/index.js
407
542
  ```
408
543
 
409
- | Herramienta | Función |
544
+ | Herramienta | Qué hace |
410
545
  |---|---|
411
- | **manifest-generator** | Construye JSON de metadatos (rule-manifest, sync-map, plan-manifest) |
412
- | **plan-validator** | Compara bloques `<file>` del Master Plan con el disco — 3 modos: check, refresh, restore |
413
- | **sync-checker** | Detecta archivos no registrados (en disco pero no en plan) y entradas huérfanas |
414
- | **content-validator** | Valida calidad de archivos — archivos vacíos, ejemplos ✅/❌ faltantes, secciones requeridas |
415
- | **pass-json-validator** | Valida estructura JSON de Pass 1–3, claves requeridas y completitud de secciones |
546
+ | **manifest-generator** | Construye el JSON de metadata (rule-manifest, sync-map, plan-manifest); indexa 7 directorios incluyendo `memory/` (`totalMemory` en summary) |
547
+ | **plan-validator** | Compara los bloques `<file>` del Master Plan con el disco — 3 modos: check, refresh, restore |
548
+ | **sync-checker** | Detecta archivos no registrados (en disco pero no en el plan) y entradas huérfanas — cubre 7 directorios (añadido `memory/` en v2.0.0) |
549
+ | **content-validator** | Comprobación de calidad en 9 secciones — archivos vacíos, ejemplos ✅/❌ ausentes, secciones requeridas, más integridad del scaffold de memory L4 (fechas de encabezados de decision-log, campos requeridos de failure-pattern, parsing fence-aware) |
550
+ | **pass-json-validator** | Valida la estructura del JSON de Pass 1–4 más los marcadores de finalización `pass3-complete.json` y `pass4-memory.json` |
416
551
 
417
552
  ---
418
553
 
419
- ## Cómo Claude Code Usa tu Documentación
554
+ ## Cómo Usa Claude Code tu Documentación
420
555
 
421
- Así es como Claude Code lee la documentación generada por ClaudeOS-Core:
556
+ ClaudeOS-Core genera documentación que Claude Code realmente lee así es cómo:
422
557
 
423
- ### Archivos que se leen automáticamente
558
+ ### Qué lee Claude Code automáticamente
424
559
 
425
560
  | Archivo | Cuándo | Garantizado |
426
561
  |---|---|---|
427
- | `CLAUDE.md` | Al inicio de cada conversación | Siempre |
428
- | `.claude/rules/00.core/*` | Al editar archivos (`paths: ["**/*"]`) | Siempre |
429
- | `.claude/rules/10.backend/*` | Al editar archivos (`paths: ["**/*"]`) | Siempre |
430
- | `.claude/rules/30.security-db/*` | Al editar archivos (`paths: ["**/*"]`) | Siempre |
431
- | `.claude/rules/40.infra/*` | Solo al editar archivos config/infra (paths con alcance) | Condicional |
432
- | `.claude/rules/50.sync/*` | Solo al editar archivos claudeos-core (paths con alcance) | Condicional |
562
+ | `CLAUDE.md` | En el inicio de cada conversación | Siempre |
563
+ | `.claude/rules/00.core/*` | Cuando se edita cualquier archivo (`paths: ["**/*"]`) | Siempre |
564
+ | `.claude/rules/10.backend/*` | Cuando se edita cualquier archivo (`paths: ["**/*"]`) | Siempre |
565
+ | `.claude/rules/20.frontend/*` | Cuando se edita cualquier archivo frontend (limitado a rutas de component/page/style) | Condicional |
566
+ | `.claude/rules/30.security-db/*` | Cuando se edita cualquier archivo (`paths: ["**/*"]`) | Siempre |
567
+ | `.claude/rules/40.infra/*` | Solo al editar archivos de config/infra (rutas limitadas) | Condicional |
568
+ | `.claude/rules/50.sync/*` | Solo al editar archivos de claudeos-core (rutas limitadas) | Condicional |
569
+ | `.claude/rules/60.memory/*` | Cuando se edita `claudeos-core/memory/*` (limitado a rutas de memory) — indica **cómo** leer/escribir la capa de memory on-demand | Condicional (v2.0.0) |
433
570
 
434
- ### Archivos leídos bajo demanda vía referencias en reglas
571
+ ### Qué lee Claude Code on-demand a través de referencias de reglas
435
572
 
436
- Cada archivo de regla enlaza a su standard correspondiente en la sección `## Reference`. Claude solo lee el standard relevante para la tarea actual:
573
+ Cada archivo de regla enlaza a su standard correspondiente mediante una sección `## Reference`. Claude lee solo el standard relevante para la tarea actual:
437
574
 
438
- - `claudeos-core/standard/**` — Patrones de código, ejemplos ✅/❌, convenciones de nombres
439
- - `claudeos-core/database/**` — Schema DB (para queries, mappers, migraciones)
575
+ - `claudeos-core/standard/**` — patrones de codificación, ejemplos ✅/❌, convenciones de naming
576
+ - `claudeos-core/database/**` — esquema BD (para queries, mappers, migrations)
577
+ - `claudeos-core/memory/**` (v2.0.0) — capa de conocimiento de equipo L4; **no** se auto-carga (sería demasiado ruidoso en cada conversación). En su lugar, las reglas `60.memory/*` indican a Claude *cuándo* leer estos archivos: al inicio de sesión (skim del `decision-log.md` reciente + `failure-patterns.md` de alta importancia), y append-on-demand al tomar decisiones o al encontrar errores recurrentes.
440
578
 
441
- `00.standard-reference.md` sirve como directorio para descubrir standards sin regla correspondiente.
579
+ El `00.standard-reference.md` sirve como directorio de todos los archivos standard para descubrir standards que no tienen una regla correspondiente.
442
580
 
443
- ### Archivos que NO se leen (ahorro de contexto)
581
+ ### Qué NO lee Claude Code (ahorra contexto)
444
582
 
445
- Excluidos explícitamente por la sección `DO NOT Read` de la regla standard-reference:
583
+ Estas carpetas están excluidas explícitamente mediante la sección `DO NOT Read` en la regla standard-reference:
446
584
 
447
- | Carpeta | Razón de exclusión |
585
+ | Carpeta | Por qué se excluye |
448
586
  |---|---|
449
- | `claudeos-core/plan/` | Backups de Master Plan (~340KB). Usa `npx claudeos-core refresh` para sincronizar. |
450
- | `claudeos-core/generated/` | Metadatos JSON de build. No es referencia de código. |
587
+ | `claudeos-core/plan/` | Backups de Master Plan (~340KB). Usa `npx claudeos-core refresh` para sync. |
588
+ | `claudeos-core/generated/` | JSON de metadata de build, prompts, marcadores de Pass, caché de traducción, `.staged-rules/`. No es para codificar. |
451
589
  | `claudeos-core/guide/` | Guías de onboarding para humanos. |
452
- | `claudeos-core/mcp-guide/` | Docs de servidor MCP. No es referencia de código. |
590
+ | `claudeos-core/mcp-guide/` | Docs del servidor MCP. No es para codificar. |
591
+ | `claudeos-core/memory/` (auto-load) | **Auto-load deshabilitado** por diseño — inflaría el contexto en cada conversación. En su lugar, se lee on-demand vía las reglas `60.memory/*` (ej: escaneo al inicio de sesión de `failure-patterns.md`). Commitea siempre estos archivos. |
453
592
 
454
593
  ---
455
594
 
456
595
  ## Flujo de Trabajo Diario
457
596
 
458
- ### Después de la Instalación
597
+ ### Después de la instalación
459
598
 
460
599
  ```
461
- # Usa Claude Code normalmente — referencia tus estándares automáticamente:
462
- "Crea un CRUD para el dominio de pedidos"
463
- "Añade una API de actualización de perfil de usuario"
464
- "Refactoriza este código según los patrones del proyecto"
600
+ # Simplemente usa Claude Code como de costumbre — referencia tus standards automáticamente:
601
+ "Crea un CRUD para el dominio order"
602
+ "Añade un API de actualización de perfil de usuario"
603
+ "Refactoriza este código para que coincida con los patrones del proyecto"
465
604
  ```
466
605
 
467
- ### Después de Editar Estándares Manualmente
606
+ ### Después de editar Standards manualmente
468
607
 
469
608
  ```bash
470
- # Después de editar archivos standard o rules:
609
+ # Después de editar archivos de standards o reglas:
471
610
  npx claudeos-core refresh
472
611
 
473
- # Verifica que todo sea consistente
612
+ # Verifica que todo es consistente
474
613
  npx claudeos-core health
475
614
  ```
476
615
 
477
- ### Cuando los Documentos se Corrompen
616
+ ### Cuando los docs se corrompen
478
617
 
479
618
  ```bash
480
619
  # Restaura todo desde el Master Plan
481
620
  npx claudeos-core restore
482
621
  ```
483
622
 
623
+ ### Mantenimiento de la capa Memory (v2.0.0)
624
+
625
+ La capa Memory L4 (`claudeos-core/memory/`) acumula conocimiento de equipo entre sesiones. Tres subcomandos de CLI la mantienen en buen estado:
626
+
627
+ ```bash
628
+ # Compact: aplica la política de compaction de 4 etapas (ejecutar periódicamente — ej: mensualmente)
629
+ npx claudeos-core memory compact
630
+ # Etapa 1: resume entradas antiguas (>30 días, cuerpo → una línea)
631
+ # Etapa 2: combina encabezados duplicados (frecuencia sumada, se mantiene el fix más reciente)
632
+ # Etapa 3: descarta baja-importancia + antiguas (importancia <3 Y lastSeen >60 días)
633
+ # Etapa 4: aplica tope de 400 líneas por archivo (se descarta primero lo más antiguo y de menor importancia)
634
+
635
+ # Score: re-rankea las entradas de failure-patterns.md por importancia
636
+ npx claudeos-core memory score
637
+ # importance = round(frequency × 1.5 + recency × 5), cap 10
638
+ # Ejecutar después de añadir varios nuevos patrones de fallo
639
+
640
+ # Propose-rules: propone adiciones de reglas a partir de fallos recurrentes
641
+ npx claudeos-core memory propose-rules
642
+ # Lee entradas de failure-patterns.md con frequency ≥ 3
643
+ # Calcula confianza (sigmoid sobre evidencia ponderada × multiplicador de anchor)
644
+ # Escribe propuestas en memory/auto-rule-update.md (NO se aplican auto)
645
+ # Confidence ≥ 0.70 merece revisión seria; acepta → edita regla + registra decisión
646
+ ```
647
+
648
+ Cuándo escribir en memory (Claude lo hace on-demand, pero también puedes editar manualmente):
649
+ - **`decision-log.md`** — añade una nueva entrada cada vez que elijas entre patrones en competencia, selecciones una biblioteca, definas una convención de equipo o decidas NO hacer algo. Append-only; nunca edites entradas históricas.
650
+ - **`failure-patterns.md`** — añade en la **segunda ocurrencia** de un error recurrente o de una root cause no obvia. Los errores de primera vez no necesitan una entrada.
651
+ - `compaction.md` y `auto-rule-update.md` — generados/gestionados por los subcomandos de CLI indicados arriba; no los edites a mano.
652
+
484
653
  ### Integración CI/CD
485
654
 
486
655
  ```yaml
487
656
  # Ejemplo de GitHub Actions
488
657
  - run: npx claudeos-core validate
489
- # Código de salida 1 bloquea el PR
658
+ # Exit code 1 bloquea el PR
659
+
660
+ # Opcional: housekeeping mensual de memory (workflow cron separado)
661
+ - run: npx claudeos-core memory compact
662
+ - run: npx claudeos-core memory score
490
663
  ```
491
664
 
492
665
  ---
493
666
 
494
- ## ¿En Qué se Diferencia?
667
+ ## ¿En Qué Se Diferencia?
668
+
669
+ ### vs otras herramientas de Claude Code
495
670
 
496
671
  | | ClaudeOS-Core | Everything Claude Code (50K+ ⭐) | Harness | specs-generator | Claude `/init` |
497
672
  |---|---|---|---|---|---|
498
- | **Approach** | Code analyzes first, then LLM generates | Pre-built config presets | LLM designs agent teams | LLM generates spec docs | LLM writes CLAUDE.md |
499
- | **Reads your source code** | ✅ Deterministic static analysis | ❌ | ❌ | ❌ (LLM reads) | ❌ (LLM reads) |
500
- | **Stack detection** | Code confirms (ORM, DB, build tool, pkg manager) | N/A (stack-agnostic) | LLM guesses | LLM guesses | LLM guesses |
501
- | **Domain detection** | Code confirms (Java 5 patterns, Kotlin CQRS, Next.js FSD) | N/A | LLM guesses | N/A | N/A |
502
- | **Same projectSame result** | ✅ Deterministic analysis | ✅ (static files) | ❌ (LLM varies) | ❌ (LLM varies) | ❌ (LLM varies) |
503
- | **Large project handling** | Domain group splitting (4 domains / 40 files per group) | N/A | No splitting | No splitting | Context window limit |
504
- | **Output** | CLAUDE.md + Rules + Standards + Skills + Guides + Plans (40-50+ files) | Agents + Skills + Commands + Hooks | Agents + Skills | 6 spec documents | CLAUDE.md (1 file) |
505
- | **Output location** | `.claude/rules/` (auto-loaded by Claude Code) | `.claude/` various | `.claude/agents/` + `.claude/skills/` | `.claude/steering/` + `specs/` | `CLAUDE.md` |
506
- | **Post-generation verification** | ✅ 5 automated validators | ❌ | ❌ | ❌ | ❌ |
507
- | **Multi-language output** | ✅ 10 languages | ❌ | ❌ | ❌ | ❌ |
508
- | **Multi-stack** | ✅ Backend + Frontend simultaneous | ❌ Stack-agnostic | ❌ | ❌ | Partial |
509
- | **Agent orchestration** | | ✅ 28 agents | 6 patterns | ❌ | ❌ |
673
+ | **Enfoque** | Código analiza primero, luego el LLM genera | Presets de configuración preconstruidos | El LLM diseña equipos de agentes | El LLM genera specs | El LLM escribe CLAUDE.md |
674
+ | **Lee tu código fuente** | ✅ Análisis estático determinístico | ❌ | ❌ | ❌ (lee el LLM) | ❌ (lee el LLM) |
675
+ | **Detección de stack** | El código confirma (ORM, BD, build tool, pkg manager) | N/A (stack-agnostic) | El LLM adivina | El LLM adivina | El LLM adivina |
676
+ | **Detección de dominios** | El código confirma (Java 5 patrones, Kotlin CQRS, Next.js FSD) | N/A | El LLM adivina | N/A | N/A |
677
+ | **Mismo proyectoMismo resultado** | ✅ Análisis determinístico | ✅ (archivos estáticos) | ❌ (el LLM varía) | ❌ (el LLM varía) | ❌ (el LLM varía) |
678
+ | **Gestión de proyectos grandes** | División en grupos de dominios (4 dominios / 40 archivos por grupo) | N/A | Sin división | Sin división | Límite de ventana de contexto |
679
+ | **Salida** | CLAUDE.md + Rules + Standards + Skills + Guides + Plans (40-50+ archivos) | Agents + Skills + Commands + Hooks | Agents + Skills | 6 docs de spec | CLAUDE.md (1 archivo) |
680
+ | **Ubicación de salida** | `.claude/rules/` (auto-cargado por Claude Code) | `.claude/` variados | `.claude/agents/` + `.claude/skills/` | `.claude/steering/` + `specs/` | `CLAUDE.md` |
681
+ | **Verificación post-generación** | ✅ 5 validadores automáticos | ❌ | ❌ | ❌ | ❌ |
682
+ | **Salida multi-idioma** | ✅ 10 idiomas | ❌ | ❌ | ❌ | ❌ |
683
+ | **Multi-stack** | ✅ Backend + Frontend simultáneo | ❌ Stack-agnostic | ❌ | ❌ | Parcial |
684
+ | **Capa de memory persistente** | ✅ L4 decision log + failure patterns + propuestas de reglas auto-scored (v2.0.0) | ❌ | ❌ | ❌ | ❌ |
685
+ | **Orquestación de agentes** | ❌ | ✅ 28 agentes | ✅ 6 patrones | ❌ | ❌ |
686
+
687
+ ### La diferencia clave en una frase
688
+
689
+ **Otras herramientas dan a Claude "instrucciones generalmente buenas". ClaudeOS-Core da a Claude "instrucciones extraídas de tu código real".**
510
690
 
511
- ### Key difference
691
+ Por eso Claude Code deja de generar código JPA en tu proyecto MyBatis,
692
+ deja de usar `success()` cuando tu codebase usa `ok()`,
693
+ y deja de crear directorios `user/controller/` cuando tu proyecto usa `controller/user/`.
512
694
 
513
- **Other tools give Claude "generally good instructions." ClaudeOS-Core gives Claude "instructions extracted from your actual code."**
695
+ ### Complementarias, no competidoras
514
696
 
515
- ### Complementary, not competing
697
+ ClaudeOS-Core se centra en **reglas y standards específicos del proyecto**.
698
+ Otras herramientas se centran en **orquestación y workflows de agentes**.
516
699
 
517
- ClaudeOS-Core: **project-specific rules**. Other tools: **agent orchestration**.
518
- Use both together.
700
+ Puedes usar ClaudeOS-Core para generar las reglas de tu proyecto, y encima usar ECC o Harness para equipos de agentes y automatización de workflows. Resuelven problemas diferentes.
519
701
 
520
702
  ---
703
+
521
704
  ## FAQ
522
705
 
523
706
  **P: ¿Modifica mi código fuente?**
524
707
  No. Solo crea `CLAUDE.md`, `.claude/rules/` y `claudeos-core/`. Tu código existente nunca se modifica.
525
708
 
526
709
  **P: ¿Cuánto cuesta?**
527
- Llama a `claude -p` entre 3–7 veces. Está dentro del uso normal de Claude Code.
710
+ Llama a `claude -p` 4–8 veces (Pass 1 × N + Pass 2 + Pass 3 + Pass 4). Esto entra dentro del uso normal de Claude Code. 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.
528
711
 
529
- **P: ¿Debería hacer commit de los archivos generados a Git?**
530
- Sí, recomendado. Tu equipo puede compartir los mismos estándares de Claude Code. Considera añadir `claudeos-core/generated/` a `.gitignore` (el JSON de análisis es regenerable).
712
+ **P: ¿Debería commitear los archivos generados a Git?**
713
+ 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).
531
714
 
532
- **P: ¿Qué pasa con proyectos de stack mixto (ej: backend Java + frontend React)?**
533
- 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.
715
+ **P: ¿Qué pasa con proyectos de stack mixto (ej: Java backend + React frontend)?**
716
+ Totalmente soportado. ClaudeOS-Core auto-detecta ambos stacks, etiqueta los dominios como `backend` o `frontend`, y usa prompts de análisis específicos del stack para cada uno. Pass 2 combina todo, y Pass 3 genera tanto los standards de backend como los de frontend en un solo pass.
534
717
 
535
- **P: ¿Funciona con Turborepo / pnpm workspaces / monorepos Lerna?**
536
- 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.
718
+ **P: ¿Funciona con monorepos Turborepo / pnpm workspaces / Lerna?**
719
+ Sí. ClaudeOS-Core detecta `turbo.json`, `pnpm-workspace.yaml`, `lerna.json`, o `package.json#workspaces` y escanea automáticamente los `package.json` de los sub-paquetes para dependencias de framework/ORM/BD. El escaneo de dominios cubre los patrones `apps/*/src/` y `packages/*/src/`. Ejecuta desde la raíz del monorepo.
537
720
 
538
- **P: ¿Qué pasa al re-ejecutar?**
539
- 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.
721
+ **P: ¿Qué pasa al volver a ejecutar?**
722
+ Si existen resultados previos de Pass 1/2, un prompt interactivo te permite elegir: **Continue** (reanudar desde donde se detuvo) o **Fresh** (borrar todo y empezar de nuevo). Usa `--force` para saltarte el prompt y empezar siempre desde cero. Pass 3 siempre se vuelve a ejecutar. Las versiones anteriores pueden restaurarse desde los Master Plans.
540
723
 
541
724
  **P: ¿NestJS tiene su propia plantilla o usa la de Express?**
542
- 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`.
725
+ NestJS usa una plantilla dedicada `node-nestjs` con categorías de análisis específicas de NestJS: decorators `@Module`, `@Injectable`, `@Controller`, Guards, Pipes, Interceptors, contenedor DI, patrones CQRS y `Test.createTestingModule`. Los proyectos Express usan la plantilla separada `node-express`.
543
726
 
544
- **P: ¿Qué hay de los proyectos Vue / Nuxt?**
545
- 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`.
727
+ **P: ¿Qué pasa con proyectos Vue / Nuxt?**
728
+ Vue/Nuxt usa una plantilla dedicada `vue-nuxt` que cubre Composition API, `<script setup>`, defineProps/defineEmits, Pinia stores, `useFetch`/`useAsyncData`, rutas de servidor Nitro y `@nuxt/test-utils`. Los proyectos Next.js/React usan la plantilla `node-nextjs`.
546
729
 
547
730
  **P: ¿Soporta Kotlin?**
548
- 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.).
731
+ Sí. ClaudeOS-Core auto-detecta Kotlin a partir de `build.gradle.kts` o del plugin kotlin en `build.gradle`. Usa una plantilla dedicada `kotlin-spring` con análisis específico de Kotlin (data classes, sealed classes, coroutines, extension functions, MockK, etc.).
732
+
733
+ **P: ¿Qué pasa con arquitectura CQRS / BFF?**
734
+ Totalmente soportado para proyectos Kotlin multi-módulo. ClaudeOS-Core lee `settings.gradle.kts`, detecta los tipos de módulo (command, query, bff, integration) a partir de los nombres de módulo, y agrupa el mismo dominio entre los módulos Command/Query. Los standards generados incluyen reglas separadas para command controllers vs query controllers, patrones BFF/Feign y convenciones de comunicación entre módulos.
735
+
736
+ **P: ¿Qué pasa con monorepos Gradle multi-módulo?**
737
+ ClaudeOS-Core escanea todos los submódulos (`**/src/main/kotlin/**/*.kt`) independientemente de la profundidad de anidamiento. Los tipos de módulo se infieren de las convenciones de naming (ej: `reservation-command-server` → dominio: `reservation`, tipo: `command`). Las bibliotecas compartidas (`shared-lib`, `integration-lib`) también se detectan.
549
738
 
550
- **P: ¿Qué hay de la arquitectura CQRS / BFF?**
551
- Totalmente soportado para proyectos multi-módulo de Kotlin. ClaudeOS-Core lee `settings.gradle.kts`, detecta tipos de módulos (command, query, bff, integration) de los nombres, y agrupa el mismo dominio entre módulos Command/Query. Los estándares generados incluyen reglas separadas para command controllers vs query controllers, patrones BFF/Feign y convenciones de comunicación entre módulos.
739
+ **P: ¿Qué es la capa Memory L4 (v2.0.0)? ¿Debo commitear `claudeos-core/memory/`?**
740
+ **commitea siempre** `claudeos-core/memory/`. Es conocimiento persistente del equipo: `decision-log.md` registra el *porqué* detrás de las decisiones arquitectónicas (append-only), `failure-patterns.md` registra errores recurrentes con importancia puntuada para que las sesiones futuras los eviten, `compaction.md` define la política de compaction de 4 etapas y `auto-rule-update.md` recopila propuestas de mejora de reglas generadas por la máquina. A diferencia de las reglas (auto-cargadas por path), los archivos de memory son **on-demand** — Claude los lee solo cuando las reglas `60.memory/*` se lo indican (ej: escaneo al inicio de sesión de fallos de alta importancia). Esto mantiene bajo el coste de contexto conservando el conocimiento a largo plazo.
552
741
 
553
- **P: ¿Qué hay de los monorepos multi-módulo de Gradle?**
554
- ClaudeOS-Core escanea todos los submódulos (`**/src/main/kotlin/**/*.kt`) sin importar la profundidad de anidamiento. Los tipos de módulos se infieren de las convenciones de nombres (ej: `reservation-command-server` dominio: `reservation`, tipo: `command`). Las bibliotecas compartidas (`shared-lib`, `integration-lib`) también se detectan.
742
+ **P: ¿Qué pasa si Pass 4 falla?**
743
+ El pipeline automatizado (`npx claudeos-core init`) tiene un fallback estático: si `claude -p` falla o `pass4-prompt.md` está ausente, scaffoldea la capa de memory directamente vía `lib/memory-scaffold.js`. Cuando `--lang` no es inglés, el fallback estático **debe** traducir vía la CLI `claude` si también falla, la ejecución se aborta con `InitError` (sin fallback silencioso a inglés). Vuelve a ejecutar cuando `claude` esté autenticado, o usa `--lang en` para saltarte la traducción. Los resultados de traducción se cachean en `claudeos-core/generated/.i18n-cache-<lang>.json` para que las ejecuciones posteriores los reutilicen.
744
+
745
+ **P: ¿Qué hacen `memory compact` / `memory score` / `memory propose-rules`?**
746
+ Ver la sección [Mantenimiento de la capa Memory](#mantenimiento-de-la-capa-memory-v200) arriba. Versión corta: `compact` ejecuta la política de 4 etapas (resume antiguas, combina duplicadas, descarta baja-importancia antiguas, aplica tope de 400 líneas); `score` re-rankea `failure-patterns.md` por importancia (frecuencia × recencia); `propose-rules` propone adiciones de reglas a partir de fallos recurrentes en `auto-rule-update.md` (no se aplican auto — revisa y acepta/rechaza manualmente).
747
+
748
+ **P: ¿Por qué `--force` (o el modo resume "fresh") borra `.claude/rules/`?**
749
+ v2.0.0 añadió tres guards de silent-failure en Pass 3 (Guard 3 cubre dos variantes de salida incompleta: H2 para `guide/` y H1 para `standard/skills/plan`). Guard 1 ("movimiento parcial de staged-rules") y Guard 3 ("salida incompleta — archivos guide ausentes/vacíos o sentinel de standard ausente / skills vacío / plan vacío") no dependen de reglas existentes, pero Guard 2 ("cero reglas detectadas") sí — se dispara cuando Claude ignora la directiva `staging-override.md` e intenta escribir directamente en `.claude/` (donde la política de rutas sensibles de Claude Code lo bloquea). Las reglas obsoletas de una ejecución anterior harían que Guard 2 produjera falsos negativos — por eso `--force`/`fresh` borra `.claude/rules/` para asegurar una detección limpia. **Las ediciones manuales de archivos de reglas se perderán** con `--force`/`fresh`; haz un backup antes si es necesario.
750
+
751
+ **P: ¿Qué es `claudeos-core/generated/.staged-rules/` y por qué existe?**
752
+ La política de rutas sensibles de Claude Code rechaza las escrituras directas a `.claude/` desde el subproceso `claude -p` (incluso con `--dangerously-skip-permissions`). v2.0.0 evita esto haciendo que los prompts de Pass 3/4 redirijan todas las escrituras de `.claude/rules/` al directorio de staging; el orquestador Node.js (que no está sujeto a esa política) luego mueve el árbol staged a `.claude/rules/` después de cada pass. Esto es transparente para el usuario — el directorio se auto-crea, se auto-limpia y se auto-mueve. Si una ejecución previa crashea a mitad del movimiento, la siguiente ejecución limpia el dir de staging antes de reintentar.
555
753
 
556
754
  ---
557
755
 
@@ -559,26 +757,28 @@ ClaudeOS-Core escanea todos los submódulos (`**/src/main/kotlin/**/*.kt`) sin i
559
757
 
560
758
  ```
561
759
  pass-prompts/templates/
562
- ├── common/ # Encabezado/pie compartido
760
+ ├── common/ # Header/footer compartido + pass4 + staging-override
563
761
  ├── java-spring/ # Java / Spring Boot
564
- ├── kotlin-spring/ # Kotlin / Spring Boot (CQRS, BFF, multi-module)
762
+ ├── kotlin-spring/ # Kotlin / Spring Boot (CQRS, BFF, multi-módulo)
565
763
  ├── node-express/ # Node.js / Express
566
764
  ├── node-nestjs/ # Node.js / NestJS (Module, DI, Guard, Pipe, Interceptor)
567
765
  ├── node-fastify/ # Node.js / Fastify
568
- ├── node-nextjs/ # Next.js / React
766
+ ├── node-nextjs/ # Next.js / React (App Router, RSC)
767
+ ├── node-vite/ # Vite SPA (React, client-side routing, VITE_ env, Vitest)
569
768
  ├── vue-nuxt/ # Vue / Nuxt (Composition API, Pinia, Nitro)
570
769
  ├── angular/ # Angular
571
770
  ├── python-django/ # Python / Django (DRF)
572
- └── python-fastapi/ # Python / FastAPI
771
+ ├── python-fastapi/ # Python / FastAPI
772
+ └── python-flask/ # Python / Flask (Blueprint, app factory, Jinja2)
573
773
  ```
574
774
 
575
- `plan-installer` auto-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.
775
+ `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. Pass 4 usa la plantilla compartida `common/pass4.md` (memory scaffolding) independientemente del stack.
576
776
 
577
777
  ---
578
778
 
579
- ## Soporte Monorepo
779
+ ## Soporte de Monorepo
580
780
 
581
- ClaudeOS-Core detecta automáticamente configuraciones de monorepo JS/TS y escanea sub-paquetes en busca de dependencias.
781
+ ClaudeOS-Core auto-detecta setups de monorepo JS/TS y escanea sub-paquetes buscando dependencias.
582
782
 
583
783
  **Marcadores de monorepo soportados** (auto-detectados):
584
784
  - `turbo.json` (Turborepo)
@@ -586,7 +786,7 @@ ClaudeOS-Core detecta automáticamente configuraciones de monorepo JS/TS y escan
586
786
  - `lerna.json` (Lerna)
587
787
  - `package.json#workspaces` (npm/yarn workspaces)
588
788
 
589
- **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:
789
+ **Ejecuta desde la raíz del monorepo** — ClaudeOS-Core lee `apps/*/package.json` y `packages/*/package.json` para descubrir dependencias de framework/ORM/BD entre sub-paquetes:
590
790
 
591
791
  ```bash
592
792
  cd my-monorepo
@@ -597,7 +797,7 @@ npx claudeos-core init
597
797
  - Dependencias de `apps/web/package.json` (ej: `next`, `react`) → stack frontend
598
798
  - Dependencias de `apps/api/package.json` (ej: `express`, `prisma`) → stack backend
599
799
  - Dependencias de `packages/db/package.json` (ej: `drizzle-orm`) → ORM/BD
600
- - Rutas de workspace personalizadas desde `pnpm-workspace.yaml` (ej: `services/*`)
800
+ - Paths de workspace personalizados desde `pnpm-workspace.yaml` (ej: `services/*`)
601
801
 
602
802
  **El escaneo de dominios también cubre layouts de monorepo:**
603
803
  - `apps/api/src/modules/*/` y `apps/api/src/*/` para dominios backend
@@ -622,19 +822,39 @@ my-monorepo/ ← Ejecuta aquí: npx claudeos-core init
622
822
 
623
823
  > **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.
624
824
 
625
- ## Solución de Problemas
825
+ ## Troubleshooting
826
+
827
+ **"claude: command not found"** — La CLI de Claude Code no está instalada o no está en el PATH. Ver [docs de Claude Code](https://code.claude.com/docs/en/overview).
828
+
829
+ **"npm install failed"** — La versión de Node.js puede ser demasiado baja. Requiere v18+.
830
+
831
+ **"0 domains detected"** — La estructura de tu proyecto puede no ser estándar. Ver los patrones de detección anteriores para tu stack.
832
+
833
+ **"0 domains detected" en proyecto Kotlin** — Asegúrate de que tu proyecto tiene `build.gradle.kts` (o `build.gradle` con plugin kotlin) en la raíz, y los archivos fuente están bajo `**/src/main/kotlin/`. Para proyectos multi-módulo, asegúrate de que `settings.gradle.kts` contiene sentencias `include()`. Los proyectos Kotlin de un solo módulo (sin `settings.gradle`) también están soportados — los dominios se extraen de la estructura de paquete/clase bajo `src/main/kotlin/`.
626
834
 
627
- **"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).
835
+ **"Language detected as java instead of kotlin"** — ClaudeOS-Core comprueba primero el `build.gradle(.kts)` raíz, luego los archivos de build de los submódulos. Si el archivo de build raíz usa el plugin `java` sin `kotlin`, pero los submódulos usan Kotlin, la herramienta comprueba hasta 5 archivos de build de submódulos como fallback. Si aun así no se detecta, asegúrate de que al menos un `build.gradle.kts` contiene `kotlin("jvm")` u `org.jetbrains.kotlin`.
628
836
 
629
- **"npm install failed"** — La versión de Node.js puede ser demasiado baja. Se requiere v18+.
837
+ **"CQRS not detected"** — La detección de arquitectura depende de que los nombres de módulos contengan las palabras clave `command` y `query`. Si tus módulos usan otros naming (ej: `write-server`, `read-server`), la arquitectura CQRS no se auto-detectará. Puedes ajustar manualmente los prompts generados después de que plan-installer se ejecute.
630
838
 
631
- **"0 domains detected"** — La estructura de tu proyecto puede ser no estándar. Consulta los patrones de detección en la [documentación en coreano](./README.ko.md#트러블슈팅) para tu stack.
839
+ **"Pass 3 produced 0 rule files under .claude/rules/" (v2.0.0)** — Se disparó el Guard 2: Claude ignoró la directiva `staging-override.md` e intentó escribir directamente en `.claude/`, donde la política de rutas sensibles de Claude Code bloquea las escrituras. Vuelve a ejecutar con `npx claudeos-core init --force`. Si el error persiste, inspecciona `claudeos-core/generated/pass3-prompt.md` para verificar que el bloque `staging-override.md` está al principio.
632
840
 
633
- **"0 dominios detectados" en proyecto Kotlin** Asegúrate de que `build.gradle.kts` (o `build.gradle` con plugin kotlin) exista en la raíz, y los archivos fuente estén bajo `**/src/main/kotlin/`. Para proyectos multi-módulo, `settings.gradle.kts` debe contener sentencias `include()`. Los proyectos Kotlin de módulo único (sin `settings.gradle`) también son compatibles los dominios se extraen de la estructura de paquetes/clases bajo `src/main/kotlin/`.
841
+ **"Pass 3 finished but N rule file(s) could not be moved from staging" (v2.0.0)** Se disparó el Guard 1: el movimiento de staging se topó con un file lock transitorio (normalmente antivirus de Windows o file-watcher). El marcador NO se escribe, así que la siguiente ejecución de `init` reintenta Pass 3 automáticamente. Simplemente vuelve a ejecutar `npx claudeos-core init`.
634
842
 
635
- **"Lenguaje detectado como java en vez de kotlin"** — ClaudeOS-Core primero verifica el `build.gradle(.kts)` raíz, luego los archivos build de submódulos. Asegúrate de que al menos uno contenga `kotlin("jvm")` o `org.jetbrains.kotlin`.
843
+ **"Pass 3 produced CLAUDE.md and rules but N/9 guide files are missing or empty" (v2.0.0)** — Se disparó el Guard 3 (H2): Claude truncó la respuesta a mitad de camino tras escribir CLAUDE.md + reglas pero antes de terminar (o empezar) la sección `claudeos-core/guide/` (se esperan 9 archivos). También se dispara ante un archivo con solo BOM o solo whitespace (se escribió el encabezado pero el cuerpo quedó truncado). Sin este guard, el marcador de finalización se escribiría igual, dejando `guide/` permanentemente vacío en ejecuciones posteriores. Aquí el marcador NO se escribe, así que la siguiente ejecución de `init` reintenta Pass 3 a partir de los mismos resultados de Pass 2. Si se repite, vuelve a ejecutar con `npx claudeos-core init --force` para regenerar desde cero.
636
844
 
637
- **"CQRS no detectado"** — La detección de arquitectura depende de que los nombres de módulos contengan las palabras `command` y `query`. Si tus módulos usan nombres diferentes, puedes ajustar manualmente los prompts generados.
845
+ **"Pass 3 finished but the following required output(s) are missing or empty" (v2.0.0)** — Se disparó el Guard 3 (H1): Claude truncó DESPUÉS de `claudeos-core/guide/` pero antes (o durante) `claudeos-core/standard/`, `claudeos-core/skills/` o `claudeos-core/plan/`. Requisitos: (a) `standard/00.core/01.project-overview.md` existe y no está vacío (sentinel escrito por el prompt Pass 3 de cada stack), (b) `skills/` tiene ≥1 `.md` no vacío, (c) `plan/` tiene ≥1 `.md` no vacío. `database/` y `mcp-guide/` se excluyen intencionadamente (algunos stacks legítimamente producen cero archivos). Mismo camino de recuperación que Guard 3 (H2): vuelve a ejecutar `init`, o `--force` si persiste.
846
+
847
+ **"pass2-merged.json exists but is malformed or incomplete (<5 top-level keys), re-running" (v2.0.0)** — Log informativo, no un error. En resume, `init` ahora parsea y valida `pass2-merged.json` (se requieren ≥5 claves de nivel superior, coincidiendo con el umbral `INSUFFICIENT_KEYS` de `pass-json-validator`). Un `{}` esqueleto o un JSON mal formado de una ejecución previa crasheada se borra automáticamente y Pass 2 se vuelve a ejecutar. No se necesita acción manual — el pipeline se auto-repara. Si sigue recurriendo, inspecciona `claudeos-core/generated/pass2-prompt.md` y reintenta con `--force`.
848
+
849
+ **"Static fallback failed while translating to lang='ko'" (v2.0.0)** — Cuando `--lang` no es inglés, Pass 4 / fallback estático / gap-fill requieren todos la CLI `claude` para traducir. Si la traducción falla (CLI no autenticada, timeout de red, o la validación estricta rechazó la salida: longitud <40%, code fences rotos, frontmatter perdido, etc.), la ejecución se aborta en vez de escribir silenciosamente en inglés. Solución: asegúrate de que `claude` está autenticado, o vuelve a ejecutar con `--lang en` para saltarte la traducción.
850
+
851
+ **"pass4-memory.json exists but memory/ is empty" (v2.0.0)** — Una ejecución previa escribió el marcador pero el usuario (o un script de limpieza) borró `claudeos-core/memory/`. La CLI auto-detecta este marcador obsoleto y vuelve a ejecutar Pass 4 en el siguiente `init`. No se necesita acción manual.
852
+
853
+ **"pass4-memory.json exists but is malformed (missing passNum/memoryFiles) — re-running Pass 4" (v2.0.0)** — Log informativo, no un error. El contenido del marcador de Pass 4 ahora se valida (`passNum === 4` + array `memoryFiles` no vacío), no solo su existencia. Un fallo parcial de Claude que emitiera algo como `{"error":"timeout"}` como cuerpo del marcador previamente se aceptaba como éxito para siempre; ahora el marcador se borra y Pass 4 se vuelve a ejecutar automáticamente.
854
+
855
+ **"Could not delete stale pass3-complete.json / pass4-memory.json" InitError (v2.0.0)** — `init` detectó un marcador obsoleto (Pass 3: CLAUDE.md fue borrado externamente; Pass 4: memory/ vacío o cuerpo del marcador mal formado) y trató de eliminarlo, pero la llamada `unlinkSync` falló — típicamente porque el antivirus de Windows o un file-watcher (editor, indexador IDE) está reteniendo el file handle. Anteriormente esto se ignoraba silenciosamente, haciendo que el pipeline saltara el pass y reutilizara el marcador obsoleto. Ahora falla de forma explícita. Solución: cierra cualquier editor/AV scanner que pueda tener el archivo abierto, y vuelve a ejecutar `npx claudeos-core init`.
856
+
857
+ **"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`.
638
858
 
639
859
  ---
640
860
 
@@ -642,9 +862,12 @@ my-monorepo/ ← Ejecuta aquí: npx claudeos-core init
642
862
 
643
863
  ¡Las contribuciones son bienvenidas! Áreas donde más se necesita ayuda:
644
864
 
645
- - **Nuevas plantillas de stack** — Ruby/Rails, Go/Gin, PHP/Laravel, Rust/Axum
646
- - **Soporte profundo para monorepos** — Raíces de sub-proyectos separadas, detección de workspaces
647
- - **Cobertura de tests** — Suite de tests en expansión (actualmente 269 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, herramientas de verificación y detección de Vite SPA)
865
+ - **Nuevas plantillas de stack** — Ruby/Rails, Go (Gin/Fiber/Echo), PHP (Laravel/Symfony), Rust (Axum/Actix), Svelte/SvelteKit, Remix
866
+ - **Integración IDE** — extensión de VS Code, plugin de IntelliJ
867
+ - **Plantillas de CI/CD** — GitLab CI, CircleCI, ejemplos de Jenkins (GitHub Actions ya incluido ver `.github/workflows/test.yml`)
868
+ - **Test coverage** — Ampliar la suite de tests (actualmente 489 tests en 24 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), validación del contenido del marcador de Pass 4 + rigor del stale-marker unlink, guard env-skip de traducción + early fail-fast + workflow CI, movimiento de staged-rules, fallback lang-aware de traducción, y estructura de la plantilla AI Work Rules)
869
+
870
+ 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.
648
871
 
649
872
  ---
650
873