TL;DR
O artigo apresenta uma arquitectura de pipeline no GitHub Actions com três camadas:
- Gate (Claude Haiku): filtra PRs triviais (dependências, docs, formatação)
- Reviewer (Claude Opus 4.7): análise semântica com tool use a executar
php artisan test - Escalator: marca com label
needs-human-reviewquando confiança < 80%
Resultado medido: "em três meses, o tempo médio até primeiro review caiu de 9h para 12 minutos."
Porque Três Camadas e Não Um Job Só
A estratégia em camadas evita desperdício de recursos. PRs de bump de dependência ou alterações no README não necessitam de revisão semântica profunda. O gate funciona como filtro económico.
Arquitectura Visual
GATE (Haiku) → decide se precisa revisão profunda
↓
REVIEWER (Opus 4.7) ← executa php artisan test
↓
ESCALATOR → confidence < 80 → label + @mention
Prompt em XML
XML em vez de Markdown evita confusão quando o código revisto contém ## ou tags. O prompt reside em vars.REVIEW_PROMPT (variável de repositório) para reutilização e versionamento limpo.
<role> — Senior reviewer PHP/Laravel, foca em correção/segurança/performance
<context> — Repo, PR number, branches
<rules severity="critical/warning/suggestion"> — SQL injection, mass assignment, testes
<workflow> — ler diff, identificar sensíveis, executar testes, cruzar achados
<output_format> — Resumo, Achados com [SEVERIDADE], Testes, Confidence 0-100
Caso Real: SQL Injection Detectado
$status = $request->query('status', 'pending');
$orders = DB::select("SELECT * FROM orders WHERE status = '$status'");
Os testes passaram (apenas o caminho feliz). O bot executou a suite, viu que passou, mas cruzou com o listing de rotas (rota pública) e o diff (concatenação) — comentou com sugestão de bindings ou query builder. O PR foi corrigido em 4 minutos.
Limitações
- Custo escala com tamanho do diff: PR de 2k linhas custa $0,50–$2 em Opus
- Prompt injection via código: controlar via
permissions: readsem merge - Race conditions: fazer merge antes da revisão terminar deixa sem review