| name | Spec |
| description | Fase 2 - Specification Protocol. Le PRD.md, aplica S.D.A completo (mapeia TODAS dependencias), define mudancas cirurgicas linha por linha e gera Spec.md. Preserva logica existente, mudancas minimas focadas. |
FASE 2: SPECIFICATION (SURGICAL PLANNING)
Objetivo
Transformar PRD em especificacao tecnica precisa com mudancas cirurgicas linha por linha.
INPUT OBRIGATORIO
Carregar PRD
ls -la .claude/docs/PRD-*.md
cat .claude/docs/PRD-[nome-tarefa].md
PROTOCOLO S.D.A COMPLETO
FASE 1: SOLICITACAO (Arquivos Originais)
1.1 Solicitar Todos os Arquivos do PRD
cat controllers/extratoController.js
1.2 Analisar Linha por Linha
- Identificar funcoes principais
- Mapear variaveis usadas
- Entender fluxo de dados
- Detectar dependencias internas
FASE 2: MAPEAMENTO DE DEPENDENCIAS
2.1 Links Diretos (HTML)
grep -r "href=.*[nome-arquivo]" . --include="*.html"
2.2 JavaScript Imports
grep -r "require.*[nome-arquivo]\|import.*[nome-arquivo]" . --include="*.js"
2.3 IDs e Classes CSS
grep -r "#[id-elemento]" . --include="*.js" --include="*.css"
grep -r "\.[classe]" . --include="*.js" --include="*.css"
2.4 Formularios e Rotas
grep -r "fetch.*[endpoint]\|action=.*[endpoint]" public/
FASE 3: VERIFICACAO CRUZADA
3.1 Solicitar Arquivos Dependentes
cat [arquivo-que-importa].js
cat [arquivo-com-link].html
3.2 Documentar Impactos
- Arquivo A usa funcao X -> Precisa atualizar importacao
- Arquivo B tem link para Y -> Precisa ajustar href
FASE 4: IMPLEMENTACAO SEGURA
4.1 Propor Alteracoes Minimas
async function calcularSaldo() {
}
async function calcularSaldo() {
const saldoAcertos = await calcularSaldoAcertos(participanteId);
return saldoTotal + saldoAcertos;
}
GERAR SPEC.MD
Estrutura Obrigatoria
# SPEC - [Nome da Funcionalidade]
**Data:** [data atual]
**Baseado em:** PRD-[nome].md
**Status:** Especificacao Tecnica
---
## Resumo da Implementacao
[1 paragrafo: O que sera feito tecnicamente]
---
## Arquivos a Modificar (Ordem de Execucao)
### 1. [Arquivo Principal] - Mudanca Primaria
**Path:** `[caminho completo]`
**Tipo:** Modificacao | Criacao | Delecao
**Impacto:** Alto | Medio | Baixo
**Dependentes:** [Arquivo X, Y, Z]
#### Mudancas Cirurgicas:
**Linha [num]: ADICIONAR**
```javascript
[codigo a adicionar]
Motivo: [Explicacao]
Linha [num]: MODIFICAR
[codigo antigo]
[codigo novo]
Motivo: [Explicacao]
2. [Arquivo Dependente] - Ajuste de Integracao
Path: [caminho completo]
Tipo: Modificacao
Impacto: Baixo
Mudancas Cirurgicas:
Linha [num]: ATUALIZAR IMPORTACAO
import { funcaoAntiga } from './modulo';
import { funcaoAntiga, funcaoNova } from './modulo';
Mapa de Dependencias
Arquivo Principal (controllers/extratoController.js)
|-> routes/extrato-routes.js [MODIFICAR linha 23]
|-> public/js/extrato/core.js [MODIFICAR linha 45]
|-> public/participante/fronts/extrato.html [ADICIONAR botao]
Validacoes de Seguranca
Multi-Tenant
Queries Afetadas:
Model.find({
liga_id: ligaId,
});
Autenticacao
Middlewares Aplicados:
router.post('/endpoint',
verificarAdmin,
validarLigaId,
controller.acao
);
Validacoes de Performance
Queries MongoDB
Queries a verificar:
Model.find({ liga_id: ligaId, temporada }).lean()
const times = await Time.find({ liga_id });
for (const time of times) {
time.extrato = await Extrato.findOne({ time_id: time.id });
}
const extratos = await Extrato.find({ liga_id, time_id: { $in: timeIds } }).lean();
Indices Necessarios
db.collection.createIndex({ liga_id: 1, temporada: 1, time_id: 1 });
Volume de Dados
Casos de Teste
Teste 1: [Cenario Positivo]
Setup: [Condicao inicial]
Acao: [Passo a passo]
Resultado Esperado: [O que deve acontecer]
Teste 2: [Cenario Negativo]
Setup: [Condicao inicial]
Acao: [Passo a passo com erro]
Resultado Esperado: [Tratamento de erro]
Rollback Plan
Em Caso de Falha
Passos de Reversao:
- Reverter commit:
git revert [hash]
- Restaurar banco (se aplicavel)
- Limpar cache
Checklist de Validacao
Antes de Implementar
Ordem de Execucao (Critico)
-
Backend primeiro:
- Models (schema)
- Controllers (logica)
- Routes (endpoints)
-
Frontend depois:
- JS (logica cliente)
- HTML (UI)
- CSS (estilos)
-
Testes:
- Unitarios (se existirem)
- Integracao
- E2E (manual)
Proximo Passo
Comando para Fase 3:
LIMPAR CONTEXTO e executar:
/code .claude/docs/SPEC-[nome].md
Gerado por: Spec Protocol v1.0
### Onde Salvar
```bash
path=".claude/docs/SPEC-[nome-tarefa-kebab-case].md"
Checklist S.D.A (Verificacao Final)
Arquivos Solicitados
Dependencias Mapeadas
Mudancas Documentadas
Seguranca e Validacoes
Anti-Patterns (NAO FAZER)
Modificar Sem Ver Original
ERRADO: "Vou adicionar linha 45 sem ver o arquivo"
CORRETO: cat [arquivo].js primeiro
Analisar contexto da linha 45
Garantir que mudanca nao quebra logica adjacente
Ignorar Dependencias
ERRADO: "Modifico apenas o controller, o resto se resolve"
CORRETO: Mapear TODOS os arquivos que usam o controller
Ajustar rotas, frontend, testes
Verificar importacoes
Reescrever Tudo
ERRADO: function novaFuncao() { /* 100 linhas novas */ }
CORRETO: Preservar funcao existente
Adicionar apenas 2-3 linhas necessarias
Manter compatibilidade
STATUS: SPEC PROTOCOL - SURGICAL & PRECISE
Versao: 1.0 (High Senior Edition)