Explicar una base de código desconocida
Objetivo: proporcionar a un recién llegado un mapa confiable, con referencias a archivos, en unas pocas páginas. Cada afirmación debe apuntar a un archivo que hayas leído.
Explorar en este orden
- Propósito y usuarios: README, descripción del paquete, índice de documentación. ¿Qué problema resuelve y para quién?
- Ejecutarlo: comandos de instalación, ejecución y prueba desde manifiestos, Makefile y configuración de CI. Ejecuta los baratos (pruebas, lint) para confirmar que funcionan; indica cuáles no ejecutaste.
- Estructura: árbol de directorios hasta dos niveles de profundidad (ignora
node_modules, salida de compilación,.git). Anota el/los lenguaje(s), frameworks, diseño de monorepo. - Puntos de entrada:
main, archivo de inicio del servidor, entrada CLI, definiciones de rutas, trabajos programados, manejadores de eventos, entradasbinyscripts. - Trazar un flujo real de extremo a extremo: elige la solicitud, comando o evento más central y síguelo desde la entrada hasta el almacenamiento o salida, listando cada archivo y función en orden.
- Datos: esquemas, modelos, migraciones, archivos de configuración, variables de entorno que el código lee (solo nombres, nunca valores).
- Puntos de contacto externos: bases de datos, colas, APIs de terceros, proveedores de autenticación.
- Señales de calidad: dónde viven las pruebas y qué cubren, comprobaciones de CI, reglas de lint, áreas con TODOs, archivos muy grandes, cambios recientes (
git log --since="3 months ago" --name-only --pretty=format: | sort | uniq -c | sort -rn | head).
Salida
# <repo> en una página
Propósito: ...
Cómo ejecutar: <comandos, verificados o no>
Mapa: <directorio -> responsabilidad, una línea cada uno>
Un flujo, paso a paso: <archivo:función ...>
Datos y configuración: ...
Servicios externos: ...
Por dónde empezar a leer: <3 archivos en orden, con motivo>
Áreas riesgosas o confusas: <archivo, motivo>
Preguntas abiertas: <lo que no pudiste determinar>
Reglas
- Cita
ruta:líneao al menosrutapara cada afirmación. Si inferiste algo, márcalo como "inferido". - No describas código que no hayas abierto. No adivines el contexto de negocio; colócalo en preguntas abiertas.
- Nunca imprimas valores secretos de archivos
.envo configuración; solo lista nombres de variables. - Sé breve: un mapa, no un recorrido por cada archivo.