Operação por agentes
Versão: 1.5
Data: 2026-07-02
Handoff HTML: Operacao por Agentes - Arah.dc.html
Objetivo
Transformar o repo sraphaz/arah em operável por agentes: humano define intenção e aprova merge; agentes executam, testam e documentam via PR.
Esta infraestrutura precede a FASE52 (CI/CD) e os épicos de sustentação (F52–61).
Sequência de PRs (handoff G10) — concluída
| PR | Conteúdo | Status |
|---|---|---|
| 1 | Esqueleto agentes & skills | ✅ |
| 2 | Orquestrador & agents.yml + CLI |
✅ |
| 3 | Docs Steward & taxonomia | ✅ |
| 4 | Skills núcleo executáveis | ✅ |
| 5 | Agentes de código calibrados | ✅ |
| 6 | QA, Security & Release gates | ✅ |
| 7 | Piloto assistido (billing) | ✅ |
| 8 | PR Steward + next-phase | ✅ |
| 9 | Visibilidade + checklists de conduta + FASE52 smoke | ✅ |
Artefatos por PR
PR 1 — Esqueleto
| Artefato | Caminho |
|---|---|
| Manual central | AGENTS.md |
| Manifests | .agents/ (19 agentes) |
| Skills | .skills/ (14 skills) |
| CODEOWNERS | CODEOWNERS |
| Issue template | agent-task.yml |
| Validação CI | agents-validate.yml |
PR 2 — Orquestrador
| Artefato | Caminho |
|---|---|
| CLI | arah-agents.ps1 |
| Workflow | agents.yml |
PR 3 — Docs Steward
| Artefato | Caminho |
|---|---|
| Taxonomia | DOC_TAXONOMY.md |
| Arquivo legado | docs/_archive/ |
| Índice gerado | INDEX.generated.md |
| Workflow índice | agents-docs.yml |
| Check sync | sync-docs-check.ps1 |
PR 4 — Skills executáveis
| Skill | Script |
|---|---|
| run-tests, gen-l10n, sync-docs, open-pr, dep-audit, doc-taxonomy | invoke-skill.ps1 |
| open-pr | open-pr.ps1 |
PR 5 — Agentes de código
| Script | Uso |
|---|---|
| register-bff-journey-check.ps1 | Valida BffJourneyRegistry + testes |
| gen-l10n.ps1 | flutter gen-l10n + cópia lib/l10n |
| Domain agents | .agents/domain/ (carteira-arata, mercado-economia) |
PR 6 — Gates
| Artefato | Caminho |
|---|---|
| Runner | run-gates.ps1 |
| Workflow | agents-gates.yml |
| Templates | qa-checklist.md, security-report.md |
PR 7 — Piloto billing
| Artefato | Caminho |
|---|---|
| Runbook | AGENT_PILOT_BILLING.md |
| Issue template | agent-pilot-billing.yml |
PR 8 — PR Steward (review, bots, next-phase)
| Artefato | Caminho |
|---|---|
| Agente | pr-steward.agent.yaml |
| Workflow | agents-pr-steward.yml |
| Fila de fases | PHASE_QUEUE.yaml |
| Checklist bots | bot-review-checklist.md |
| Scripts | address-bot-review.ps1, pr-ready.ps1, next-phase.ps1 |
| Skills | address-bot-review.skill.yaml, next-phase.skill.yaml |
Comportamento:
- Em cada PR: audita bots, posta checklist, label
ready-for-mergesó se CI verde e zero apontamentos de bot. - Após push em
main:next-phase.ps1abre issue[Agent]da próxima fase desbloqueada na fila. - Merge continua humano (
guardrails.no_merge: trueno manifest).
PR 9 — Visibilidade e conduta dos agentes
| Artefato | Caminho |
|---|---|
| Checklists | .agents/checklists/ (9 agentes + _shared) |
| Ativação CI | run-agent-activation.ps1 |
| Post comentário | post-agent-activity.ps1 |
| Verificação auto | agent-conduct-check.ps1 |
| Skill | agent-activate.skill.yaml |
| Workflow | agents.yml (artifact agent-activity-*.json) |
| FASE52 smoke | cd.yml job smoke-test-api |
Onde ver a ação do agente:
- Comentário na issue/PR (
<!-- arah-agent-activity:{id} -->) - Artifact no run do workflow Agents Orchestrate
- Step summary no CD (Release Agent)
- CLI:
arah-agents activate -Agent … -Issue N
Uso rápido
./scripts/agents/arah-agents.ps1 orchestrate -Labels area/backend
./scripts/agents/arah-agents.ps1 route-pr -ChangedFiles backend/Arah.Api/Program.cs
./scripts/agents/arah-agents.ps1 validate
./scripts/agents/arah-agents.ps1 gates
./scripts/agents/arah-agents.ps1 ensure-labels # gh label create
./scripts/agents/arah-agents.ps1 bot-review -PrNumber <N>
./scripts/agents/arah-agents.ps1 pr-ready -PrNumber <N>
./scripts/agents/arah-agents.ps1 next-phase -DryRun
./scripts/agents/arah-agents.ps1 export-graph # gera Agent Graph (JSON)
./scripts/agents/arah-agents.ps1 validate-graph # audita consistência do grafo
./scripts/agents/invoke-skill.ps1 -Skill sync-docs
Agent Graph: formaliza o grafo operacional (agentes ↔ skills ↔ rules ↔ paths
↔ domínios ↔ specs ↔ harnesses ↔ guardrails ↔ workflows ↔ gates) como artefato
auditável. Fonte inicial: .agents/choreography.yaml. Ver
AGENT_GRAPH.md.
Labels GitHub (uma vez): ./scripts/agents/arah-agents.ps1 ensure-labels
Guardrails
- Merge em
mainsempre humano - CI verde obrigatório (
agents-gates.yml+ci.yml) - Escopo por manifest (
max_diff_files, paths) - Auditoria: plano + skills no corpo do PR
Próximo passo pós-infra agentes
Onda S / FASE52+ — CI/CD, Arah Core, IaC (REALINHAMENTO_SUSTENTACAO_OPERACIONAL.md)
PR 10 — Agentes SDD + Arah Core (2026-07-01)
| Artefato | Caminho |
|---|---|
| Spec Steward checklist | .agents/checklists/spec-steward.checklist.md |
| Domain control-plane | .agents/domain/control-plane.agent.yaml |
| Specialist Core | .agents/specialists/core-control-plane.agent.yaml |
| Skills | spec-author, harness-run |
| Gate SDD | spec-gate-check.ps1 |
| Co-roteamento | orchestrator.agent.yaml co_route |
| Labels | area/spec, area/sdd |
Comportamento:
- PR com
docs/specs/ouArah.Coreaciona spec-steward como co-agente. run-gatesincluispec-gate-check(Spec-Id + validate-specs).- Backend consulta
control-plane/core-control-planepara FASE53+.
PR 11 — Coreografia + LikeC4 + domínio consultivo (2026-07-01)
| Artefato | Caminho |
|---|---|
| Coreografia | .agents/choreography.yaml |
| Engine | choreograph-agents.ps1 |
| Ativação (reescrita) | run-agent-activation.ps1 |
| Parecer domínio | post-domain-consult.ps1 |
| LikeC4 model | docs/architecture/likec4/ |
| Export diagramas | export-likec4.ps1, apply-arah-design-tokens.ps1 |
| Skills | likec4-export, domain-consult |
| Domain agents (paths) | .agents/domain/ — scope.paths + autonomy: consult_post |
Comportamento:
- Todo PR: regra
pr-alwaysaciona qa + pr-steward; com-ExecuteAutonomyno CI, skills das regras matched são invocadas. - PR com Marketplace → parecer
mercado-economia; Core →control-plane+architecture-review. - Craft (projetar/desenvolver/testar): regras
craft-backend/craft-flutter/craft-webacionambackend/flutter/web(esolutions-architectno backend) invocandocraft-review;qatambém invoca nopr-always. orchestrateenriqueceroute.jsoncom blocochoreography(regras + domínios).- CLI:
arah-agents choreograph,skill -Skill likec4-export.
PR 13 — Autonomia de domínio (sem acionamento manual) + DoD (2026-07-02)
| Artefato | Caminho |
|---|---|
| Hook local (Cursor) | .cursor/hooks.json, .cursor/hooks/domain-review.ps1 |
| Autoreview | domain-autoreview.ps1 |
| Rule (escopada por glob) | .cursor/rules/domain-agents-autonomy.mdc |
| Definition of Done | docs/governance/DEFINITION_OF_DONE.md |
| CI publica pareceres | agents.yml (step "Publish domain agent pareceres") |
Comportamento:
- Local: hook
stoproda o autoreview sobre ogit diffa cada interação; gera pareceres em.cursor/domain-review.md(idempotente por conjunto de mudanças). Desde o PR 14 não injetafollowup_message— comunicação passiva por arquivo. - CI: em todo PR, os
domain_consultsda coreografia são publicados como comentáriosarah-domain-consult(não apenas listados). - Cobertura de paths ampliada (Financial, Application/Services/Marketplace, Items) e matcher de glob corrigido para
**em qualquer posição.
PR 14 — Contexto em camadas + comunicação passiva (otimização de consumo de API) (2026-07-02)
Motivação: o modelo anterior injetava ~20 mil tokens fixos por requisição
(.cursorrules ~60 KB always-apply + AGENTS.md ~15 KB) e o hook stop
devolvia followup_message, gerando um turno extra de modelo (nova rodada de
API com o contexto inteiro) a cada interação que tocasse paths de domínio —
inclusive mudanças apenas em docs.
Novo modelo em 4 camadas (contexto sob demanda):
| Camada | Artefato | Quando entra no contexto |
|---|---|---|
| 0 — Núcleo | .cursorrules (~4 KB) | Sempre (princípios, guardrails, ponteiros) |
| 1 — Regras escopadas | .cursor/rules/ — backend-standards (backend/**), frontend-design (frontend/**), docs-organization (docs/**, *.md), domain-agents-autonomy (backend/**, frontend/**, docs/design/**) |
Só quando arquivos do glob são tocados |
| 2 — Skills | .cursor/skills/ arah-run-tests, arah-sync-docs, arah-open-pr, arah-domain-consult, arah-craft → apontam para .skills/ |
Índice leve sempre; corpo lido só ao usar |
| 3 — Comunicação passiva | Hook stop grava .cursor/domain-review.md sem followup; CI publica pareceres no PR |
Agente lê o arquivo quando a rule escopada instrui |
Efeitos:
- Contexto fixo por requisição: de ~75 KB para ~4 KB (redução ~95%).
- Zero turnos extras de modelo por hook; pareceres continuam gerados (local) e publicados (CI).
- Conteúdo integral das regras antigas preservado nas regras escopadas e nos docs já existentes (
docs/CURSOR_DESIGN_RULES.md,docs/21_CODE_REVIEW.md,docs/CURSOR_DOCUMENTATION_RULES.md).
Propriedade SDD (tabela movida de AGENTS.md):
| Objeto | Agente principal | Co-agentes | Skills |
|---|---|---|---|
docs/specs/*.yaml |
spec-steward |
docs-steward, planner |
spec-author, spec-validate, harness-run |
scripts/harness/ |
spec-steward |
release |
harness-run, spec-validate |
backend/Arah.Core/ |
backend |
spec-steward, solutions-architect |
register-adr, run-tests, harness-run |
docs/architecture/adrs/ |
solutions-architect |
docs-steward |
register-adr, likec4-export, architecture-review |
.github/workflows/spec-harness.yml |
release |
spec-steward |
harness-run |
| FASE52–61 backlog | planner |
spec-steward |
spec-author, backlog-to-issue |
PR 12 — Gestão via GitHub (Issues, Project, labels) (2026-07-01)
| Artefato | Caminho |
|---|---|
| Labels canônicas | .github/labels.yml |
| Milestones ondas | .github/milestones.yml |
| Project config | .github/project/arah-sustentacao.yml |
| Template épico | phase-epic.yml |
| Scripts | sync-github-labels.ps1, GitHub-ProjectApi.ps1, github-project.ps1, backlog-to-issue.ps1 |
| Workflows | github-sync.yml, project-board-sync.yml |
| Snapshot | .github/phase-status.generated.json |
| Runbook | GITHUB_PROJECT_MANAGEMENT.md |
Comportamento:
github-project bootstrap— labels, milestones, Project v2, views, issues, colunas Statusproject-board-sync.yml— atualiza board a cada issue/PR (infra/federação refletidas por onda)PHASE_QUEUE.yaml→ Issues[Epic]com labelswave/*,priority/*, milestone- Status operacional: Issues fechadas = fase concluída (fallback
STATUS_FASES.md) - Specs/ADRs/FASE*.md permanecem no repo como contrato técnico