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:
@@ -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 |
|
||||
@@ -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`.
|
||||
@@ -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.
|
||||
@@ -0,0 +1 @@
|
||||
El nombre del paquete Go es el nombre del directorio: core, finance, datascience, cybersecurity.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
Reference in New Issue
Block a user