youmindag
v2.11.5
Published
đ§ Inyecta inteligencia de contexto a cualquier proyecto. Una lĂnea y tu AI coding tool entiende toda la arquitectura.
Maintainers
Readme
đ El caso real
No usamos las cifras de npm ("+2,000 instalaciones") porque probablemente estĂĄn infladas por bots de seguridad que escanean cada versiĂłn publicada, no por uso real. En vez de eso, esto es un caso medido en un proyecto real:
| Proyecto | Archivos | LĂneas | Tokens antes | Tokens despuĂ©s | Ahorro | |---|---|---|---|---|---| | Parrilla Norteña Soft | 149 | 26,000 | 30,033 | 9,137 | ~70% |
Esa diferencia es lo que el agente ya no tiene que "descubrir a mano" leyendo archivo por archivo antes de poder trabajar en una tarea.
đŻ El problema
Cuando trabajas con AI coding tools (opencode, Claude Code, Cursor, etc.) en proyectos reales, el agente:
- â No sabe la estructura del proyecto
- â Gasta tokens buscando archivos que deberĂa conocer
- â No conoce las reglas de arquitectura
- â Ignora dependencias entre mĂłdulos
â La soluciĂłn
YouMindAG inyecta un sistema de contexto completo en tu proyecto en 30 segundos:
| Componente | Qué resuelve |
|-----------|-------------|
| boveda/ | DocumentaciĂłn estructurada (Obsidian-ready) |
| .opencode/ | Plugin que auto-carga contexto segĂșn la tarea |
| scripts/ | Analizador de tareas, extractor de BD |
| AGENTS.md | Reglas + prohibiciones + checklist |
| Graphify | Grafo de dependencias del proyecto |
đ InstalaciĂłn
cd /ruta/a/mi-proyecto
npx youmindagListo. Abre un chat con tu AI coding tool y escribe cualquier tarea.
Lo que NO modifica:
- â No toca tu cĂłdigo fuente
- â No modifica archivos existentes (solo agrega nuevos)
- â No instala dependencias adicionales (excepto
@sentropic/graphify) - â No rompe el build
đ CĂłmo funciona
TĂș escribes: "agrega campo telĂ©fono al mĂłdulo X"
â
Plugin detecta "mĂłdulo X" â ejecuta load-context.mjs
â
Se muestra: docs + source + graph deps + troubleshooting
â
El agente ya sabe qué archivos leer
â
Implementa siguiendo las reglas de arquitectura
â
npx tsc --noEmit + npm run build + npx graphify updateđ€ Compatibilidad
| Herramienta | Soporte | Enforcement |
|-------------|---------|-------------|
| opencode | â
Plugin nativo | Activo â inyecta contexto, deniega grep/glob a subagentes, checkpoints |
| Claude Code | â
Hooks + CLAUDE.md + skill | Activo â hooks nativos (ver abajo) |
| Cursor | â ïž Regla generada | Pasivo â .cursor/rules/youmindag.mdc si existe .cursor/ |
| GitHub Copilot | â ïž Solo AGENTS.md | Pasivo â el agente lee el archivo, sin interceptaciĂłn |
đĄïž Enforcement para Claude Code
El texto en AGENTS.md es pasivo: el agente lo lee una vez y lo olvida. Para que no pueda saltarse el flujo, YouMindAG instala hooks nativos en .claude/settings.json (con merge idempotente que nunca pisa tu config):
PreToolUse(Bash) â detecta exploraciĂłn cruda (grep -r,rg,find -name,catde cĂłdigo fuente) y redirige ayoumindag references/youmindag architect. Modos configurables en.youmindag.json:"guard": "warn"(default, sugiere),"block"(bloquea con exit 2) o"off". Escape hatch puntual:YM_NO_GUARD=1.PreToolUse(Grep/Glob) â las tools nativas de bĂșsqueda de Claude Code no son "crudas" (son el diseño correcto), asĂ que aquĂ nunca se bloquea: cada 5 bĂșsquedas seguidas recuerda queyoumindag references/architecttraen ademĂĄs bĂłveda + grafo + historial, no solo el match.SessionStartâ inyecta al inicio de cada sesiĂłn el protocolo, los mĂłdulos de la bĂłveda, la antigĂŒedad del grafo, las Ășltimas decisiones, y ahora tambiĂ©n quĂ© features de la bĂłveda estĂĄn posiblemente desactualizados (staleness por feature, ver abajo) â sin que nadie tenga que correrdoctorpara enterarse.PostToolUse(Edit/Write) â dos mecanismos independientes en el mismo hook:- Cada 10 ediciones lanza una sincronizaciĂłn en background (grafo + secciones auto-generables de la bĂłveda), no solo un recordatorio. El hook no espera al proceso â lo lanza desacoplado y sale de inmediato. Cooldown de 2 min entre corridas, recuperaciĂłn automĂĄtica de locks huĂ©rfanos. Desactivable con
"autoSync": falseen.youmindag.json. - En cada ediciĂłn: si el archivo tocado aparece en la tabla
## Componentesde algĂșnFeature.md, avisa (cooldown de 30 min por feature) para actualizar esa doc como parte del mismo cambio â el nudge llega al agente en el momento, no al usuario despuĂ©s. No reescribe nada: la prosa narrativa la sigue escribiendo un agente con contexto real, nunca un script en background sin supervisiĂłn (ver razonamiento abajo).
- Cada 10 ediciones lanza una sincronizaciĂłn en background (grafo + secciones auto-generables de la bĂłveda), no solo un recordatorio. El hook no espera al proceso â lo lanza desacoplado y sale de inmediato. Cooldown de 2 min entre corridas, recuperaciĂłn automĂĄtica de locks huĂ©rfanos. Desactivable con
đ Staleness por feature, no por repo
doctor y el chequeo pre-install ya no comparan boveda/ contra el repo entero (esa comparaciĂłn mide actividad, no drift de contenido: un typo en cualquier archivo sube el contador igual que reescribir un flujo completo). En su lugar, cada Feature.md declara su propia tabla ## Componentes (| Archivo | Rol |) â la misma convenciĂłn de la plantilla â y el chequeo compara el Ășltimo commit del doc contra el Ășltimo commit de esos archivos exactos. El resultado te dice quĂ© doc revisar, no solo que "algo cambiĂł":
â ïž Brechas: 3/13 features posiblemente desactualizados: Infracciones, Juzgado, LiberacionesSi ningĂșn Feature.md tiene tabla de Componentes parseable, cae de vuelta al chequeo global (impreciso, pero mejor que silencio total).
Esta misma detecciĂłn alimenta tanto doctor/SessionStart (te dice quĂ© revisar) como el nudge de PostToolUse (te avisa en el momento exacto en que tocas el cĂłdigo relevante). Deliberadamente no existe un modo que reescriba la prosa sola en background: contenido "fuente de verdad" generado sin supervisiĂłn, si se equivoca, es peor que contenido honestamente desactualizado â el objetivo es que el humano/agente nunca tenga que acordarse de revisar, no que nadie revise.
Se instala automĂĄticamente si detecta .claude/ o CLAUDE.md. GestiĂłn manual:
youmindag enforce # estado
youmindag enforce --install # instalar hooks + CLAUDE.md + skill
youmindag enforce --uninstall # retirar solo las entradas youmindagTodos los hooks son fail-open: ante cualquier error interno salen con cĂłdigo 0 y jamĂĄs dejan tu terminal sin Bash.
mi-proyecto/
âââ boveda/ â BĂłveda de conocimiento (auto-poblada)
â âââ Home.md
â âââ đ Arquitectura/
â âââ đ§© Features/
â âââ đ Stack/
â âââ đŠ Datos/
â âââ đș Roadmap/
â âââ đĄ API/
â âââ đ Referencias/
âââ .opencode/ â Contexto para AI tools
â âââ plugins/context-loader.js
â âââ skills/context-loader.yaml
â âââ context-map.yaml
âââ scripts/
â âââ load-context.mjs
â âââ extract-domain.mjs
â âââ export-schema.mjs
â âââ populate-vault.mjs â Repoblar bĂłveda manualmente
â âââ ym-dev.mjs â Wrapper del dev server (logs automĂĄticos)
â âââ trace-utils.mjs â Utilidades compartidas de trace
â âââ trace-components.mjs â Lifecycle tracker para componentes React
â âââ trace-server.mjs â Tracer para server actions
â âââ trace-client.mjs â Hook shadowing para componentes cliente
â âââ session-checkpoint.mjs â RecuperaciĂłn de sesiĂłn
âââ AGENTS.md â Reglas + checklist
âââ .graphify/ â Grafo de conocimiento| Comando | PropĂłsito |
|---------|-----------|
| youmindag | Instalar o actualizar el proyecto |
| youmindag db "SELECT ..." | Ejecutar query SQL contra la BD (tabla ASCII) |
| youmindag db | Modo interactivo REPL de BD |
| youmindag dev --status | Ver estado del servidor de desarrollo |
| youmindag dev --restart | Reiniciar el servidor de desarrollo |
| youmindag dev --logs | Ver logs del servidor de desarrollo |
| youmindag dev --wrap | Envolver dev script para capturar logs automĂĄticos |
| youmindag dev --unwrap | Restaurar dev script original |
| youmindag trace --client "Comp" | Rastrear hooks (useEffect/useState) en componente cliente |
| youmindag trace --components "A,B" | Inyectar lifecycle tracker en componentes React |
| youmindag trace --server "fn1,fn2" | Inyectar tracer en funciones server-side |
| youmindag trace --undo | Restaurar todos los archivos originales |
| youmindag trace --force | Ignorar advertencia de cambios sin commit |
| youmindag references <simbolo> | Buscar referencias de un sĂmbolo en el cĂłdigo |
| youmindag context --load <modulo> | Cargar contexto de un mĂłdulo |
| youmindag architect <modulo> | Cargar contexto completo de un mĂłdulo (bĂłveda + grafo + historial) |
| youmindag architect <modulo> --json | Ese contexto en formato JSON |
| youmindag doctor | DiagnĂłstico completo del proyecto (--json, --remote) |
| youmindag history | Sesiones y decisiones registradas (--decisions, --recent, --filter, --json) |
| youmindag guide | GuĂa visual de la arquitectura YouMindAG |
| youmindag enforce | Estado/instalaciĂłn del enforcement para Claude Code (--install, --uninstall) |
| youmindag status | Verificar estado de la bĂłveda |
| youmindag help [comando] | Mostrar ayuda (general o de un comando) |
Post-instalaciĂłn:
| Comando | PropĂłsito |
|---------|-----------|
| npx graphify query "pregunta" | Consultar el grafo de dependencias |
| npx graphify update | Reconstruir el grafo después de cambios |
| npm run db:schema | Actualizar esquema BD desde information_schema |
| node scripts/populate-vault.mjs | Repoblar la bĂłveda manualmente |
| skill context-loader | Cargar instrucciones detalladas de contexto |
Capa 1 â Poblado factual durante install (10/10 siempre)
Al ejecutar npx youmindag, se detectan datos duros del proyecto:
| SecciĂłn | Fuente | Calidad |
|---------|--------|---------|
| đ Stack/Comandos.md | package.json scripts | â
10/10 |
| đ Stack/Librerias.md | package.json dependencias | â
10/10 |
| đ Stack/Variables de Entorno.md | .env / .env.example | â
10/10 |
| đ Arquitectura/Estructura.md | Ărbol de directorios | â
10/10 |
| đĄ API/API Routes.md | Route files + mĂ©todos HTTP | â
10/10 |
| đĄ API/Server Actions.md | Archivos con "use server" | â
10/10 |
| đ Arquitectura/Middleware y Auth.md | middleware.ts + librerĂas | â
10/10 |
| đ§© Features/Index.md | MĂłdulos detectados | â
10/10 |
Capa 2 â Poblado por AI al primer chat (10/10 con modelos recomendados)
Cuando abres un chat, el agente lee AGENTS.md y completa automĂĄticamente: ADRs de arquitectura, anĂĄlisis de auth, docs por mĂłdulo, convenciones inferidas del cĂłdigo, esquema de BD, docs de endpoints/acciones, changelog desde git log, TODOs pendientes, troubleshooting y glosario del dominio.
Re-poblado manual
node scripts/populate-vault.mjs| Modelo | Calidad | Notas | |--------|---------|-------| | Claude Sonnet 4 | â 10/10 | Mejor seguimiento de instrucciones AGENTS.md | | DeepSeek V4 | â 10/10 | Razonamiento profundo para anĂĄlisis de arquitectura | | GPT-4o / GPT-4.1 | â 9/10 | Excelente para detecciĂłn de patrones | | Gemini 2.5 Pro | â 9/10 | Muy bueno para extracciĂłn de vocabulario | | Otros (Llama 4, Mistral, etc.) | â 7-8/10 | Funcional, menos preciso |
La Capa 1 (poblado factual) es 10/10 con cualquier modelo o incluso sin AI.
đ La historia de los 46 bugs
v2.9.0 modularizĂł los comandos (db, dev, trace, watch, sync) y dejĂł 46 imports faltantes repartidos en 7 archivos, invisibles hasta que ESLint los encontrĂł. Corregirlos llevĂł a instalar un gate de publicaciĂłn que hace estructuralmente imposible repetir ese error sin saltĂĄrselo a propĂłsito.
đ ArtĂculo completo: prĂłximamente
đ ïž Estado tĂ©cnico
v2.11.0 â estable. El gate de publicaciĂłn (prepublishOnly â npm run verify) corre lint + tests, y ahora el lint cubre tambiĂ©n template/scripts/ y el plugin de opencode (donde vive el cĂłdigo que corre en tu proyecto). Esta versiĂłn endurece el paquete: contrato JSONL Ășnico, versiĂłn del paquete siempre correcta, sanitizaciĂłn de shell (execFileSync con args, sin interpolaciĂłn), curadurĂa del grafo, normalizaciĂłn unicode NFC/NFD, y la capa de enforcement para Claude Code.
Pendiente conocido (alcance futuro, no bugs): auto-poblado limitado a proyectos Node/package.json, sin fallback si falla la instalaciĂłn de Graphify, atomicidad parcial en la instalaciĂłn, sin soporte formal de Windows en los comandos dev.
đ€ Contribuir
Es open source y las contribuciones son bienvenidas. Antes de abrir un PR, lee la guĂa de contribuciĂłn â explica la estructura del proyecto, cĂłmo agregar un comando nuevo, y el gate de verificaciĂłn obligatorio (npm run verify).
đ Licencia
MIT â Haz lo que quieras.
