ag-refatorar

This commit is contained in:
Luiz Silva 2026-06-19 09:26:10 -03:00
parent 1388a121bc
commit 22023df81e
9 changed files with 760 additions and 11 deletions

View file

@ -0,0 +1,56 @@
---
type: rule
name: refatoracao-segura
description: Toda refatoração deve preservar comportamento e ter cobertura de testes
scope: local
trigger: always_on
updatedAt: "2026-06-19"
---
# Regra: Refatoração Segura
## Contexto
Refatoração é a melhoria da estrutura interna do código **sem alterar seu comportamento externo**. Sem essa garantia, refatoração vira regressão.
## Regra
Antes de executar qualquer refatoração, verificar:
1. **Testes existem** — o comportamento que será afetado tem cobertura
2. **Testes passam** — o estado antes da mudança é verde
3. **Passos pequenos** — cada mudança deve ser verificável isoladamente
4. **Sem surpresas** — nenhuma funcionalidade nova introduzida junto com refatoração
Se não há testes cobrindo o trecho:
- **PARAR** a refatoração
- Solicitar ao `@ag-testes` a criação de testes de cobertura
- Só prosseguir após testes existirem e passarem
## Exemplos
### ✅ Correto
```
1. Verificar testes existentes para `calcularLicenca()`
2. Executar testes → todos passam
3. Extrair cálculo de multa para `calcularMulta()`
4. Executar testes → todos passam
5. Commit: "refactor: extrair calcularMulta de calcularLicenca"
```
### ❌ Incorreto
```
1. Refatorar `calcularLicenca()` inteiro
2. Adicionar nova regra de desconto (feature!)
3. Descobrir que não tinha testes
4. Commit: "refactor: melhorar cálculos" ← mentira, é feature + refatoração
```
## Impacto
Sem esta regra, refatorações introduzem regressões silenciosas que só são descobertas em produção.
## Referências
- Martin Fowler — "Refactoring: Improving the Design of Existing Code"
- Persona: `agents/ag-refatorar/persona.md`