W5: Pipeline 100% Agentic
Zero intervenção humana. Um trigger (GitHub issue, webhook, cron) inicia um orchestrator que spawna agentes especializados criados em runtime, executa em paralelo, verifica, testa e faz merge — completamente autônomo.
Filosofia e quando usar
O pipeline 100% agentic representa o topo da pirâmide de automação com Claude Code. Nenhum humano aprova etapas intermediárias: do trigger ao merge em produção, tudo ocorre por decisão de agentes. Isso é viável — e confiável — apenas sob condições muito específicas.
Para que cenários este workflow é adequado
- Features bem-definidas: spec clara, critérios de aceite explícitos, sem ambiguidade de produto
- Tarefas repetitivas ou de manutenção: rate limiting, paginação, adição de campos, atualizações de dependências
- Hotfixes com escopo restrito: erros de validação, mensagens de erro, ajustes de configuração
- Automações de infraestrutura: rotação de secrets, atualização de certificados, bumps de versão
Para que cenários este workflow NÃO é adequado
- Features de alta ambiguidade ou que dependem de julgamento de produto
- Mudanças de arquitetura com impacto transversal no codebase
- Qualquer alteração onde o custo de erro é alto e rollback é complexo
- Código que lida com PII, dados financeiros ou compliance regulatório sem revisão humana adicional
Pré-requisito inegociável: o pipeline deve ter testes rigorosos antes de ser autônomo
Antes de ativar autonomia total, você precisa de:
- Suíte de testes com cobertura de pelo menos 80% nas rotas críticas
- Testes de integração com banco de dados real (não mocks)
- Testes E2E cobrindo as jornadas de usuário afetadas
- Load tests estabelecendo baseline de throughput
- Gates de qualidade que bloqueiam o pipeline se qualquer teste falhar
Arquitetura do pipeline
O pipeline agentic tem três camadas: triggers que iniciam o processo, agentes especializados que trabalham em paralelo, e gates de qualidade que bloqueiam o avanço até que todos os critérios sejam satisfeitos.
Pipeline 100% agentic: do trigger ao merge autônomo com gates de qualidade em cada etapa
Responsabilidades de cada camada
Orchestrator (< 80K tokens de contexto ativo): analisa o issue, decide quais agentes spawnar, consolida resultados e mantém o estado do pipeline em arquivos — nunca em memória. É o único agente que tem visão do pipeline completo.
Agentes especializados (< 60K tokens cada): recebem um brief focado, trabalham em paralelo, e escrevem output em arquivos no diretório .pipeline/[issue-number]/. Nunca se comunicam diretamente entre si — apenas através do orchestrator.
Review Agent: audita o output consolidado contra critérios de qualidade: SOLID, ausência de regressões, OWASP Top 10. Produz um relatório estruturado que o orchestrator usa para decidir se avança ou inicia um novo ciclo de correção.
Testing Pipeline: sequência determinística de testes. Cada etapa só executa se a anterior passou. O resultado é um JSON estruturado que o orchestrator usa como gate final.
Exemplo concreto — do zero ao merge
Cenário real: Issue GitHub #247 reportando abuso na API de usuários. Acompanhe cada passo do pipeline desde o webhook de trigger até o fechamento automático do issue.
Passo 1 — Trigger: webhook do GitHub
O GitHub envia um webhook quando o issue é aberto. Seu servidor de automação (ou GitHub Actions) intercepta o payload e inicia o orchestrator.
// Webhook payload do GitHub
{
"action": "opened",
"issue": {
"number": 247,
"title": "Adicionar rate limiting de 100 req/min na API de usuários",
"body": "Estamos sofrendo abuse na rota GET /api/users. Precisamos de rate limiting por IP com resposta 429.",
"labels": [{"name": "enhancement"}, {"name": "security"}]
}
}Passo 2 — Orchestrator boot (< 30K tokens de contexto inicial)
O orchestrator lê o issue, analisa o codebase relevante e produz um plano estruturado de quais agentes spawnar. O output é limitado a 2K tokens para manter o contexto enxuto.
claude -p "
Issue #247: Adicionar rate limiting 100 req/min na API de usuários.
Leia src/api/users/ e identifique:
1. Qual middleware de rate limiting está disponível no projeto
2. Quais agentes você vai spawnar e por quê
3. Escreva agents-plan.json com a lista de agentes e seus briefs
Contexto máximo: mantenha resposta < 2K tokens.
Escreva resultado em .pipeline/247/orchestrator-plan.json"O arquivo .pipeline/247/orchestrator-plan.json gerado contém o mapa de agentes e os briefs que cada um receberá. Isso separa a decisão de planejamento da execução.
{
"issue": 247,
"agents": [
{
"id": "backend",
"brief_file": ".pipeline/247/backend-brief.txt",
"rationale": "Implementar middleware rate-limit em src/api/users/ com resposta 429"
},
{
"id": "test",
"brief_file": ".pipeline/247/test-brief.txt",
"rationale": "TDD-first: escrever testes para rate limiting antes da implementação"
},
{
"id": "security",
"brief_file": ".pipeline/247/security-brief.txt",
"rationale": "Issue tem label security — auditar OWASP A03 (injection via IP header) e A07 (auth bypass)"
}
]
}Passo 3 — Spawn paralelo dos agentes especializados
O orchestrator lança os agentes em paralelo usando subshells em background. O wait garante que todos terminem antes de consolidar.
# Backend Agent — implementa o middleware
claude -p "$(cat .pipeline/247/backend-brief.txt)" &
# Test Agent — TDD: escreve testes ANTES da implementação
claude -p "$(cat .pipeline/247/test-brief.txt)" &
# Security Agent — OWASP A03: injection via X-Forwarded-For, A07: bypass por header
claude -p "$(cat .pipeline/247/security-brief.txt)" &
wait # aguarda os 3 terminarem antes de consolidarPasso 4 — Gate de integração: Review Agent
O Review Agent lê os outputs de todos os agentes e produz um relatório estruturado. O orchestrator usa esse relatório para decidir: avança para o testing pipeline ou inicia um novo ciclo com o Debug Agent.
# Review agent consolida e audita
claude -p "Leia .pipeline/247/backend-output/, .pipeline/247/tests/, .pipeline/247/security-report.json.
Verifique: SOLID, sem regressões, OWASP OK.
Escreva .pipeline/247/review-result.json com status e issues."// .pipeline/247/review-result.json
{
"status": "approved",
"solid_violations": [],
"owasp_issues": [],
"regression_risk": "low",
"notes": "X-Forwarded-For sanitizado corretamente. Testes cobrem cenários de bypass."
}Passo 5 — Testing pipeline sequencial
Com o review aprovado, o pipeline executa testes em sequência determinística. Cada comando gera um JSON que o orchestrator analisa para decidir se avança ou dispara análise de falha.
# Unidade: domínio isolado, sem I/O externo
npx vitest run --reporter=json > .pipeline/247/test-results.json
# E2E: jornadas críticas com browser headless
npx cypress run --headless --reporter json > .pipeline/247/cypress-results.json
# Load + stress: somente se API mudou (rate limiting mudou o contrato)
k6 run --out json=.pipeline/247/k6-results.json k6/load.js
# Auditoria de dependências: OWASP A06
npm audit --json > .pipeline/247/audit-results.jsonPasso 6 — PR criação, merge automático e fechamento do issue
Todos os gates passaram. O orchestrator cria o PR, aplica a auto-approve policy e fecha o issue com referência ao PR gerado.
gh pr create \
--title "feat: rate limiting 100 req/min na API de usuários (closes #247)" \
--body "$(cat .pipeline/247/pr-description.md)"
gh pr merge --squash --auto
gh issue close 247 --comment "Implementado via pipeline autônomo. PR #$(gh pr view --json number -q .number)".pipeline/247/. O histórico do pipeline fica disponível para auditoria e post-mortem.
Dynamic agent spawning — criação em runtime
Uma das características centrais deste pipeline é que não existe lista fixa de agentes. O orchestrator analisa cada issue e decide em runtime quais especialistas são necessários. A mesma pipeline que spawna 3 agentes para um rate limiting pode spawnar 6 para uma feature que envolve migração de banco, frontend e mudança de autenticação.
Como o orchestrator decide quais agentes criar
A decisão é baseada em análise do issue: labels, palavras-chave no corpo, e impacto nos módulos do codebase identificados na fase de boot.
# Regras de decisão do orchestrator (lógica de seleção de agentes)
# Label "security" presente → spawna security agent com checklist OWASP
if issue.labels includes "security":
spawn security-agent --brief security-brief.txt
# Corpo menciona "frontend" ou "UI" → spawna frontend agent com skill frontend-design
if issue.body matches /(frontend|UI|componente|tela)/i:
spawn frontend-agent --skill frontend-design --brief frontend-brief.txt
# Corpo menciona "banco" ou "migration" → spawna migration agent
if issue.body matches /(database|migration|schema|PostgreSQL)/i:
spawn migration-agent --brief migration-brief.txt
# Corpo menciona "performance" ou "latência" → spawna perf agent com k6
if issue.body matches /(performance|latência|throughput|slow)/i:
spawn perf-agent --tools k6 --brief perf-brief.txtComo criar um skill especializado em runtime
Para issues com domínios incomuns — como zero-downtime migrations de PostgreSQL — o orchestrator pode gerar um skill temporário antes de spawnar o agente correspondente. O skill é criado como arquivo Markdown no diretório do pipeline e passado ao agente via --skill ou injetado no brief.
claude -p "Crie um skill temporário em .pipeline/247/skills/migration-agent.md
para um agente especializado em migrations de banco PostgreSQL com zero downtime.
O skill deve ter: instruções de como criar migrations reversíveis,
checklist de segurança, e formato de output."O skill gerado em runtime tem a mesma estrutura de qualquer skill do Claude Code: frontmatter YAML com description, corpo com instruções e exemplos. A diferença é que ele é efêmero — existe apenas para este pipeline run e é descartado após o merge.
---
description: Agente especializado em migrations PostgreSQL com zero downtime
---
## Regras de zero-downtime migration
1. NUNCA use `ALTER TABLE ... DROP COLUMN` sem um ciclo de deploy intermediário
2. Adicione colunas como nullable primeiro, popule com default, então adicione constraint
3. Use transactions explícitas: `BEGIN; ... COMMIT;`
4. Toda migration deve ter `up()` e `down()` implementados e testados
## Checklist de segurança
- [ ] Migration reversível via `down()`
- [ ] Testada em snapshot da base de produção (anonimizada)
- [ ] Lock time estimado < 100ms (senão use `pg_repack` ou online DDL)
- [ ] Plano de rollback documentado em migration-plan.md
## Formato de output
Escreva os arquivos em `.pipeline/[issue]/migrations/`:
- `YYYYMMDDHHMMSS_description.sql` — a migration em si
- `migration-plan.md` — estimativa de lock time e plano de rollbackContext Window discipline no pipeline agentic
O pipeline 100% agentic é o cenário mais crítico para context discipline. Com múltiplos agentes rodando em paralelo e um orchestrator que precisa manter visibilidade do estado global, um descuido no gerenciamento de contexto causa dois tipos de falha: context overflow (o agente perde informação importante) ou context poisoning (output irrelevante polui o raciocínio).
Limites obrigatórios
- Orchestrator: máximo 80K tokens ativos. Nunca acumular outputs completos dos agentes.
- Cada agente spawned: máximo 60K tokens de contexto inicial (brief + arquivos relevantes).
- Entre waves pesadas:
/compactobrigatório antes de iniciar nova fase. - Handoffs: sempre via arquivos (
PLAN.md,CONTEXT.md,ADR.md) — nunca in-memory. - Ciclo de vida dos agentes: destruídos após tarefa; estado persiste exclusivamente em arquivos.
- Reinício do orchestrator: após 3 waves, reiniciar com
CONTEXT.mdcomo única fonte de estado.
Anti-pattern: orchestrator que pede output completo de todos os agentes
Este é o erro mais comum e o que causa context overflow com maior frequência. O orchestrator não precisa saber o conteúdo completo de cada arquivo gerado — apenas onde estão e se a geração foi bem-sucedida.
# ANTI-PATTERN: solicitar output completo causa context overflow
claude -p "
Mostre o conteúdo completo de todos os arquivos em .pipeline/247/backend-output/,
.pipeline/247/tests/, e .pipeline/247/security-report.json.
Analise tudo e me diga se está OK."
# Problema: com 3 agentes gerando código, você facilmente injeta 50K+ tokens
# de output de implementação no contexto do orchestrator.Pattern correto: orchestrator solicita apenas status e paths
O orchestrator pede um summary estruturado — não o conteúdo dos arquivos. O Review Agent, que tem contexto próprio e limitado, é quem lê os arquivos completos e produz o relatório de qualidade.
# PATTERN CORRETO: orchestrator pede apenas { status, output_files[], issues[] }
claude -p "
Cada agente escreveu um arquivo de resultado em .pipeline/247/:
- backend-result.json
- test-result.json
- security-result.json
Leia APENAS esses três arquivos de resultado (não os outputs completos).
Produza um summary em .pipeline/247/wave-1-summary.json com:
{ status: 'ok'|'failed', output_files: [], issues: [] }
Mantenha a resposta abaixo de 500 tokens."Cada agente especializado é responsável por produzir seu próprio arquivo *-result.json com o summary do que fez. O orchestrator consome apenas esse summary. Os arquivos de implementação ficam em disco e são lidos apenas pelos agentes que precisam deles.
// Formato padrão de result.json para cada agente
{
"agent": "backend",
"status": "ok",
"output_files": [
"src/middleware/rate-limit.ts",
"src/api/users/index.ts"
],
"issues": [],
"tokens_used": 18420,
"duration_seconds": 47
}Como configurar o pipeline
A infraestrutura do pipeline requer três componentes: estrutura de diretórios para persistência de estado, GitHub Actions para trigger automático, e política de auto-approve configurada com os guardrails corretos.
Estrutura de diretórios
project-root/
├── .pipeline/ # Estado dos pipelines em execução e histórico
│ └── [issue-number]/ # Diretório isolado por issue
│ ├── orchestrator-plan.json
│ ├── backend-brief.txt
│ ├── test-brief.txt
│ ├── security-brief.txt
│ ├── backend-output/ # Arquivos gerados pelo backend agent
│ ├── tests/ # Testes gerados pelo test agent
│ ├── security-report.json
│ ├── wave-1-summary.json
│ ├── review-result.json
│ ├── test-results.json
│ ├── cypress-results.json
│ ├── k6-results.json
│ ├── audit-results.json
│ └── pr-description.md
├── k6/
│ ├── load.js # Cenário de carga: baseline de throughput
│ └── stress.js # Cenário de stress: ponto de ruptura
├── scripts/
│ ├── orchestrator.sh # Script principal do pipeline
│ ├── spawn-agents.sh # Lançamento paralelo de agentes
│ └── testing-pipeline.sh # Sequência determinística de testes
└── .github/
└── workflows/
└── agentic-pipeline.ymlGitHub Actions: trigger automático por issue label
O workflow só dispara quando o issue tem labels específicas que indicam que a feature é elegível para automação. Isso evita que issues exploratórios ou de produto ativem o pipeline.
# .github/workflows/agentic-pipeline.yml
name: Agentic Pipeline
on:
issues:
types: [labeled]
jobs:
run-pipeline:
# Só dispara para labels que indicam feature elegível para automação
if: |
github.event.label.name == 'agentic-ready' ||
github.event.label.name == 'auto-implement'
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
issues: write
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Install Claude Code CLI
run: npm install -g @anthropic-ai/claude-code
- name: Install GitHub CLI
run: |
type -p curl >/dev/null || apt install curl -y
curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | tee /etc/apt/sources.list.d/github-cli.list > /dev/null
apt update && apt install gh -y
- name: Run agentic pipeline
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
ISSUE_NUMBER: ${{ github.event.issue.number }}
ISSUE_TITLE: ${{ github.event.issue.title }}
ISSUE_BODY: ${{ github.event.issue.body }}
run: bash scripts/orchestrator.shScript principal do orchestrator
#!/usr/bin/env bash
# scripts/orchestrator.sh
set -euo pipefail
ISSUE=$ISSUE_NUMBER
PIPELINE_DIR=".pipeline/$ISSUE"
mkdir -p "$PIPELINE_DIR/skills"
echo "=== Pipeline iniciado para issue #$ISSUE ==="
# Fase 1: Boot do orchestrator — análise e planejamento
claude -p "
Issue #$ISSUE: $ISSUE_TITLE
Corpo: $ISSUE_BODY
Analise src/ e identifique os módulos impactados.
Decida quais agentes spawnar. Escreva os briefs.
Output em $PIPELINE_DIR/orchestrator-plan.json e $PIPELINE_DIR/*-brief.txt
Mantenha resposta abaixo de 2K tokens." \
--output-format json
# Fase 2: Spawn paralelo de agentes especializados
bash scripts/spawn-agents.sh "$PIPELINE_DIR"
# Fase 3: Consolidação e review
claude -p "
Leia $PIPELINE_DIR/*-result.json (apenas os result files, não os outputs completos).
Produza $PIPELINE_DIR/wave-1-summary.json com { status, output_files[], issues[] }"
REVIEW_STATUS=$(jq -r '.status' "$PIPELINE_DIR/wave-1-summary.json")
if [ "$REVIEW_STATUS" != "ok" ]; then
echo "Wave 1 falhou. Iniciando ciclo de debug..." >&2
exit 1
fi
# Fase 4: Testing pipeline
bash scripts/testing-pipeline.sh "$PIPELINE_DIR"
# Fase 5: PR + merge + fechamento
bash scripts/merge-and-close.sh "$PIPELINE_DIR" "$ISSUE"
echo "=== Pipeline concluído para issue #$ISSUE ==="Configuração de auto-approve policy
A auto-approve policy é a parte mais delicada da configuração. Ela define quais PRs o pipeline pode mergear sem aprovação humana. Comece restritivo e expanda gradualmente conforme o histórico de sucesso aumenta.
# .github/auto-approve.yml (usando hmarr/auto-approve-action ou equivalente)
# Política restritiva para início: apenas PRs pequenos com todos os gates passando
rules:
- conditions:
# Só aprova automaticamente PRs criados pelo pipeline agentic
- author: "github-actions[bot]"
# Requer que todos os checks de CI passem
- check-success: "vitest"
- check-success: "cypress"
- check-success: "npm-audit"
# Limita o tamanho do PR para mudanças incrementais
- "files-changed < 15"
- "additions + deletions < 300"
actions:
approve: true
merge:
method: squashSmoke tests pós-deploy
Após o merge e deploy, o pipeline executa um smoke test mínimo para confirmar que a feature está funcionando em produção antes de fechar o issue.
# Smoke test pós-deploy: verifica endpoints críticos
PROD_URL="https://api.seuapp.com"
# Verifica que o rate limiting responde corretamente
RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" "$PROD_URL/api/users")
if [ "$RESPONSE" != "200" ]; then
echo "SMOKE TEST FAILED: /api/users retornou $RESPONSE" >&2
# Aciona rollback automático via vercel rollback ou gh workflow run rollback
gh workflow run rollback.yml -f deployment_id="$DEPLOYMENT_ID"
exit 1
fi
# Verifica que rate limiting está ativo (deve retornar 429 após 100 requests)
for i in $(seq 1 101); do
STATUS=$(curl -s -o /dev/null -w "%{http_code}" "$PROD_URL/api/users")
if [ "$i" -eq 101 ] && [ "$STATUS" != "429" ]; then
echo "SMOKE TEST FAILED: rate limiting não ativou na requisição 101" >&2
exit 1
fi
done
echo "Smoke tests passaram. Issue fechado."Limitações e quando NÃO usar
O pipeline 100% agentic é uma ferramenta poderosa dentro de um escopo específico. Fora desse escopo, ele cria mais problemas do que resolve. Reconhecer os limites é tão importante quanto saber configurar o pipeline.
Cenários onde o pipeline agentic NÃO deve ser usado
- Features de alta ambiguidade: quando a spec não está clara, o agente vai tomar decisões de produto que deveriam ser humanas. O resultado é implementação tecnicamente correta mas funcionalmente errada — e o erro só aparece em produção.
- Mudanças de arquitetura: refactoring de camadas, introdução de novos patterns, migração de framework. O custo de erro é propagado por múltiplos módulos e o rollback é complexo.
- Features que precisam de julgamento de produto: trade-offs de UX, decisões de monetização, alterações em fluxos de onboarding. Agentes não têm o contexto de negócio necessário para esse tipo de decisão.
- Custo de erro alto com rollback difícil: migrations de banco de dados em produção com dados sensíveis, mudanças em sistemas de pagamento, alterações em pipelines de dados com downstream dependents.
- Domínios sem cobertura de testes: se o módulo impactado não tem testes, o pipeline não tem como verificar que não quebrou nada. Nunca use o pipeline agentic para adicionar autonomia onde não há observabilidade.
- Primeiros deploys de uma feature: o pipeline é adequado para iterar sobre features existentes, não para criar do zero. Features novas geralmente envolvem decisões de design que requerem revisão humana.
Sinais de que o pipeline está sendo usado incorretamente
- O orchestrator está spawning mais de 6 agentes para um único issue
- Os briefs dos agentes contêm perguntas abertas sobre o que implementar
- O Review Agent frequentemente retorna
status: failed(indica spec ambígua) - O pipeline está rodando em branches que não têm testes de integração
- A auto-approve policy está aprovando PRs com mais de 500 linhas de alteração
Checklist antes de ativar autonomia total
# Checklist de maturidade para pipeline 100% agentic
## Cobertura de testes
- [ ] Cobertura de testes unitários >= 80% nas rotas críticas
- [ ] Testes de integração com banco de dados real (sem mocks de infra)
- [ ] Testes E2E cobrindo jornadas de usuário afetadas pelo pipeline
- [ ] Load tests com baseline documentado de throughput e latência
## Gates do pipeline
- [ ] Review Agent configurado com checklist SOLID e OWASP Top 10
- [ ] Testing pipeline bloqueia merge se qualquer teste falhar
- [ ] Smoke tests pós-deploy com rollback automático em caso de falha
- [ ] npm audit como gate obrigatório (bloqueia em vulnerabilidades críticas)
## Auto-approve policy
- [ ] Policy restritiva por padrão: PRs pequenos, todos os checks passando
- [ ] Limitação de tamanho de PR configurada (recomendado: < 300 linhas)
- [ ] 20+ PRs supervisionados com zero regressões antes de ativar auto-merge
## Observabilidade
- [ ] Logs estruturados em cada etapa do pipeline (JSON, não texto livre)
- [ ] Alertas configurados para falhas de smoke test
- [ ] Histórico de pipelines auditável em .pipeline/ com retenção adequada
## Rollback
- [ ] Procedimento de rollback documentado e testado manualmente
- [ ] Rollback automático configurado para falhas de smoke test
- [ ] Canal de comunicação (Slack/PagerDuty) para falhas críticas do pipelineHooks no pipeline agentic
No pipeline 100% autônomo, hooks são críticos — não há humano revisando. Cada agente do pipeline precisa ter hooks configurados para que erros sejam detectados antes de chegarem ao merge gate.
Cada agente do pipeline deve rodar com hooks ativos
# Backend Agent com hooks ativos
claude -p "$(cat .pipeline/247/backend-brief.txt)" \
--settings .claude/settings-strict.json &
# Test Agent com hooks ativos
claude -p "$(cat .pipeline/247/test-brief.txt)" \
--settings .claude/settings-strict.json &
# Security Agent com hooks ativos
claude -p "$(cat .pipeline/247/security-brief.txt)" \
--settings .claude/settings-strict.json &
waitsettings-strict.json — configuração para agentes do pipeline
{
"hooks": {
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [{"type": "command", "command": "node scripts/quality-gate.mjs \"$CLAUDE_TOOL_INPUT_FILE_PATH\""}]
}
],
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [{"type": "command", "command": "node scripts/bash-guard.mjs"}]
}
],
"Stop": [
{
"hooks": [{"type": "command", "command": "node scripts/agent-report.mjs"}]
}
]
}
}agent-report.mjs — relatório ao final de cada agente
#!/usr/bin/env node
// agent-report.mjs — escreve relatório de qualidade que o orchestrator lê
import { execSync, writeFileSync } from 'node:child_process';
import { mkdirSync } from 'node:fs';
const pipelineDir = process.env.PIPELINE_DIR ?? '.pipeline/current';
mkdirSync(pipelineDir, { recursive: true });
let status = 'ok';
let issues = [];
try {
execSync('npx vitest run --reporter=json', { stdio: 'pipe' });
} catch (e) {
status = 'failed';
issues.push('testes falhando');
}
try {
execSync('npm audit --audit-level high', { stdio: 'pipe' });
} catch {
issues.push('vulnerabilidades em dependências');
}
writeFileSync(
`${pipelineDir}/quality-report.json`,
JSON.stringify({ status, issues, timestamp: new Date().toISOString() }, null, 2)
);
console.log(`[agent-report] status=${status}, issues=${issues.length}`);
if (status === 'failed') process.exit(1);Scripts base (quality-gate.mjs, bash-guard.mjs) no Módulo 22 — Fundamentos.