Ten los requisitos
Node.js 22.12+, Claude Code y —si el repo usa memoria persistente— el binario de engram. En el paso 3, doctor te dice exactamente qué falta.
node --version # v22.12 or higher # Claude Code installed on your machine
navori no es un scaffolder genérico. Es un harness opinado , pensado para código que ya vive en producción —con dependencias legacy y migraciones a medias, no repos de laboratorio—. Convierte a Claude Code en un equipo con estándares no negociables, memoria que persiste y un mismo estándar en todos tus repos. Aquí está, capa por capa, por qué es la base sobre la que vale la pena construir.
¿Nuevo en términos como harness, skillo SDD? Empieza por el diccionario rápido ↓
Sin jerga. Toca cualquier término para ver qué significa en una frase.
El 'arnés' de trabajo: el conjunto de reglas, agentes y automatizaciones que rodean al asistente de IA para que trabaje como tu equipo espera, no a su antojo.
Un asistente con un rol específico (explorar, escribir, revisar). El agente principal reparte el trabajo entre subagentes especializados.
Una guía reutilizable para una tarea concreta ('cómo crear un endpoint', 'cómo verificar antes de dar algo por hecho'). El agente la carga cuando la necesita.
Una automatización que se dispara en un momento fijo —por ejemplo, correr los tests antes de cada commit— sin que nadie tenga que acordarse.
La barrera de calidad: los comandos (lint, tests) que deben pasar para dar un cambio por terminado.
Spec-Driven Development: en vez de que las reglas vivan en la cabeza de alguien, se escriben y se versionan junto al código, y se actualizan con un comando.
Un paquete de configuración por tipo de stack (Vite + React, NestJS, monorepo…). navori detecta tu stack y elige el preset adecuado.
La memoria persistente: guarda decisiones y aprendizajes para que el asistente los recuerde en la siguiente sesión.
Un fragmento de CLAUDE.md marcado como 'gestionado por navori': se actualiza solo, sin pisar lo que tú escribiste alrededor.
Las carpetas de código viejo que marcas para que los agentes las traten con cuidado y no les impongan reglas nuevas.
El agente principal encarna al orchestrator —el centro de gravedad—. En lugar de hacer todo en un mismo hilo, descompone la tarea y la reparte entre subagentes que trabajan en paralelo y devuelven solo su conclusión. Cada uno tiene un rol estricto y el modelo justo para él.
Toca una tarjeta para ver a qué se dedica cada rol ↓
Lo encarna el agente principal, no un subagente aparte — es el centro de gravedad de la sesión. Lee el ticket, decide en cuántas subtareas se parte, lanza a los trabajadores en paralelo y al final integra sus resultados en una sola solución coherente. Usa el modelo más capaz (opus) porque su trabajo es razonar y decidir, no leer archivos.
publisher · scribe
Rápido y barato para tareas mecánicas.
scout · implementer · reviewer · auditor
Equilibrio entre calidad y costo.
orchestrator · architect
El músculo donde el criterio importa.
Todo configurable en config.models. No pagas un modelo caro por leer archivos: el músculo va donde se decide, la velocidad donde se explora. El architect corre además con el esfuerzo más alto (xhigh): el costo queda acotado porque solo entra en tareas de nivel 2 y 3, y ese nivel lo decide classify, no el modelo.
orchestrator › splits the ticket into 3 subtasks
├─ scout → map the module (own context · sonnet)
├─ scout → how is it validated? (own context · sonnet)
└─ implementer → applies the change → quality gate ✓ (sonnet)
└─ reviewer → approves against CLAUDE.md (sonnet)
orchestrator › synthesizes and delegates the commit → publisher (haiku) El orchestrator clasifica cada tarea con navori plan classify — una complejidad de 0 a 10 desde señales verificables, nunca prosa suelta en el chat — y elige el nivel de plan correspondiente.
| Nivel | Cuándo | Artefacto |
|---|---|---|
| 0 | Complejidad ≤ 3, a lo sumo un archivo no trivial, sin piso de área crítica. | Ninguno — cambio directo, con exención confirmada por classify. |
| 1 | El caso común: la mayoría de las tareas con plan caen aquí. | Workplan simple (skill plan-simple): objetivo, criterios A<n> con comando y salida esperada, fuera de alcance, archivos, progreso, decisiones. |
| 2 | Complejidad ≥ 8, o un piso de área crítica, dinero/credenciales/PII, multi-repo, dependencia nueva, contrato compartido o migración. | Workplan avanzado (skill plan-advanced) + el architect explora alternativas y recomienda; el usuario elige antes del veredicto. |
| 3 | El usuario aceptó una spec. | specs/<feature>/{requirements,design,tasks}.md — el architect escribe design.md, sin workplan aparte. |
Un hook PreToolUse niega el despacho del implementer si la tarea no trae un workplan que pase navori plan check, o una exención de nivel 0 confirmada por classify . Dos rechazos del reviewer (CHANGES_REQUESTED) exigen los artefactos del nivel siguiente antes de un tercer despacho — en nivel 2 o 3, el gate escala al usuario en vez de un tercer intento.
Casi todas las herramientas asumen un repo limpio y greenfield. navori parte de la realidad de un equipo: código que ya corre en producción, dependencias legacy y migraciones a medias. Desde el init eliges el terreno, y esa decisión moldea cómo trabajan los agentes.
Eliges el terreno: greenfield (muévete rápido), en producción (cuida regresiones) o migración legacy (cuida la compatibilidad legacy↔nuevo). La decisión moldea cómo trabajan los agentes.
Marcas las carpetas legacy y el orchestrator, el implementer y el reviewer lo saben: ahí aplican reglas distintas y no imponen convenciones nuevas sobre código que no les toca.
Ante una migración estructural (legacy → nuevo backend, monolito → microservicios), el agente diseca causa raíz, áreas afectadas y compatibilidad antes de que nadie escriba código.
verify-before-done, debug-failure y review-diff detectan estados inconsistentes cuando conviven código legacy y nuevo — el error más caro de una migración a medias.
? What terrain are you on?
greenfield — new code, move fast
› production — in production, guard regressions
migration — legacy migration, watch
legacy↔new compatibility
→ legacyPaths: [ "src/old-api", "legacy/" ]
the orchestrator, implementer, and reviewer
treat those paths with different rules. La orquestación no es solo velocidad: es economía de contexto. El hilo principal se mantiene limpio porque el trabajo pesado ocurre en ventanas aisladas —cada una con su modelo— que solo devuelven lo esencial.
Cada subagente corre en su propia ventana y devuelve solo la conclusión. El hilo del orchestrator nunca se llena con el volcado de los archivos que leyó.
Cada agente usa el modelo justo: uno ligero para leer y explorar, el potente solo para decidir y revisar. No pagas un modelo caro por leer archivos.
Scout lee los fragmentos relevantes, no archivos completos. Localiza, no fotocopia.
El catálogo de skills se referencia por índice; el contenido pesado se carga solo cuando la tarea lo pide.
El orden canónico ordena y deduplica las reglas en CLAUDE.md. Sin copias pegadas ni ruido que se acumula sesión tras sesión.
sin harness
Un solo hilo lee archivos enteros, acumula todo en el contexto y lo arrastra turno tras turno hasta saturarse.
con navori
Los subagentes exploran en paralelo y devuelven conclusiones. El orchestrator razona sobre resúmenes, no sobre volcados. Engram guarda lo que hay que recordar fuera del contexto.
El contexto de un LLM es efímero: se cierra la sesión y se olvida. Engram es la memoria persistente que navori habilita por default. Las decisiones, los bugs con causa raíz y las convenciones se guardan y se recuperan entre sesiones —y sobreviven a las compactaciones—.
# today — after fixing a bug
mem_save "The 360 report breaks if languages[] is empty.
Root cause: missing guard in report.py. Fix: default []."
# next week — new session, context at zero
mem_search "360 report languages"
→ recalls the decision, the root cause, and the fix.
You don't re-explain it. Cuando manejas 15 repos, no quieres 15 estándares. El workspace es una capa cross-repo: defines el quality gate, la branch base y las convenciones de tu organización una vez, y cada repo las hereda. El equipo trabaja igual, sin importar en qué proyecto esté.
$ navori workspace init acme
$ navori workspace set-default acme \
--branch-base main --commits conventional-es
$ navori workspace add-repo acme ./web-app
$ navori workspace add-repo acme ./api-core
… 13 more repos
$ navori workspace render acme
✓ 15 repos rendered with the same standard Un agente con permiso de escritura necesita barreras. navori trae estándares no negociables —simplicidad, tipado estricto— y gates de seguridad y calidad como parte del harness, no como un extra opcional. Y los mantiene versionados junto al resto de la config.
El estándar antes de escribir una línea: ¿es lo más simple? ¿legible en 6 meses? ¿mantiene el patrón existente? Nada de soluciones ingeniosas que nadie entiende después.
unknown + narrowing, tipado explícito. La única excepción es un // any justificado: <razón> — último recurso, no atajo que se vuelve deuda.
guard-destructive intercepta comandos peligrosos; quality-gate corre lint + tests antes de cada commit.
Las operaciones sensibles se bloquean o piden confirmación explícita. Defensa en profundidad, no una sola barrera.
Hay muchas formas de darle instrucciones a un asistente de IA. Pocas sobreviven al segundo mes, a un equipo de verdad o a un repo con historia. Esto es lo que navori hace y las alternativas no —o no tan pulido—.
Una fuente de verdad versionada y render idempotente. Copiar carpetas entre repos no escala ni sobrevive a una actualización; navori sí.
Detecta tu stack real —Mantine, Redux, NestJS, monorepo pnpm— y arma el preset. Los estándares no se erosionan porque están versionados y se actualizan con un comando.
La mayoría de las herramientas asumen un repo limpio. navori parte de la realidad: código que ya corre, dependencias legacy y migraciones a medias.
Memoria persistente, gates de seguridad y duplicación, orquestación multi-agente y estándar cross-repo. Todo pulido y conectado, no un README con pasos manuales.
Tú subes la config una vez a cada repo; el equipo solo la sigue. Nadie arma un harness a mano ni copia .claude/ entre proyectos. Estos son los comandos que corre cada quien al entrar.
Node.js 22.12+, Claude Code y —si el repo usa memoria persistente— el binario de engram. En el paso 3, doctor te dice exactamente qué falta.
node --version # v22.12 or higher # Claude Code installed on your machine
El repo ya trae navori.config.json (la fuente de verdad). Un solo comando reconstruye todos los engines configurados de forma idéntica para el equipo. Idempotente: correrlo dos veces no cambia nada.
$ git clone <repo> && cd <repo> $ npx navori render --apply ✓ configured engines rebuilt from the config
doctor confirma que todo está al día y, si te falta una herramienta (por ejemplo engram), te da el comando exacto para instalarla. Sin adivinar.
$ npx navori doctor
◇ All good — nothing pending.
⇡ engram — missing from PATH:
brew install gentleman-programming/tap/engram \
&& claude plugin install engram Abre Claude Code y listo: mismos agentes, mismas skills, mismo quality gate y la misma memoria de equipo. Cuando alguien actualice la config, corre sync para ponerte al día sin tocar tu código.
# already productive with the team's harness # when the repo config changes: $ npx navori@latest sync
En resumen para el equipo: clone → npx navori render --apply → npx navori doctor y a trabajar con el mismo harness que tú.
Todo esto se materializa con un solo comando de adopción. El resto es renderizar cuando cambies algo.
navori no nació en el vacío: integra herramientas excelentes y sintetiza ideas de proyectos y estándares abiertos. El mérito de cada pieza es de quien la construyó.
Anthropic
El runtime de agentes que navori materializa.
Gentleman-Programming
Memoria persistente entre sesiones vía MCP.
GitHub
Issues y PRs desde la terminal.
Atlassian
Tickets de Jira como fuente de trabajo.
colbymchenry
Grafo de código sobre MCP: localizar y medir impacto sin leer archivos.
La spec universal de instrucciones para agentes — la base multi-engine.
El patrón de orquestador + trabajadores en contexto aislado.
Versionar skills, reglas y convenciones como parte del repo.
De estos proyectos navori tomó ideas; a codegraph además lo integra como plugin. Las notas por proyecto viven en docs/inspiration.md.
Gentleman-Programming
Configurador de ecosistema con SDD, memoria persistente y routing orgánico por complejidad de tarea.
garrytan
Skills encadenadas por rol; auto-detección de host con un config por host; cross-model review.
betta-tech
Notación EARS, trazabilidad requisito↔test y el filesystem como máquina de estados de la spec.
betta-tech
El patrón Orchestrator/Implementer/Reviewer y el estado en disco: por chat solo pasan referencias.
obra
Subagent-driven development: agente fresco por tarea y specs que un junior puede seguir.
DietrichGebert
La escalera de decisión anti-over-engineering: flojo en la solución, nunca en la lectura.
colbymchenry
Contexto quirúrgico vía grafo pre-indexado en vez de loops de grep/read.
Graphify-Labs
Knowledge graph determinista de código y docs, commiteado al repo como los managed assets.
JuliusBrussee
Eficiencia de tokens como skill transversal: brevedad sin perder exactitud técnica.
Agentic AI Foundation
Recipes portables en YAML para compartir workflows en equipo y CI/CD.
Earendil
Primitivas, no features: skills on-demand y extensibilidad sobre workflows horneados.