Claude-skill-registry Code
Fase 3 - Implementation Protocol. Le Spec.md, solicita arquivos originais, aplica mudancas CIRURGICAS linha por linha, valida multi-tenant, testa e documenta. Preserva logica, zero improviso.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/code" ~/.claude/skills/majiayu000-claude-skill-registry-code && rm -rf "$T"
manifest:
skills/data/code/SKILL.mdsource content
FASE 3: IMPLEMENTATION (SURGICAL EXECUTION)
Objetivo
Executar especificacao tecnica com precisao cirurgica, sem improviso, preservando logica existente.
INPUT OBRIGATORIO
Carregar Spec
# Localizar Spec gerado na Fase 2 ls -la .claude/docs/SPEC-*.md # Ler Spec completo cat .claude/docs/SPEC-[nome-tarefa].md
PROTOCOLO DE IMPLEMENTACAO
FASE 1: VALIDACAO PRE-EXECUCAO
1.1 Checklist de Seguranca
- Spec completo e claro
- Arquivos listados existem
- Mudancas linha por linha definidas
- Rollback plan documentado
1.2 Preparar Ambiente
# Verificar branch atual git branch --show-current # Criar branch para feature (se nao existir) git checkout -b feat/[nome-tarefa] # Backup de arquivos criticos (se destrutivo) cp [arquivo-critico].js [arquivo-critico].js.backup
FASE 2: SOLICITAR ARQUIVOS ORIGINAIS
2.1 NUNCA Modificar Sem Ver
# Para CADA arquivo listado no Spec: cat [caminho/completo/arquivo.js] # Ler COMPLETAMENTE, nao apenas a linha alvo # Entender contexto antes/depois da mudanca
2.2 Principio da Preservacao
- Ler arquivo completo
- Identificar logica de negocio
- Preservar fluxo existente
- Mudanca cirurgica APENAS onde especificado
FASE 3: EXECUTAR MUDANCAS (Ordem do Spec)
3.1 Seguir Ordem Exata
1. Models (estrutura de dados) | 2. Controllers (logica backend) | 3. Routes (endpoints) | 4. Services (se houver) | 5. Frontend JS (logica cliente) | 6. Frontend HTML (UI) | 7. Frontend CSS (estilos)
3.2 Executar Mudanca Cirurgica
// Spec diz: "Linha 45: ADICIONAR" // PROCEDIMENTO: // 1. cat arquivo.js (ver arquivo completo) // 2. Localizar linha 45 // 3. Entender contexto (linhas 40-50) // 4. Aplicar mudanca EXATA do Spec // 5. Preservar restante do arquivo
3.3 Validar Apos Cada Arquivo
# Syntax check node --check [arquivo-modificado].js # Se frontend: grep -n "console.log\|debugger" [arquivo].js # Remover debug # Verificar imports grep -n "require\|import" [arquivo].js
FASE 4: VALIDACOES CRITICAS
4.1 Multi-Tenant (OBRIGATORIO)
# Verificar TODAS as queries grep -n "\.find\|\.findOne\|\.updateMany" [arquivo].js # Cada query DEVE ter liga_id: Model.find({ liga_id: ligaId, // OBRIGATORIO temporada: temporada })
4.2 Seguranca
# Rotas protegidas? grep -n "router\.\(post\|put\|delete\)" routes/[arquivo].js # Devem ter middleware: router.post('/endpoint', verificarAdmin, // Protecao validarLigaId, // Multi-tenant controller.acao )
4.3 Performance
# Queries com .lean()? grep -n "\.find\|\.findOne" [arquivo].js | grep -v "lean" # Adicionar .lean() em reads: Model.find({ ... }).lean() // Economia de memoria
FASE 5: TESTES
5.1 Testes Unitarios (se existirem)
# Rodar testes do modulo npm test -- [modulo] # Se falhar, corrigir antes de continuar
5.2 Teste Manual (obrigatorio)
- Seguir casos de teste do Spec
- Validar cenarios positivos
- Validar cenarios negativos
- Testar edge cases
5.3 Validacao Multi-Liga
# Testar com liga SuperCartola (32 times) # Testar com liga Sobral (4-6 times) # Garantir isolamento de dados
PADRAO DE COMMITS
Mensagem Estruturada
git commit -m "tipo(escopo): descricao curta - Mudanca 1 especifica - Mudanca 2 especifica - Mudanca 3 especifica Ref: SPEC-[nome].md "
Tipos de Commit
: Nova funcionalidadefeat
: Correcao de bugfix
: Refatoracao sem mudar comportamentorefactor
: Melhoria de performanceperf
: Mudancas de formatacaostyle
: Apenas documentacaodocs
: Adicionar/corrigir testestest
PROTOCOLO DE TESTES
Teste 1: Funcionalidade Basica
async function testar() { const ligaId = '684cb1c8af923da7c7df51de'; const participanteId = 'test-id'; const resultado = await controller.novaFuncao(participanteId, ligaId); console.assert(resultado.saldoTotal !== undefined, 'Saldo deve existir'); console.log('Teste 1 passou'); }
Teste 2: Multi-Tenant Isolation
async function testarMultiTenant() { const liga1 = '684cb1c8af923da7c7df51de'; const liga2 = '684d821cf1a7ae16d1f89572'; await Model.create({ liga_id: liga1, dados: 'teste1' }); const resultado = await Model.find({ liga_id: liga2 }); console.assert(resultado.length === 0, 'Isolamento multi-tenant OK'); console.log('Teste Multi-Tenant passou'); }
CHECKLIST FINAL
Codigo
- Todas mudancas do Spec aplicadas
- Arquivos originais preservados (logica intacta)
- Syntax check passou
- Sem console.log de debug
- Sem codigo comentado desnecessario
Seguranca
- Queries com liga_id
- Rotas protegidas com middleware
- Inputs validados
- Errors tratados
Performance
- Queries com .lean() (reads)
- Indices verificados
- Sem N+1 queries
Testes
- Funcionalidade basica testada
- Multi-tenant validado
- Cenarios negativos testados
- Edge cases cobertos
Documentacao
- Commits descritivos
- README atualizado (se necessario)
- CHANGELOG atualizado
- pending-tasks.md marcado como concluido
ANTI-PATTERNS (NAO FAZER)
Improvisar Mudancas
// Spec: "Adicionar linha 45" // ERRADO: Adicionar na linha 50 porque "parece melhor" // CORRETO: Adicionar EXATAMENTE na linha 45 // Se achar que Spec esta errado, PARAR e revisar Spec
Modificar Sem Ver Original
// ERRADO: str_replace(old_str: "linha que eu acho que existe") // CORRETO: cat arquivo.js // Ver PRIMEIRO str_replace(old_str: "linha exata copiada do arquivo")
Quebrar Logica Existente
// ERRADO: Remover codigo "que parece nao usar" // Sem ver quem chama // CORRETO: grep -r "funcaoAntiga" . // Ver quem usa // So remover se NINGUEM usa
Ignorar Multi-Tenant
// ERRADO: Model.find({}) // Query global // CORRETO: Model.find({ liga_id: ligaId }) // SEMPRE filtrar
FINALIZACAO
Marcar Tarefa como Concluida
# pending-tasks.md ## Concluidas - [x] Implementar [nome da funcionalidade] - **Concluido:** [data] - **Arquivos:** [lista] - **Commits:** [hashes] - **Branch:** feat/[nome] - **Testes:** Passaram - **Deploy:** Pendente
Preparar para Review/Merge
# Atualizar branch com main git fetch origin git rebase origin/main # Push para review git push origin feat/[nome] # Ou merge direto (se nao houver PR) git checkout main git merge feat/[nome] git push origin main
STATUS: CODE PROTOCOL - SURGICAL & TESTED Versao: 1.0 (High Senior Edition)