Files
fn_registry/.claude/CLAUDE.md
T
egutierrez e6c55c9538 docs: añadir instrucciones de build con CGO y fts5
Documenta que el proyecto requiere CGO_ENABLED=1 y el tag fts5
para compilar y ejecutar tests con soporte SQLite FTS5.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-28 02:04:23 +01:00

3.5 KiB

fn-registry

Registry personal de codigo reutilizable con busqueda FTS. Diseñado para composicion funcional y agentes.

Que es esto

Un warehouse de funciones, tipos, pipelines y componentes React organizados por dominio. Cada pieza de codigo tiene su archivo de implementacion (.go, .py, .tsx) y su archivo de documentacion (.md). Una BD SQLite con FTS5 indexa la documentacion para busqueda rapida.

Estructura del repositorio

fn-registry/
  functions/          # Codigo y docs de funciones
    core/             # Utilidades genericas (filter, map, clamp...)
    finance/          # Dominio financiero (parse_ohlcv, indicators...)
    io/               # Funciones impuras de IO (fetch, write...)
    pipelines/        # Composiciones de funciones, siempre impuras
    components/       # Componentes React (.tsx)
  types/              # Tipos algebraicos (product y sum)
    core/             # Tipos genericos (Result, Option...)
    finance/          # Tipos de dominio (OHLCV, Tick, Order...)
  cmd/fn/             # CLI para buscar, añadir e indexar
  docs/               # Schema de documentacion (fuente de verdad del diseño)
  registry.db         # Indice SQLite FTS5 (regenerable, no commitear)

Convenciones

  • Lenguaje principal: Go. Tambien soporta Python, TypeScript, SQL.
  • IDs: formato {name}_{lang}_{domain} (ej: filter_slice_go_core)
  • Nombres: snake_case para funciones, PascalCase para tipos
  • Rutas: siempre relativas a la raiz del registry
  • Purity: pure (sin side effects) o impure (con side effects)
    • Las funciones puras NUNCA dependen de funciones impuras
    • Los pipelines son SIEMPRE impuros
    • Los tipos no tienen purity

Tablas del registry

functions

Almacena funciones atomicas, pipelines y componentes. Campo kind: function | pipeline | component. Ver docs/functions.md para el schema completo.

types

Tipos algebraicos: product (struct, todos los campos presentes) o sum (union, un caso activo a la vez). Ver docs/types.md para el schema completo.

Reglas de integridad (ver docs/integrity.md)

  • kind: pipeline -> purity siempre impure, uses_functions no vacio
  • purity: pure -> returns_optional siempre false, error_type vacio
  • purity: impure -> error_type obligatorio
  • tested: true -> test_file_path y tests obligatorios
  • Todas las referencias cruzadas (uses_functions, uses_types, returns, error_type) deben apuntar a IDs existentes

Fuentes de verdad

  • Codigo: archivos .go / .py / .tsx
  • Documentacion: archivos .md junto al codigo
  • Diseño del schema: carpeta docs/
  • registry.db: solo indice, regenerable con fn index

Build

# Requiere CGO y tag fts5 para SQLite FTS5
CGO_ENABLED=1 go build -tags fts5 ./...
CGO_ENABLED=1 go test -tags fts5 ./...

CLI (cmd/fn)

fn search "texto"          # Busqueda FTS
fn search -k function -p pure "slice"
fn add                     # Añadir nueva entrada
fn show <id>               # Ver entrada completa
fn list                    # Listar todas
fn index                   # Regenerar registry.db desde los .md

Para el agente

Al trabajar en este repo:

  1. Consultar docs/ antes de crear funciones o tipos — el schema manda
  2. Cada funcion/tipo necesita DOS archivos: implementacion + .md de documentacion
  3. Respetar la regla de purity: puras en el centro, impuras en los bordes
  4. Los IDs se generan automaticamente: {name}_{lang}_{domain}
  5. No editar registry.db a mano — siempre regenerar con fn index