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/CHANGELOG.md +33 -0
- package/README.de.md +172 -174
- package/README.es.md +161 -163
- package/README.fr.md +159 -161
- package/README.hi.md +166 -168
- package/README.ja.md +166 -168
- package/README.ko.md +139 -141
- package/README.md +55 -57
- package/README.ru.md +173 -175
- package/README.vi.md +169 -171
- package/README.zh-CN.md +168 -170
- package/bin/commands/init.js +3 -3
- package/content-validator/index.js +20 -3
- package/lib/expected-outputs.js +1 -1
- package/manifest-generator/index.js +11 -0
- package/manifest-generator/skills-sync.js +393 -0
- package/package.json +1 -1
- package/plan-installer/scanners/scan-java.js +2 -2
package/README.es.md
CHANGED
|
@@ -7,58 +7,40 @@
|
|
|
7
7
|
[](LICENSE)
|
|
8
8
|
[](https://www.npmjs.com/package/claudeos-core)
|
|
9
9
|
|
|
10
|
-
**
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
##
|
|
34
|
+
## Míralo en un proyecto real
|
|
53
35
|
|
|
54
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
83
|
+
Pass 3 split complete: 4/4 stages successful
|
|
102
84
|
[███████████████░░░░░] 75% (3/4)
|
|
103
85
|
|
|
104
86
|
[7] Pass 4 — Memory scaffolding...
|
|
105
|
-
|
|
87
|
+
Pass 4 staged-rules: 6 rule files moved to .claude/rules/
|
|
106
88
|
✅ Pass 4 complete (5m)
|
|
107
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
164
|
+
#### Controller Rules
|
|
183
165
|
|
|
184
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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: ["**/*"]`
|
|
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
|
|
218
|
+
<summary><strong>Un seed de <code>decision-log.md</code> auto-generado (extracto real)</strong></summary>
|
|
237
219
|
|
|
238
220
|
```markdown
|
|
239
|
-
|
|
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
|
|
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
|
-
##
|
|
246
|
+
## Probado en
|
|
265
247
|
|
|
266
|
-
|
|
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.
|
|
261
|
+
# 1. Sitúate en la raíz del proyecto
|
|
270
262
|
cd my-spring-boot-project
|
|
271
263
|
|
|
272
|
-
# 2.
|
|
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
|
|
267
|
+
# 3. Listo. Abre Claude Code y empieza a programar; las reglas ya están cargadas.
|
|
276
268
|
```
|
|
277
269
|
|
|
278
|
-
|
|
270
|
+
Cuando termina `init` te encuentras con esto:
|
|
279
271
|
|
|
280
272
|
```
|
|
281
273
|
your-project/
|
|
282
274
|
├── .claude/
|
|
283
|
-
│ └── rules/ ←
|
|
284
|
-
│ ├── 00.core/ (reglas generales
|
|
285
|
-
│ ├── 10.backend/ (reglas
|
|
286
|
-
│ ├── 20.frontend/ (reglas
|
|
287
|
-
│ ├── 30.security-db/ (convenciones de seguridad y
|
|
288
|
-
│ ├── 40.infra/ (env,
|
|
289
|
-
│ ├── 50.sync/ (recordatorios de
|
|
290
|
-
│ ├── 60.memory/ (reglas de memoria
|
|
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/ (
|
|
284
|
+
│ └── 80.verification/ (recordatorios de testing y verificación de build)
|
|
293
285
|
├── claudeos-core/
|
|
294
|
-
│ ├── standard/ ←
|
|
295
|
-
│ │ ├── 00.core/ (
|
|
296
|
-
│ │ ├── 10.backend/ (referencia backend
|
|
297
|
-
│ │ ├── 20.frontend/ (referencia frontend
|
|
298
|
-
│ │ ├── 30.security-db/ (referencia de seguridad y
|
|
299
|
-
│ │ ├── 40.infra/ (referencia env /
|
|
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
|
|
302
|
-
│ │ └── 90.optional/ (extras
|
|
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
|
|
305
|
-
│ ├── database/ (
|
|
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
|
|
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
|
-
|
|
|
309
|
+
| Si eres... | El dolor que quita |
|
|
318
310
|
|---|---|
|
|
319
|
-
| **
|
|
320
|
-
| **
|
|
321
|
-
| **Ya usas Claude Code**
|
|
322
|
-
| **
|
|
323
|
-
| **
|
|
324
|
-
| **
|
|
325
|
-
| **
|
|
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:**
|
|
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
|
|
325
|
+
ClaudeOS-Core invierte el flujo habitual de Claude Code:
|
|
334
326
|
|
|
335
327
|
```
|
|
336
|
-
Habitual:
|
|
337
|
-
|
|
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
|
|
332
|
+
La pipeline avanza en **tres etapas**, con código tanto antes como después de la llamada al LLM:
|
|
341
333
|
|
|
342
|
-
**1.
|
|
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.
|
|
345
|
-
- **Pass 1** lee archivos representativos por grupo de
|
|
346
|
-
- **Pass 2**
|
|
347
|
-
- **Pass 3** escribe `CLAUDE.md
|
|
348
|
-
- **Pass 4**
|
|
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.
|
|
351
|
-
- `claude-md-validator
|
|
352
|
-
- `content-validator
|
|
353
|
-
- `pass-json-validator
|
|
354
|
-
- `plan-validator
|
|
355
|
-
- `sync-checker
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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 (
|
|
365
|
+
Los proyectos multi-stack (por ejemplo, backend Spring Boot con frontend Next.js) funcionan tal cual.
|
|
374
366
|
|
|
375
|
-
|
|
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
|
-
|
|
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
|
-
#
|
|
379
|
+
# Tras editar manualmente standards o reglas
|
|
388
380
|
npx claudeos-core lint
|
|
389
381
|
|
|
390
|
-
# Health check (
|
|
382
|
+
# Health check (antes de hacer commit, o en CI)
|
|
391
383
|
npx claudeos-core health
|
|
392
384
|
```
|
|
393
385
|
|
|
394
|
-
|
|
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
|
|
390
|
+
## Qué lo hace diferente
|
|
409
391
|
|
|
410
|
-
La mayoría de
|
|
392
|
+
La mayoría de herramientas de documentación para Claude Code parten de una descripción: tú 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
|
-
|
|
394
|
+
Esto se traduce en tres consecuencias concretas:
|
|
413
395
|
|
|
414
|
-
1. **Detección
|
|
415
|
-
2. **Sin rutas inventadas.** El prompt de Pass 3
|
|
416
|
-
3. **
|
|
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
|
|
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
|
-
|
|
406
|
+
Cuando Claude termina de escribir, le toca al código revisarlo. Cinco validators independientes:
|
|
425
407
|
|
|
426
|
-
| Validator | Qué comprueba | Lo
|
|
408
|
+
| Validator | Qué comprueba | Lo lanza |
|
|
427
409
|
|---|---|---|
|
|
428
|
-
| `claude-md-validator` | Invariantes estructurales de CLAUDE.md (8 secciones,
|
|
429
|
-
| `content-validator` |
|
|
430
|
-
| `pass-json-validator` |
|
|
431
|
-
| `plan-validator` |
|
|
432
|
-
| `sync-checker` |
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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: ¿
|
|
465
|
-
R:
|
|
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
|
|
468
|
-
R: Sí.
|
|
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
|
|
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:
|
|
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: ¿
|
|
477
|
-
R:
|
|
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
|
|
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 |
|
|
484
|
+
| Tema | Lectura recomendada |
|
|
487
485
|
|---|---|
|
|
488
|
-
| Cómo funciona la pipeline de 4
|
|
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
|
|
491
|
-
| Memory layer
|
|
492
|
-
|
|
|
493
|
-
|
|
|
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
|
|
496
|
-
| Seguridad: qué se preserva al
|
|
497
|
-
| Comparación con herramientas similares (
|
|
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
|
|
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
|
|
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)
|
|
508
|
+
[ISC License](LICENSE). De libre uso, también comercial. © 2025–2026 ClaudeOS-Core contributors.
|
|
511
509
|
|
|
512
510
|
---
|
|
513
511
|
|
|
514
|
-
<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>
|