Delfosti Docs PipelineHerramienta que automatiza la generación de changelog y documentación técnica en cada Funciona en cualquier proyecto y stack (Node.js, .NET, PHP, Flutter, Python, etc.) porque se apoya en hooks de Git, no en herramientas específicas del lenguaje. Se puede instalar de dos formas independientes: como extensión de VS Code / Cursor / Antigravity, o como CLI desde la terminal (Neovim, cualquier otro editor, o sin IDE).
Qué haceEn cada
Cada fase hace un auto-commit con el contenido generado. Si alguna fase falla, el flujo continúa normalmente sin bloquear al desarrollador. Requisitos previos
InstalaciónHay dos vías independientes. Elige la que corresponde a tu entorno: Vía A — Extensión (VS Code, Cursor, Antigravity)Genera el
O desde el IDE: Una vez instalada la extensión, activa el pipeline en tu proyecto:
Vía B — CLI desde terminal (Neovim, cualquier editor, sin IDE)El paquete está publicado en npm. Se puede instalar de forma global (una vez por máquina) o local (por proyecto).
Instalación global (recomendado)El comando queda disponible en el PATH y funciona en cualquier proyecto sin prefijos.
Instalación local por proyectoÚtil si el equipo quiere fijar la versión del CLI en el
No requiere VS Code ni ningún IDE. Funciona desde cualquier terminal. Comandos del CLI
|
| Comando | Descripción |
|---|---|
Docs Pipeline: Instalar Hook |
Instala el hook en el proyecto actual |
Docs Pipeline: Desinstalar Hook |
Elimina el hook del proyecto actual |
Docs Pipeline: Actualizar Hook |
Regenera el hook con la versión más reciente |
Docs Pipeline: Ver Estado |
Muestra si el hook está instalado y actualizado |
Docs Pipeline: Generar Documentación |
Genera la documentación técnica completa (Obsidian) del proyecto actual en una terminal integrada — no requiere el hook instalado |
Docs Pipeline: MCP |
Genera solo la documentación estructural vía MCP codebase-memory-mcp (Architecture, Modules, Functions, Routes, ADRs, Diagrams, TechDebt, Security) en una terminal integrada — requiere el servidor MCP conectado |
Docs Pipeline: Ver Versión |
Muestra la versión instalada de la extensión |
La barra de estado muestra ✓ Docs cuando el hook está instalado o ○ Docs si no lo está.
Guía por IDE
VS Code
code --install-extension delfosti-docs-pipeline-1.0.18.vsix
# Luego: Ctrl+Shift+P → "Docs Pipeline: Instalar Hook"
Cursor
cursor --install-extension delfosti-docs-pipeline-1.0.18.vsix
# Luego: Ctrl+Shift+P → "Docs Pipeline: Instalar Hook"
Antigravity
# Opción A — extensión
antigravity --install-extension delfosti-docs-pipeline-1.0.18.vsix
# Luego: Ctrl+Shift+P → "Docs Pipeline: Instalar Hook"
# Opción B — CLI desde terminal integrada (Ctrl+`)
docs-pipeline install
Neovim (y cualquier editor sin soporte .vsix)
# Desde :terminal en Neovim o terminal del sistema
docs-pipeline install
docs-pipeline status
Flujo de trabajo post-instalación
Una vez instalado el hook (por cualquier vía), el desarrollador no cambia nada en su rutina:
git add .
git commit -m "feat: nueva funcionalidad"
# ↑ el pipeline corre automáticamente en background
git push
# ↑ aquí aparece el log con la documentación generada
El hook vive en .git/hooks/post-commit y no le importa qué IDE hizo el commit — Neovim con fugitive, lazygit, VS Code Source Control, terminal, cualquiera.
Configuración
Settings de la extensión
Las opciones se configuran en Settings (Ctrl+,) → buscar "Docs Pipeline".
| Setting | Tipo | Default | Descripción |
|---|---|---|---|
docsPipeline.changelogEnabled |
boolean | true |
Activa/desactiva Fase 1 (bitácora) |
docsPipeline.docsUpdateEnabled |
boolean | true |
Activa/desactiva Fase 2 (Obsidian docs) |
docsPipeline.summaryEnabled |
boolean | true |
Activa/desactiva Fase 3 (CHANGELOG.md) |
docsPipeline.claudeBin |
string | "" |
Ruta absoluta al binario claude (auto-detección si vacío) |
docsPipeline.nodeBin |
string | "" |
Ruta absoluta al binario node (auto-detección si vacío) |
Configuración por proyecto (.env.local)
Puedes sobreescribir la configuración en cada proyecto creando un archivo .env.local en la raíz:
CHANGELOG_ENABLED=true
DOCS_UPDATE_ENABLED=false # deshabilitar Obsidian docs en este proyecto
SUMMARY_ENABLED=true
CLAUDE_BIN=/ruta/absoluta/al/claude
DOCS_DEBUG=true # mostrar respuesta raw de Claude en Fase 2
SUMMARY_DEBUG=true # mostrar respuesta raw de Claude en Fase 3
El .env.local tiene precedencia sobre los settings de la extensión.
Cómo funciona por dentro
git commit
└── post-commit hook (.husky/post-commit o .git/hooks/post-commit)
└── node <proyecto>/.docs-pipeline/scripts/generate-init.mjs <range> <ref>
├── [Fase 1] → claude --print (análisis del diff)
│ → escribe docs/changelog/YYYY-MM-DD_...md
│ → git commit --no-verify
├── [Fase 2] → claude --print (detección de módulos + docs existentes)
│ → escribe/actualiza docs/...md
│ → git commit --no-verify
└── [Fase 3] → claude --print (resumen ejecutivo)
→ actualiza CHANGELOG.md
→ git commit --no-verify
Variable clave: el hook establece DOCS_PIPELINE_PROJECT_ROOT apuntando a la raíz del proyecto antes de invocar los scripts. Los scripts usan esta variable para saber dónde escribir los archivos generados.
Notas por stack
Node.js / NestJS
Funciona directamente. Si el proyecto tiene Husky, el pipeline se agrega a .husky/post-commit sin interferir con otras reglas (lint-staged, etc.).
.NET / C#
Node.js debe estar instalado como herramienta de desarrollo. Los scripts no analizan código .NET específicamente — Claude recibe el diff de Git y genera documentación basada en los cambios, independientemente del lenguaje.
PHP / Laravel
Igual que .NET. Si el proyecto usa herramientas con hooks existentes, el pipeline puede coexistir en el mismo archivo post-commit (se agrega como un bloque delimitado).
Flutter / Dart
Si el proyecto está en un mono-repo con pubspec.yaml, Node.js debe instalarse aparte. El pipeline detecta cambios en cualquier archivo del repo.
Python / Django / FastAPI
Sin consideraciones especiales. Funciona igual que en cualquier proyecto Git.
Actualizar
Vía extensión
- Instalar el nuevo
.vsix - La extensión detecta automáticamente que el hook usa scripts de una versión anterior y muestra una notificación
- Hacer clic en "Actualizar ahora" o ejecutar
Docs Pipeline: Actualizar Hook
Vía CLI
# Actualizar el CLI (global)
npm install -g delfosti-docs-pipeline@latest
# Actualizar los scripts en cada proyecto
cd /ruta/a/mi-proyecto
docs-pipeline update
# Actualizar el CLI (local por proyecto)
npm install delfosti-docs-pipeline@latest
npx docs-pipeline update
Desinstalar
Vía extensión
Ctrl+Shift+P → "Docs Pipeline: Desinstalar Hook"
Para desinstalar la extensión del IDE:
code --uninstall-extension maycolz-delfosti.delfosti-docs-pipeline # VS Code
cursor --uninstall-extension maycolz-delfosti.delfosti-docs-pipeline # Cursor
antigravity --uninstall-extension maycolz-delfosti.delfosti-docs-pipeline # Antigravity
Vía CLI
docs-pipeline uninstall
En ambos casos, si el hook tenía otras reglas (lint-staged, etc.), se conservan. Solo se elimina el bloque del pipeline.
Estructura del proyecto
delfosti-docs-pipeline/
├── bin/
│ ├── docs-pipeline.js ← Entry point del CLI (registrado por npm en el PATH)
│ ├── docs-pipeline.mjs ← Implementación del CLI (ES Module)
│ └── hook-manager.mjs ← Lógica install/uninstall (port de hookInstaller.ts)
├── src/
│ ├── extension.ts ← Punto de entrada de la extensión VS Code
│ ├── hookInstaller.ts ← Lógica de instalación del hook (vía extensión)
│ ├── nodeResolver.ts ← Detección del binario node en el sistema
│ └── statusBar.ts ← Indicador en la barra de estado
├── scripts/ ← Pipeline (se copia al proyecto al instalar)
│ ├── generate-init.mjs ← Orquestador principal (hook)
│ ├── 00-generate-ascii-art-enterprise.mjs
│ ├── 01-generate-changelog-bitacora.mjs
│ ├── 02-generate-living-documentation.mjs
│ ├── 03-generate-changelog-summary.mjs
│ ├── generate-docs-init.mjs ← Orquestador de `docs-pipeline docs`
│ ├── 04-generate-full-documentation.mjs ← Genera docs/00-indice … docs/07-configuracion
│ ├── generate-mcp-init.mjs ← Orquestador de `docs-pipeline mcp`
│ └── 05-generate-mcp-documentation.mjs ← Genera Architecture/Modules/Functions/Routes/ADRs/Diagrams/TechDebt/Security vía MCP
├── out/ ← TypeScript compilado (generado por npm run compile)
├── package.json
├── tsconfig.json
└── .vscodeignore
Al instalar el hook en un proyecto (por cualquier vía), los scripts se copian a:
<tu-proyecto>/
└── .docs-pipeline/
└── scripts/ ← copia local de los scripts
├── generate-init.mjs
├── .version ← versión que generó esta copia
└── ...
Recomendado: añadir
.docs-pipeline/al.gitignoredel proyecto.
Solución de problemas
El pipeline no corre al hacer commit
- Verificar que el hook está instalado:
docs-pipeline statusoDocs Pipeline: Ver Estado - Revisar que Node.js está en PATH:
node --version - Revisar que Claude Code está instalado:
claude --version
Error "Cannot find module" al hacer commit
Ocurre cuando la versión del CLI o extensión fue actualizada pero los scripts locales del proyecto no. Solución:
docs-pipeline update
# o desde VS Code: Ctrl+Shift+P → "Docs Pipeline: Actualizar Hook"
"Node.js no encontrado" al instalar via extensión
Configura la ruta manualmente en Settings → docsPipeline.nodeBin:
- Windows:
C:\Program Files\nodejs\node.exe - macOS/Linux:
/usr/local/bin/nodeo la salida dewhich node
El hook corre pero Claude no responde
Verifica que Claude Code tiene sesión activa:
claude --print "test"
Si devuelve error, ejecuta claude para autenticarte.
Conflicto con Husky
Si el proyecto usa Husky, el pipeline detecta .husky/ automáticamente y agrega su bloque al final del hook sin sobreescribir reglas existentes. El bloque está delimitado con marcadores y puede removerse limpiamente con docs-pipeline uninstall o Docs Pipeline: Desinstalar Hook.
Desarrollo y build
cd delfosti-docs-pipeline
npm install
npm run compile # compilar TypeScript
npm run watch # modo observación continua
npm run package # empaquetar como .vsix
npm link # instalar CLI localmente para pruebas
Licencia
MIT — Delfosti Engineering Team
