Skip to content
jesusprodriguez.com

excalidraw-diagrams

Diagramas Excalidraw desde una descripción

Diagrams generated from a description that come out editable: flow, architecture, sequence, entity-relationship and swimlanes.

stack:
Diagrams
version:
v1.0.0
updated:
size:
4.5 KB
read:
3 min
license:
CC-BY-4.0

When it fires

When explaining a process or a system with a picture that will need tweaking afterwards.

description: Genera ficheros .excalidraw a partir de una descripción en lenguaje natural - diagramas de flujo, arquitectura, secuencia, entidad-relación, mapas mentales y carriles por rol. El resultado se abre en Excalidraw y se sigue editando a mano. Úsala cuando haya que explicar un proceso o un sistema con una imagen y no quieras colocar cada caja tú.

  • Choosing the type
  • Grid and colour
  • Brand icons
  • When to split the diagram

How you ask for it

> Draw the flow for creating a case file, from the form to the processing queue.

Say this to the agent as it is: the skill loads itself from its description, you do not have to name it.

How to install one

/plugin marketplace add https://jesusprodriguez.com/skills/marketplace.json
/plugin install ingenieria@jprodriguez-toolkit

The native route, and the only one that updates itself: add the marketplace once and `/plugin marketplace update` brings in new versions. Skills get their own namespace (`azure-devops:azure-pr-review`).

The whole file

This is exactly what you download: no summaries, nothing trimmed.

Heads-up: the skill file itself is written in Spanish. Agents read it fine and answer in your language, but the prose below is not translated.

Diagramas Excalidraw desde una descripción

El valor de un diagrama generado no es ahorrarse el dibujo: es que sale editable. Un PNG generado por una IA se descarta en cuanto cambia algo; un .excalidraw se abre, se arrastran dos cajas y sigue vivo.

Elegir el tipo, que es la mitad del trabajo

Lo que se quiere contarDiagrama
Pasos en orden, con decisionesFlujo
Qué se conecta con quéRelaciones
Un concepto y sus ramasMapa mental
Componentes de un sistema y sus llamadasArquitectura
Por dónde viajan los datos y dónde se guardanFlujo de datos
Quién hace qué, con traspasos entre rolesCarriles (swimlane)
Objetos hablando a lo largo del tiempoSecuencia
Tablas, claves y cardinalidadEntidad-relación

Un flujo de datos no representa el orden de los pasos, solo por dónde va el dato. Confundirlo con un diagrama de flujo es el error más habitual, y produce un diagrama que parece correcto y dice algo falso.

Cuántos elementos

TipoCómodoTecho
Pasos de un flujo3-1015
Entidades relacionadas3-812
Ramas de un mapa mental4-68

Por encima de 20 elementos, ningún diagrama se lee. Cuando la petición trae 15 componentes, la respuesta correcta no es dibujarlos todos: es proponer una vista general de seis y diagramas de detalle por subsistema.

Estructura del fichero

{
  "type": "excalidraw",
  "version": 2,
  "source": "https://excalidraw.com",
  "elements": [],
  "appState": { "viewBackgroundColor": "#ffffff", "gridSize": 20 },
  "files": {}
}

Elementos: rectangle para pasos y entidades, diamond para decisiones, ellipse para énfasis, arrow para conexiones, text para etiquetas.

Todos los textos con fontFamily: 5 (Excalifont). Es el detalle que separa un diagrama que parece hecho en Excalidraw de uno que parece pegado desde otra herramienta.

Retícula y color

  • Hueco horizontal de 200-300 px, vertical de 100-150 px. Apretarlos es lo que produce esos diagramas donde las flechas cruzan por encima de las cajas.
  • Texto de 16 px para arriba. Por debajo no se lee en una captura.
  • Cuatro colores, con significado, no decorativos: #a5d8ff principal · #b2f2bb secundario · #ffd43b lo importante · #ffc9c9 errores y avisos.
  • IDs únicos por elemento. Repetirlos hace que Excalidraw se coma elementos al abrir el fichero, en silencio.

Dos disposiciones que resuelven casi todo:

// Rejilla, para diagramas de relaciones
const cols = Math.ceil(Math.sqrt(n));
const x = x0 + (i % cols) * 260;
const y = y0 + Math.floor(i / cols) * 130;

// Radial, para mapas mentales
const a = (2 * Math.PI * i) / ramas;
const x = cx + r * Math.cos(a);
const y = cy + r * Math.sin(a);

Iconos de marca

Para arquitecturas de AWS, Azure, GCP o Kubernetes, las librerías de libraries.excalidraw.com dan iconos reales en lugar de rectángulos con el nombre dentro.

El detalle práctico: cada icono son entre 200 y 1000 líneas de JSON. Pegarlos a mano en el diagrama funciona, pero se come el contexto entero y arriesga colisiones de ID. Merece la pena un script que reciba nombre de icono y coordenadas, y haga la transformación de forma determinista.

Si no hay librería instalada, el diagrama sale igual con formas simples y color: se entiende perfectamente y los iconos se pueden sustituir después.

Antes de entregar

  • IDs únicos
  • Nada se solapa
  • Texto de 16 px o más, todo con fontFamily: 5
  • Las flechas conectan lo que dicen conectar
  • Es JSON válido
  • Menos de 20 elementos

Y decir cómo abrirlo: arrastrar el fichero a excalidraw.com o abrirlo con la extensión de Excalidraw en VS Code.

Límites honestos

Las curvas complejas se simplifican, no hay detección de colisiones (de ahí las distancias de la retícula) y no se incrustan imágenes. Para un diagrama de veinte cajas con posicionamiento fino, generar la base y ajustarla a mano en Excalidraw sigue siendo más rápido que iterar sobre el JSON.