claudeos-core 2.4.1 → 2.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.es.md CHANGED
@@ -7,58 +7,40 @@
7
7
  [![license](https://img.shields.io/npm/l/claudeos-core.svg?color=blue)](LICENSE)
8
8
  [![downloads](https://img.shields.io/npm/dm/claudeos-core.svg?logo=npm&color=blue&label=downloads)](https://www.npmjs.com/package/claudeos-core)
9
9
 
10
- **Haz que Claude Code siga las convenciones de TU proyecto al primer intento no los valores predeterminados genéricos.**
11
-
12
- Un scanner determinístico de Node.js lee tu código primero; luego una pipeline de Claude de 4 pasadas escribe el conjunto completo — `CLAUDE.md` + `.claude/rules/` auto-cargado + standards + skills + L4 memory. 10 idiomas de salida, 5 validators post-generación, y un allowlist explícito de rutas que impide al LLM inventar archivos o frameworks que no están en tu código.
13
-
14
- Funciona en [**12 stacks**](#supported-stacks) (monorepos incluidos) — un solo comando `npx`, sin configuración, resume-safe, idempotente.
10
+ **Una CLI que analiza tu código fuente y genera de forma reproducible `CLAUDE.md` y `.claude/rules/`. Combina un scanner en Node.js, una pipeline de 4 pasos sobre Claude y 5 validators. Soporta 12 stacks y 10 idiomas, y no inventa rutas que no existan en tu repo.**
15
11
 
16
12
  ```bash
17
13
  npx claudeos-core init
18
14
  ```
19
15
 
16
+ Funciona sobre [**12 stacks**](#supported-stacks), monorepos incluidos. Un solo comando, sin configuración, segura ante interrupciones e idempotente al volver a ejecutarla.
17
+
20
18
  [🇺🇸 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)
21
19
 
22
20
  ---
23
21
 
24
22
  ## ¿Qué es esto?
25
23
 
26
- Usas Claude Code. Es potente, pero cada sesión empieza desde cero no tiene memoria de cómo está estructurado _tu_ proyecto. Así que recurre a valores predeterminados "generalmente buenos" que rara vez coinciden con lo que tu equipo realmente hace:
27
-
28
- - Tu equipo usa **MyBatis**, pero Claude genera repositorios JPA.
29
- - Tu wrapper de respuesta es `ApiResponse.ok()`, pero Claude escribe `ResponseEntity.success()`.
30
- - Tus paquetes son layer-first (`controller/order/`), pero Claude crea domain-first (`order/controller/`).
31
- - Tus errores pasan por middleware centralizado, pero Claude esparce `try/catch` por cada endpoint.
24
+ Cada vez que abres una sesión nueva, Claude Code vuelve a los valores genéricos del framework. El equipo usa **MyBatis**, pero Claude escribe JPA. El wrapper de respuesta es `ApiResponse.ok()` y, aun así, Claude acaba escribiendo `ResponseEntity.success()`. Los paquetes se organizan por capa, pero el código generado los reorganiza por dominio. Mantener a mano un `.claude/rules/` por repositorio resuelve el problema; hasta que el código evoluciona y esas reglas dejan de cuadrar con la realidad.
32
25
 
33
- Te gustaría tener un set de `.claude/rules/` por proyecto Claude Code lo carga automáticamente cada sesión pero escribir esas reglas a mano para cada repo nuevo lleva horas, y se desactualizan a medida que el código evoluciona.
26
+ **ClaudeOS-Core las regenera de forma reproducible a partir del código real.** Primero entra un scanner en Node.js que reconoce el stack, el ORM, la organización de paquetes y las rutas de archivos. A continuación, la pipeline de 4 pasos sobre Claude escribe el conjunto completo: `CLAUDE.md`, las reglas auto-cargadas en `.claude/rules/`, los estándares y las skills. Todo queda acotado por una lista explícita de rutas permitidas que el modelo no puede saltarse. Y para cerrar, cinco validators revisan el resultado antes de darlo por bueno.
34
27
 
35
- **ClaudeOS-Core las escribe por ti, desde tu código fuente real.** Un scanner determinístico de Node.js lee tu proyecto primero (stack, ORM, layout de paquetes, convenciones, rutas de archivos). Luego una pipeline de Claude de 4 pasadas convierte los hechos extraídos en un conjunto de documentación completo:
28
+ De este modo, la misma entrada produce siempre la misma salida, byte a byte, en cualquiera de los 10 idiomas disponibles, y sin que aparezca jamás una ruta inexistente. Más abajo se entra en detalle en [Qué lo hace diferente](#qué-lo-hace-diferente).
36
29
 
37
- - **`CLAUDE.md`** el índice del proyecto que Claude lee en cada sesión
38
- - **`.claude/rules/`** — reglas auto-cargadas por categoría (`00.core` / `10.backend` / `20.frontend` / `30.security-db` / `40.infra` / `60.memory` / `70.domains` / `80.verification`)
39
- - **`claudeos-core/standard/`** — documentos de referencia (el "por qué" detrás de cada regla)
40
- - **`claudeos-core/skills/`** — patrones reutilizables (CRUD scaffolding, plantillas de página)
41
- - **`claudeos-core/memory/`** — decision log + failure patterns que crecen con el proyecto
42
-
43
- Como el scanner le entrega a Claude un allowlist explícito de rutas, el LLM **no puede inventar archivos o frameworks que no estén en tu código**. Cinco validators post-generación (`claude-md-validator`, `content-validator`, `pass-json-validator`, `plan-validator`, `sync-checker`) verifican la salida antes de que se envíe — language-invariant, así que las mismas reglas se aplican generes en inglés, español, o cualquiera de los otros 8 idiomas.
44
-
45
- ```
46
- Antes: Tú → Claude Code → código "generalmente bueno" → corrección manual cada vez
47
- Después: Tú → Claude Code → código que coincide con TU proyecto → listo para enviar
48
- ```
30
+ Para proyectos de larga duración, además se prepara una [Memory Layer](#memory-layer-opcional-para-proyectos-de-larga-duración) aparte.
49
31
 
50
32
  ---
51
33
 
52
- ## Velo en un proyecto real
34
+ ## Míralo en un proyecto real
53
35
 
54
- Ejecutado en [`spring-boot-realworld-example-app`](https://github.com/gothinkster/spring-boot-realworld-example-app) Java 11 · Spring Boot 2.6 · MyBatis · SQLite · 187 archivos fuente. Salida: **75 archivos generados**, tiempo total **53 minutos**, todos los validators ✅.
36
+ Lo ejecutamos sobre [`spring-boot-realworld-example-app`](https://github.com/gothinkster/spring-boot-realworld-example-app): Java 11, Spring Boot 2.6, MyBatis, SQLite y 187 archivos fuente. El resultado: **75 archivos generados**, **53 minutos** en total y todos los validators en verde ✅.
55
37
 
56
38
  <p align="center">
57
39
  <img src="docs/assets/spring-boot-realworld-demo.gif" alt="ClaudeOS-Core init running on spring-boot-realworld-example-app — stack detection, 4-pass pipeline, validators, completion summary" width="769">
58
40
  </p>
59
41
 
60
42
  <details>
61
- <summary><strong>📺 Salida del terminal (versión texto, para búsqueda y copia)</strong></summary>
43
+ <summary><strong>Salida de terminal (versión texto, para buscar y copiar)</strong></summary>
62
44
 
63
45
  ```text
64
46
  ╔════════════════════════════════════════════════════╗
@@ -93,18 +75,18 @@ Ejecutado en [`spring-boot-realworld-example-app`](https://github.com/gothinkste
93
75
  [██████████░░░░░░░░░░] 50% (2/4)
94
76
 
95
77
  [6] Pass 3 — Generating all files...
96
- 🚀 Pass 3 split mode (3a → 3b → 3c → 3d-aux)
78
+ Pass 3 split mode (3a → 3b → 3c → 3d-aux)
97
79
  ✅ 3a complete (2m 57s) — pass3a-facts.md (187-path allowlist)
98
80
  ✅ 3b complete (18m 49s) — CLAUDE.md + 19 standards + 20 rules
99
81
  ✅ 3c complete (12m 35s) — 13 skills + 9 guides
100
82
  ✅ 3d-aux complete (3m 18s) — database/ + mcp-guide/
101
- 🎉 Pass 3 split complete: 4/4 stages successful
83
+ Pass 3 split complete: 4/4 stages successful
102
84
  [███████████████░░░░░] 75% (3/4)
103
85
 
104
86
  [7] Pass 4 — Memory scaffolding...
105
- 📦 Pass 4 staged-rules: 6 rule files moved to .claude/rules/
87
+ Pass 4 staged-rules: 6 rule files moved to .claude/rules/
106
88
  ✅ Pass 4 complete (5m)
107
- 📋 Gap-fill: all 12 expected files already present
89
+ Gap-fill: all 12 expected files already present
108
90
  [████████████████████] 100% (4/4)
109
91
 
110
92
  ╔═══════════════════════════════════════╗
@@ -133,7 +115,7 @@ Ejecutado en [`spring-boot-realworld-example-app`](https://github.com/gothinkste
133
115
  </details>
134
116
 
135
117
  <details>
136
- <summary><strong>📄 Lo que termina en tu <code>CLAUDE.md</code> (extracto real Section 1 + 2)</strong></summary>
118
+ <summary><strong>Lo que acaba en tu <code>CLAUDE.md</code> (extracto real, secciones 1 y 2)</strong></summary>
137
119
 
138
120
  ```markdown
139
121
  # CLAUDE.md — spring-boot-realworld-example-app
@@ -142,7 +124,7 @@ Ejecutado en [`spring-boot-realworld-example-app`](https://github.com/gothinkste
142
124
  > Java 11 + Spring Boot 2.6, exposing both REST and GraphQL endpoints
143
125
  > over a hexagonal MyBatis persistence layer.
144
126
 
145
- ## 1. Role Definition
127
+ #### 1. Role Definition
146
128
 
147
129
  As the senior developer for this repository, you are responsible for
148
130
  writing, modifying, and reviewing code. Responses must be written in English.
@@ -150,7 +132,7 @@ A Java Spring Boot REST + GraphQL API server organized around a hexagonal
150
132
  (ports & adapters) architecture, with a CQRS-lite read/write split inside
151
133
  an XML-driven MyBatis persistence layer and JWT-based authentication.
152
134
 
153
- ## 2. Project Overview
135
+ #### 2. Project Overview
154
136
 
155
137
  | Item | Value |
156
138
  |---|---|
@@ -166,12 +148,12 @@ an XML-driven MyBatis persistence layer and JWT-based authentication.
166
148
  | Test Stack | JUnit Jupiter 5, Mockito, AssertJ, rest-assured, spring-mock-mvc |
167
149
  ```
168
150
 
169
- Cada valor de arriba coordenadas exactas de dependencias, el nombre de archivo `dev.db`, el nombre de la migración `V1__create_tables.sql`, "no JPA" es extraído por el scanner desde `build.gradle` / `application.properties` / el árbol de fuentes antes de que Claude escriba el archivo. Nada se adivina.
151
+ Cada valor de la tabla anterior, desde las coordenadas exactas de cada dependencia hasta el nombre del archivo `dev.db`, el de la migración `V1__create_tables.sql` o ese «no JPA», sale del scanner. Lo extrae directamente de `build.gradle`, `application.properties` y el árbol de fuentes antes de que Claude empiece a escribir. Nada se adivina.
170
152
 
171
153
  </details>
172
154
 
173
155
  <details>
174
- <summary><strong>🛡️ Una regla auto-cargada real (<code>.claude/rules/10.backend/01.controller-rules.md</code>)</strong></summary>
156
+ <summary><strong>Una regla auto-cargada real (<code>.claude/rules/10.backend/01.controller-rules.md</code>)</strong></summary>
175
157
 
176
158
  ````markdown
177
159
  ---
@@ -179,9 +161,9 @@ paths:
179
161
  - "**/*"
180
162
  ---
181
163
 
182
- # Controller Rules
164
+ #### Controller Rules
183
165
 
184
- ## REST (`io.spring.api.*`)
166
+ ##### REST (`io.spring.api.*`)
185
167
 
186
168
  - Controllers are the SOLE response wrapper for HTTP — no aggregator/facade above them.
187
169
  Return `ResponseEntity<?>` or a body Spring serializes via `JacksonCustomizations`.
@@ -194,13 +176,13 @@ paths:
194
176
  - Let exceptions propagate to `io.spring.api.exception.CustomizeExceptionHandler`
195
177
  (`@ControllerAdvice`). Do NOT `try/catch` business exceptions inside the controller.
196
178
 
197
- ## GraphQL (`io.spring.graphql.*`)
179
+ ##### GraphQL (`io.spring.graphql.*`)
198
180
 
199
181
  - DGS components (`@DgsComponent`) are the sole GraphQL response wrappers.
200
182
  Use `@DgsQuery` / `@DgsData` / `@DgsMutation`.
201
183
  - Resolve the current user via `io.spring.graphql.SecurityUtil.getCurrentUser()`.
202
184
 
203
- ## Examples
185
+ ##### Examples
204
186
 
205
187
  ✅ Correct:
206
188
  ```java
@@ -228,15 +210,15 @@ public ResponseEntity<?> create(@RequestBody NewArticleParam p) {
228
210
  ```
229
211
  ````
230
212
 
231
- El glob `paths: ["**/*"]` significa que Claude Code carga automáticamente esta regla cada vez que editas cualquier archivo del proyecto. Cada nombre de clase, ruta de paquete, y exception handler en la regla viene directamente del código fuente escaneado incluyendo el `CustomizeExceptionHandler` y `JacksonCustomizations` reales del proyecto.
213
+ El glob `paths: ["**/*"]` hace que Claude Code cargue esta regla automáticamente cada vez que se edita cualquier archivo del proyecto. Los nombres de clase, las rutas de paquete y el manejador de excepciones que aparecen en la regla salen tal cual del código escaneado; reflejan, por tanto, el `CustomizeExceptionHandler` y el `JacksonCustomizations` reales del proyecto.
232
214
 
233
215
  </details>
234
216
 
235
217
  <details>
236
- <summary><strong>🧠 Un seed auto-generado de <code>decision-log.md</code> (extracto real)</strong></summary>
218
+ <summary><strong>Un seed de <code>decision-log.md</code> auto-generado (extracto real)</strong></summary>
237
219
 
238
220
  ```markdown
239
- ## 2026-04-26 — Hexagonal ports & adapters with MyBatis-only persistence
221
+ #### 2026-04-26 — Hexagonal ports & adapters with MyBatis-only persistence
240
222
 
241
223
  - **Context:** `io.spring.core.*` exposes `*Repository` ports (e.g.,
242
224
  `io.spring.core.article.ArticleRepository`) implemented by
@@ -255,260 +237,276 @@ El glob `paths: ["**/*"]` significa que Claude Code carga automáticamente esta
255
237
  split the persistence model.
256
238
  ```
257
239
 
258
- Pass 4 inicializa `decision-log.md` con las decisiones arquitectónicas extraídas de `pass2-merged.json`, así las sesiones futuras recuerdan *por qué* el código se ve como se ve no solo *cómo* se ve. Cada opción ("JPA/Hibernate", "MyBatis-Plus") y cada consecuencia están fundamentadas en el bloque real de dependencias de `build.gradle`.
240
+ Pass 4 deja sembrado `decision-log.md` con las decisiones de arquitectura que extrae de `pass2-merged.json`. De esta forma, en sesiones futuras no solo se recuerda *cómo* es el código, sino también *por qué*. Cada opción («JPA/Hibernate», «MyBatis-Plus») y cada consecuencia parten del bloque de dependencias real de `build.gradle`.
259
241
 
260
242
  </details>
261
243
 
262
244
  ---
263
245
 
264
- ## Quick Start
246
+ ## Probado en
265
247
 
266
- **Requisitos previos:** Node.js 18+, [Claude Code](https://docs.anthropic.com/en/docs/claude-code) instalado y autenticado.
248
+ ClaudeOS-Core viene con benchmarks de referencia ejecutados sobre proyectos OSS reales. Si lo has usado en un repositorio público, [abre un issue](https://github.com/claudeos-core/claudeos-core/issues) y lo añadimos a la tabla.
249
+
250
+ | Proyecto | Stack | Escaneado → Generado | Estado |
251
+ |---|---|---|---|
252
+ | [`spring-boot-realworld-example-app`](https://github.com/gothinkster/spring-boot-realworld-example-app) | Java 11 · Spring Boot 2.6 · MyBatis · SQLite | 187 → 75 archivos | ✅ los 5 validators pasan |
253
+
254
+ ---
255
+
256
+ ## Inicio rápido
257
+
258
+ **Requisitos previos:** Node.js 18+ y [Claude Code](https://docs.anthropic.com/en/docs/claude-code) instalado y autenticado.
267
259
 
268
260
  ```bash
269
- # 1. Ve a la raíz de tu proyecto
261
+ # 1. Sitúate en la raíz del proyecto
270
262
  cd my-spring-boot-project
271
263
 
272
- # 2. Ejecuta init (esto analiza tu código y le pide a Claude que escriba las reglas)
264
+ # 2. Lanza init (analiza el código y le pide a Claude que escriba las reglas)
273
265
  npx claudeos-core init
274
266
 
275
- # 3. Listo. Abre Claude Code y empieza a programar tus reglas ya están cargadas.
267
+ # 3. Listo. Abre Claude Code y empieza a programar; las reglas ya están cargadas.
276
268
  ```
277
269
 
278
- **Lo que obtienes** después de que `init` termina:
270
+ Cuando termina `init` te encuentras con esto:
279
271
 
280
272
  ```
281
273
  your-project/
282
274
  ├── .claude/
283
- │ └── rules/ ← Auto-cargado por Claude Code
284
- │ ├── 00.core/ (reglas generales — naming, arquitectura)
285
- │ ├── 10.backend/ (reglas de stack backend, si las hay)
286
- │ ├── 20.frontend/ (reglas de stack frontend, si las hay)
287
- │ ├── 30.security-db/ (convenciones de seguridad y DB)
288
- │ ├── 40.infra/ (env, logging, CI/CD)
289
- │ ├── 50.sync/ (recordatorios de doc-sync solo rules)
290
- │ ├── 60.memory/ (reglas de memoria Pass 4, solo rules)
275
+ │ └── rules/ ← Cargado automáticamente por Claude Code
276
+ │ ├── 00.core/ (reglas generales: nombrado, arquitectura)
277
+ │ ├── 10.backend/ (reglas del stack backend, si lo hay)
278
+ │ ├── 20.frontend/ (reglas del stack frontend, si lo hay)
279
+ │ ├── 30.security-db/ (convenciones de seguridad y BD)
280
+ │ ├── 40.infra/ (env, logs, CI/CD)
281
+ │ ├── 50.sync/ (recordatorios de sincronización docs, solo reglas)
282
+ │ ├── 60.memory/ (reglas de memoria, Pass 4, solo reglas)
291
283
  │ ├── 70.domains/{type}/ (reglas por dominio, type = backend|frontend)
292
- │ └── 80.verification/ (estrategia de pruebas + recordatorios de verificación de build)
284
+ │ └── 80.verification/ (recordatorios de testing y verificación de build)
293
285
  ├── claudeos-core/
294
- │ ├── standard/ ← Documentos de referencia (espejan la estructura de categorías)
295
- │ │ ├── 00.core/ (resumen del proyecto, arquitectura, naming)
296
- │ │ ├── 10.backend/ (referencia backend si hay stack backend)
297
- │ │ ├── 20.frontend/ (referencia frontend si hay stack frontend)
298
- │ │ ├── 30.security-db/ (referencia de seguridad y DB)
299
- │ │ ├── 40.infra/ (referencia env / logging / CI-CD)
286
+ │ ├── standard/ ← Documentación de referencia (misma estructura por categoría)
287
+ │ │ ├── 00.core/ (visión del proyecto, arquitectura, nombrado)
288
+ │ │ ├── 10.backend/ (referencia backend, si hay stack backend)
289
+ │ │ ├── 20.frontend/ (referencia frontend, si hay stack frontend)
290
+ │ │ ├── 30.security-db/ (referencia de seguridad y BD)
291
+ │ │ ├── 40.infra/ (referencia env / logs / CI-CD)
300
292
  │ │ ├── 70.domains/{type}/ (referencia por dominio)
301
- │ │ ├── 80.verification/ (referencia de build / arranque / pruebas solo standard)
302
- │ │ └── 90.optional/ (extras específicos del stack solo standard)
293
+ │ │ ├── 80.verification/ (referencia build / arranque / tests, solo standard)
294
+ │ │ └── 90.optional/ (extras según stack, solo standard)
303
295
  │ ├── skills/ (patrones reutilizables que Claude puede aplicar)
304
- │ ├── guide/ (guías how-to para tareas comunes)
305
- │ ├── database/ (resumen de esquema, guía de migraciones)
296
+ │ ├── guide/ (guías how-to para tareas frecuentes)
297
+ │ ├── database/ (visión del esquema, guía de migraciones)
306
298
  │ ├── mcp-guide/ (notas de integración MCP)
307
299
  │ └── memory/ (decision log, failure patterns, compaction)
308
300
  └── CLAUDE.md (el índice que Claude lee primero)
309
301
  ```
310
302
 
311
- Las categorías que comparten el mismo prefijo numérico entre `rules/` y `standard/` representan la misma área conceptual (p. ej., reglas `10.backend` standards `10.backend`). Categorías solo de rules: `50.sync` (recordatorios de sincronización de docs) y `60.memory` (memoria de Pass 4). Categoría solo de standard: `90.optional` (extras específicos del stack sin enforcement). Todos los demás prefijos (`00`, `10`, `20`, `30`, `40`, `70`, `80`) aparecen en AMBOS `rules/` y `standard/`. Claude Code ahora conoce tu proyecto.
303
+ Las categorías que comparten prefijo numérico entre `rules/` y `standard/` representan la misma área conceptual; por ejemplo, las reglas de `10.backend` se corresponden con los estándares de `10.backend`. Solo viven en `rules/` las categorías `50.sync` (recordatorios de sincronización) y `60.memory` (memoria de Pass 4); en cambio, solo en `standard/` vive `90.optional` (extras por stack, sin enforcement). El resto de prefijos (`00`, `10`, `20`, `30`, `40`, `70`, `80`) aparece en ambos lados. Con eso, Claude Code ya conoce el proyecto.
312
304
 
313
305
  ---
314
306
 
315
307
  ## ¿Para quién es esto?
316
308
 
317
- | Eres... | El dolor que esto elimina |
309
+ | Si eres... | El dolor que quita |
318
310
  |---|---|
319
- | **Un dev en solitario** empezando un proyecto nuevo con Claude Code | "Enseñarle a Claude mis convenciones cada sesión" desaparece. `CLAUDE.md` + `.claude/rules/` de 8 categorías generados en una sola pasada. |
320
- | **Un team lead** manteniendo estándares compartidos entre repos | El `.claude/rules/` se desincroniza cuando la gente renombra paquetes, cambia de ORM, o modifica wrappers de respuesta. ClaudeOS-Core re-sincroniza determinísticamente misma entrada, salida byte-idéntica, sin ruido en los diffs. |
321
- | **Ya usas Claude Code** pero estás cansado de corregir el código generado | Wrapper de respuesta incorrecto, layout de paquetes incorrecto, JPA cuando usas MyBatis, `try/catch` esparcido cuando tu proyecto usa middleware centralizado. El scanner extrae tus convenciones reales; cada pasada de Claude se ejecuta contra un allowlist explícito de rutas. |
322
- | **Haciendo onboarding a un nuevo repo** (proyecto existente, uniéndote a un equipo) | Ejecuta `init` en el repo, obtén un mapa de arquitectura vivo: tabla de stack en CLAUDE.md, reglas por capa con ejemplos ✅/❌, decision log seedeado con el "por qué" detrás de las decisiones principales (JPA vs MyBatis, REST vs GraphQL, etc.). Leer 5 archivos le gana a leer 5,000 archivos fuente. |
323
- | **Trabajando en español / coreano / japonés / chino / 6 idiomas más** | La mayoría de los generadores de reglas de Claude Code son solo en inglés. ClaudeOS-Core escribe el conjunto completo en **10 idiomas** (`en/ko/ja/zh-CN/es/vi/hi/ru/fr/de`) con **validación estructural byte-idéntica** el mismo veredicto de `claude-md-validator` independientemente del idioma de salida. |
324
- | **Trabajando con un monorepo** (Turborepo, pnpm/yarn workspaces, Lerna) | Dominios backend + frontend analizados en una sola ejecución con prompts separados; `apps/*/` y `packages/*/` recorridos automáticamente; reglas por stack emitidas bajo `70.domains/{type}/`. |
325
- | **Contribuyendo a OSS o experimentando** | La salida es gitignore-friendly `claudeos-core/` es tu directorio de trabajo local, solo `CLAUDE.md` + `.claude/` necesitan enviarse. Resume-safe si se interrumpe; idempotente al re-ejecutar (tus ediciones manuales en las reglas sobreviven sin `--force`). |
311
+ | **Dev en solitario** que arranca un proyecto con Claude Code | Se acabó lo de explicarle a Claude las convenciones del proyecto en cada sesión. Generas `CLAUDE.md` y las 8 categorías de `.claude/rules/` de una sola pasada. |
312
+ | **Tech lead** manteniendo estándares compartidos entre repos | Cuando alguien renombra paquetes, cambia de ORM o retoca el wrapper de respuesta, `.claude/rules/` deja de cuadrar. ClaudeOS-Core lo resincroniza siempre igual: misma entrada, misma salida byte a byte y sin ruido en el diff. |
313
+ | **Ya usas Claude Code** y estás cansado de corregir lo que genera | Wrapper equivocado, paquetes mal organizados, JPA cuando se usa MyBatis, `try/catch` esparcidos cuando ya hay middleware central. El scanner extrae las convenciones reales y cada paso de Claude se ejecuta contra una lista explícita de rutas permitidas. |
314
+ | **Te incorporas a un repo nuevo** (proyecto existente, llegada al equipo) | Lanzas `init` sobre el repo y obtienes un mapa vivo de la arquitectura: tabla de stack en CLAUDE.md, reglas por capa con ejemplos ✅/❌ y un decision log sembrado con el «por qué» de las decisiones grandes (JPA frente a MyBatis, REST frente a GraphQL, etc.). Leer 5 archivos sale más a cuenta que leer 5.000 fuentes. |
315
+ | **Trabajas en coreano, japonés, chino o 7 idiomas más** | La mayoría de generadores de reglas para Claude Code solo hablan inglés. ClaudeOS-Core escribe el conjunto completo en **10 idiomas** (`en/ko/ja/zh-CN/es/vi/hi/ru/fr/de`) con **validación estructural byte-identical**: el veredicto de `claude-md-validator` no varía según el idioma de salida. |
316
+ | **Trabajas en monorepo** (Turborepo, pnpm/yarn workspaces, Lerna) | En una sola ejecución se analizan los dominios de backend y frontend con prompts distintos. Recorre `apps/*/` y `packages/*/` automáticamente y emite las reglas de cada stack bajo `70.domains/{type}/`. |
317
+ | **Contribuyes a OSS o estás experimentando** | La salida es amigable con `.gitignore`: `claudeos-core/` es el directorio de trabajo local y al repo solo viajan `CLAUDE.md` y `.claude/`. Si interrumpes el proceso, lo retoma; al volver a ejecutarlo es idempotente y, sin `--force`, respeta las ediciones manuales. |
326
318
 
327
- **No es para ti si:** quieres un bundle preset de tipo "talla única" con agentes/skills/rules que funcione el primer día sin paso de escaneo (ver [docs/es/comparison.md](docs/es/comparison.md) para entender qué encaja en cada caso), tu proyecto aún no encaja en uno de los [stacks soportados](#supported-stacks), o solo necesitas un único `CLAUDE.md` (el `claude /init` integrado es suficiente no hace falta instalar otra herramienta).
319
+ **No es para ti si:** buscas un pack único y universal de agents/skills/rules que funcione el primer día sin paso de escaneo (consulta [docs/es/comparison.md](docs/es/comparison.md) para ver qué encaja en cada caso); el proyecto todavía no entra en los [stacks soportados](#supported-stacks); o solo necesitas un único `CLAUDE.md`, en cuyo caso el `claude /init` integrado ya basta y no hace falta otra herramienta.
328
320
 
329
321
  ---
330
322
 
331
323
  ## ¿Cómo funciona?
332
324
 
333
- ClaudeOS-Core invierte el flujo de trabajo habitual de Claude Code:
325
+ ClaudeOS-Core invierte el flujo habitual de Claude Code:
334
326
 
335
327
  ```
336
- Habitual: Tú describes el proyecto → Claude adivina tu stack → Claude escribe docs
337
- Aquí: El código lee tu stack → El código pasa hechos confirmados a Claude → Claude escribe docs a partir de hechos
328
+ Habitual: Tú describes el proyecto → Claude adivina tu stack → Claude escribe la documentación
329
+ Esto: El código lee tu stack → El código pasa hechos confirmados a Claude → Claude escribe a partir de hechos
338
330
  ```
339
331
 
340
- La pipeline corre en **tres etapas**, con código a ambos lados de la llamada al LLM:
332
+ La pipeline avanza en **tres etapas**, con código tanto antes como después de la llamada al LLM:
341
333
 
342
- **1. Step A — Scanner (determinístico, sin LLM).** Un scanner Node.js recorre la raíz de tu proyecto, lee `package.json` / `build.gradle` / `pom.xml` / `pyproject.toml`, parsea archivos `.env*` (con redacción de variables sensibles para `PASSWORD/SECRET/TOKEN/JWT_SECRET/...`), clasifica tu patrón de arquitectura (los 5 patrones de Java A/B/C/D/E, Kotlin CQRS / multi-módulo, Next.js App vs. Pages Router, FSD, components-pattern), descubre dominios, y construye un allowlist explícito de cada ruta de archivo fuente que existe. Salida: `project-analysis.json` la única fuente de verdad para lo que sigue.
334
+ **1. Etapa A — Scanner (reproducible, sin LLM).** Un scanner en Node.js recorre la raíz del proyecto, lee `package.json`, `build.gradle`, `pom.xml` o `pyproject.toml`, parsea los archivos `.env*` (con redacción automática de variables sensibles como `PASSWORD/SECRET/TOKEN/JWT_SECRET/...`), clasifica el patrón de arquitectura (los 5 patrones A/B/C/D/E de Java, CQRS o multi-módulo en Kotlin, App Router o Pages Router en Next.js, FSD, components-pattern), descubre los dominios y compone una lista explícita con todas las rutas de archivos fuente que existen. El resultado se vuelca en `project-analysis.json`, la única fuente de verdad para lo que viene después.
343
335
 
344
- **2. Step B — Pipeline de Claude de 4 pasadas (restringida por los hechos del Step A).**
345
- - **Pass 1** lee archivos representativos por grupo de dominio y extrae ~50–100 convenciones por dominio wrappers de respuesta, librerías de logging, manejo de errores, convenciones de naming, patrones de testing. Se ejecuta una vez por grupo de dominio (`máx 4 dominios, 40 archivos por grupo`) para que el contexto nunca se desborde.
346
- - **Pass 2** fusiona todo el análisis por dominio en una imagen a nivel de proyecto y resuelve los desacuerdos eligiendo la convención dominante.
347
- - **Pass 3** escribe `CLAUDE.md` + `.claude/rules/` + `claudeos-core/standard/` + skills + guides dividido en stages (`3a` facts → `3b-core/3b-N` rules+standards → `3c-core/3c-N` skills+guides → `3d-aux` database+mcp-guide) para que el prompt de cada stage quepa en la ventana de contexto del LLM incluso cuando `pass2-merged.json` es grande. Sub-divide 3b/3c en batches de 15 dominios para proyectos con ≥16 dominios.
348
- - **Pass 4** seedea la capa de memoria L4 (`decision-log.md`, `failure-patterns.md`, `compaction.md`, `auto-rule-update.md`) y agrega reglas universales de scaffold. Pass 4 tiene **prohibido modificar `CLAUDE.md`** la Section 8 de Pass 3 es autoritativa.
336
+ **2. Etapa B — Pipeline de 4 pasos sobre Claude (limitada por los hechos de la etapa A).**
337
+ - **Pass 1** lee archivos representativos por grupo de dominios y extrae unas 50–100 convenciones por dominio: wrappers de respuesta, librería de logging, manejo de errores, convenciones de nombrado, patrones de tests. Se ejecuta una vez por grupo (`max 4 domains, 40 files per group`) para que el contexto nunca se desborde.
338
+ - **Pass 2** funde los análisis por dominio en una única visión del proyecto y resuelve los conflictos quedándose con la convención dominante.
339
+ - **Pass 3** escribe `CLAUDE.md`, `.claude/rules/`, `claudeos-core/standard/`, las skills y las guides. Va dividido en etapas (`3a` facts → `3b-core/3b-N` rules+standards → `3c-core/3c-N` skills+guides → `3d-aux` database+mcp-guide) para que el prompt de cada etapa quepa en la ventana de contexto incluso cuando `pass2-merged.json` es grande. Si hay 16 dominios o más, 3b/3c se subdividen en lotes de 15 como mucho.
340
+ - **Pass 4** siembra la capa de memoria L4 (`decision-log.md`, `failure-patterns.md`, `compaction.md`, `auto-rule-update.md`) y añade reglas de scaffolding universales. Pass 4 **tiene prohibido tocar `CLAUDE.md`**: la sección 8 que produce Pass 3 manda.
349
341
 
350
- **3. Step C — Verification (determinístico, sin LLM).** Cinco validators verifican la salida:
351
- - `claude-md-validator` 25 checks estructurales en `CLAUDE.md` (8 secciones, conteos H3/H4, unicidad de archivos de memoria, invariante T1 de heading canónico). Language-invariant: mismo veredicto independientemente de `--lang`.
352
- - `content-validator` 10 checks de contenido incluyendo verificación de path-claim (`STALE_PATH` atrapa referencias `src/...` fabricadas) y detección de drift en MANIFEST.
353
- - `pass-json-validator` well-formedness JSON de Pass 1/2/3/4 + conteo de secciones consciente del stack.
354
- - `plan-validator` consistencia plan disco (legacy, mayormente no-op desde v2.1.0).
355
- - `sync-checker` consistencia de registro disco `sync-map.json` a través de 7 directorios rastreados.
342
+ **3. Etapa C — Verificación (reproducible, sin LLM).** Cinco validators revisan la salida:
343
+ - `claude-md-validator`: 25 comprobaciones estructurales sobre `CLAUDE.md` (8 secciones, conteos de H3/H4, unicidad de archivos de memoria, invariante T1 de heading canónico). Es independiente del idioma; el veredicto es el mismo para cualquier `--lang`.
344
+ - `content-validator`: 10 comprobaciones de contenido, entre ellas la verificación de las rutas citadas (`STALE_PATH` caza referencias inventadas a `src/...`) y la detección de drift en MANIFEST.
345
+ - `pass-json-validator`: que los JSON de Pass 1/2/3/4 estén bien formados y tengan el número de secciones esperado según el stack.
346
+ - `plan-validator`: consistencia entre plan y disco (legacy, prácticamente no-op desde la v2.1.0).
347
+ - `sync-checker`: consistencia entre los 7 directorios rastreados en disco y `sync-map.json`.
356
348
 
357
- Tres niveles de severidad (`fail` / `warn` / `advisory`) para que las warnings nunca bloqueen CI por hallucinations del LLM que el usuario puede arreglar manualmente.
349
+ Existen tres niveles de severidad (`fail` / `warn` / `advisory`), de modo que las alucinaciones del LLM que el usuario puede arreglar a mano nunca bloquean la CI con simples warnings.
358
350
 
359
- El invariante que ata todo: **Claude solo puede citar rutas que realmente existen en tu código**, porque el Step A le entrega un allowlist finito. Si el LLM aun así intenta inventar algo (raro pero ocurre con ciertos seeds), el Step C lo atrapa antes de que los docs se envíen.
351
+ La invariante que sostiene todo esto es clara: **Claude solo puede citar rutas que existan de verdad en el código**, porque la etapa A le pasa una lista cerrada. Y si aun así el LLM intenta inventarse algo (raro, pero pasa con ciertos seeds), la etapa C lo intercepta antes de entregar la documentación.
360
352
 
361
- Para detalles por pasada, resume basado en marker, el workaround de staged-rules para el block de path sensible `.claude/` de Claude Code, e internals de detección de stack, ver [docs/es/architecture.md](docs/es/architecture.md).
353
+ Para los detalles de cada paso, el sistema de resume basado en marcadores, el truco de staged-rules que esquiva el bloqueo de rutas sensibles de `.claude/` por parte de Claude Code, y la lógica interna de detección de stacks, consulta [docs/es/architecture.md](docs/es/architecture.md).
362
354
 
363
355
  ---
364
356
 
365
357
  ## Supported Stacks
366
358
 
367
- 12 stacks, auto-detectados desde los archivos de tu proyecto:
359
+ 12 stacks que se autodetectan a partir de los archivos del proyecto:
368
360
 
369
361
  **Backend:** Java/Spring Boot · Kotlin/Spring Boot · Node/Express · Node/Fastify · Node/NestJS · Python/Django · Python/FastAPI · Python/Flask
370
362
 
371
363
  **Frontend:** Node/Next.js · Node/Vite · Angular · Vue/Nuxt
372
364
 
373
- Los proyectos multi-stack (p. ej., Spring Boot backend + Next.js frontend) funcionan sin más.
365
+ Los proyectos multi-stack (por ejemplo, backend Spring Boot con frontend Next.js) funcionan tal cual.
374
366
 
375
- Para reglas de detección y lo que cada scanner extrae, ver [docs/es/stacks.md](docs/es/stacks.md).
367
+ Las reglas de detección y lo que extrae cada scanner están en [docs/es/stacks.md](docs/es/stacks.md).
376
368
 
377
369
  ---
378
370
 
379
371
  ## Flujo diario
380
372
 
381
- Tres comandos cubren ~95% del uso:
373
+ Con tres comandos cubres aproximadamente el 95% del uso:
382
374
 
383
375
  ```bash
384
376
  # Primera vez en un proyecto
385
377
  npx claudeos-core init
386
378
 
387
- # Después de editar manualmente standards o rules
379
+ # Tras editar manualmente standards o reglas
388
380
  npx claudeos-core lint
389
381
 
390
- # Health check (ejecuta antes de commits, o en CI)
382
+ # Health check (antes de hacer commit, o en CI)
391
383
  npx claudeos-core health
392
384
  ```
393
385
 
394
- Dos más para mantenimiento del memory layer:
395
-
396
- ```bash
397
- # Compactar el log de failure-patterns (ejecuta periódicamente)
398
- npx claudeos-core memory compact
399
-
400
- # Promover patrones de fallos frecuentes a reglas propuestas
401
- npx claudeos-core memory propose-rules
402
- ```
403
-
404
- Para todas las opciones de cada comando, ver [docs/es/commands.md](docs/es/commands.md).
386
+ Las opciones completas de cada comando están en [docs/es/commands.md](docs/es/commands.md). Los comandos de la capa de memoria (`memory compact`, `memory propose-rules`) se documentan más abajo en la sección [Memory Layer](#memory-layer-opcional-para-proyectos-de-larga-duración).
405
387
 
406
388
  ---
407
389
 
408
- ## Qué hace diferente a esto
390
+ ## Qué lo hace diferente
409
391
 
410
- La mayoría de las herramientas de documentación de Claude Code generan a partir de una descripción (le dices a la herramienta, la herramienta le dice a Claude). ClaudeOS-Core genera a partir de tu código fuente real (la herramienta lee, la herramienta le dice a Claude lo que está confirmado, Claude escribe solo lo que está confirmado).
392
+ La mayoría de herramientas de documentación para Claude Code parten de una descripción:se la cuentas a la herramienta y la herramienta se la cuenta a Claude. ClaudeOS-Core, en cambio, parte del código fuente real. La herramienta lee, le entrega a Claude lo que está confirmado y Claude solo escribe lo que está confirmado.
411
393
 
412
- Tres consecuencias concretas:
394
+ Esto se traduce en tres consecuencias concretas:
413
395
 
414
- 1. **Detección determinística del stack.** Mismo proyecto + mismo código = misma salida. Nada de "esta vez Claude tiró el dado distinto".
415
- 2. **Sin rutas inventadas.** El prompt de Pass 3 lista explícitamente cada ruta de origen permitida; Claude no puede citar rutas que no existen.
416
- 3. **Multi-stack consciente.** Los dominios backend y frontend usan distintos prompts de análisis en la misma ejecución.
396
+ 1. **Detección reproducible del stack.** Mismo proyecto y mismo código equivalen a la misma salida. Nada de «esta vez Claude lo ha hecho distinto».
397
+ 2. **Sin rutas inventadas.** El prompt de Pass 3 lleva listadas todas las rutas fuente permitidas; Claude no puede citar nada que no exista.
398
+ 3. **Consciente del multi-stack.** En la misma ejecución, los dominios de backend y de frontend usan prompts de análisis distintos.
417
399
 
418
- Para una comparación lado a lado de scope con otras herramientas, ver [docs/es/comparison.md](docs/es/comparison.md). La comparación trata sobre **qué hace cada herramienta**, no **cuál es mejor** la mayoría son complementarias.
400
+ Para una comparación lado a lado con otras herramientas, consulta [docs/es/comparison.md](docs/es/comparison.md). La comparación va de **qué hace cada herramienta**, no de **cuál es mejor**; en su mayoría son complementarias.
419
401
 
420
402
  ---
421
403
 
422
404
  ## Verificación (post-generación)
423
405
 
424
- Después de que Claude escribe los docs, el código los verifica. Cinco validators separados:
406
+ Cuando Claude termina de escribir, le toca al código revisarlo. Cinco validators independientes:
425
407
 
426
- | Validator | Qué comprueba | Lo ejecuta |
408
+ | Validator | Qué comprueba | Lo lanza |
427
409
  |---|---|---|
428
- | `claude-md-validator` | Invariantes estructurales de CLAUDE.md (8 secciones, language-invariant) | `claudeos-core lint` |
429
- | `content-validator` | Las rutas declaradas existen realmente; consistencia del manifest | `health` (advisory) |
430
- | `pass-json-validator` | Las salidas Pass 1 / 2 / 3 / 4 son JSON bien formado | `health` (warn) |
431
- | `plan-validator` | El plan guardado coincide con lo que hay en disco | `health` (fail-on-error) |
432
- | `sync-checker` | Los archivos en disco coinciden con los registros de `sync-map.json` (detección de huérfanos/no registrados) | `health` (fail-on-error) |
410
+ | `claude-md-validator` | Invariantes estructurales de CLAUDE.md (8 secciones, independiente del idioma) | `claudeos-core lint` |
411
+ | `content-validator` | Que las rutas citadas existen y que el manifest es consistente | `health` (advisory) |
412
+ | `pass-json-validator` | Que los JSON de Pass 1 / 2 / 3 / 4 están bien formados | `health` (warn) |
413
+ | `plan-validator` | Que el plan guardado coincide con lo que hay en disco | `health` (fail-on-error) |
414
+ | `sync-checker` | Que los archivos en disco cuadran con `sync-map.json` (detecta huérfanos y no registrados) | `health` (fail-on-error) |
433
415
 
434
- Un `health-checker` orquesta los cuatro validators de runtime con severidad de tres niveles (fail / warn / advisory) y termina con el código adecuado para CI. `claude-md-validator` se ejecuta por separado vía el comando `lint` ya que el drift estructural es una señal de re-init, no un soft warning. Ejecuta cuando quieras:
416
+ El `health-checker` orquesta los cuatro validators de runtime con las tres severidades (fail / warn / advisory) y termina con el código de salida adecuado para CI. `claude-md-validator`, por su parte, corre por separado a través del comando `lint`, porque cualquier drift estructural es señal de que toca volver a hacer init, no un simple aviso. Se puede lanzar cuando convenga:
435
417
 
436
418
  ```bash
437
419
  npx claudeos-core health
438
420
  ```
439
421
 
440
- Para los checks de cada validator en detalle, ver [docs/es/verification.md](docs/es/verification.md).
422
+ El detalle de las comprobaciones de cada validator está en [docs/es/verification.md](docs/es/verification.md).
441
423
 
442
424
  ---
443
425
 
444
426
  ## Memory Layer (opcional, para proyectos de larga duración)
445
427
 
446
- Después de v2.0, ClaudeOS-Core escribe una carpeta `claudeos-core/memory/` con cuatro archivos:
428
+ Más allá de la pipeline de scaffolding, ClaudeOS-Core también prepara la carpeta `claudeos-core/memory/` para proyectos en los que el contexto sobrevive a una sola sesión. Es opcional: si solo interesan `CLAUDE.md` y las reglas, se puede ignorar sin problema.
447
429
 
448
- - `decision-log.md` append-only "por qué elegimos X sobre Y"
449
- - `failure-patterns.md` — errores recurrentes con puntuaciones de frequency/importance
450
- - `compaction.md` — cómo se auto-compacta la memoria con el tiempo
451
- - `auto-rule-update.md` — patrones que deberían convertirse en nuevas reglas
430
+ Son cuatro archivos y los escribe Pass 4:
452
431
 
453
- Puedes ejecutar `npx claudeos-core memory propose-rules` para pedirle a Claude que mire los patrones de fallos recientes y sugiera nuevas reglas para añadir.
432
+ - `decision-log.md`: bitácora append-only de «por qué elegimos X en lugar de Y», sembrada desde `pass2-merged.json`.
433
+ - `failure-patterns.md`: errores recurrentes con puntuaciones de frecuencia e importancia.
434
+ - `compaction.md`: cómo se compacta la memoria automáticamente con el tiempo.
435
+ - `auto-rule-update.md`: patrones que merecen convertirse en reglas nuevas.
454
436
 
455
- Para el modelo de memoria y el ciclo de vida, ver [docs/es/memory-layer.md](docs/es/memory-layer.md).
437
+ Dos comandos mantienen viva esta capa:
438
+
439
+ ```bash
440
+ # Compactar el log de failure-patterns (ejecuta de vez en cuando)
441
+ npx claudeos-core memory compact
442
+
443
+ # Promover los failure patterns frecuentes a propuestas de regla
444
+ npx claudeos-core memory propose-rules
445
+ ```
446
+
447
+ El modelo de memoria y su ciclo de vida están en [docs/es/memory-layer.md](docs/es/memory-layer.md).
456
448
 
457
449
  ---
458
450
 
459
451
  ## FAQ
460
452
 
461
453
  **P: ¿Necesito una API key de Claude?**
462
- R: No. ClaudeOS-Core usa tu instalación existente de Claude Code canaliza prompts a `claude -p` en tu máquina. No necesitas cuentas extra.
454
+ R: No. ClaudeOS-Core se apoya en la instalación existente de Claude Code y manda los prompts al `claude -p` que ya tienes en la máquina. Sin cuentas extra.
463
455
 
464
- **P: ¿Esto sobrescribirá mi CLAUDE.md o `.claude/rules/` existente?**
465
- R: Primera ejecución en un proyecto nuevo: los crea. Re-ejecutar sin `--force` preserva tus ediciones los marcadores de pase de la ejecución anterior se detectan y los pases se omiten. Re-ejecutar con `--force` borra y regenera todo (tus ediciones se pierden eso es lo que `--force` significa). Ver [docs/es/safety.md](docs/es/safety.md).
456
+ **P: ¿Va a sobrescribir mi CLAUDE.md o mi `.claude/rules/`?**
457
+ R: La primera vez sobre un proyecto nuevo los crea. Si vuelves a ejecutarlo sin `--force`, se respetan las ediciones, porque detecta los marcadores de pass de la ejecución anterior y se salta esos pasos. Con `--force`, en cambio, borra y regenera todo (y sí, también desaparecen las ediciones; eso es lo que significa `--force`). Más detalle en [docs/es/safety.md](docs/es/safety.md).
466
458
 
467
- **P: Mi stack no está soportado. ¿Puedo añadir uno?**
468
- R: Sí. Los stacks nuevos necesitan ~3 plantillas de prompt + un domain scanner. Ver [CONTRIBUTING.md](CONTRIBUTING.md) para la guía de 8 pasos.
459
+ **P: Mi stack no está soportado, ¿puedo añadirlo?**
460
+ R: Sí. Para un stack nuevo hacen falta unos 3 prompt templates y un domain scanner. La guía en 8 pasos vive en [CONTRIBUTING.md](CONTRIBUTING.md).
469
461
 
470
- **P: ¿Cómo genero docs en español (u otro idioma)?**
471
- R: `npx claudeos-core init --lang es`. 10 idiomas soportados: en, ko, ja, zh-CN, es, vi, hi, ru, fr, de.
462
+ **P: ¿Cómo genero la documentación en español (o en otro idioma)?**
463
+ R: Con `npx claudeos-core init --lang es`. Hay 10 idiomas soportados: en, ko, ja, zh-CN, es, vi, hi, ru, fr, de.
472
464
 
473
465
  **P: ¿Funciona con monorepos?**
474
- R: Turborepo (`turbo.json`), pnpm workspaces (`pnpm-workspace.yaml`), Lerna (`lerna.json`) y npm/yarn workspaces (`package.json#workspaces`) son detectados por el stack-detector. Cada app obtiene su propio análisis. Otras estructuras de monorepo (p. ej., NX) no se detectan específicamente, pero los patrones genéricos `apps/*/` y `packages/*/` los siguen detectando los scanners por stack.
466
+ R: Sí. El stack-detector reconoce Turborepo (`turbo.json`), pnpm workspaces (`pnpm-workspace.yaml`), Lerna (`lerna.json`) y los workspaces de npm/yarn (`package.json#workspaces`). Cada app se analiza por separado. Otros layouts (NX, por ejemplo) no se detectan de manera específica, aunque los scanners de cada stack siguen reconociendo los patrones genéricos `apps/*/` y `packages/*/`.
475
467
 
476
- **P: ¿Qué pasa si Claude Code genera reglas con las que no estoy de acuerdo?**
477
- R: Edítalas directamente. Luego ejecuta `npx claudeos-core lint` para verificar que CLAUDE.md sigue siendo estructuralmente válido. Tus ediciones se preservan en ejecuciones posteriores de `init` (sin `--force`) el mecanismo de resume omite los pases cuyos marcadores existen.
468
+ **P: ¿Y si Claude Code genera reglas con las que no estoy de acuerdo?**
469
+ R: Se editan directamente. Después, un `npx claudeos-core lint` confirma que CLAUDE.md sigue siendo estructuralmente válido. Esas ediciones sobreviven a los siguientes `init` (sin `--force`), porque el mecanismo de resume se salta los pasos cuyos marcadores ya existen.
478
470
 
479
471
  **P: ¿Dónde reporto bugs?**
480
- R: [GitHub Issues](https://github.com/claudeos-core/claudeos-core/issues). Para problemas de seguridad, ver [SECURITY.md](SECURITY.md).
472
+ R: En [GitHub Issues](https://github.com/claudeos-core/claudeos-core/issues). Para temas de seguridad, consulta [SECURITY.md](SECURITY.md).
473
+
474
+ ---
475
+
476
+ ## Si esto te ahorró tiempo
477
+
478
+ Una ⭐ en GitHub mantiene el proyecto visible y ayuda a que otra gente lo encuentre. Issues, PRs y contribuciones de templates de stack son siempre bienvenidos; los detalles están en [CONTRIBUTING.md](CONTRIBUTING.md).
481
479
 
482
480
  ---
483
481
 
484
482
  ## Documentación
485
483
 
486
- | Tema | Lee esto |
484
+ | Tema | Lectura recomendada |
487
485
  |---|---|
488
- | Cómo funciona la pipeline de 4 pasadas (más profundo que el diagrama) | [docs/es/architecture.md](docs/es/architecture.md) |
486
+ | Cómo funciona la pipeline de 4 pasos (más a fondo que el diagrama) | [docs/es/architecture.md](docs/es/architecture.md) |
489
487
  | Diagramas visuales (Mermaid) de la arquitectura | [docs/es/diagrams.md](docs/es/diagrams.md) |
490
- | Detección de stack qué busca cada scanner | [docs/es/stacks.md](docs/es/stacks.md) |
491
- | Memory layer decision logs y failure patterns | [docs/es/memory-layer.md](docs/es/memory-layer.md) |
492
- | Los 5 validators en detalle | [docs/es/verification.md](docs/es/verification.md) |
493
- | Cada comando CLI y opción | [docs/es/commands.md](docs/es/commands.md) |
488
+ | Detección de stack: qué busca cada scanner | [docs/es/stacks.md](docs/es/stacks.md) |
489
+ | Memory layer: decision logs y failure patterns | [docs/es/memory-layer.md](docs/es/memory-layer.md) |
490
+ | Detalle de los 5 validators | [docs/es/verification.md](docs/es/verification.md) |
491
+ | Todos los comandos y opciones de la CLI | [docs/es/commands.md](docs/es/commands.md) |
494
492
  | Instalación manual (sin `npx`) | [docs/es/manual-installation.md](docs/es/manual-installation.md) |
495
- | Overrides del scanner `.claudeos-scan.json` | [docs/es/advanced-config.md](docs/es/advanced-config.md) |
496
- | Seguridad: qué se preserva al re-init | [docs/es/safety.md](docs/es/safety.md) |
497
- | Comparación con herramientas similares (scope, no calidad) | [docs/es/comparison.md](docs/es/comparison.md) |
493
+ | Overrides del scanner: `.claudeos-scan.json` | [docs/es/advanced-config.md](docs/es/advanced-config.md) |
494
+ | Seguridad: qué se preserva al volver a hacer init | [docs/es/safety.md](docs/es/safety.md) |
495
+ | Comparación con herramientas similares (alcance, no calidad) | [docs/es/comparison.md](docs/es/comparison.md) |
498
496
  | Errores y recuperación | [docs/es/troubleshooting.md](docs/es/troubleshooting.md) |
499
497
 
500
498
  ---
501
499
 
502
500
  ## Contribuir
503
501
 
504
- Las contribuciones son bienvenidas añadir soporte de stacks, mejorar prompts, arreglar bugs. Ver [CONTRIBUTING.md](CONTRIBUTING.md).
502
+ Las contribuciones son bienvenidas: añadir soporte de stacks, mejorar prompts, arreglar bugs. Detalles en [CONTRIBUTING.md](CONTRIBUTING.md).
505
503
 
506
- Para el Código de Conducta y la política de seguridad, ver [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) y [SECURITY.md](SECURITY.md).
504
+ Para el código de conducta y la política de seguridad, consulta [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) y [SECURITY.md](SECURITY.md).
507
505
 
508
506
  ## Licencia
509
507
 
510
- [ISC](LICENSE) gratis para cualquier uso, incluyendo comercial.
508
+ [ISC License](LICENSE). De libre uso, también comercial. © 2025–2026 ClaudeOS-Core contributors.
511
509
 
512
510
  ---
513
511
 
514
- <sub>Construido con cuidado por [@claudeos-core](https://github.com/claudeos-core). Si esto te ahorró tiempo, una ⭐ en GitHub ayuda a mantenerlo visible.</sub>
512
+ <sub>Mantenido por el equipo [claudeos-core](https://github.com/claudeos-core). Issues y PRs en <https://github.com/claudeos-core/claudeos-core>.</sub>