Communitygithub.com

GigleAI/cavil-loop

Agentes de codificación asíncronos impulsados por etiquetas de GitHub: tu IA trabaja en paralelo mientras duermes.

¿Qué es cavil-loop?

Este skill permite que agentes de IA locales operen de manera asíncrona sobre issues y pull requests de GitHub, utilizando etiquetas como disparador y canal de comunicación. Está diseñado para ser independiente del agente específico, soportando múltiples CLIs como Claude Code, OpenCode, Codex CLI y Cursor Agent CLI a través de una capa de drivers intercambiables. Tras la instalación en un repositorio, un timer de systemd junto con scripts shell monitorean las etiquetas `pending/agent`; cuando aparece en un issue o PR, el skill arranca un worker tmux que procesa la tarea y reporta resultados de vuelta en el hilo de GitHub. Esto libera al desarrollador de tener que supervisar cada ciclo, permitiendo que la IA trabaje de fondo. La configuración es mínima en el proyecto anfitrión (solo un archivo `.gitignore` y un `coding-agent.config`), manteniendo scripts, unidades systemd y logs fuera del repositorio. Incluye comandos para setup, status, cleanup y disable, y su arquitectura modular permite añadir drivers personalizados fácilmente.

Compatible con✓Claude Code✓Codex CLI✓Cursor✓OpenCode
npx skills add GigleAI/cavil-loop

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

coding-agent-work-loop

English · 中文

Convierte comentarios de issues / PRs de GitHub en la entrada y salida de tu IA local. Un timer de systemd + unos scripts shell + dos etiquetas de GitHub te permiten hablar con la IA directamente desde la interfaz web de GitHub (o la app iOS gh).

Este skill es independiente del agente por diseño. El CLI del worker se selecciona mediante WORKER_AGENT=<nombre> en coding-agent.config; los scripts de daemon / despacho pasan por una capa de drivers delgada que conecta diferentes CLIs de agente. Drivers incluidos: claude (por defecto, Claude Code), opencode (sst/opencode), codex (OpenAI Codex CLI), cursor (Cursor Agent CLI). Añade el tuyo propio mediante scripts/drivers/<nombre>.sh — consulta docs/drivers.md.

Cuándo invocarlo

El usuario llama a este skill desde el runtime del agente anfitrión mediante /coding-agent-work-loop <comando> o una solicitud en lenguaje natural. Formas comunes:

  • "Instala este daemon en el proyecto X" → ejecuta el flujo setup
  • "¿Cuál es el estado del agente de codificación?" → ejecuta el flujo status
  • "Deshabilita el agente de codificación en el proyecto X" → ejecuta el flujo disable

Qué debe hacer el agente al ser invocado

setup (desplegar en un proyecto anfitrión)

El usuario te da una ruta de proyecto anfitrión (ej. ~/github/miproyecto). Pasos:

  1. Verifica que la ruta exista y sea un repositorio git (tenga .git)
  2. Comprueba dependencias: git, gh (debe haber iniciado sesión con gh auth login), tmux, jq, flock, systemctl, más el CLI del worker seleccionado por WORKER_AGENT (por defecto claude; otros incluidos: opencode, codex, cursor). Cada uno debe resolverse mediante command -v.
  3. Ejecuta:
    bash "${CLAUDE_PLUGIN_ROOT:-$HOME/.agents/skills/coding-agent-work-loop}/setup.sh" <ruta-del-proyecto-anfitrion>
    
    $CLAUDE_PLUGIN_ROOT es la variable de entorno de la raíz del skill que inyecta Claude Code; si no está, se recurre a la ruta canónica ~/.agents/skills/coding-agent-work-loop.
  4. setup.sh imprime instrucciones de siguientes pasos al terminar — transfiérelas al usuario textualmente.

status

El usuario quiere el estado. Pasos:

  1. systemctl --user list-timers 'coding-agent-poll@*' --no-pager — salud del timer
  2. systemctl --user list-units 'coding-agent-poll@*.service' --no-pager — última ejecución
  3. Para cada ~/.config/coding-agent-work-loop/*.conf registrado:
    • tail -20 $STATE_DIR/poll.log (lee STATE_DIR del archivo de configuración)
    • gh issue list --repo $REPO --label pending/agent + gh pr list --repo $REPO --label pending/agent
  4. Resume para el usuario

cleanup (después de que un PR sea aceptado / rechazado)

El usuario fusionó un PR o quiere abortar el trabajo en un issue. Pasos:

  1. Confirma que el issue está terminado (PR fusionado o cerrado)
  2. Ejecuta:
    bash "$CLAUDE_PLUGIN_ROOT/scripts/cleanup-issue.sh" <número-del-issue>
    
    Banderas opcionales: --force (limpiar incluso si el worker está ocupado), --keep-worktree (solo matar la sesión), --delete-branch (también eliminar la rama local)

Qué hace cleanup-issue.sh:

  • Verifica si está ocupado (rechaza por defecto a menos que se use --force)
  • Ejecuta el CLEANUP_HOOK a nivel de proyecto (configurado en coding-agent.config, ej. desmontar puertos de tailscale, detener servidor de desarrollo)
  • Mata la sesión tmux del worker
  • Elimina el worktree (por defecto)
  • Opcionalmente elimina la rama local

disable

El usuario quiere detener un proyecto. Pasos:

  1. Confirma el nombre de la instancia (systemctl --user list-timers 'coding-agent-poll@*')
  2. systemctl --user disable --now coding-agent-poll@<clave>.timer
  3. Opcional: elimina los enlaces simbólicos de instancia ~/.config/systemd/user/coding-agent-poll@<clave>.{service,timer} (deja la plantilla real intacta)
  4. Opcional: elimina ~/.config/coding-agent-work-loop/<clave>.conf
  5. Informa al usuario

Qué NO se coloca en el proyecto anfitrión

Después del setup, el worktree del proyecto anfitrión gana solo dos cosas:

  1. Una línea en .gitignore (excluyendo coding-agent.config)
  2. Un archivo coding-agent.config (ignorado por git, configuración)

Los scripts, unidades systemd, estado, registros viven todos fuera del proyecto anfitrión (directorio del skill + ~/.config/ + ~/.local/state/).

Arquitectura completa

Consulta el README.md adjunto.

Listado de archivos

  • setup.sh — arranca un proyecto anfitrión
  • scripts/ — scripts de daemon y despacho (nunca se copian al proyecto anfitrión)
  • prompts/ — plantillas de prompt inicial para el worker (se pueden sobrescribir mediante .agents/skills/coding-agent-work-loop/prompts/ del proyecto anfitrión)
  • systemd/ — unidades plantilla [email protected]/.timer; el setup las copia a ~/.config/systemd/user/
  • coding-agent.config.example — plantilla de configuración

Skills relacionados