clckernel 1.2.19 → 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 (78) hide show
  1. package/.agents/skills/clckernel_cli/SKILL.md +23 -6
  2. package/.agents/skills/clckernel_cli/reference/audit.md +13 -3
  3. package/.agents/skills/clckernel_cli/reference/commit.md +1 -1
  4. package/.agents/skills/clckernel_cli/reference/doctor.md +5 -3
  5. package/.agents/skills/clckernel_cli/reference/feature.md +3 -3
  6. package/.agents/skills/clckernel_cli/reference/guard.md +48 -12
  7. package/.agents/skills/clckernel_cli/reference/phase.md +6 -3
  8. package/.agents/skills/clckernel_cli/reference/start.md +14 -4
  9. package/.agents/skills/clckernel_cli/reference/test.md +1 -1
  10. package/.agents/skills/clckernel_cli/reference/update.md +19 -19
  11. package/CHANGELOG.md +244 -0
  12. package/LICENSE +21 -0
  13. package/README.es.md +280 -51
  14. package/README.md +274 -50
  15. package/bin/cli.js +8 -0
  16. package/package.json +12 -2
  17. package/src/adapters/agent-os.js +161 -84
  18. package/src/adapters/astro.js +8 -6
  19. package/src/adapters/base.js +23 -38
  20. package/src/adapters/django.js +14 -13
  21. package/src/adapters/fastapi.js +16 -15
  22. package/src/adapters/go.js +11 -9
  23. package/src/adapters/laravel.js +12 -10
  24. package/src/adapters/nextjs.js +7 -5
  25. package/src/adapters/rails.js +13 -11
  26. package/src/adapters/rust.js +11 -9
  27. package/src/catalog.js +58 -49
  28. package/src/config.js +38 -240
  29. package/src/detector.js +243 -44
  30. package/src/doctor.js +18 -9
  31. package/src/generator.js +734 -302
  32. package/src/gitignore.js +60 -14
  33. package/src/index.js +257 -18
  34. package/src/io.js +409 -0
  35. package/src/known-hashes.json +309 -0
  36. package/src/onboarding.js +15 -0
  37. package/src/technologies/detector.js +1 -1
  38. package/src/technologies/guards/_shared.js +1 -1
  39. package/src/ui.js +233 -40
  40. package/src/updater.js +271 -38
  41. package/tools/_changes.js +279 -0
  42. package/tools/_changes.py +233 -0
  43. package/tools/_config.js +294 -0
  44. package/tools/_config.py +271 -0
  45. package/tools/_yaml.py +489 -0
  46. package/tools/audit.js +511 -111
  47. package/tools/audit.py +506 -128
  48. package/tools/celery_guard.py +13 -35
  49. package/tools/check_a11y.js +8 -28
  50. package/tools/check_api_contracts.js +13 -39
  51. package/tools/check_architecture.js +35 -44
  52. package/tools/check_architecture.py +172 -105
  53. package/tools/check_custom.js +108 -61
  54. package/tools/check_custom.py +108 -271
  55. package/tools/check_data_files.js +88 -0
  56. package/tools/check_db_efficiency.py +80 -65
  57. package/tools/check_hitl.js +112 -69
  58. package/tools/check_links.js +138 -0
  59. package/tools/check_migrations.py +143 -94
  60. package/tools/check_performance.js +35 -44
  61. package/tools/check_placeholders.js +104 -0
  62. package/tools/check_responsive.js +8 -28
  63. package/tools/check_scope.py +40 -31
  64. package/tools/check_seo.js +8 -28
  65. package/tools/check_skills.js +158 -0
  66. package/tools/check_storybook.js +8 -21
  67. package/tools/check_symlinks.js +40 -22
  68. package/tools/check_ui_reuse.js +17 -29
  69. package/tools/docker_guard.py +19 -41
  70. package/tools/postgres_guard.py +15 -36
  71. package/tools/redis_guard.py +13 -35
  72. package/tools/scan_secrets.js +134 -67
  73. package/tools/scan_secrets.py +163 -72
  74. package/tools/verify_tdd.js +867 -0
  75. package/tools/verify_tdd.py +407 -165
  76. package/tools/yaml.js +404 -132
  77. package/tools/check_domain_data.js +0 -100
  78. package/tools/check_test_calendar_sync.js +0 -111
package/README.es.md CHANGED
@@ -13,7 +13,7 @@
13
13
 
14
14
  Los agentes de programación con IA (Cursor, Claude Code, Windsurf, Copilot) codifican a gran velocidad, pero sin límites introducen degradación arquitectónica, tests falsos positivos y fuga de credenciales.
15
15
 
16
- **CLC Kernel** es un arnés de desarrollo políglota que gobierna físicamente a los agentes mediante **linters AST deterministas (< 5ms)**, **especificaciones SDD locales** y el cumplimiento del **Proceso Unificado de IA (AIUP)**.
16
+ **CLC Kernel** es un arnés de desarrollo políglota que gobierna a los agentes mediante **guards pre-commit deterministas** (verificaciones basadas en patrones, más guards con Python AST en stacks Python), **especificaciones SDD locales** y el cumplimiento del **Proceso Unificado de IA (AIUP)**.
17
17
 
18
18
  ---
19
19
 
