npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

youmindag

v2.11.5

Published

🧠 Inyecta inteligencia de contexto a cualquier proyecto. Una línea y tu AI coding tool entiende toda la arquitectura.

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 youmindag

Listo. 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, cat de cĂłdigo fuente) y redirige a youmindag 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 que youmindag references/architect traen 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 correr doctor para 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": false en .youmindag.json.
    • En cada ediciĂłn: si el archivo tocado aparece en la tabla ## Componentes de algĂșn Feature.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).

📐 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, Liberaciones

Si 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 youmindag

Todos 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.