clckernel 1.2.19 → 2.0.1
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/.agents/skills/clckernel_cli/SKILL.md +23 -6
- package/.agents/skills/clckernel_cli/reference/audit.md +13 -3
- package/.agents/skills/clckernel_cli/reference/commit.md +1 -1
- package/.agents/skills/clckernel_cli/reference/doctor.md +5 -3
- package/.agents/skills/clckernel_cli/reference/feature.md +3 -3
- package/.agents/skills/clckernel_cli/reference/guard.md +48 -12
- package/.agents/skills/clckernel_cli/reference/phase.md +6 -3
- package/.agents/skills/clckernel_cli/reference/start.md +14 -4
- package/.agents/skills/clckernel_cli/reference/test.md +1 -1
- package/.agents/skills/clckernel_cli/reference/update.md +19 -19
- package/CHANGELOG.md +250 -0
- package/LICENSE +21 -0
- package/README.es.md +280 -51
- package/README.md +274 -50
- package/bin/deprecated.js +13 -0
- package/package.json +14 -4
- package/src/adapters/agent-os.js +161 -84
- package/src/adapters/astro.js +8 -6
- package/src/adapters/base.js +23 -38
- package/src/adapters/django.js +14 -13
- package/src/adapters/fastapi.js +16 -15
- package/src/adapters/go.js +11 -9
- package/src/adapters/laravel.js +12 -10
- package/src/adapters/nextjs.js +7 -5
- package/src/adapters/rails.js +13 -11
- package/src/adapters/rust.js +11 -9
- package/src/catalog.js +58 -49
- package/src/config.js +38 -240
- package/src/detector.js +243 -44
- package/src/doctor.js +18 -9
- package/src/generator.js +734 -302
- package/src/gitignore.js +60 -14
- package/src/index.js +257 -18
- package/src/io.js +409 -0
- package/src/known-hashes.json +309 -0
- package/src/onboarding.js +15 -0
- package/src/technologies/detector.js +1 -1
- package/src/technologies/guards/_shared.js +1 -1
- package/src/ui.js +233 -40
- package/src/updater.js +271 -38
- package/tools/_changes.js +279 -0
- package/tools/_changes.py +233 -0
- package/tools/_config.js +294 -0
- package/tools/_config.py +271 -0
- package/tools/_yaml.py +489 -0
- package/tools/audit.js +511 -111
- package/tools/audit.py +506 -128
- package/tools/celery_guard.py +13 -35
- package/tools/check_a11y.js +8 -28
- package/tools/check_api_contracts.js +13 -39
- package/tools/check_architecture.js +35 -44
- package/tools/check_architecture.py +172 -105
- package/tools/check_custom.js +108 -61
- package/tools/check_custom.py +108 -271
- package/tools/check_data_files.js +88 -0
- package/tools/check_db_efficiency.py +80 -65
- package/tools/check_hitl.js +112 -69
- package/tools/check_links.js +138 -0
- package/tools/check_migrations.py +143 -94
- package/tools/check_performance.js +35 -44
- package/tools/check_placeholders.js +104 -0
- package/tools/check_responsive.js +8 -28
- package/tools/check_scope.py +40 -31
- package/tools/check_seo.js +8 -28
- package/tools/check_skills.js +158 -0
- package/tools/check_storybook.js +8 -21
- package/tools/check_symlinks.js +40 -22
- package/tools/check_ui_reuse.js +17 -29
- package/tools/docker_guard.py +19 -41
- package/tools/postgres_guard.py +15 -36
- package/tools/redis_guard.py +13 -35
- package/tools/scan_secrets.js +134 -67
- package/tools/scan_secrets.py +163 -72
- package/tools/verify_tdd.js +867 -0
- package/tools/verify_tdd.py +407 -165
- package/tools/yaml.js +404 -132
- package/tools/check_domain_data.js +0 -100
- 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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 │
|
|
55
|
-
│ Spec-Driven │ Human-in-the│ Transición │
|
|
56
|
-
│ Development │ Loop │ Rojo-a-Verde│
|
|
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. **
|
|
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
|
|
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)**,
|
|
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
|
-
│
|
|
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
|
|
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
|
-
|
|
85
|
-
|
|
86
|
-
|
|
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) (
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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 `
|
|
149
|
-
| `clckernel doctor` | Diagnóstico |
|
|
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
|
|
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 |
|
|
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
|
|
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
|
|
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
|
|
175
|
-
- `.clckernel.yaml`:
|
|
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 |
|
|
187
|
-
| 💎 **Rails** | `Gemfile` | RSpec |
|
|
188
|
-
| 🐹 **Golang** | `go.mod` | `go test` |
|
|
189
|
-
| 🦀 **Rust** | `Cargo.toml` | `cargo test` |
|
|
190
|
-
| 🐘 **Laravel** | `artisan` | Pest / PHPUnit |
|
|
191
|
-
| 🎸 **Django** | `manage.py` | `pytest-django` |
|
|
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/`, `
|
|
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).
|
|
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
|
-
|
|
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 -->
|
|
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["•
|
|
223
|
-
M1_3["•
|
|
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
|
|
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
|
|
261
|
-
| **SSOT** *(Single Source of Truth / Única Fuente de Verdad)* | Principio de gobernanza centralizada donde `AGENTS.md` funciona como la ley única, proyectándose
|
|
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
|
|
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).
|