@@ -22,12 +22,16 @@ Los agentes de programación con IA (Cursor, Claude Code, Windsurf, Copilot) cod
22
22
  - [🏛️ El Proceso Unificado de IA (AIUP)](#️-el-proceso-unificado-de-ia-aiup)
23
23
  - [🔍 Desarrollo Guiado por Revisión (RDD) y los 4 Lentes](#-desarrollo-guiado-por-revisión-rdd-y-los-4-lentes)
24
24
  - [⚡ Guía Paso a Paso (Ciclo Completo)](#-guía-paso-a-paso-ciclo-completo)
25
+ - [🧭 Qué ocurre después de instalar](#despues-de-instalar)
25
26
  - [🎮 Interfaz Universal de Comandos](#-interfaz-universal-de-comandos)
26
27
  - [🔄 Actualización de Proyectos Existentes](#-actualización-de-proyectos-existentes)
28
+ - [⚙️ Configuración (`.clckernel.yaml`)](#configuracion)
27
29
  - [🌐 Ecosistemas Soportados y Arquetipos](#-ecosistemas-soportados-y-arquetipos)
30
+ - [⚠️ Limitaciones conocidas](#limitaciones-conocidas)
28
31
  - [🏛️ Arquitectura: Standalone vs. Simbiosis con Gentle AI](#-arquitectura-standalone-vs-simbiosis-con-gentle-ai)
29
32
  - [🧩 Herramientas Complementarias (Opcionales)](#-herramientas-complementarias-opcionales)
30
33
  - [📖 Glosario de Términos Clave](#-glosario-de-términos-clave)
34
+ - [🤝 Contribuciones y Comunidad](#-contribuciones-y-comunidad)
31
35
  - [📄 Licencia](#-licencia)
32
36
 
33
37
  ---
@@ -37,10 +41,10 @@ Los agentes de programación con IA (Cursor, Claude Code, Windsurf, Copilot) cod
37
41
 
38
42
  | Caso de Uso | Problema que Resuelve | Cómo lo Resuelve CLC Kernel |
39
43
  |---|---|---|
40
- | **1. Gobernanza de Coding Agents**<br>*(Cursor, Claude Code, Copilot)* | Los agentes programan por intuición ("vibe coding"), se saltan pruebas y rompen capas de arquitectura en backend y frontend. | Impone la **Regla #0** (Investigación -> SDD -> TDD Rojo a Verde -> Auditoría AST) y bloquea commits no conformes mediante linters AST. |
41
- | **2. Arquetipos Agent-OS y Flujos de Dominio**<br>*(Bots autónomos, OS de marketing/ventas)* | Runtimes de agentes ejecutan acciones sin supervisión, alucinan métricas o desincronizan reglas en diferentes IDEs. | Provee **Gobernanza Dual-Layer**, valida symlinks de reglas para IDEs, exige compuertas Human-in-the-Loop (`check_hitl`) y valida esquemas con null seguro (`check_domain_data`). |
42
- | **3. Refactorizaciones y Migraciones Críticas** | Los agentes modifican archivos fuera del alcance acordado, introduciendo regresiones silenciosas. | Delimita el trabajo en una especificación local `sdds/{cambio}/spec.md` y bloquea commits que toquen archivos no autorizados (`check_scope`). |
43
- | **4. Blindaje Pre-Commit y Shift-Left en CI/CD** | Fuga de credenciales, consultas N+1 en bucles y migraciones destructivas llegan a ramas remotas. | Ejecuta validaciones AST sin dependencias foráneas en el lenguaje nativo del stack en **< 5ms** antes de cada commit. |
44
+ | **1. Gobernanza de Coding Agents**<br>*(Cursor, Claude Code, Copilot)* | Los agentes programan por intuición ("vibe coding"), se saltan pruebas y rompen capas de arquitectura en backend y frontend. | Impone la **Regla #0** (Investigación -> SDD -> TDD Rojo a Verde -> Auditoría) y bloquea commits no conformes mediante el hook pre-commit (`--no-verify` lo omite; CI actúa como respaldo). |
45
+ | **2. Arquetipos Agent-OS y Flujos de Dominio**<br>*(Bots autónomos, OS de marketing/ventas)* | Runtimes de agentes ejecutan acciones sin supervisión, alucinan métricas o desincronizan reglas en diferentes IDEs. | Provee **Gobernanza Dual-Layer** y guards para cualquier repositorio de agentes: marcadores Human-in-the-Loop explícitos en skills y playbooks (`check_hitl`), frontmatter de SKILL.md (`check_skills`), links relativos (`check_links`), placeholders olvidados (`check_placeholders`), archivos de datos JSON que parsean (`check_data_files`) y mirrors de reglas que apuntan a AGENTS.md (`check_symlinks`). Las reglas de dominio pertenecen al proyecto: los guards de `tools/guards/` se ejecutan en el hook y en el audit. |
46
+ | **3. Refactorizaciones y Migraciones Críticas** | Los agentes modifican archivos fuera del alcance acordado, introduciendo regresiones silenciosas. | Delimita el trabajo en una especificación local `sdds/{cambio}/spec.md`; el alcance es un protocolo que aplica el agente (ningún guard lo verifica). |
47
+ | **4. Blindaje Pre-Commit y Shift-Left en CI/CD** | Fuga de credenciales, consultas N+1 en bucles y migraciones destructivas llegan a ramas remotas. | Ejecuta validaciones sin dependencias foráneas en el lenguaje nativo del stack antes de cada commit: guards basados en patrones en todos los stacks y guards con Python AST (capas, heurística N+1) en stacks Python. |
44
48
 
45
49
  ---
46
50
 
@@ -51,39 +55,52 @@ Los agentes de programación con IA (Cursor, Claude Code, Windsurf, Copilot) cod
51
55
  ┌─────────────────────────────────────────────────────────────────────────────┐
52
56
  │ AI UNIFIED PROCESS (AIUP) │
53
57
  ├─────────────┬─────────────┬─────────────┬──────────────────┬────────────────┤
54
- │ 1. SDD │ 2. HIT │ 3. TDD │ 4. AST │ 5. MIRROR │
55
- │ Spec-Driven │ Human-in-the│ Transición │ Linters de Capas │ Single Source │
56
- │ Development │ Loop │ Rojo-a-Verde│ Determinísticos │ of Truth Sync │
58
+ │ 1. SDD │ 2. HIT │ 3. TDD │ 4. GUARDS │ 5. MIRROR │
59
+ │ Spec-Driven │ Human-in-the│ Transición │ Hook pre-commit │ Single Source │
60
+ │ Development │ Loop │ Rojo-a-Verde│ determinista │ of Truth Sync │
57
61
  └─────────────┴─────────────┴─────────────┴──────────────────┴────────────────┘
58
62
  ```
59
63
 
60
64
  1. **SDD (Spec-Driven Development):** El agente debe redactar una especificación técnica local gitignorada (`sdds/{feature}/spec.md`) antes de tocar código de producción.
61
65
  2. **HIT (Human-in-the-Loop):** El ingeniero revisa y aprueba los contratos y escenarios de prueba antes del inicio de la implementación.
62
66
  3. **TDD (Rojo a Verde):** El agente debe demostrar un test de regresión fallido (Fase Roja) antes de escribir la solución en producción (Fase Verde).
63
- 4. **AST (Salvaguardas Deterministas):** Parsers nativos del stack (Python `ast`, Go `ast`, RuboCop, TypeScript AST) inspeccionan el diff y bloquean físicamente commits no conformes.
64
- 5. **SSOT (Única Fuente de Verdad):** `AGENTS.md` se define una sola vez y se proyecta mediante symlinks hacia `CLAUDE.md`, `GEMINI.md`, `.cursorrules` y Copilot.
67
+ 4. **Guards (Salvaguardas Deterministas):** Scripts basados en patrones (y parsers Python `ast` en stacks Python) inspeccionan el diff preparado; el hook pre-commit bloquea los commits no conformes (`--no-verify` lo omite; CI actúa como respaldo).
68
+ 5. **SSOT (Única Fuente de Verdad):** `AGENTS.md` se define una sola vez y se proyecta mediante symlinks hacia `CLAUDE.md`, `GEMINI.md`, `.cursorrules`, `.cursor/rules/clckernel_context.mdc`, `.github/copilot-instructions.md` y `.antigravity/rules.md` (la `mirrors.list` por defecto).
65
69
 
66
70
  ---
67
71
 
68
72
  <a id="rdd-y-lentes"></a>
69
73
  ## 🔍 Desarrollo Guiado por Revisión (RDD) y los 4 Lentes
70
74
 
71
- CLC Kernel estructura todas sus compuertas de auditoría bajo los principios de **Review-Driven Development (RDD)**, organizando cada salvaguarda en torno a los **4 Lentes Canónicos de Revisión**:
75
+ CLC Kernel estructura todas sus compuertas de auditoría bajo los principios de **Review-Driven Development (RDD)**, con los resultados de los guards agrupados en **4 lentes** mediante una tabla estática nombre → lente:
72
76
 
73
77
  ```
74
78
  ┌─────────────────────────────────────────────────────────────────────────────┐
75
- │ LOS 4 LENTES CANÓNICOS DE REVISIÓN │
79
+ │ RESULTADOS AGRUPADOS EN 4 LENTES │
76
80
  ├─────────────────────┬───────────────────┬───────────────────┬───────────────┤
77
81
  │ 🎯 CORRECTITUD │ 🛡️ SEGURIDAD │ 🏛️ ARQUITECTURA │ ⚡ RENDIMIENTO│
78
- │ Bugs funcionales, │ Fuga de secretos, │ Violación capas, │ N+1 queries, │
82
+ │ Bugs funcionales, │ Fuga de secretos, │ Violación capas, │ Heurística N+1│
79
83
  │ scope drift, TDD, │ bypass permisos, │ límites de dominio│ tamaño bundle,│
80
84
  │ contratos API │ eval peligroso │ deps circulares │ memory leaks │
81
85
  └─────────────────────┴───────────────────┴───────────────────┴───────────────┘
82
86
  ```
83
87
 
84
- Al ejecutar `clckernel audit` (o `node tools/audit.js`), CLC Kernel genera:
85
- 1. **Informe Educativo para Humanos (`05-audit-report.md`):** Explica detalladamente qué pasó, falló o fue omitido agrupado por cada lente.
86
- 2. **Recibo Inmutable de Auditoría (`audit-receipt.json`):** Un archivo JSON inmutable y legible por máquina vinculado al `commitHash` actual que certifica el resultado para compuertas automatizadas de revisión (como Gentle AI).
88
+ `clckernel audit` (o `node tools/audit.js` / `python3 tools/audit.py`) imprime el resumen de 4 lentes y no
89
+ escribe nada. Pásale el cambio SDD al que pertenece — `clckernel audit --change <nombre>` (o
90
+ `node tools/audit.js --change <nombre>`) — y además escribe, solo en `sdds/<nombre>/`:
91
+ 1. **Informe Educativo para Humanos (`05-audit-report.md`):** Explica detalladamente qué pasó, falló, advirtió o fue omitido agrupado por cada lente.
92
+ 2. **Recibo Inmutable de Auditoría (`audit-receipt.json`):** Un archivo JSON inmutable y legible por máquina vinculado al `commitHash` actual que certifica el resultado (`PASSED`, `PASSED_WITH_WARNINGS` o `FAILED`) para compuertas automatizadas de revisión (como Gentle AI).
93
+
94
+ Con ambos orquestadores instalados (un stack mixto JS + Python), cada uno escribe su propio par para no
95
+ sobrescribir el del otro: `05-audit-report.js.md` / `audit-receipt.js.json` y `05-audit-report.py.md` /
96
+ `audit-receipt.py.json`.
97
+
98
+ CLI del orquestador: `audit.(js|py) [targetDir] [--hook] [--change <nombre>] [--staged]`. `<nombre>` debe ser un
99
+ solo segmento de ruta (letras, dígitos, `.`, `_`, `-`); `--staged` explicita el snapshot por defecto (los cambios
100
+ en stage, o el último commit si no hay nada en stage); `--hook` (lo usa el hook de pre-commit) imprime una línea
101
+ por guard y no se combina con `--change`; cualquier otro flag sale con 2 y el uso. Un guard que falla con nivel
102
+ `warning` — lo fija el guard (`level: 'warning'` en su resultado) o `severities` en `.clckernel.yaml` — se
103
+ imprime como `WARN` y no hace fallar la auditoría ni el commit; un guard que crashea siempre falla.
87
104
 
88
105
  ---
89
106
 
@@ -93,23 +110,24 @@ Al ejecutar `clckernel audit` (o `node tools/audit.js`), CLC Kernel genera:
93
110
  ```
94
111
  [1. Terminal] [2. Chat del LLM] [3. Bucle TDD] [4. Git Commit]
95
112
  npx clckernel ───► clckernel start ───► "Feature X con harness" ───► Hooks Pre-commit
96
- (Bootstrap) (Setup Interactivo) (SDD -> HIT -> Tests) (Guardián AST & Secretos)
113
+ (Bootstrap) (Setup Interactivo) (SDD -> HIT -> Tests) (Guards & Secretos)
97
114
  ```
98
115
 
99
116
  ### 1️⃣ Paso 1: Inicializar el Repositorio (Terminal)
100
117
  ```bash
101
- npx clckernel start
118
+ npx clckernel # interactivo: muestra el stack detectado y pregunta antes de escribir
119
+ npx clckernel . --yes # no interactivo (con --dry-run solo muestra el plan)
102
120
  ```
103
- Detecta el framework, genera `AGENTS.md`, crea symlinks dinámicos para todos los IDEs (`CLAUDE.md`, `GEMINI.md`, `.cursorrules`), provisiona hooks pre-commit e instala verificadores AST en `tools/`.
121
+ Detecta el framework, genera `AGENTS.md`, crea los mirrors para los agentes de IA (symlinks a `AGENTS.md`: `CLAUDE.md`, `GEMINI.md`, `.cursorrules`, `.cursor/rules/clckernel_context.mdc`, `.github/copilot-instructions.md`, `.antigravity/rules.md`), escribe el hook de pre-commit e instala scripts de guards nativos en `tools/`. Termina con un bloque **Next steps**; ver [Qué ocurre después de instalar](#despues-de-instalar).
104
122
 
105
123
  ### 2️⃣ Paso 2: Inicializar en el Chat del IDE (CLI Conversacional)
106
- Abrí Cursor, Claude Code, Gemini CLI, Windsurf o Copilot y escribí:
124
+ Abre tu agente de IA (Claude Code, Gemini CLI, Cursor, Copilot, Antigravity o cualquier agente que lea `AGENTS.md`) y escribe:
107
125
  > `clckernel start`
108
126
 
109
- El agente escanea tu código en silencio, propone un plan de gobernanza adaptado a tu stack y genera `.clckernel.yaml`.
127
+ `start` es un comando del agente (la CLI lo rechaza): el agente escanea tu código, propone un plan de gobernanza adaptado a tu stack, instala el arnés con `npx clckernel . --yes` si falta y escribe `.clckernel.yaml` solo para los ajustes que quieras cambiar (el archivo es opcional). Si mantienes los valores por defecto, escribe un `.clckernel.yaml` que solo contiene un comentario, lo que cierra el onboarding de la primera sesión.
110
128
 
111
129
  ### 3️⃣ Paso 3: Desarrollar con el Arnés AIUP
112
- Al solicitar una funcionalidad o corrección, indicá al agente:
130
+ Al solicitar una funcionalidad o corrección, indica al agente:
113
131
  > *"Implementa el endpoint de autenticación. **Usa el harness de CLC Kernel**."*
114
132
 
115
133
  El agente ejecutará de forma autónoma el ciclo AIUP completo:
@@ -118,46 +136,105 @@ El agente ejecutará de forma autónoma el ciclo AIUP completo:
118
136
  3. **Revisión HIT:** Solicita tu revisión y aprobación de los contratos propuestos.
119
137
  4. **Fase Roja TDD:** Escribe un test de regresión que falle demostrando el requerimiento.
120
138
  5. **Implementación Verde:** Escribe el código mínimo necesario respetando el aislamiento de capas.
121
- 6. **Compuerta de Auditoría AST:** Ejecuta `node tools/audit.js` y emite el resumen de verificación.
139
+ 6. **Compuerta de Auditoría:** Ejecuta `node tools/audit.js --change <nombre>` y emite el resumen de verificación (informe en `sdds/<nombre>/`).
122
140
 
123
141
  ### 4️⃣ Paso 4: Verificación Determinística de Guards (Git Commit)
124
142
  ```bash
125
143
  git add .
126
144
  git commit -m "feat(auth): add user authentication endpoint"
127
145
  ```
128
- Los hooks pre-commit ejecutan automáticamente los escáneres AST (Clean Architecture, Fuga de Secretos, Scope Guard, Idempotencia de Migraciones). Cualquier violación **bloquea físicamente** el commit.
146
+ Los hooks pre-commit ejecutan automáticamente los guards instalados (por ejemplo Clean Architecture, Fuga de Secretos o Reversibilidad de Migraciones, según el stack). Cualquier violación queda **bloqueada por el hook pre-commit** (`--no-verify` lo omite; CI actúa como respaldo).
147
+
148
+ El escaneo de secretos (`scan_secrets`, en todos los stacks) detecta claves privadas, tokens de AWS, Stripe, OpenAI, Anthropic, Google, Slack y GitHub, JWTs, asignaciones entre comillas de claves, secretos y contraseñas, y valores con nombre de secreto en archivos `.env` commiteados (se omiten `.env.example`, `.env.sample` y `.env.template`).
149
+
150
+ El hook se escribe en `.githooks/pre-commit` (y `core.hooksPath` apunta a `.githooks` en la configuración local de git del repositorio), o en `.husky/pre-commit` cuando Husky ya ejecuta los hooks del repositorio. `core.hooksPath` no se modifica cuando el directorio no es la raíz de un repositorio git o cuando otro gestor de hooks lo controla; en ese caso el bloque Next steps imprime el comando que activa el hook. El hook no enumera guards: llama a los orquestadores de auditoría (`node tools/audit.js --hook`, `python3 tools/audit.py --hook`, cada uno si está instalado) y luego a las herramientas externas del stack (linters, test runners) cuando están disponibles. Los orquestadores descubren todos los guards — los del kernel y los propios del proyecto, ya sea en la raíz de `tools/` (`check_*`, `scan_*`, `verify_*`, `*_guard`) o en `tools/guards/` — y ejecutan cada uno exactamente una vez, así que el hook de commit y `clckernel audit` siempre ejecutan el mismo conjunto.
129
151
 
130
152
  ### 5️⃣ Paso 5: Auditar la Salud del Repositorio en Cualquier Momento (Doctor)
131
153
  ```bash
132
154
  npx clckernel doctor
133
155
  ```
134
- Audita el 100% de cumplimiento en `AGENTS.md`, `sdds/`, `tools/`, runners de pruebas activos y hooks de Git.
156
+ Verifica `AGENTS.md`, `sdds/`, `docs/Journal/`, `tools/`, el hook de pre-commit, que cada script de guard cargue (JS) o parsee (Python) y los imports de los orquestadores de auditoría. No ejecuta los tests.
157
+
158
+ ---
159
+
160
+ <a id="despues-de-instalar"></a>
161
+ ## 🧭 Qué ocurre después de instalar
162
+
163
+ ### En la terminal: Next steps
164
+ Una instalación real (no `--dry-run`) termina con un bloque **Next steps** construido a partir de lo que se
165
+ instaló. La CLI lo imprime en inglés; para un proyecto Next.js dentro de un repositorio git dice:
166
+
167
+ ```text
168
+ Next steps
169
+ 1. Review and commit the harness: git add -A && git commit -m "chore: install clckernel"
170
+ The pre-commit hook (.githooks/pre-commit) runs on this commit.
171
+ 2. Open your AI agent and ask it to run clckernel start to tailor the rules (.clckernel.yaml),
172
+ or just start working: it follows AGENTS.md.
173
+ AGENTS.md mirrors written for: Claude Code (CLAUDE.md), Gemini (GEMINI.md), Cursor, Copilot, Antigravity.
174
+ 3. Run npx clckernel audit anytime to see every guard's result.
175
+ 4. Project-specific checks go in tools/guards/ (the hook and the audit run them).
176
+ 5. Later, preview kernel updates with npx clckernel update --dry-run.
177
+ ```
178
+
179
+ - Cuando el hook no está activo (sin repositorio git, en un subdirectorio del repositorio, o con
180
+ `core.hooksPath` controlado por otro gestor de hooks), el paso 1 imprime primero el comando que lo activa,
181
+ p. ej. `git init && git config core.hooksPath .githooks`, y luego el commit.
182
+ - En una instalación full-stack o monorepo, el paso 1 agrega que el hook ejecuta las verificaciones de cada
183
+ parte desde la raíz del repositorio.
184
+ - El paso 2 lista solo los mirrors que esta ejecución escribió o encontró al día. Un archivo con el mismo
185
+ nombre que no es un symlink (por ejemplo, tu propio `CLAUDE.md`) se conserva, y ese agente lee tu archivo en
186
+ lugar de `AGENTS.md`. Si no se escribió ningún mirror, el paso 2 indica usar un agente que lea `AGENTS.md`
187
+ directamente.
188
+ - `clckernel update` imprime un bloque Next steps más corto solo cuando algo requiere atención: una copia
189
+ `*.clckernel-new` para fusionar, o guards disponibles con `--add-guards`.
190
+
191
+ ### En tu agente de IA: la primera sesión
192
+ Todos los agentes leen la misma ley: Claude Code (`CLAUDE.md`), Gemini (`GEMINI.md`), Cursor (`.cursorrules`,
193
+ `.cursor/rules/clckernel_context.mdc`), Copilot (`.github/copilot-instructions.md`) y Antigravity
194
+ (`.antigravity/rules.md`) mediante los mirrors por defecto; Windsurf mediante `.windsurfrules` cuando está en
195
+ `mirrors.list` al instalar; agentes como Codex u OpenCode leen `AGENTS.md` directamente.
196
+
197
+ Cada `AGENTS.md` generado termina con una sección **First session after install**. Aplica mientras exista
198
+ `tools/.clckernel-managed.json` y no exista `.clckernel.yaml`:
199
+
200
+ 1. **Tu pedido va primero.** Si pides una tarea, el agente la realiza bajo las reglas y menciona el onboarding
201
+ una sola vez, en una frase, al final.
202
+ 2. **Si no, te orienta brevemente:** qué instaló el kernel (`tools/.clckernel-managed.json`) y qué ejecuta el
203
+ hook de pre-commit en cada commit.
204
+ 3. **Hace UNA pregunta** y espera: adaptar las reglas ahora con `clckernel start`, o mantener los valores por
205
+ defecto. Mantenerlos escribe un `.clckernel.yaml` que solo contiene un comentario, así la pregunta no se
206
+ repite.
207
+
208
+ La skill `clckernel_cli` también se activa en esa primera sesión. Los proyectos instalados antes de que
209
+ existiera esta sección no la reciben con `update`: un `AGENTS.md` existente nunca se reescribe (update solo
210
+ agrega la fila `clckernel update` a su tabla de comandos si falta). Para obtener la sección, cópiala del
211
+ `AGENTS.md` de una instalación nueva.
135
212
 
136
213
  ---
137
214
 
138
215
  <a id="interfaz-universal-de-comandos"></a>
139
216
  ## 🎮 Interfaz Universal de Comandos (Todos los LLMs y Agentes)
140
217
 
141
- CLC Kernel provee una gramática de comandos determinista soportada de forma nativa por **Claude Code, Cursor, Codeium/Windsurf, Copilot, Gemini y Antigravity**:
218
+ CLC Kernel define una gramática de comandos en `AGENTS.md`, que los agentes leen a través de sus mirrors (**Claude Code, Gemini, Cursor, Copilot, Antigravity**; Windsurf cuando `.windsurfrules` está en `mirrors.list`) o directamente (agentes que leen `AGENTS.md` por sí mismos):
142
219
 
143
220
  | Comando | Categoría | Protocolo de Ejecución Obligatorio |
144
221
  |---|---|---|
145
222
  | `clckernel feature <nombre>` | Funcionalidad | Ciclo AIUP completo: Investigación -> Spec Local (`sdds/{nombre}/spec.md`) -> Revisión HIT -> Fase Roja TDD -> Implementación Verde -> Auditoría. |
146
223
  | `clckernel fix <descripción>` | Corrección | Análisis de causa raíz (sin editar código) -> Test de regresión que falle -> Corrección quirúrgica limpia -> Compuerta de auditoría. |
147
224
  | `clckernel test` | Verificación | Ejecuta la suite de pruebas en el runner nativo del stack y confirma estado verde limpio. |
148
- | `clckernel audit` | Verificación | Ejecuta `node tools/audit.js` o `python tools/audit.py` y emite el Resumen Educativo. |
149
- | `clckernel doctor` | Diagnóstico | Valida hooks pre-commit de Git, symlinks espejo para IDEs e integridad del motor AST. |
225
+ | `clckernel audit` | Verificación | Ejecuta `node tools/audit.js` y/o `python3 tools/audit.py` y emite el Resumen Educativo; con `--change <nombre>` también escribe el informe y el recibo en `sdds/<nombre>/`. |
226
+ | `clckernel doctor` | Diagnóstico | Ejecuta `npx clckernel doctor [dir]`: verifica AGENTS.md, sdds/, tools/, el hook de pre-commit y que los scripts de guards carguen. |
150
227
  | `clckernel commit <mensaje>` | Control de Versiones | Auditoría pre-flight, verificación de scope diff vs SDD y commit con Conventional Commits (cero atribución de IA). |
151
- | `clckernel guard create <nombre>` | Salvaguardas | Genera el scaffold de un nuevo script de guard AST en el lenguaje nativo del stack en `tools/guards/`. |
228
+ | `clckernel guard create <nombre>` | Salvaguardas | Genera el scaffold de un nuevo script de guard en el lenguaje nativo del stack en `tools/guards/`; el hook de pre-commit y el audit ejecutan cada guard del proyecto (`tools/guards/*.js`/`*.py`, y los archivos `check_*`/`scan_*`/`verify_*` no gestionados en la raíz de `tools/`). |
152
229
  | `clckernel update` | Mantenimiento | Actualización no destructiva: refresca herramientas core, skills y symlinks de IDEs sin sobreescribir SDDs, guards personalizados ni `.clckernel.yaml`. |
153
- | `clckernel start` | Configuración | Detecta el stack automáticamente, propone el ciclo de vida AIUP y genera `.clckernel.yaml`. |
230
+ | `clckernel start` | Configuración | Comando del agente: detecta el stack, propone el ciclo de vida AIUP e instala el arnés (`npx clckernel . --yes`) si falta; `.clckernel.yaml` es opcional y solo se escribe para ajustes distintos de los valores por defecto (mantener los valores por defecto escribe un archivo con solo un comentario). |
154
231
 
155
232
  ---
156
233
 
157
234
  <a id="actualizacion-de-proyectos-existentes"></a>
158
235
  ## 🔄 Actualización de Proyectos Existentes (No Destructiva)
159
236
 
160
- Cuando se publican nuevas versiones de CLC Kernel con nuevos guards AST, playbooks actualizados o reglas optimizadas para IDEs, podés actualizar tu repositorio de forma segura sin perder tu trabajo:
237
+ Cuando se publican nuevas versiones de CLC Kernel con nuevos guards, playbooks actualizados o reglas optimizadas para IDEs, puedes actualizar tu repositorio de forma segura sin perder tu trabajo:
161
238
 
162
239
  ```bash
163
240
  npx clckernel update
@@ -168,13 +245,89 @@ clckernel update
168
245
  ```
169
246
 
170
247
  ### 🔒 La Garantía de Actualización No Destructiva:
171
- - **Refresca y Actualiza:** Orquestadores centrales (`tools/audit.js`, `tools/audit.py`), guards AST nativos, Skills de agentes (`.agents/skills/`) y symlinks de IDEs (`CLAUDE.md`, `GEMINI.md`, `.cursorrules`, Copilot, Antigravity).
248
+ - **Refresca y Actualiza:** Orquestadores centrales (`tools/audit.js`, `tools/audit.py`), los guards nativos que tu proyecto tiene, Skills de agentes (`.agents/skills/`) y los symlinks de IDEs que tu proyecto tiene (`CLAUDE.md`, `GEMINI.md`, `.cursorrules`, Copilot, Antigravity).
172
249
  - **100% Preservado:**
173
250
  - `sdds/`: Todas las especificaciones locales, planes y recibos de verificación permanecen intactos.
174
- - `tools/guards/`: Todos los guards AST personalizados creados por el equipo se conservan sin modificaciones.
175
- - `.clckernel.yaml`: Todas las configuraciones y umbrales personalizados se mantienen.
251
+ - Los guards del proyecto (`tools/guards/`, y los archivos de guard en la raíz de `tools/` que el kernel no gestiona) se conservan sin modificaciones. Un guard del kernel que el kernel ya no distribuye queda exactamente donde está, sale del registro y sigue ejecutándose como guard del proyecto; `update` lo informa como "retired kernel guard kept as project guard".
252
+ - `.clckernel.yaml`: nunca se reescribe; update lo lee (ver [Configuración](#configuracion)).
176
253
  - El código fuente de la aplicación y modelos de dominio jamás se tocan.
177
254
 
255
+ ### 🛡️ Los archivos que editaste nunca se sobrescriben
256
+ `update` (y una reinstalación con `--yes`) sólo sobrescribe un archivo del kernel (`tools/*`, el hook de
257
+ pre-commit, la skill `clckernel_cli`) cuando puede probar que es suyo y está intacto: su sha256 coincide con el
258
+ del registro (`tools/.clckernel-managed.json`) o con una versión que el kernel publicó. Todo lo demás — un guard
259
+ que endureciste, un archivo del proyecto que comparte nombre con uno del kernel — se conserva byte a byte, y la
260
+ versión nueva se escribe al lado como `<archivo>.clckernel-new` (ignorado por git) para que la revises y
261
+ fusiones. El resumen lista lo escrito, sin cambios, protegido, movido, agregado a `.gitignore` y configurado en
262
+ `git config`.
263
+
264
+ Previsualiza primero con `--dry-run`: imprime el mismo resumen como plan y no escribe nada (ni archivos, ni
265
+ `.gitignore`, ni `git config`):
266
+ ```bash
267
+ npx clckernel update . --dry-run
268
+ npx clckernel . --yes --dry-run
269
+ ```
270
+
271
+ ### ➕ `update` nunca agrega lo que no elegiste
272
+ `update` actualiza lo que el proyecto ya tiene; nunca agrega guards ni mirrors de IDE por su cuenta:
273
+ - **Guards:** sólo se actualizan (y corre el hook) los guards del registro o presentes en `tools/`. Los
274
+ guards nuevos de tu stack se listan como *available, not installed*; se agregan con `--add-guards` (desde
275
+ ahí quedan instalados y se actualizan). Un nombre desconocido falla con exit 1 y no escribe nada. Los
276
+ archivos de soporte (`_changes.js/.py`, los lectores de config `_config.js/.py`, `yaml.js`, `_yaml.py`, los
277
+ orquestadores de audit) siguen a los guards instalados.
278
+ - **Mirrors:** un mirror que borraste (p. ej. `.cursor/rules/clckernel_context.mdc`) no se recrea; se reporta
279
+ como *not present (skipped)*. Una instalación nueva los sigue creando todos.
280
+ - **`.gitignore`:** una entrada cuya ruta git trackea (un mirror o la skill que commiteas) nunca se agrega, ni
281
+ en install ni en update; se reporta como *tracked, not ignored*.
282
+ ```bash
283
+ npx clckernel update . --add-guards check_skills,check_placeholders
284
+ npx clckernel update . --add-guards all
285
+ ```
286
+
287
+ ---
288
+
289
+ <a id="configuracion"></a>
290
+ ## ⚙️ Configuración (`.clckernel.yaml`)
291
+
292
+ Opcional. Sin el archivo rige cada valor por defecto de abajo (el comportamiento de un proyecto sin
293
+ config). Install, update y cada guard lo leen desde la raíz del proyecto; un valor inválido los detiene
294
+ con `Invalid .clckernel.yaml: key "<key>" — <motivo>` (no se escribe nada, el commit se bloquea).
295
+
296
+ | Clave | Efecto | Por defecto | La lee |
297
+ |---|---|---|---|
298
+ | `rules` | Reglas regex propias (`name`, `pattern`, `message`, opcionales `severity`, `scope`, `exclude`) sobre los archivos cambiados | ninguna | `check_custom` |
299
+ | `exclude_paths` | Globs que ningún guard basado en el diff evalúa (secretos, verificador TDD, reglas propias, …) | ninguno | `_changes.js/.py` |
300
+ | `mirrors.list` | Mirrors de IDE (symlinks a `AGENTS.md`) que install crea y `check_symlinks` verifica | install: `CLAUDE.md`, `GEMINI.md`, `.cursorrules`, `.cursor/rules/clckernel_context.mdc`, `.github/copilot-instructions.md`, `.antigravity/rules.md`; `check_symlinks`: `CLAUDE.md`, `GEMINI.md`, `.cursorrules`, `.windsurfrules` | install/update, `check_symlinks` |
301
+ | `mirrors.required` | `true`: un mirror listado que falta hace fallar `check_symlinks` | `false` | `check_symlinks` |
302
+ | `hitl.markers` | Regex (sin distinguir mayúsculas, una línea, fuera de bloques de código) que cuentan como marcador Human-in-the-Loop; reemplazan a los de por defecto | una línea `HITL:` o un encabezado `## Human checkpoint` / `## HITL` | `check_hitl` |
303
+ | `hitl.paths` | Globs de los archivos cambiados que evalúa `check_hitl` | skills (`SKILL.md`, `skills/*.md` planos) y `playbooks/**/*.md` | `check_hitl` |
304
+ | `hitl.optOut` | `{ key, value }`: un archivo cuyo frontmatter tiene `key: value` queda exento | ninguno | `check_hitl` |
305
+ | `update.exclude` | Globs relativos a la raíz que install y update nunca escriben, mueven ni borran; se listan como *excluded by config* | ninguno | install/update |
306
+ | `tdd.code` | Globs extra que cuentan como código de producción (cualquier lenguaje), p. ej. tools en Python testeadas con tests JS | ninguno | `verify_tdd.js/.py` |
307
+ | `tdd.ignore` | Globs que nunca cuentan como código de producción | ninguno | `verify_tdd.js/.py` |
308
+ | `severities` | `{ <nombre del guard>: warning \| error }`: un guard que falla en `warning` se reporta (`WARN`, veredicto `PASSED_WITH_WARNINGS`) pero no bloquea; `error` bloquea aunque el guard reporte `level: 'warning'`. Un crash siempre bloquea | el nivel propio de cada guard (`error` salvo que reporte `warning`) | `audit.js` / `audit.py` (auditoría y hook de pre-commit) |
309
+
310
+ ```yaml
311
+ exclude_paths: ["vendor/**"]
312
+ mirrors:
313
+ list: [CLAUDE.md, .github/copilot-instructions.md]
314
+ required: true
315
+ hitl:
316
+ optOut: { key: checkpoint, value: none }
317
+ update:
318
+ exclude: [AGENTS.md]
319
+ tdd:
320
+ code: ["tools/**/*.py"]
321
+ severities:
322
+ check_seo: warning
323
+ ```
324
+
325
+ Las claves que versiones anteriores aceptaban sin efecto alguno — `active_guards`, `phases`, `gate_mode`,
326
+ `layers`, `scope` — se ignoran con un aviso de deprecación; borralas. Una clave desconocida de
327
+ primer nivel se ignora con un aviso. Los guards lo leen con `tools/_config.js` (+ `yaml.js`) y
328
+ `tools/_config.py` (+ `_yaml.py`), instalados junto a `_changes.js/.py`, así que un archivo creado después de
329
+ instalar aplica de inmediato.
330
+
178
331
  ---
179
332
 
180
333
  <a id="ecosistemas-soportados"></a>
@@ -183,14 +336,82 @@ clckernel update
183
336
  | Ecosistema | Firma de Detección | Test Runner | Salvaguardas Nativas |
184
337
  |---|---|---|---|
185
338
  | ⚛️ **Next.js** | `next` | Vitest / Jest | Clean Architecture, Reutilización de UI, Tokens Semánticos, RSC, A11y, Responsive, SEO |
186
- | ⚡ **FastAPI** | `fastapi` | Pytest | Pydantic V2, Idempotencia Alembic, AST Clean Architecture, Eficiencia DB (N+1) |
187
- | 💎 **Rails** | `Gemfile` | RSpec | AST RuboCop, Seguridad Brakeman, Idempotencia de Migraciones |
188
- | 🐹 **Golang** | `go.mod` | `go test` | AST `golangci-lint`, Aislamiento de Capas Dominio/Casos de Uso |
189
- | 🦀 **Rust** | `Cargo.toml` | `cargo test` | AST `cargo clippy`, `cargo audit`, Seguridad Estricta de Memoria |
190
- | 🐘 **Laravel** | `artisan` | Pest / PHPUnit | AST PHPStan, Detección de Consultas N+1 en Eloquent, Migraciones |
191
- | 🎸 **Django** | `manage.py` | `pytest-django` | Idempotencia ORM Django, AST Ruff, Scope Guard, Eficiencia DB (N+1) |
339
+ | ⚡ **FastAPI** | `fastapi` | Pytest | Reversibilidad de Migraciones Alembic, Clean Architecture (Python AST), Heurística N+1 (Python AST), Verificador TDD Rojo→Verde (pytest) |
340
+ | 💎 **Rails** | `Gemfile` | RSpec | RuboCop, Seguridad Brakeman, Verificador TDD Rojo→Verde (RSpec / Minitest) |
341
+ | 🐹 **Golang** | `go.mod` | `go test` | `golangci-lint`, Aislamiento de Capas Dominio/Casos de Uso, Verificador TDD Rojo→Verde (`go test`) |
342
+ | 🦀 **Rust** | `Cargo.toml` | `cargo test` | `cargo clippy`, `cargo audit`, Seguridad Estricta de Memoria, Verificador TDD Rojo→Verde (`cargo test`, tests de integración) |
343
+ | 🐘 **Laravel** | `artisan` | Pest / PHPUnit | Análisis estático PHPStan, Verificador TDD Rojo→Verde (Pest / PHPUnit) |
344
+ | 🎸 **Django** | `manage.py` | `pytest-django` | Ruff, Clean Architecture (Python AST), Heurística N+1 (Python AST), Verificador TDD Rojo→Verde (pytest) |
192
345
  | 🚀 **Astro** | `astro.config` | Playwright | Tokens Tailwind v4, Esquemas de Colección, A11y, Responsive, SEO |
193
- | 🤖 **Agent-OS** | `skills/`, `brand/`, `templates/` | Tests de Contrato | AGENTS.md Dual-Layer, Compuertas HITL (`check_hitl`), Symlinks (`check_symlinks`), Integridad de Datos (`check_domain_data`) |
346
+ | 🤖 **Agent-OS** | `skills/<nombre>/SKILL.md` (también `.agents/skills/`, `.claude/skills/`), `playbooks/` o `rules/` con Markdown; si el repo también tiene un stack de código, gana el stack de código | Tests de Contrato | AGENTS.md Dual-Layer, marcadores HITL (`check_hitl`), Skills (`check_skills`), Links (`check_links`), Placeholders (`check_placeholders`), Datos JSON (`check_data_files`), Mirrors (`check_symlinks`), Reglas propias (`check_custom`); guards del proyecto en `tools/guards/` |
347
+
348
+ ### 🧱 Full-stack y monorepos
349
+
350
+ Un repositorio puede tener varias partes de código. `clckernel` busca un stack en la raíz, en los directorios
351
+ declarados como workspaces (`package.json#workspaces`, como lista o `{ packages }`, y `packages:` de
352
+ `pnpm-workspace.yaml`) y en los directorios convencionales `frontend`, `backend`, `web`, `api`, `server`,
353
+ `client`, `apps/*`, `services/*` y `packages/*` (hasta dos niveles; se omiten `node_modules`, `.git`,
354
+ `vendor`, `dist` y `build`). Los patrones de workspace se interpretan como directorios literales o `dir/*`;
355
+ otras formas de glob se ignoran.
356
+
357
+ - **Una parte en la raíz:** se instala exactamente igual que un repositorio de un solo stack.
358
+ - **Varias partes** (p. ej. Next.js en la raíz + `backend/` FastAPI, o `apps/web` + `apps/api`): el tipo de
359
+ proyecto es `fullstack` (hay una parte en la raíz) o `monorepo` (solo subdirectorios). Dos stacks del mismo
360
+ ecosistema en un directorio (p. ej. FastAPI y Django) siguen siendo una parte, y gana el primer adapter,
361
+ como antes.
362
+ - **Guards:** la unión de los guards de las partes se instala una vez en `tools/` de la raíz, con un
363
+ orquestador de auditoría por lenguaje, y se ejecuta una vez desde la raíz.
364
+ - **Herramientas externas** (ruff, pytest, tsc, …) se ejecutan dentro del directorio de su parte; si una no
365
+ está disponible se imprime `clckernel: <herramienta> (<dir>) not available, skipped`.
366
+ - **Verificador TDD Rojo→Verde:** cada archivo cambiado pertenece a su raíz de proyecto más cercana (Python:
367
+ `pyproject.toml`, `requirements.txt`, `setup.cfg`, `setup.py`, `manage.py`; JS: `package.json`; Go: `go.mod`;
368
+ Rust: `Cargo.toml`; Ruby: `Gemfile`; PHP: `composer.json`). Cada grupo
369
+ se ejecuta en su raíz (`PYTHONPATH`, runner y `node_modules` de esa raíz, o los `node_modules` de la raíz
370
+ del repositorio si están elevados). El código cambiado en una parte sin un test cambiado en esa misma parte
371
+ falla.
372
+ - **AGENTS.md** lista cada parte (directorio, stack, test runner) con las reglas de su stack; `clckernel
373
+ update` vuelve a detectar las partes.
374
+
375
+ <a id="rojo-verde-otros-stacks"></a>
376
+ #### Rojo→Verde en Go, Rust, Ruby y PHP
377
+
378
+ `tools/verify_tdd.js` (Node existe en todos los stacks) ejecuta los tests cambiados sobre el código staged (deben
379
+ pasar, con al menos un test ejecutado) y sobre `HEAD` más esos tests (deben fallar), en árboles materializados
380
+ desde git: Go `go test -v -count=1` sobre los paquetes de los `*_test.go` cambiados; Rust `cargo test --test <t>`
381
+ por cada test de integración (`tests/`), con un `CARGO_TARGET_DIR` temporal; Ruby `bundle exec rspec`
382
+ (`spec/**/*_spec.rb`) o `bundle exec ruby -Ilib -Itest` (`test/**/*_test.rb`); PHP `vendor/bin/pest`, si no
383
+ `vendor/bin/phpunit` (`tests/**/*Test.php`). El código de producción es `.go` (fuera de `vendor/`),
384
+ `src/**/*.rs`, `app|lib/**/*.rb` y `app|src/**/*.php`. Si falta `go`, `cargo`, `bundle`, `rspec-core` en el
385
+ lock (para specs) o `vendor/bin/{pest,phpunit}`, el chequeo falla con una pista de instalación. Limitaciones:
386
+ los tests unitarios `#[cfg(test)]` de Rust viven dentro del archivo de código y no se pueden separar para la
387
+ corrida roja, así que un cambio en `src/` necesita un test de integración cambiado en `tests/` (o una entrada
388
+ en `tdd.ignore`); Minitest corre con `ruby -Ilib -Itest`, no con `rails test`; Go se verifica por paquete; PHP
389
+ asume los bin proxies de Composer 2.2+.
390
+
391
+ Fuera de alcance: Agent-OS como parte de un monorepo, repositorios git anidados o submódulos, elegir partes
392
+ manualmente en el prompt interactivo ("Elegir otro stack" instala un solo stack) y los workspaces de
393
+ Go/Cargo/Composer (sus partes solo se detectan por los directorios convencionales).
394
+
395
+ ---
396
+
397
+ <a id="limitaciones-conocidas"></a>
398
+ ## ⚠️ Limitaciones conocidas
399
+
400
+ - **Windows no está probado.** El hook de pre-commit es un script de shell (`#!/usr/bin/env bash`, o `sh`
401
+ con Husky): en Windows necesita un bash/sh como Git Bash.
402
+ - **La configuración propia de lint-staged / ESLint puede analizar los archivos del arnés en `tools/`.** Los
403
+ archivos del kernel están listados en `tools/.clckernel-managed.json`; conviene excluir `tools/` (o esas rutas)
404
+ en la configuración del linter.
405
+ - **Tests unitarios inline de Rust** (`#[cfg(test)]`): no se pueden separar para la corrida roja; ver
406
+ [Rojo→Verde en Go, Rust, Ruby y PHP](#rojo-verde-otros-stacks).
407
+ - **Las instalaciones existentes conservan su `AGENTS.md`.** `update` nunca lo reescribe, así que la sección
408
+ *First session after install* y otros cambios de la plantilla llegan solo a instalaciones nuevas; cópialos a
409
+ mano si los quieres.
410
+ - **Windsurf no tiene mirror por defecto.** Incluye `.windsurfrules` en `mirrors.list` antes de instalar; en una
411
+ instalación existente `update` no agrega mirrors, así que créalo tú (`ln -s AGENTS.md .windsurfrules`).
412
+ - **Los linters y test runners externos solo corren cuando están disponibles.** El hook ejecuta cada uno (tsc,
413
+ ruff, pytest, golangci-lint, cargo, …) cuando el proyecto lo tiene al momento del commit y, si no, imprime
414
+ `clckernel: <tool> not available, skipped`; los guards de `tools/` corren siempre.
194
415
 
195
416
  ---
196
417
 
@@ -203,24 +424,24 @@ CLC Kernel está diseñado bajo una **filosofía de cero dependencias forzadas**
203
424
  <img src="./docs/Architecture/clckernel-symbiosis.visual-check.2048x1320.dark.png" alt="CLC Kernel Standalone vs Simbiosis con Gentle AI (Diagrama Archify)" width="100%" />
204
425
  </div>
205
426
 
206
- > 💡 *Diagrama Interactivo: Generado con [Archify](https://github.com/tt-a1i/archify). Podés abrir [`docs/Architecture/clckernel-symbiosis.html`](./docs/Architecture/clckernel-symbiosis.html) para explorar la animación de flujo, cambiar entre modo claro/oscuro e inspeccionar detalles de cada nodo.*
427
+ > 💡 *Diagrama Interactivo: Generado con [Archify](https://github.com/tt-a1i/archify). Puedes abrir [`docs/Architecture/clckernel-symbiosis.html`](./docs/Architecture/clckernel-symbiosis.html) para explorar la animación de flujo, cambiar entre modo claro/oscuro e inspeccionar detalles de cada nodo.*
207
428
 
208
429
  ```mermaid
209
430
  flowchart TD
210
431
  subgraph CORE["🤖 CLC KERNEL (Motor Central de Gobernanza)"]
211
432
  SSOT["1. Ley SSOT<br/>(AGENTS.md y Symlinks para IDEs)"]
212
433
  AIUP["2. Arnés AIUP<br/>(SDD + HITL + TDD Rojo-a-Verde)"]
213
- AST["3. Linters AST &lt;5ms<br/>(Reglas de Capas, Secretos y Migraciones)"]
434
+ GUARDS["3. Guards pre-commit<br/>(Reglas de Capas, Secretos y Migraciones)"]
214
435
  RECEIPT["4. Motor de Auditoría 4-Lentes<br/>(Genera audit-receipt.json)"]
215
- SSOT --> AIUP --> AST --> RECEIPT
436
+ SSOT --> AIUP --> GUARDS --> RECEIPT
216
437
  end
217
438
 
218
439
  RECEIPT -->|audit-receipt.json| MODES{Modo de Ejecución}
219
440
 
220
441
  subgraph MODE1["🟢 MODO 1: STANDALONE (100% Local y Desconectado)"]
221
442
  M1_1["• Cero dependencias externas"]
222
- M1_2["• Ejecución nativa AST en &lt; 5ms"]
223
- M1_3["• Hook Git pre-commit bloquea físicamente commits inválidos"]
443
+ M1_2["• Guards en el lenguaje nativo del stack"]
444
+ M1_3["• El hook Git pre-commit bloquea commits inválidos (--no-verify lo omite; CI actúa como respaldo)"]
224
445
  M1_4["• Reporte autosuficiente 05-audit-report.md"]
225
446
  end
226
447
 
@@ -254,17 +475,25 @@ CLC Kernel se enfoca estrictamente en gobernanza y opera con **cero dependencias
254
475
  |---|---|
255
476
  | **SDD** *(Spec-Driven Development)* | Metodología orientada a especificaciones previas donde los contratos técnicos, esquemas, criterios de aceptación y escenarios de prueba se redactan en specs locales gitignoradas (`sdds/{cambio}/spec.md`) antes de modificar código fuente. |
256
477
  | **RDD** *(Review-Driven Development)* | Metodología de verificación adversarial y estructurada donde los cambios se auditan a través de cuatro lentes ortogonales (Correctitud, Seguridad, Arquitectura y Rendimiento) para garantizar compuertas sistemáticas de calidad antes del merge o commit. |
257
- | **AIUP** *(AI Unified Process)* | El ciclo de vida gobernado de punta a punta implementado por CLC Kernel: Investigación $\rightarrow$ SDD local $\rightarrow$ Aprobación Human-in-the-Loop (HITL) $\rightarrow$ TDD Rojo a Verde $\rightarrow$ Compuerta de Auditoría AST $\rightarrow$ Conventional Commit. |
478
+ | **AIUP** *(AI Unified Process)* | El ciclo de vida gobernado de punta a punta implementado por CLC Kernel: Investigación $\rightarrow$ SDD local $\rightarrow$ Aprobación Human-in-the-Loop (HITL) $\rightarrow$ TDD Rojo a Verde $\rightarrow$ Compuerta de Auditoría de Guards $\rightarrow$ Conventional Commit. |
258
479
  | **HIT / HITL** *(Human-in-the-Loop)* | Compuerta obligatoria de aprobación donde un ingeniero humano valida contratos, decisiones arquitectónicas y pruebas propuestas antes de que un agente autónomo edite código de producción. |
259
480
  | **TDD** *(Test-Driven Development)* | Práctica de ingeniería de reproducir bugs o especificar nuevas funcionalidades mediante un test automatizado que falle (Fase Roja) antes de escribir el código mínimo de producción para que pase (Fase Verde). |
260
- | **Guard AST** *(Salvaguarda de Árbol de Sintaxis Abstracta)* | Script liviano de análisis estático sin dependencias foráneas escrito en el lenguaje nativo del stack (Python `ast`, TypeScript Compiler API, Go `go/parser`, RuboCop, etc.) que se ejecuta en menos de 5ms para bloquear físicamente violaciones antes del commit. |
261
- | **SSOT** *(Single Source of Truth / Única Fuente de Verdad)* | Principio de gobernanza centralizada donde `AGENTS.md` funciona como la ley única, proyectándose automáticamente a todos los entornos de agentes (`CLAUDE.md`, `GEMINI.md`, `.cursorrules`, Copilot) mediante symlinks del sistema de archivos. |
481
+ | **Guard** *(Script de salvaguarda)* | Verificación liviana sin dependencias foráneas escrita en el lenguaje nativo del stack y ejecutada por el hook pre-commit. La mayoría de los guards se basan en patrones (regex); en stacks Python, los guards de capas, N+1 y Celery/Redis/Postgres analizan el código con Python `ast`. El hook bloquea las violaciones antes del commit (`--no-verify` lo omite; CI actúa como respaldo). |
482
+ | **SSOT** *(Single Source of Truth / Única Fuente de Verdad)* | Principio de gobernanza centralizada donde `AGENTS.md` funciona como la ley única, proyectándose a los archivos de reglas de los agentes de IA (`CLAUDE.md`, `GEMINI.md`, `.cursorrules`, `.cursor/rules/clckernel_context.mdc`, `.github/copilot-instructions.md`, `.antigravity/rules.md`; configurable con `mirrors.list`) mediante symlinks del sistema de archivos. |
262
483
  | **Recibo de Auditoría** *(Audit Receipt)* | Artefacto JSON inmutable y legible por máquina (`audit-receipt.json`) producido por el motor de auditoría con la marca de tiempo, hash del commit, veredictos por cada lente y metadatos de compatibilidad RDD para Gentle AI. |
263
484
  | **ADR** *(Architectural Decision Record)* | Documento estandarizado bajo `docs/Journal/` que captura decisiones arquitectónicas clave, contexto histórico, alternativas evaluadas y consecuencias. |
264
- | **Agent-OS** | Arquetipo de sistema operativo para flujos de agentes y dominios no técnicos (por ejemplo: Marketing OS, Content Ops, Research OS) gobernado por arquitectura de dos capas, validación estricta de esquemas y compuertas HITL. |
485
+ | **Agent-OS** | Arquetipo de sistema operativo para flujos de agentes y dominios no técnicos (por ejemplo: Marketing OS, Content Ops, Research OS) compuesto por skills, playbooks, reglas, prompts y templates, gobernado por un AGENTS.md de dos capas, checkpoints HITL explícitos y guards de documentos (frontmatter de skills, links, placeholders). |
265
486
 
266
487
  ---
267
488
 
489
+ ## 🤝 Contribuciones y Comunidad
490
+ Las contribuciones son bienvenidas. Consulte estos documentos (en inglés):
491
+
492
+ - [CONTRIBUTING.md](CONTRIBUTING.md) — configuración, el hook pre-commit, las pruebas y el flujo de pull requests.
493
+ - [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md) — conducta esperada y cómo reportar un problema.
494
+ - [SECURITY.md](SECURITY.md) — cómo reportar una vulnerabilidad de forma privada.
495
+ - [CHANGELOG.md](CHANGELOG.md) — cambios relevantes de cada versión.
496
+
268
497
  <a id="licencia"></a>
269
498
  ## 📄 Licencia
270
- MIT © [CarlosLeonCode](https://github.com/carlosleoncode)
499
+ MIT © [CarlosLeonCode](https://github.com/carlosleoncode) — consulte [LICENSE](LICENSE).