¿Qué es Handbooks?
Un código base entra, dos manuales salen — un sitio de documentación narrado que tu equipo lee y un índice de ubicaciones con el que tu agente de código se orienta. Del mismo mapa parseado, siempre al día con el código.
Un código base entra. Salen dos manuales.
Handbooks escribe el mismo mapa de tu código dos veces, porque tiene dos lectores muy distintos:
📖 El manual para humanos
Un sitio de documentación narrado etapa por etapa — búsqueda, tema, enlaces profundos — generado desde tu código y abierto directamente desde file://. Este lo lees tú.
🤖 El manual para la IA
Un índice de ubicaciones para máquinas: tablas de enrutamiento archivo→etapa, hechos de llamadas por función, llms.txt y un paquete SKILL instalable. Este lo lee tu agente de código.
Debajo están los mismos hechos — un grafo de llamadas construido por el parser — así que los dos nunca pueden contradecirse. Uno optimiza narrativa y navegación; el otro, enrutamiento y detección de obsolescencia.
El problema, dicho llanamente
Tienes un repositorio. Es demasiado grande para tenerlo en la cabeza, y demasiado grande para que quepa en una ventana de contexto.
Pídele a un agente de código «reintenta las subidas fallidas tres veces» y parcheará con toda confianza la única función de subida que encontró — y se le escaparán la constante de la política de reintentos, la implementación espejo en el worker de lotes, la métrica que cuenta los intentos y el test que asevera el comportamiento antiguo.
Eso no es un fallo de razonamiento. Es un fallo de enrutamiento. El agente nunca vio un mapa.
La versión en una frase
Handbooks lee tu código con un parser real, construye un mapa de él, entrega ese mapa al agente como un índice de ubicaciones — no un resumen — y mantiene el mapa al día a medida que el código se mueve.
Pruébalo antes de seguir leyendo
Nada de lo que hay más abajo importa si no se ejecuta. Esto tarda unos treinta segundos, gasta cero tokens y no necesita clave de API:
git clone <this repo> && cd handbooks
pnpm install && pnpm build
pnpm demopnpm demo ejecuta la cadena de herramientas completa contra un proyecto de ejemplo
incluido, usando un servidor mock de LLM también incluido. Cuando termina tendrás en disco
un handbook renderizado, un sitio HTML, un índice localizador para agentes y un paquete
SKILL validado.
Instálalo como es debido
Recorre el inicio rápido
Ejecútalo sobre tu propio repo
Mira todos los comandos
Las tres ideas sobre las que está construido
1. Los hechos vienen de un parser, no de un modelo
Handbooks parsea cada archivo fuente con tree-sitter y
construye un grafo de llamadas tipado: funciones, métodos, aristas de llamada resueltas a
través de self/atributos/parámetros/imports, llamadas que salen de tu código y llamadas
que no pudo resolver — puestas en cuarentena en su propio archivo, nunca adivinadas.
Los archivos que no pudo leer ni parsear en absoluto quedan en cuarentena igual: un hueco que puedes enumerar, nunca uno que desaparece en silencio.
Esta capa nunca toca un LLM. Ejecútala dos veces y obtendrás el mismo grafo dos veces.
2. La prosa se superpone a los hechos, y va etiquetada
Un LLM escribe la parte legible por humanos: para qué sirve un archivo, cómo se articula un subsistema, qué estado fluye por qué etapas. Siempre está anclada al grafo y, cuando falla, la estructura se publica igualmente — con una descripción vacía.
Una frase ausente es mejor que una inventada.
3. El mapa está hecho para enrutar, no para leer
La salida no es un resumen de tu código. Es un índice que responde «¿qué archivos, funciones y estado tiene que tocar este cambio?» — incluidos los dispersos y poco obvios. El planner usa después ese índice, lee el código fuente real en cada dirección que encontró y emite un plan de edición lo bastante exacto al byte como para aplicarse mecánicamente.
Lo que te da una ejecución
| Salida | Para quién |
|---|---|
| Handbooks en markdown — visión general, índice de etapas, una página por etapa, tabla de registros de estado | humanos |
Sitio HTML multipágina — TOC fijo, migas de pan, selector de tema, funciona sobre file:// | humanos |
| Una página HTML autocontenida que puedes enviar por correo | humanos |
Índice para agentes — símbolo → path:line-line, tablas de archivos y llamadas, recetas de grep | agentes |
llms.txt + llms-full.txt | agentes |
| Un paquete SKILL con un hash de contenido por archivo, para que la deriva sea detectable | agentes |
Para quién es esto
| Eres… | Obtienes… |
|---|---|
| Un ingeniero que acaba de heredar un servicio de 200k líneas | Un recorrido etapa por etapa que de verdad puedes leer, más un sitio HTML para compartir |
| Alguien que ejecuta un agente de código sobre un repo grande | Un paquete SKILL que evita que el agente adivine dónde viven las cosas |
| Un líder de equipo que incorpora gente nueva | Documentación que se regenera en lugar de pudrirse |
| Alguien que mantiene un monorepo políglota | Una pasada sobre 18 lenguajes, con la fidelidad del análisis divulgada por lenguaje |
Lo que te cuesta
- Node.js ≥ 20.11 y pnpm. Esa es toda la instalación. Sin compilación nativa, sin
Python, sin
node-gyp— los parsers son WebAssembly. - Un endpoint compatible con OpenAI para las fases con LLM. OpenAI alojado, Azure,
vLLM, Ollama, LiteLLM, un proxy interno — cualquier cosa que hable
/v1/chat/completions. Puede ser un modelo corriendo en tu propia máquina. - Absolutamente nada para
handbook analyze, que es el comando que deberías ejecutar primero.
¿Mi código sale del edificio?
La Phase 1 es completamente local. Las Phases 2 y 3 envían contenidos de archivos al endpoint que tú
configuraste — que puede ser localhost. Nada más sale, y --max-chars-per-file limita cuánto de un archivo
individual se envía como máximo. Consulta el modelo de confianza.
Adónde ir ahora
Por qué existe esto
El problema del enrutamiento, y por qué resumir una base de código no lo resuelve.
Cómo funciona la generación
Cinco fases, qué cuesta cada una y qué se degrada cuando una falla.
Configuración
Flags, variables de entorno, cascadas de .env y handbook.config.yaml — un único registro.
Solución de problemas
Las cosas que de verdad fallan, y qué hacer al respecto.