Diagramar un repositorio
Un diagrama que muestra todo no explica nada. Para explicar un repositorio (un monorepo, un conjunto de microservicios, una app y su backend), primero lee y después dibuja un conjunto pequeño: una vista general y algunos flujos clave. Esta es la receta que sigue el skill para agentes; se la puedes dar a cualquier agente con “diagrama este repo”.
1. Lee el sistema, no los archivos
Sección titulada «1. Lee el sistema, no los archivos»Busca dónde está declarada la arquitectura, en este orden:
- Despliegue:
docker-compose*.yml, manifiestos de Kubernetes o Helm,serverless.yml,wrangler.*, Terraform,Procfile. Casi siempre aparecen ahí todos los servicios, bases de datos, colas y cachés. - Workspaces: workspaces de
package.json,pnpm-workspace.yaml,go.work,Cargo.toml, las carpetasapps/yservices/. Un paquete o app suele ser un bloque. - Puntos de entrada y rutas:
main.*,server.*, routers, controladores, archivos OpenAPI, GraphQL o.proto. - Quién llama a quién: clientes HTTP y URLs base (
ORDERS_URL), stubs de gRPC, productores y consumidores de colas, clientes de bases de datos, SDKs de terceros. - El README, al final, para confirmar nombres e intención.
2. Dibuja un conjunto
Sección titulada «2. Dibuja un conjunto»- Vista general (
architecture): capas de arriba hacia abajo, por ejemplo Clientes → Borde → Servicios → Datos → Externos. Un bloque por servicio desplegable o almacén de datos, 15 como máximo. - De dos a cuatro flujos clave (
sequence): las peticiones que más importan (registro, checkout, la tarea principal). Mensajes en orden, con el endpoint o el evento como nombre (POST /orders,order.created). - Opcional: un
flowpara un proceso de negocio, o untreede los paquetes si la pregunta es sobre cómo está organizado el código.
Nombra cada archivo según lo que explica: vista-general.flux.json, checkout.flux.json.
3. Reglas
Sección titulada «3. Reglas»- Usa los nombres que el equipo usa en el código, con una
descriptionsimple de su tarea (“cobra tarjetas”). - Muestra el camino principal con
flowycarries("carries": "order.created"), no todas las llamadas. - Deja fuera lo que no puedas confirmar en el código en lugar de adivinar.
- Para onboarding, escribe
notesen cada paso: reintentos, idempotencia, en qué carpeta está. Después preséntalo.