teqo-backup/docs/plans/ops97-react-audit-skill.md
2026-08-25 00:17:58 -03:00

78 lines
9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Skill /react-audit com ciclo fechado plan→implement de anti-patterns React/Next.js
Status: rascunho
Atualizado em: 2026-08-24
Issue: #901
Priority: P2
Impeccable: A — N/A sem UI
Rascunho UI: N/A — sem UI
Appetite: ~1,5–2 dias eng; um outcome verificável
Responsável: —
## Intenção
Hoje a auditoria de código (engineering-audit) varre o repo inteiro, é read-only no sweep, e as remediações P2/P3 viram apenas ledger/plano — não existe um ciclo fechado que (a) mire especificamente anti-patterns de React/Next.js, (b) aponte as fontes oficiais (react.dev, nextjs.org) como referência e (c) feche o loop: planejar o fix e implementá-lo, sem humano. Em pré-campanha os agentes trabalham em paralelo e queremos que o react-audit rode sozinho (provavelmente de madrugada), encontre anti-patterns, proponha e implemente os fixes, e os agentes que rodam o audit tenham o Context7 MCP à mão para consultar a documentação oficial vigente. A skill **não faz merge sozinha**: ao final entrega **um único PR** com todos os fixes (cada fix num commit separado), **ready mas sem auto-merge**, CI green e mergeable, e a **descrição do PR é o relatório** — o que foi feito e o porquê de cada decisão. O ciclo termina quando esse PR está pronto para o humano explorar e mesclar.
## Persona e fluxo
- **Persona / contexto:** agente autônomo (ou humano dev) rodando a skill à noite, fora do horário de trabalho, sem ninguém assistindo a execução; o humano revisa **na manhã seguinte**, com calma.
- **Job principal:** varrer o repo por anti-patterns de React/Next.js, planejar e implementar os fixes, e entregar **um PR final único** (ready, sem auto-merge, CI green, mergeable) cuja descrição documenta tudo o que foi feito e por quê — para o humano explorar commit a commit e mesclar quando quiser.
- **Fluxo desejado:** (1) a skill abre o sweep focado em anti-patterns React/Next, mapeando cada achado a file:line; (2) para cada fix, um subagente escritor planeja (plano impl + Issue trackeável) com fonte oficial de referência; (3) um subagente implementador aplica o fix com o gate completo do repo; (4) **todos os fixes vão para a mesma branch, cada um num commit separado** (commits atômicos e legíveis para exploração); (5) ao final, a skill abre **um único PR** para `main`, ready e **sem auto-merge**, com CI green e sem conflitos; (6) a **descrição do PR é o relatório consolidado** (o que foi feito + porquês, estado de cada fix, follow-ups); (7) a entrega termina quando esse PR está green/mergeable/sem conflitos — o humano explora e mescla. Rejeição/edição do PR = humano comenta e a skill ajusta na branch; o histórico dos commits preserva o ledger.
- **Anti-goals de produto:** NÃO virar sweep geral de qualidade (é do engineering-audit) nem "cartilha genérica de boas práticas"; NÃO automatizar a config global da máquina (anti-goal OPS92); NÃO tocar convenções travadas (URLs públicas, Consent/LGPD, migrations shipped); NÃO armar auto-merge nem mesclar em `main` sem humano — a revisão humana é parte do fluxo.
## Objetivo e aceite
- Sweep focado e complementar ao engineering-audit (não re-varre qualidade geral), cada achado com file:line, família de anti-pattern e fonte oficial.
- Cada fix implementado com o gate completo do repo (tsc/lint/format/knip/cycles/unit+int/build + e2e da superfície afetada) e o próprio commit.
- **Um único PR final** aberto para `main`, estado **ready**, **sem auto-merge** armado, **sem conflitos** (mergeable) e com **CI green** ao encerrar a skill.
- **Commits separados por fix** (atômicos, com mensagem descritiva) para o humano explorar a mudança de cada anti-pattern isoladamente.
- **A descrição do PR é o relatório de auditoria**: (i) o que foi varrido e quando, (ii) cada achado com file:line e fonte oficial, (iii) por fix: planejado/implementado/rejeitado/adiado e **o porquê** (decisão, gate, custo, sobreposição com dono existente), (iv) estado final do PR e (v) recomendações de follow-up com destino (Issue/ledger).
- Skill funcional mesmo sem o Context7 (fallback a links oficiais), com a declaração global do MCP documentada como passo de setup manual do dono da máquina.
- A entrega **só termina** quando o PR final está green/mergeable/sem conflitos/sem auto-merge — se o CI ainda estiver rodando ou houver conflito, a skill continua até estabilizar.
## Dados (intenção)
- **Vou apresentar dados?** Não — tooling de desenvolvimento, sem dado de negócio.
- **Decisões desbloqueadas:** N/A
- **Forma:** N/A.
## Direção no codebase (hipótese)
- **Áreas prováveis:** `.agents/skills/react-audit/SKILL.md` (novo); catálogo de anti-patterns já codificado em `.agents/rules/engineering-standards.mdc` (client boundary :24-28, caching ladder :34-43), `.agents/rules/codebase-map.mdc:26`, achados de `engineering-audit` (B14/B34, RSC payload, effects doing derived state); subagentes em `.opencode/agent/*.md`; contexto de merge/deploy em `docs/AGENT-OPS.md` e `.github/workflows/agent-pr-ready-automerge.yml` (que NÃO deve ser usado — PR final fica sem auto-merge).
- **Precedente a olhar:** `.agents/skills/engineering-audit/SKILL.md` (audit read-only; o modo autônomo dele usa auto-merge — aqui divergimos: PR único ready sem auto-merge); `agent-work-issue/SKILL.md` (plan→execute→simplify→PR sem pausa); `work-issue/SKILL.md` (uso de Task com subagentes); `docs/plans/react-19-form-reset-campanha.md` (C140 — fatia de fix React 19 já entregue).
- **Risco de acoplamento:** médio — a skill não muda produto, mas o PR final de fix que ela gera atravessa o gate CI completo e pode esbarrar em áreas com donos existentes; fixes seguem "editar o dono, não twinar". O relatório (descrição do PR) é o fio de auditoria — sem ele o audit roda e "some" de madrugada.
## Dependências
- Nenhuma.
## Fora de escopo
- Sweep geral de qualidade (permanece no engineering-audit).
- Mudança no gate/deploy (CI/auto-merge vigentes ficam como estão).
- Automação da config global (declaração do Context7 é passo manual documentado).
- Revisão/correção das convenções travadas (URLs públicas, Consent/LGPD, migrations shipped).
## Rabbit holes de produto
- **Sweep virar "cartilha genérica".** Se alguém "só completar" a skill com boas práticas descoladas do repo, ela perde o valor de auditoria. **Corte neste item:** cada anti-pattern precisa de file:line do repo + fonte oficial; sem mapeamento, não vira fix.
- **Escopo inflar para qualidade geral.** Se o escritor "só completar" com temas fora de React/Next, vira um segundo engineering-audit. **Corte neste item:** enumeração fixa de famílias (client boundary, RSC payload, estado/efeitos, forms/state, caching, server actions, streaming, next/image/fonts, a11y de componentes) e PRs só para esses achados.
- **Depender do Context7.** Se o MCP não estiver disponível, a skill não pode parar. **Corte neste item:** fallback a links oficiais e doc de setup manual; o MCP é aceleração, não requisito.
- **Relatório morar só na branch, longe do PR.** Se o relatório for um arquivo que o PR não carrega na descrição, o humano não vê o "porquê" sem abrir o diff. **Corte neste item:** a descrição do PR É o relatório; os commits separados dão a navegação por fix; o relatório também pode viver como arquivo em `docs/` dentro do próprio PR quando fizer sentido, mas nunca no lugar da descrição.
- **Fixes que tocam donos travados.** **Corte neste item:** precheck read-only (como engineering-audit) + gate do repo; achado que esbarra em dono travado vira follow-up no relatório, não muda o PR.
## Questões em aberto (produto)
- Escopo do sweep: focado em anti-patterns React/Next (recomendado — complementar ao engineering-audit). Posicionado.
- Context7: declarar globalmente na máquina do dono, fora do git (precedente OPS89/OPS92); NÃO no repo Teqo (custo de contexto vs. outcome OPS92). Executor valida o mecanismo vigente (shape do bloco mcp remote) e documenta o passo manual. Posicionado.
- Autonomia: execução autônoma da skill, mas **entrega = PR final único ready sem auto-merge** (nada mergeia em `main` sem humano); a skill estabiliza o PR até CI green + mergeable + sem conflitos e termina. Divergência deliberada do modo autônomo do engineering-audit (que usa auto-merge): aqui o humano quer revisar antes de mesclar. Posicionado.
- Fontes: react.dev/learn, react.dev/reference, nextjs.org/docs e nextjs.org/learn como contexto da skill; versões reais (package.json) conferidas na implementação. Posicionado.
- Relatório: **a descrição do PR é o relatório** (o que foi feito + porquês, estado de cada fix, follow-ups), escrito ao final do ciclo antes de abrir o PR, e atualizado se o humano pedir mudanças. Posicionado.
## Referências
- GitHub Issue #901
- `.agents/skills/engineering-audit/SKILL.md`; `.agents/skills/agent-work-issue/SKILL.md`; `.agents/skills/work-issue/SKILL.md`
- `.agents/rules/engineering-standards.mdc`; `.agents/rules/codebase-map.mdc`
- `docs/AGENT-OPS.md`; `.github/workflows/agent-pr-ready-automerge.yml`
- `docs/plans/react-19-form-reset-campanha.md`