docs: reorganizar CLAUDE.md y extraer reglas a .claude/rules/

Simplifica CLAUDE.md eliminando contenido redundante y extrae las reglas operativas a archivos independientes en .claude/rules/ con un INDEX.md. Cada regla es atómica y referenciable.
This commit is contained in:
2026-03-28 19:14:49 +01:00
parent e28d95ce6f
commit b4cd800027
11 changed files with 141 additions and 572 deletions
+15
View File
@@ -0,0 +1,15 @@
# Rules Index
Reglas operativas del proyecto. Cada archivo es una regla independiente.
| # | Archivo | Regla |
|---|---------|-------|
| 01 | [db_locations.md](db_locations.md) | Ubicacion de registry.db y operations.db |
| 02 | [ids_naming.md](ids_naming.md) | Formato de IDs y convenciones de nombres |
| 03 | [purity.md](purity.md) | Reglas de pureza funcional |
| 04 | [types_in_signatures.md](types_in_signatures.md) | Tipos nativos en firmas, registry types en .md |
| 05 | [stubs.md](stubs.md) | Stubs impuros para dependencias externas |
| 06 | [assertions.md](assertions.md) | Kinds de assertions son texto libre |
| 07 | [proposals.md](proposals.md) | Quien crea proposals y cuando |
| 08 | [tag_launcher.md](tag_launcher.md) | Tag launcher para Pipeline Launcher TUI |
| 09 | [go_packages.md](go_packages.md) | Nombre de paquete Go = nombre del directorio |
+3
View File
@@ -0,0 +1,3 @@
El campo `kind` de assertions es texto libre. Se pueden inventar nuevos kinds sin tocar schema.
Kinds documentados: `range`, `null`, `statistical`, `consistency`, `freshness`.
+5
View File
@@ -0,0 +1,5 @@
`registry.db` SOLO existe en la raiz del repositorio, NUNCA en subdirectorios ni apps.
`operations.db` SOLO existe dentro de cada app (`apps/*/operations.db`), NUNCA en la raiz. Cada app tiene su propia operations.db con sus entities, relations y executions independientes.
Si se detecta un registry.db fuera de la raiz o un operations.db en la raiz, es un error y debe eliminarse.
+1
View File
@@ -0,0 +1 @@
El nombre del paquete Go es el nombre del directorio: core, finance, datascience, cybersecurity.
+3
View File
@@ -0,0 +1,3 @@
IDs siguen el formato `{name}_{lang}_{domain}` (ej: `filter_slice_go_core`).
Nombres de funciones en snake_case. Tipos en PascalCase para Go.
+3
View File
@@ -0,0 +1,3 @@
Las proposals las crea el bucle reactivo automaticamente (`created_by: reactive_loop`) o el humano/agente manualmente.
Son datos vivos en registry.db — `fn index` NO las toca ni regenera.
+5
View File
@@ -0,0 +1,5 @@
Puras en el centro, impuras en los bordes. Una funcion pura NUNCA depende de una impura.
- `purity: pure``returns_optional: false` + `error_type: ""`
- `purity: impure``error_type` obligatorio (usar `error_go_core`)
- `kind: pipeline` → siempre `purity: impure` + `uses_functions` no vacio
+1
View File
@@ -0,0 +1 @@
Si la implementacion real requiere dependencias externas no disponibles, crear stub con `return ..., fmt.Errorf("not implemented")` y documentar completamente el .md.
+5
View File
@@ -0,0 +1,5 @@
Los pipelines con tag `launcher` aparecen en el Pipeline Launcher TUI (`apps/pipeline_launcher`).
Sin el tag, el pipeline no es lanzable desde la TUI. Añadir `launcher` al array `tags` del .md al crear un pipeline ejecutable desde el launcher.
Pipelines interactivos (TUIs) o que no son subprocesos NO deben llevar este tag.
+3
View File
@@ -0,0 +1,3 @@
Usar tipos nativos (float64, []float64, string) en firmas Go para evitar imports circulares entre paquetes de funciones.
Documentar los tipos del registry en `uses_types`/`returns` del .md, no en la firma.