hermes verify: Un solo comando que responde «¿este proyecto realmente funciona?»

Cuando te haces cargo de un repositorio — o acabas de clonar algo nuevo — lo primero que haces es teclear el conocido conjuro: instalar dependencias, compilar, ejecutar los tests, arrancar el servidor, comprobar el puerto. Cada proyecto tiene su propia variante: npm para unos, pip para otros, cargo build aquí, docker compose up allá.
hermes verify, que llegó al main de Hermes Agent a principios de agosto de 2026, está construido exactamente para ese momento: un solo comando que responde «¿este proyecto realmente funciona?» Detecta automáticamente la recipe de ejecución del proyecto y hace una pasada completa de smoke test en el orden bootstrap → build → test → start → readiness, y luego devuelve un veredicto estructurado.
$ hermes verify
detected: node (npm, vite)
bootstrap ✓ build ✓ test ✓
start on :5173 → ready in 2.1s
VERIFY PASS · evidence recorded
1. Qué hace
El flujo de trabajo central de hermes verify:
- Detect — escanea el directorio actual (o una ruta dada) en busca de archivos de firma, averigua qué framework usa el proyecto y construye una recipe;
- bootstrap — instala/prepara las dependencias (p. ej.
make installo el target de instalación detectado); - build — compila el proyecto (
npm run build,go build ./...,cargo build,mvn package, …); - test — ejecuta la suite de tests (
npm test,pytest,go test ./...,mvn test, …); - start — arranca la app en segundo plano y hace polling de readiness (timeout de readiness de 60s por defecto, puerto sobreescribible);
- teardown — limpia, imprime un resumen de evidencia y un veredicto estructurado de aprobado/fallido.
Si no reconoce el proyecto, lo dice explícitamente y te indica cómo definir una recipe manualmente.
Cómo encaja con lo que Hermes ya tenía
Hermes ya tenía tres capas de verificación (auto-verificación, contratos de finalización, comandos de test canónicos). hermes verify rellena el hueco que dejaban: verificación smoke en tiempo de ejecución — ¿el proyecto realmente compila, realmente arranca, y el puerto realmente responde? Las ejecuciones que pasan se registran en el libro de evidencia de verificación (agent/verification_evidence), compartiendo el mismo almacén de evidencia que el guard de verify-on-stop — un hermes verify que pasa pesa lo mismo que un comando de test canónico que pasa.
Punto de diseño clave: es un comando CLI puro con huella cero de herramientas de modelo — sin nuevas herramientas visibles para el modelo, sin cambios en la superficie de herramientas del agente.
2. Tipos de proyecto soportados
Los detectores reales en agent/verify/recipes.py (cada uno con strings de evidencia):
| Project | Signature | Default build / test / start |
|---|---|---|
| Node.js | package.json + package manager (npm/pnpm/yarn) | npm run build / npm test / npm run dev (vite & friends) |
| Python (Django) | manage.py or django dep | — / python manage.py test / python manage.py runserver 0.0.0.0:8000 |
| Python (FastAPI etc.) | pyproject/requirements | — / pytest (or unittest) / per detection |
| Go | go.mod | go build ./... / go test ./... / go run . |
| Rust | Cargo.toml | cargo build / cargo test / cargo run |
| Java (Maven) | pom.xml | mvn package / mvn test |
| Java (Gradle) | build.gradle(.kts) | ./gradlew build / ./gradlew test |
| Makefile project | Makefile | auto-picks install/build/test/run targets |
| docker-compose | compose.yml etc. | docker compose build / docker compose up |
3. Flags completas
hermes verify [path] [options]
path project root to verify (default: current directory)
--detect-only detect and print the recipe as JSON only; run nothing
--save save the recipe as .hermes/environment.json in the project
--skip-start run command phases but skip booting the app / readiness poll
--phase <name> run only the given phase(s) (bootstrap|build|test|start; repeatable)
--port <n> override the port used for the readiness poll
--timeout <sec> per-phase timeout (default 600s)
--ready-timeout <sec> readiness poll timeout (default 60s)
--json emit a machine-readable JSON result
4. Uso típico
Comprobación smoke cotidiana
cd ~/projects/acme-web
hermes verify
Solo detectar — mira si reconoce tu proyecto
hermes verify --detect-only
# {"source": "detected", "recipe": {"kind": "node", ...}}
Fijar la recipe
La detección puede derivar según cambia el contenido del directorio. --save congela la recipe en .hermes/environment.json; a partir de ahí, hermes verify carga primero este manifiesto y los resultados son reproducibles:
hermes verify --save
# Saved manifest: /Users/me/projects/acme-web/.hermes/environment.json
Salida JSON como gate de CI
hermes verify --json
# {"ok": true, "recipe": {...}, "phases": {...}}
Solo la fase de test
hermes verify --phase test
5. Definir una recipe manualmente
Cuando --detect-only falla, el mensaje te remite a crear .hermes/environment.json en el proyecto para definir la recipe a mano. El manifiesto tiene alcance de proyecto, y si .hermes/ entra en .gitignore es decisión tuya — pero ten en cuenta que tiene prioridad sobre la auto-detección, así que una vez guardado, todas las verificaciones posteriores seguirán tu definición.
6. Compensaciones de diseño que vale la pena conocer
- Huella de modelo cero: verify es un comando CLI, no una herramienta del agente — sirve para que «una persona en la terminal confirme rápido la salud del proyecto» y no cuesta nada del presupuesto de herramientas del agente;
- La evidencia queda registrada: las ejecuciones que pasan caen en el libro de evidencia de verificación, compartido con el guard de verify-on-stop, cerrando el círculo;
- Falla rápido: timeout de 600s por fase y 60s de readiness por defecto — un proyecto atascado nunca se queda colgado para siempre.
Resumen
hermes verify automatiza el ritual cotidiano de «clonar y hacer que funcione»: detecta el framework, instala, compila, testea, arranca, sondea — un solo comando, veredicto estructurado. Es especialmente útil si evalúas repositorios desconocidos con frecuencia o quieres un gate de smoke barato en CI.
Más de nuestro sitio: combínalo con nuestra guía completa de automatización de cron en Hermes Agent para ejecutar verify de forma programada, lee cómo Hermes maneja los errores y se recupera, o instala Hermes en cinco minutos.