Observación de Kanban de Hermes
Muestra los trabajadores de Hermes dentro de Claude Code sin tomar el control de sus tarjetas. Las tarjetas en ejecución obtienen filas activas, las tarjetas en cola comparten filas de espera, y las detenciones obtienen filas «Te necesita». Una tarjeta observada cuyos hijos recién creados se unen automáticamente a menos que follow_new: false.
Instalación y verificación
Inicia Claude Code con claude --plugin-dir /ruta/a/hermes-kanban-watch/plugin. El invocador resuelve la raíz del plugin de esta habilidad; usa el script hermano scripts/doctor.py.
Ejecuta python3 <plugin-root>/scripts/doctor.py --board default primero. Es de solo lectura.
--fix crea un tablero predeterminado faltante con hermes kanban --board default init o un tablero con nombre faltante con hermes kanban boards create <slug>, además de rutas de usuario y un shim hermes-kanban-live, sin sobrescribir archivos existentes. Agrega ~/.local/bin al PATH y vuelve a ejecutar el doctor.
Doctor requiere que hermes-kanban-live --version imprima exactamente hermes-kanban-watch 0.3.0. Un comando extraño/desactualizado es FALLO con su ruta resuelta; muévelo a un lado o corrige el PATH antes de volver a ejecutar --fix, que nunca lo sobrescribe.
--probe prueba explícitamente cada modelo enrutado con PONG y puede consumir capacidad.
Requisitos: Python 3.11+, Hermes en el PATH, Claude Code con soporte de Workflow y perfiles Hermes existentes. Los modelos y las claves pertenecen a cada perfil de Hermes: clave API, inicio de sesión de suscripción o modelo local, configurados con Hermes, no con este plugin. El plugin no proporciona cuentas ni copia credenciales. El uso del modelo observador de Claude es independiente del uso del proveedor del trabajador de Hermes.
Archivar tarjetas normalmente
Crea primero un tablero con nombre con hermes kanban boards create demo, luego usa
hermes kanban --board demo create "Construir la función" --assignee constructor.
Usa hermes kanban swarm --help para elegir las banderas de swarm ascendentes. El archivado no inicia un despachador. Inicia/contrata trabajadores a través de Hermes por separado.
El hook posterior a Bash sugiere /kanban-watch después de create/swarm; nunca lanza ni despacha nada por sí mismo. Omite las observaciones duplicadas en la misma ola.
Archivar una tarjeta enrutada y fijada
Solo bajo una solicitud de archivado explícita: python3 <plugin-root>/scripts/file_card.py --board demo --class app-code --title "Construir la función" --body-file /ruta/a/resumen.txt --routes /ruta/a/routes.yaml --worktree /ruta/absoluta/al/worktree.
--routes y --worktree son opcionales. El comando resuelve un verificador de trabajador/familia diferente mediante route.py, crea un trabajador fijado, ejecuta set-model, verifica show --json, luego imprime su id y los argumentos exactos de /kanban-watch. No crea verificador, despachador, Workflow ni worktree, y no abre configuraciones de perfil ni credenciales. Nunca concedas este comando de autoría a un observador.
--dry-run valida archivos/rutas/tablero e imprime comandos sin ejecutar Hermes; el resumen se imprime, así que mantén los secretos fuera. Los tableros faltantes/rutas no válidas son rechazados. Después de un fallo parcial, inspecciona el id devuelto, nunca rearchive ciegamente. Consulta detalles completos de archivado; inicia una observación solo si se solicita.
Sugerir rutas después de comprobaciones PONG
Ejecuta python3 <plugin-root>/scripts/doctor.py --board demo --routes /ruta/a/routes.yaml --probe --suggest-routes /ruta/a/routes-checked.yaml solo con aprobación explícita de capacidad. Requiere --probe, rechaza destinos existentes (incluyendo directorios/enlaces simbólicos), y nunca cambia las rutas de origen ni activa la propuesta. Revisa los cambios de perfil/proveedor/costo antes de seleccionarlo.
Ambos carriles deben pasar el PONG de esta ejecución y tener familias declaradas diferentes, no meramente hosts diferentes. Los trabajadores/verificadores que pasan se conservan; los reemplazos usan orden lexicográfico de carril. Las clases sin un par se omiten con comentarios de diagnóstico; sin pares significa rutas no utilizables. Los fallos originales aún salen con 1. PONG no es idoneidad ni capacidad duradera. Consulta detalles de selección y auditoría.
Lanzamiento
Trata $ARGUMENTS como un objeto JSON de argumentos. Resuelve workflows/kanban-watch.js del plugin instalado, luego invoca Workflow({scriptPath: "<plugin-root>/workflows/kanban-watch.js", args: <args>}).
Si Workflow no está disponible, informa esa limitación y ejecuta comandos de solo lectura hermes-kanban-live directamente, nunca finjas que se crearon filas de flujo de trabajo en vivo.
Ejemplos de args:
{"board":"default","tasks":["t_1234abcd"]}{"board":"demo","phases":[{"title":"Construir","tasks":["t_1234abcd"]},{"title":"Verificar","tasks":["t_11111111"]}]}{"board":"demo","follow_new":false,"stale_days":7,"max_hours":12}
Una observación de tablero simple incluye tarjetas en cola/en ejecución, omitiendo las tarjetas en cola inactivas por más de stale_days (7 por defecto). stale_days: 0 desactiva el filtrado; los ids explícitos siempre permanecen. Usa verbose: true para texto de trabajador heredado y resultados de herramientas.
El lector es hermes-kanban-live en el PATH; live_cmd puede sobrescribirlo con un comando seguro como python3 ~/plugins/hermes-kanban-watch/plugin/scripts/kanban_live.py. Solo se aceptan letras, números, espacios, /, ., _, -, ~. Sin operadores de shell.
Cada fila usa el agente hermes-kanban-watch:kanban-watcher del plugin por defecto; no se necesita un agente de usuario privado. agent_type puede nombrar otro agente disponible, usando letras ASCII, dígitos, -, _ y un : opcional entre nombres no vacíos.
Leer el resultado
HECHO es un resultado de tarjeta observado, no integración ni aceptación del usuario. Verifica el modelo real, fallback, advertencias, resumen y entregable. BLOQUEADO/REVISIÓN obtienen filas «Te necesita» y pueden reactivarse al reanudar. NO_INICIANDO significa listo pero ningún despachador lo ha iniciado. DESCONOCIDO significa que una lectura falló, no que una tarjeta desapareció. Los tiempos de espera reintentan solo con salida 3; una activación de 270 segundos mantiene las esperas por debajo del TTL de la caché de prompt. El observador nunca actúa sobre el texto del trabajador, cambia una tarjeta, repara nada ni elude permisos.
Cuando los mensajes del trabajador no están disponibles, sigue los informes una vez por ejecución/observador y usa el registro de la tarjeta; un latido nunca cuenta. Un registro que crece/cambia evita una advertencia de posible bloqueo. Solo dos llamadas consecutivas de la misma ejecución sin movimiento del registro pueden marcarse; las primeras observaciones, cambios de ejecución y señales ilegibles no cuentan. Con mensajes, dos llamadas silenciosas marcan.
Usa python3 <plugin-root>/scripts/route.py --class app-code para inspeccionar la tabla de enrutamiento opcional. Devuelve JSON del trabajador y el verificador de familia diferente; nunca archiva ni despacha una tarjeta. Edita las rutas de usuario para nombrar tus propios perfiles y familias de modelos.
Convención de pregunta humana
Para hermes-kanban-live needs, inicia una línea de comentario con ASK OPERATOR: seguida de la pregunta. Una mención en prosa como "aún no hay ASK OPERATOR" no es una pregunta. Las razones de bloqueo o espera de dependencia deben decir waiting on operator, waiting for operator o needs operator para coincidir con una espera humana actual. Estas son convenciones de texto explícitas, no detección de intención en lenguaje natural. Las filas de flujo de trabajo «Te necesita» marcan por separado los resultados bloqueados/en revisión y las tarjetas que están listas pero no se inician.
Reportar las ejecuciones reales y el tiempo transcurrido de una ola
Ejecuta hermes-kanban-live report --board demo, repitiendo opcionalmente --task T o agregando --since EPOCH. Sin ids de tarea, esto incluye todos los estados, incluidos hechos/archivados. --since selecciona la hora de creación de la tarjeta; intersecta la selección de tareas y no recorta ejecuciones individuales. JSON tiene un objeto por tarjeta en cards, más totals, read_status, now y missing. Cada tarjeta contiene id/título/estado, asignado, model_used real de la última ejecución, provider_used, fallback_from, runs, retried, duration_s y recuentos de advertencias de la última ejecución. Los datos de ejecución desconocidos permanecen como null.
totals.by_status cuenta tarjetas; run_seconds suma todas las duraciones de ejecución conocidas de las tarjetas seleccionadas (las ejecuciones en curso se miden en ahora); fell_back cuenta las tarjetas que retrocedieron en algún intento; retried cuenta las tarjetas con la guardia de reintento conservadora (múltiples ejecuciones o un evento de reintento/historial de bloqueo). Estos son segundos transcurridos, no costos de tokens/moneda facturados. Agrega --format text para columnas de texto plano alineadas y totales, sin Markdown. La salida 4 reporta ids explícitos ausentes; la salida 5 es un tablero ilegible. Una tarjeta simplemente excluida por --since no es faltante.
Verificar la independencia real de familia del trabajador/verificador
Ejecuta hermes-kanban-live verify-pair --board demo --worker T --verifier V, con --families FILE opcional. Usa la ejecución finalizada más reciente de cada tarjeta (ended_at no nulo, id de ejecución más reciente), no un pin de modelo ni un intento más reciente no finalizado. JSON incluye cada model_used real, provider_used, run_id, family mapeado y different_families. El proveedor real de la ejecución se mapea a su familia de modelo a través de providers en el archivo de rutas. Mantén los hosts de la misma familia mapeados de manera similar; los hosts de múltiples familias necesitan identificadores específicos de familia. Esto no infiere la familia de un prefijo de modelo ni prueba que ocurrió trabajo de revisión.
El orden de búsqueda coincide con route.py: --families explícito, KANBAN_WATCH_ROUTES, ~/.config/hermes-kanban-watch/routes.yaml, plantilla incluida. Solo se necesita el mapa providers válido y no vacío. Salida 0 significa familias diferentes, 1 significa misma familia o clasificación no válida/desconocida, 3 significa ninguna ejecución finalizada para ninguno de los ids, y 5 significa tablero ilegible. Los errores de clasificación establecen different_families en null e incluyen error; nunca conviertas DESCONOCIDO en una verificación exitosa.
Para llamadas directas de Claude Code solicita solo Bash(hermes-kanban-live report:*) y Bash(hermes-kanban-live verify-pair:*), no permiso Bash sin restricciones.
Mantener una observación de pregunta principal armada a través de tiempos de espera
Ejecuta hermes-kanban-live needs --board demo --loop --created-by PADRE --cursor-key OLA una vez, en lugar de reconstruir un comando después de cada salida 3. En modo bucle, --since es opcional, se captura una vez al inicio cuando está ausente y nunca avanza a través de ventanas de tiempo de espera. Su primer sondeo incluye esperas preexistentes aún vigentes, incluida la pregunta principal más antigua de un creador. Las esperas antiguas respondidas/reanudadas/superadas permanecen excluidas y la deduplicación de cursor visto existente aún se aplica.
El modo bucle duerme en --interval y reintenta solo los tiempos de espera normales, sin cambios en el JSON de tiempo de espera. Sale con 0 en el primer resultado de elementos no vacío, o falla con un error sin reintentarlo. --max-seconds limita cada ventana, no la vida útil del comando; cancela el invocador para detener una observación silenciosa. Sin --loop, el --since requerido, el tiempo de espera de salida 3 y el comportamiento de salida no cambian. Esto sigue siendo un lector, nunca permiso para responder, despachar o mutar una tarjeta.
Guías de características
- Informe de tiempo de ola y ejecución real: Ejecuciones reales, reintentos y segundos transcurridos, no costos facturados.
- Verificar las familias que realmente se ejecutaron: Evidencia de familia de ejecución finalizada, no pines de modelo.
- Armar necesidades una vez con su propio bucle de tiempo de espera: Esperas de preguntas principales de solo lectura a través de tiempos de espera.
- Imprimir un recibo de fusión de PR con cabeza fijada: Verificador independiente, cabeza exacta, estado de CI y fusión; nunca fusiona.
- Costo de tokens del observador: Uso del observador Claude solo de recuentos, separado del tiempo del trabajador.
- Trabajadores duplicados y preguntas estacionadas en el padre: Observar advertencias de proceso y esperas principales; nunca repararlas.
- Archivar una corrección y reverificar un veredicto anterior: Solo autoría explícita; reutilizar pines de verificador, nota principal opcional, sin despacho.
- Rondas de espera propiedad del flujo de trabajo: Esperas saludables de solo lectura bajo un solo plazo.
- Sugerir respuestas permanentes sin publicar: Imprimir propuestas para revisión autorizada, nunca publicar.