19. Organización de documentación {#19-organización-de-documentación}
La organización de una carpeta de documentación parece un detalle administrativo hasta que alguien necesita encontrar algo. Un árbol coherente reduce enlaces rotos, evita duplicados y hace que el sitio generado tenga URLs predecibles. Un árbol improvisado funciona mientras el proyecto es pequeño; después se convierte en un laberinto de nombres y carpetas heredadas.
Este capítulo propone criterios para organizar el contenido, no una estructura única. La forma correcta depende del producto, del equipo y de cómo se publica.
19.1 Principios de organización {#191-principios-de-organización}
- Una página, un propósito. Si un archivo responde a dos preguntas distintas, probablemente sean dos páginas.
- La URL es parte del contrato. Cambiarla rompe enlaces, marcadores y citas.
- La profundidad no es calidad. Tres niveles suelen ser suficientes; cinco indican una jerarquía que nadie recorre.
- Los nombres describen la tarea.
instalacion-linux.mdes mejor quedoc2.md. - El índice es una página más. Debe mantenerse y revisarse, no generarse una vez y olvidarse.
- Lo que no está enlazado no existe. Una página huérfana es invisible para las personas y para los buscadores.
19.2 Estructura según el tipo de proyecto {#192-estructura-según-el-tipo-de-proyecto}
| Proyecto | Estructura habitual | Riesgo principal |
|---|---|---|
| Producto con usuarios | Tutoriales, guías, referencia, explicaciones | Mezclar audiencias |
| Biblioteca o SDK | Inicio rápido, guías, referencia de API, ejemplos | Referencia generada sin contexto |
| Monorepo | docs/ por paquete o un docs/ central |
Duplicación entre paquetes |
| Infraestructura | Runbooks, arquitectura, ADR, postmortems | Documentación operativa desactualizada |
| Proyecto de datos | Cuadernos, metodología, diccionario de datos | Resultados no reproducibles |
| Organización | Políticas, procesos, plantillas | Documentos sin propietario |
No fuerces la misma estructura en todos los casos. Una biblioteca necesita una referencia exhaustiva; un producto, más guías de tareas. Lo que sí debería ser común es el criterio de nombres, la navegación y el ciclo de revisión.
19.3 Árbol de ejemplo {#193-árbol-de-ejemplo}
docs/
├── README.md Índice general y punto de entrada
├── inicio/
│ ├── instalacion.md
│ ├── primera-ejecucion.md
│ └── actualizacion.md
├── guias/
│ ├── configuracion.md
│ ├── autenticacion.md
│ └── migracion-v1-v2.md
├── referencia/
│ ├── cli.md
│ ├── api.md
│ └── errores.md
├── explicaciones/
│ ├── arquitectura.md
│ └── modelo-de-datos.md
├── operaciones/
│ ├── runbook-ingestas.md
│ └── recuperacion.md
├── decisiones/
│ ├── 0001-usar-postgresql.md
│ └── 0002-api-versionada.md
├── releases/
│ └── 2026-10.md
└── assets/
├── diagramas/
└── capturas/
Ventajas:
- Las carpetas reflejan para qué sirve el contenido, no quién lo escribió.
inicio/yguias/separan el aprendizaje de la resolución de tareas.referencia/puede generarse o validarse contra el código.operaciones/ydecisiones/tienen ciclos de vida distintos.assets/evita mezclar imágenes con documentos.
Si el proyecto es pequeño, no crees todas las carpetas: empieza por README.md, inicio/ y referencia/, y añade el resto cuando aparezca la necesidad.
19.4 Nombres de archivos y slugs {#194-nombres-de-archivos-y-slugs}
Reglas que evitan problemas:
- Minúsculas y guiones:
instalacion-linux.md, noInstalación Linux.md. - Sin espacios ni caracteres reservados: los espacios se codifican como
%20y complican los enlaces. - Slugs estables: si el título cambia, el archivo puede conservar su nombre.
- Sin versiones en el nombre salvo que la versión sea parte del contrato:
api-v1.mdsí,guia-2024.mdno. - Sin prefijos innecesarios:
docs/docs-guia.mdno aporta nada. - Idioma coherente: si el corpus está en español, los nombres también.
Las tildes y la ñ son válidas en HTML, pero en una URL se percent-encoden y se vuelven difíciles de escribir. Para la ruta pública, prefiere ASCII; para el título visible, conserva la ortografía correcta.
19.5 Índices, navegación y búsqueda {#195-índices-navegación-y-búsqueda}
Una estructura clara no se explica sola. Necesita:
- Un índice general (
README.md) con una frase por sección y enlaces a las páginas principales. - Índices locales al inicio de cada carpeta, si tiene más de cinco páginas.
- Navegación anterior/siguiente en el sitio generado.
- Migas de pan para saber dónde estás.
- Buscador si el corpus supera lo que se puede recorrer a mano.
El capítulo 17 trata las anclas y los enlaces entre documentos; el 42, los índices dentro del documento; el 28, la navegación que genera cada herramienta.
Un índice que no se actualiza es peor que no tenerlo: promete una entrada que ya no existe. Si se genera automáticamente, verifica que excluya encabezados de bloques de código y que use las mismas anclas que el render.
19.6 Centralizado o junto al código {#196-centralizado-o-junto-al-código}
| Modelo | Ventaja | Inconveniente |
|---|---|---|
docs/ central |
Navegación única y coherencia editorial | Se desincroniza del código |
| Junto al código | Cambia en el mismo PR que la función | Dispersión y duplicación |
| Híbrido | Referencia generada + guías centrales | Requiere disciplina y automatización |
En un monorepo, una opción habitual es mantener las guías en docs/ y generar la referencia de cada paquete desde su código. La clave es que el cambio de código y el de documentación se revisen juntos (capítulo 25).
Si el equipo es pequeño, empieza centralizado y añade documentación junto al código solo cuando un módulo necesite contexto que no encaje en la guía general.
19.7 Versionado y archivo {#197-versionado-y-archivo}
La documentación de un producto con versiones necesita una política explícita:
- Una versión activa en la ruta principal (
/docs/). - Versiones anteriores en rutas separadas (
/docs/v1/), solo si siguen recibiendo soporte. - Una versión
latestque apunte a la activa, si el generador lo permite. - Un aviso en las versiones antiguas con enlace a la actual.
- Un archivo para lo que ya no se mantiene, sin mezclarlo con la documentación vigente.
No dupliques todo el corpus para cada versión sin necesidad: multiplica el mantenimiento y las correcciones. Si una página es idéntica en dos versiones, enlaza a la común o genera la variante desde una fuente única.
El capítulo 62 describe los estados deprecated y archived y las revisiones programadas.
19.8 Migraciones y redirecciones {#198-migraciones-y-redirecciones}
Reorganizar carpetas es inevitable. Hazlo sin romper enlaces:
- Diseña el mapa de URLs antiguas y nuevas antes de mover archivos.
- Mueve con
git mvpara conservar el historial. - Actualiza los enlaces internos y las anclas.
- Añade redirecciones 301 o páginas de aviso.
- Comprueba enlaces externos y busca referencias en otros repositorios.
- Mantén las redirecciones al menos mientras haya tráfico o citas.
Una redirección mal hecha es un enlace roto con pasos extra. Verifica el código de estado y el destino final, no solo que la página cargue. El capítulo 63 explica las limitaciones de los sitios estáticos.
19.9 Señales de alarma {#199-señales-de-alarma}
| Señal | Qué indica | Qué hacer |
|---|---|---|
Carpeta misc/, otros/, temp/ |
Falta de criterio | Clasificar o eliminar |
| Varias páginas con el mismo título | Duplicación | Fusionar o diferenciar |
| Páginas sin enlaces entrantes | Contenido huérfano | Enlazar, mover o retirar |
| Nombres con fechas o nombres de persona | Organización por autor, no por tema | Renombrar por propósito |
| Más de cuatro niveles de carpetas | Jerarquía excesiva | Aplanar |
| Índice desactualizado | Mantenimiento manual sin control | Generar o revisar en CI |
| Enlaces a rutas locales | Contenido no portable | Usar rutas relativas |
| Capturas sin fecha ni versión | Imágenes caducadas | Añadir contexto o regenerar |
19.10 Lista de comprobación {#1910-lista-de-comprobación}
- Cada página tiene un propósito y un público identificables.
- La estructura refleja tipos de contenido, no personas ni fechas.
- Los nombres son minúsculos, con guiones y sin espacios.
- Los slugs públicos son estables y ASCII.
- El índice general está actualizado y enlaza las páginas principales.
- No hay páginas huérfanas ni duplicadas.
- La documentación de código y la central se revisan juntas.
- Las versiones antiguas están señalizadas y enlazan la vigente.
- Las migraciones tienen redirecciones y enlaces actualizados.
- La estructura se ha probado generando el sitio, no solo en el editor.