Volver a la wiki

La Biblioteca: el grafo de conocimiento de CreaRack-Pro

Parte de la colección [[concept—workspace—supercontexto-00-vision]]. Cubre: qué es el grafo, cómo consultarlo, el flujo obligatorio antes de cada commit, y el panel Pulse.


¿Qué es exactamente el grafo?

Imagina un mapa donde cada “lugar” es un trozo de código (una función, un modelo de base de datos, un endpoint de la API) y las “carreteras” entre ellos representan relaciones: “esta función llama a aquella”, “este modelo tiene este campo”, “este endpoint usa este schema”, “este endpoint está documentado en esta wiki”.

Ese mapa es la Biblioteca. Vive en una base de datos en Cloudflare (D1) y tiene herramientas (bib_*) para consultarlo desde Claude Code en tiempo real.

Estado actual del grafo (abril 2026)

MétricaValor
Nodos totales3.090
Edges (relaciones)4.450
Comunidades detectadas255
Cohesión de módulos78%
Ciclos0
God nodes0
Dead code0
Salud Biblioteca100%

¿Para qué sirve en el día a día?

Antes de que Claude Code modifique cualquier archivo, consulta la Biblioteca. Esto evita tres problemas clásicos:

flowchart LR
    A["Edu pide\nuna nueva feature"] --> B["Claude consulta\nbib_ask · bib_context_query"]
    B --> C["Biblioteca devuelve:\n• qué modelos existen\n• qué endpoints hay\n• qué docs se verán afectadas"]
    C --> D["Claude edita código\n(sin duplicar, sin romper)"]
    D --> E["bib_report_change\nantes del commit"]
    E --> F["Grafo actualizado\npara el próximo dev"]

Las herramientas disponibles (bib_*)

Claude Code tiene acceso a estas herramientas para consultar la Biblioteca:

Consulta de contexto (usar ANTES de editar)

HerramientaPara qué sirveEjemplo de uso
bib_askPregunta en lenguaje natural, respuesta sintetizada con fuentes“¿Cómo funciona el sistema de permisos de organizaciones?”
bib_search_semanticBúsqueda vectorial: devuelve chunks rankeados por relevancia“rack device add endpoint”
bib_context_queryBriefing completo de un módulo: modelos, endpoints, docstopic=“monitoring”
bib_app_summaryResumen ejecutivo de una app Djangoapp=“blueprints”
bib_get_nodeDetalle de un nodo concreto con todas sus relacionesnode_id=“models.py::Device”

Impacto y reporte (usar ANTES de commitear)

HerramientaPara qué sirve
bib_impact_queryQué docs y nodos se verán afectados por un cambio en un archivo
bib_report_changeObligatorio — marca los docs vinculados para revisión posterior

Análisis avanzado

HerramientaPara qué sirve
bib_call_graphTraza quién llama a qué función (callers y callees)
bib_doc_coverageQué código tiene/no tiene documentación vinculada
bib_stale_reportQué nodos llevan más de N días sin actualizarse
bib_statsEstado general del grafo (nodos, edges, comunidades, salud)
bib_god_nodesDetecta nodos con demasiadas dependencias (code smell)
bib_dead_codeCódigo que ya no se usa
bib_cycle_reportDependencias circulares entre módulos
bib_coupling_reportAcoplamiento entre comunidades del grafo
bib_compute_communitiesRecalcula los clusters del grafo (Label Propagation)

El flujo obligatorio en cada commit (Regla 0)

Hay tres pasos que Claude Code debe seguir cuando toca código. No son opcionales:

sequenceDiagram
    participant C as Claude Code
    participant B as Biblioteca MCP
    participant Git as git commit

    Note over C,B: ANTES de editar cualquier archivo
    C->>B: bib_context_query(topic="monitoring")
    B-->>C: Modelos · endpoints · docs del módulo
    
    Note over C,B: DESPUÉS de editar, ANTES de commitear
    C->>B: bib_impact_query(file_path="monitoring/views.py")
    B-->>C: "Estas 3 docs quedarán desactualizadas"
    
    C->>B: bib_report_change(file_path="monitoring/views.py", change_type="modified")
    B-->>C: ✅ Marcado para revisión
    
    Note over C,Git: AHORA sí
    C->>Git: git commit -m "feat: ..."
    Git-->>C: ✅ Pre-commit hook no bloqueó

¿Qué pasa si me salto el bib_report_change?

El pre-commit hook claude-method/harness/bib_report_check.py (fuente única: el hook de cada repo lo ejecuta desde ahí) bloquea el commit. Si el MCP está caído o sin token, degrada con warning y deja pasar (no rompe el flujo productivo).

Para saltarlo puntualmente: BIB_SKIP=1 git commit. Queda registrado en el Pulse y se puede auditar.


Cómo está organizado el grafo: nodos y edges

Tipos de nodos

TipoQué representaEjemplos
modelModelo Django (tabla en BD)Device, Rack, Organization
endpointEndpoint API o vista HTMXGET /api/racks/, POST /api/devices/
functionFunción Pythonanalyze_blueprint(), get_snmp_data()
schemaSchema Pydantic (input/output)DeviceSchema, RackCreateIn
docPágina de wiki o guíacrearack--rack-editor--intro.md

Tipos de edges

TipoQué describe
callsA llama a B
uses_modelEndpoint/función usa este modelo
documentsEsta doc describe este código
defined_inEste schema pertenece a este endpoint
importsMódulo A importa de módulo B

Las comunidades

El grafo usa Label Propagation para detectar automáticamente grupos de código que “trabajan juntos”. Hay 255 comunidades. Cada comunidad tiene un nombre derivado de sus nodos más conectados (p.ej. “monitoring-snmp-device”).


El stack técnico del grafo

Código fuente CreaRack-Pro
        ↓  (scripts bib_ast.py · bib_ast_ts.mjs)
    Extractor AST
        ↓  (nodos + edges como JSON)
    API MCP del workspace
(workspace.crearack.com/api/mcp)
        ↓
    D1 Cloudflare
    (base de datos persistente del grafo)
        ↓
    Claude Code (tools bib_*)
    workspace.crearack.com/biblioteca (UI)
    Oráculo de EL (búsqueda semántica)

Los embeddings para búsqueda semántica usan Workers AI bge-m3 (1024 dimensiones). La síntesis de respuestas en bib_ask usa Gemma 4 26B vía Google AI Studio.


El panel Pulse: salud del sistema en vivo

workspace.crearack.com/biblioteca/pulse es el dashboard de estado. Muestra:

WidgetQué muestra
Actividad 24hCuántos bib_report_change se han ejecutado hoy
Docs desactualizadasWikis que llevan >60 días sin que se toque el código que describen
BypassesCommits que saltaron el pre-commit con BIB_SKIP=1
Salud del grafoCiclos, god nodes, dead code, cohesión
Commits 7 díasActividad reciente del equipo
Alertas activasAnomalías detectadas por el sistema
CronsEstado de los últimos runs de los bots nocturnos

Véase también

Subir