Communitygithub.com

GigleAI/cavil-loop

Agentes de codificação assíncronos orientados por labels do GitHub — sua IA trabalha em paralelo enquanto você dorme.

O que é cavil-loop?

Este skill permite transformar comentários de issues e pull requests do GitHub em entrada e saída para o seu agente de IA local, utilizando um timer do systemd, scripts shell e labels do GitHub. Ele é agnóstico em relação ao agente, suportando múltiplos workers como Claude Code, OpenCode, Codex CLI e Cursor Agent CLI, selecionáveis através da variável `WORKER_AGENT`. Ao ser invocado, o skill pode configurar um projeto host (setup), verificar o estado dos workers em execução (status), limpar o ambiente após um PR ser aceito ou rejeitado (cleanup) ou desabilitar o agente para um projeto específico (disable). A arquitetura mantém scripts, unidades systemd e logs fora do projeto host, injetando apenas um arquivo de configuração gitignorado e uma linha no `.gitignore`, garantindo isolamento e fácil manutenção.

Funciona com✓Claude Code✓Codex CLI✓Cursor✓OpenCode
npx skills add GigleAI/cavil-loop

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

coding-agent-work-loop

Inglês · 中文

Transforme comentários de issues / PRs do GitHub na entrada e saída da sua IA local. Um timer systemd + alguns scripts shell + duas labels do GitHub permitem que você converse com a IA diretamente pela interface web do GitHub (ou pelo aplicativo iOS gh).

Este skill é agnóstico em relação ao agente por design. O worker CLI é selecionado por WORKER_AGENT=<nome> em coding-agent.config; os scripts de daemon / dispatch passam por uma fina camada de driver que conecta diferentes CLIs de agentes. Drivers embutidos: claude (padrão, Claude Code), opencode (sst/opencode), codex (OpenAI Codex CLI), cursor (Cursor Agent CLI). Adicione o seu próprio via scripts/drivers/<nome>.sh — consulte docs/drivers.md.

Quando invocar

O usuário chama este skill a partir do runtime do agente host via /coding-agent-work-loop <comando> ou uma solicitação em linguagem natural. Formas comuns:

  • "Instale este daemon no projeto X" → executa o fluxo setup
  • "Qual é o estado do agente de codificação?" → executa o fluxo status
  • "Desabilite o agente de codificação no projeto X" → executa o fluxo disable

O que você (o agente) deve fazer quando invocado

setup (implantar em um projeto host)

O usuário fornece um caminho de projeto host (ex.: ~/github/meuprojeto). Passos:

  1. Verifique se o caminho existe e é um repositório git (tem .git)
  2. Verifique as dependências: git, gh (deve estar logado via gh auth login), tmux, jq, flock, systemctl, além do worker CLI selecionado por WORKER_AGENT (padrão claude; outros embutidos: opencode, codex, cursor). Cada um deve ser resolvível via command -v.
  3. Execute:
    bash "${CLAUDE_PLUGIN_ROOT:-$HOME/.agents/skills/coding-agent-work-loop}/setup.sh" <caminho-do-projeto-host>
    
    $CLAUDE_PLUGIN_ROOT é o env da raiz do skill que o Claude Code injeta; se ausente, use o caminho canônico ~/.agents/skills/coding-agent-work-loop.
  4. setup.sh imprime orientações dos próximos passos quando terminar — repasse-as ao usuário textualmente.

status

O usuário quer o estado. Passos:

  1. systemctl --user list-timers 'coding-agent-poll@*' --no-pager — saúde dos timers
  2. systemctl --user list-units 'coding-agent-poll@*.service' --no-pager — última execução
  3. Para cada ~/.config/coding-agent-work-loop/*.conf registrado:
    • tail -20 $STATE_DIR/poll.log (leia STATE_DIR do conf)
    • gh issue list --repo $REPO --label pending/agent + gh pr list --repo $REPO --label pending/agent
  4. Resuma para o usuário

cleanup (após um PR ser aceito / rejeitado)

O usuário fez merge de um PR ou quer abortar o trabalho em uma issue. Passos:

  1. Confirme que a issue foi finalizada (PR merged ou fechado)
  2. Execute:
    bash "$CLAUDE_PLUGIN_ROOT/scripts/cleanup-issue.sh" <número-da-issue>
    
    Flags opcionais: --force (limpa mesmo se o worker estiver ocupado), --keep-worktree (apenas encerra a sessão), --delete-branch (também remove o branch local)

O que cleanup-issue.sh faz:

  • Verificação de ocupação (recusa por padrão, a menos que --force)
  • Executa o CLEANUP_HOOK do projeto (configurado em coding-agent.config, ex.: desmontar portas tailscale, parar servidor de desenvolvimento)
  • Encerra a sessão tmux do worker
  • Remove a worktree (padrão)
  • Opcionalmente, remove o branch local

disable

O usuário quer parar um projeto. Passos:

  1. Confirme o nome da instância (systemctl --user list-timers 'coding-agent-poll@*')
  2. systemctl --user disable --now coding-agent-poll@<chave>.timer
  3. Opcional: remova os links simbólicos de instância ~/.config/systemd/user/coding-agent-poll@<chave>.{service,timer} (deixe o template original intacto)
  4. Opcional: remova ~/.config/coding-agent-work-loop/<chave>.conf
  5. Reporte o resultado

O que NÃO é colocado no projeto host

Após o setup, a worktree do projeto host recebe apenas duas coisas:

  1. Uma linha no .gitignore (excluindo coding-agent.config)
  2. Um arquivo coding-agent.config (gitignorado, configuração)

Scripts, unidades systemd, estado e logs ficam todos fora do projeto host (diretório do skill + ~/.config/ + ~/.local/state/).

Arquitetura completa

Consulte o README.md anexo.

Listagem de arquivos

  • setup.sh — inicializa um projeto host
  • scripts/ — scripts de daemon e dispatch (nunca copiados para o projeto host)
  • prompts/ — templates de prompt iniciais do worker (podem ser sobrescritos via .agents/skills/coding-agent-work-loop/prompts/ do projeto host)
  • systemd/ — unidades template [email protected]/.timer; o setup as copia para ~/.config/systemd/user/
  • coding-agent.config.example — template de configuração

Habilidades Relacionadas