Communitygithub.com

exmergo/dex

Dex es el kit de herramientas de ingeniería analítica nativo para agentes. Apúntalo a tu almacén y a tu proyecto dbt. Aprende el panorama, escribe tus transformaciones y te dice exactamente qué corregir cuando el esquema se desvía. Creado para ingenieros analíticos y de datos que quieren sacar más partido a su agente de codificación.

¿Qué es dex?

Dex es un skill de código de Claude (aunque su diseño es aplicable a otros agentes como Cursor o Codex) que actúa como un asistente de ingeniería analítica nativo para agentes. Está especializado en comprender, perfilar y mapear almacenes de datos (como Snowflake, BigQuery, Redshift, Databricks, etc.) o bases de datos locales DuckDB, así como proyectos dbt. Su principal propósito es permitir que un agente de IA explore de manera autónoma y segura el esquema de un data warehouse: primero realiza un inventario clasificado de tablas y vistas, luego perfila columnas sin exponer datos sensibles (usando banderas de PII, probabilidades de unicidad, advertencias de calidad), después infiere relaciones (relaciones y claves foráneas) basándose en perfiles y metadatos, y finalmente genera mapas ER en Mermaid para visualización. Dex está construido para ser completamente de solo lectura, no tiene estado y utiliza una caché local (`.dex/`) para evitar costosas re-exploraciones. Ofrece similitudes de agrupación para el análisis de segmentación, un firewall de consultas para preguntas ad-hoc seguras, y notifica explícitamente sobre elementos omitidos o aproximaciones (por ejemplo, recuentos distintos aproximados). Su valor principal es cerrar la brecha entre la exploración manual de datos y la automatización de agentes: permite que un agente obtenga rápidamente un mapa preciso y procesable de un almacén, con total transparencia sobre la confianza, la cobertura y la actualidad de los datos.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add exmergo/dex

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Explorar

Capta el sentido de un almacén o una base de datos local de DuckDB como lo haría un ingeniero de analytics: prioriza lo importante, profundiza de forma selectiva y persiste un mapa borrador. Es la habilidad emblemática, completamente de solo lectura. Absorbe la creación de perfiles y la inferencia de relaciones como capacidades; no son habilidades separadas.

Cómo usarlo

Ejecuta el motor a través del envoltorio. Imprime un único envoltorio JSON sanitizado y nada más; lee el envoltorio y decide el siguiente paso.

uv run "${CLAUDE_SKILL_DIR}/scripts/run.py" <subcomando> [flags]

Subcomandos, en el orden habitual:

  1. connect test --path <archivo.duckdb> confirma una conexión de solo lectura e informa capacidades.
  2. explore inventory --rank devuelve un resumen de objetos clasificados (recuentos y tamaños, nunca filas).
  3. explore profile <objetos> (separados por espacios o comas) devuelve perfiles de columnas, banderas PII registradas como (columna, categoría, confianza) y nunca valores de ejemplo, además de claves candidatas, el grano probable y advertencias de calidad de datos (por ejemplo, un id no único que se expandirá en las uniones). La confianza de una bandera genérica *_name se refina mediante evidencia de forma de valor del mismo escaneo, en ambas direcciones: los valores con forma de persona la corroboran, un vocabulario de referencia cerrado o etiquetas largas la reducen por debajo del umbral de bloqueo del cortafuegos, y la falta de evidencia no cambia nada (la bandera nunca se elimina). Los recuentos distintos son aproximados por escala, pero cualquier columna que parezca única dentro del ruido de aproximación se escala a un COUNT(DISTINCT) exacto (distinct_count_exact: true), por lo que las conclusiones de unicidad y grano se basan en pruebas; un prefijo ~ en una advertencia marca un recuento que aún es aproximado. Un objeto solicitado cuyo perfil almacenado en caché sigue siendo reciente (mismo conector, esquema sin cambios, dentro de profile_freshness_hours, valor predeterminado 24) se sirve desde la caché (cache_hit_count) en lugar de volver a escanearse, por lo que perfilar una tabla que map acaba de escribir no cuesta nada al usarla; pasa --refresh para forzar un nuevo escaneo cuando la fuente cambió de una manera que la verificación de metadatos gratuita no puede ver.
  4. explore relationships devuelve uniones inferidas y declaradas con confianzas, además de notas que explican qué examinó la inferencia (por lo que una lista vacía tiene significado). Añade --verify para medir cada unión inferida con una sonda de superposición agregada (fracción huérfana, confianza ajustada).
  5. explore map escribe o actualiza la caché .dex/ e imprime un resumen (--verify también funciona aquí). Más allá de 50 objetos, solo perfila los 25 principales por rango y lo indica en notes (con skipped_count); pasa --full para perfilarlo todo. En un re-mapeo, los objetos omitidos en esta ejecución conservan sus perfiles anteriores (carried_forward_count), cada uno sellado con su propio profiled_at para que el desfase sea visible en lugar de que los detalles de la columna desaparezcan silenciosamente. Un objeto seleccionado cuyo perfil en caché sigue siendo reciente (mismo conector, esquema sin cambios, perfilado dentro de profile_freshness_hours, valor predeterminado 24) se reutiliza sin un nuevo escaneo (cache_hit_count), por lo que las reejecuciones no cuestan nada al usarlas; pasa --refresh para forzar un re-perfilado completo cuando la fuente cambió de una manera que la verificación de metadatos gratuita no puede ver (por ejemplo, las filas cambiaron pero el esquema no). explore relationships y el independiente explore profile reutilizan perfiles recientes de la misma manera.
  6. explore diagram [--full] renderiza el mapa almacenado en caché como un diagrama ER de Mermaid en data.mermaid. Gratuito y sin conexión (lee la caché, nunca el almacén), por lo que es seguro reejecutarlo mientras se da forma a la imagen. Reproduce la cadena textualmente en un bloque ```mermaid con ficha para que el humano pueda verlo, y escríbelo en un archivo .mmd o markdown cuando quiera uno en disco: el motor deliberadamente no escribe ningún archivo. Nunca redibujes ni

Skills relacionados