L’interface est localisée ; les présentations et documents des Skills sont traduits automatiquement par IA dans votre langue. Le code, les commandes, chemins et termes techniques restent en version originale, et le document de l’auteur fait foi.
Explorer les Skills
Productivité · SKILL.md

focused-fix

focused-fix

Use quando o usuário pedir para corrigir, depurar ou fazer uma funcionalidade/módulo/área específica funcionar de ponta a ponta. Gatilhos: 'faça X funcionar', 'corrija a funcionalidade Y', 'o módulo Z está quebrado', 'foque em [área]'. Não para correções rápidas de bug único — isso é para reparo sistemático e profundo em todos os arquivos e dependências.

Independent GitHub snapshot · Automated classification · Original documentation governs

Documentation de la Skill

GitHub

name: "focused-fix" description: "Use quando o usuário pedir para corrigir, depurar ou fazer uma funcionalidade/módulo/área específica funcionar de ponta a ponta. Gatilhos: 'faça X funcionar', 'corrija a funcionalidade Y', 'o módulo Z está quebrado', 'foque em [área]'. Não para correções rápidas de bug único — isso é para reparo sistemático e profundo em todos os arquivos e dependências." agents:

  • claude-code

Focused Fix — Reparo Profundo de Funcionalidade

Quando Usar

Ative quando o usuário pedir para corrigir, depurar ou fazer uma funcionalidade/módulo/área específica funcionar. Gatilhos principais:

  • "faça X funcionar"
  • "corrija a funcionalidade Y"
  • "o módulo Z está quebrado"
  • "foque em [área]"
  • "esta funcionalidade precisa funcionar corretamente"

Isso NÃO é para correções rápidas de bug único (use systematic-debugging para isso). Isso é para quando uma funcionalidade ou módulo inteiro precisa de reparo sistemático — rastreando cada dependência, lendo logs, verificando testes, mapeando o grafo completo de dependências.

digraph when_to_use {
    "User reports feature broken" [shape=diamond];
    "Single bug or symptom?" [shape=diamond];
    "Use systematic-debugging" [shape=box];
    "Entire feature/module needs repair?" [shape=diamond];
    "Use focused-fix" [shape=box];
    "Something else" [shape=box];

    "User reports feature broken" -> "Single bug or symptom?";
    "Single bug or symptom?" -> "Use systematic-debugging" [label="yes"];
    "Single bug or symptom?" -> "Entire feature/module needs repair?" [label="no"];
    "Entire feature/module needs repair?" -> "Use focused-fix" [label="yes"];
    "Entire feature/module needs repair?" -> "Something else" [label="no"];
}

A Lei de Ferro

SEM CORREÇÕES SEM COMPLETAR ESCOPO → RASTREAR → DIAGNOSTICAR PRIMEIRO

Se você não terminou a Fase 3, não pode propor correções. Ponto final.

Violar a letra dessas fases é violar o espírito do reparo focado.

Protocolo — Siga ESTRITAMENTE estas 5 fases EM ORDEM

digraph phases {
    rankdir=LR;
    SCOPE [shape=box, label="Fase 1\nESCOPO"];
    TRACE [shape=box, label="Fase 2\nRASTREAR"];
    DIAGNOSE [shape=box, label="Fase 3\nDIAGNOSTICAR"];
    FIX [shape=box, label="Fase 4\nCORRIGIR"];
    VERIFY [shape=box, label="Fase 5\nVERIFICAR"];

    SCOPE -> TRACE -> DIAGNOSE -> FIX -> VERIFY;
    FIX -> DIAGNOSE [label="correção quebrou\nalgo mais"];
    FIX -> ESCALATE [label="3+ correções\ncriam novos problemas"];
    ESCALATE [shape=doubleoctagon, label="PARE\nQuestione Arquitetura\nDiscuta com Usuário"];
}

Fase 1: ESCOPO — Mapear o Limite da Funcionalidade

Antes de tocar em qualquer código, entenda o escopo completo da funcionalidade.

  1. Pergunte ao usuário: "Em qual funcionalidade/pasta devo focar?" se ainda não estiver claro
  2. Identifique a pasta/arquivos PRIMÁRIOS para esta funcionalidade
  3. Mapeie TODOS os arquivos nessa pasta — leia cada um, entenda seu propósito
  4. Crie um manifesto de funcionalidade:
ESCOPO DA FUNCIONALIDADE:
  Caminho primário: src/features/auth/
  Pontos de entrada: [arquivos importados por outras partes do app]
  Arquivos internos: [arquivos usados apenas dentro desta funcionalidade]
  Total de arquivos: N
  Total de linhas: N

Fase 2: RASTREAR — Mapear Todas as Dependências (Dentro E Fora)

Rastreie cada conexão que esta funcionalidade tem com o resto da base de código.

ENTRADA (o que esta funcionalidade importa):

  1. Para cada declaração de importação em cada arquivo na pasta da funcionalidade:
    • Rastreie até a fonte
    • Verifique se o arquivo fonte existe
    • Verifique se a entidade importada (função, tipo, componente) existe e é exportada
    • Verifique se os tipos/assinaturas correspondem ao que a funcionalidade espera
  2. Verifique se há:
    • Variáveis de ambiente usadas (busque por process.env, import.meta.env, os.environ, etc.)
    • Arquivos de configuração referenciados
    • Modelos/schemas de banco de dados usados
    • Endpoints de API chamados
    • Pacotes de terceiros importados

SAÍDA (o que importa esta funcionalidade):

  1. Pesquise toda a base de código por importações desta pasta de funcionalidade
  2. Para cada consumidor:
    • Verifique se estão importando entidades que realmente existem
    • Verifique se estão usando a API/interface correta
    • Note se algum consumidor está usando padrões depreciados

Formato de saída:

MAPA DE DEPENDÊNCIAS:
  Entrada (esta funcionalidade depende de):
    src/lib/db.ts → usado em auth/repository.ts (getUserById, createUser)
    src/lib/jwt.ts → usado em auth/service.ts (signToken, verifyToken)
    @prisma/client → usado em auth/repository.ts
    process.env.JWT_SECRET → usado em auth/service.ts
    process.env.DATABASE_URL → usado via prisma

  Saída (depende desta funcionalidade):
    src/app/api/login/route.ts → importa { login } de auth/service
    src/app/api/register/route.ts → importa { register } de auth/service
    src/middleware.ts → importa { verifyToken } de auth/service

  Variáveis de env necessárias: JWT_SECRET, DATABASE_URL
  Arquivos de configuração: prisma/schema.prisma (modelo User)

Fase 3: DIAGNOSTICAR — Encontrar Todos os Problemas

Verifique sistematicamente se há problemas. Execute TODAS estas verificações:

QUALIDADE DO CÓDIGO:

  • Cada importação resolve para um arquivo/exportação real
  • Sem dependências circulares dentro da funcionalidade
  • Tipos são consistentes entre limites (sem any em interfaces)
  • Tratamento de erro existe para todas as operações async
  • Sem comentários TODO/FIXME/HACK indicando problemas conhecidos

RUNTIME:

  • Todas as variáveis de ambiente necessárias estão definidas (verifique .env)
  • Migrações de banco de dados estão atualizadas (se aplicável)
  • Endpoints de API retornam formas esperadas
  • Sem valores hardcoded que deveriam ser configuráveis

TESTES:

  • Execute TODOS os testes relacionados a esta funcionalidade: encontre-os buscando por importações da pasta da funcionalidade
  • Registre cada falha com saída de erro completa
  • Verifique cobertura de testes — há caminhos de código não testados?

LOGS E ERROS:

  • Pesquise por quaisquer arquivos de log, relatórios de erro ou rastreamento de erro estilo Sentry
  • Verifique o log do git para mudanças recentes nesta funcionalidade: git log --oneline -20 -- <feature-path>
  • Verifique se commits recentes podem ter quebrado algo: git log --oneline -5 --all -- <arquivos dos quais esta funcionalidade depende>

CONFIGURAÇÃO:

  • Verifique se todos os arquivos de configuração dos quais esta funcionalidade depende são válidos
  • Verifique se há incompatibilidades entre configs de desenvolvimento e produção
  • Verifique se credenciais de serviços de terceiros são válidas (se testável)

CONFIRMAÇÃO DE CAUSA RAIZ: Para cada problema CRÍTICO encontrado, confirme a causa raiz antes de adicioná-lo à lista de correção:

  • Declare claramente: "Acho que X é a causa raiz porque Y"
  • Rastreie o fluxo de dados/controle para trás para verificar — não confie em sintomas superficiais
  • Se o problema abranger múltiplos componentes, adicione logging de diagnóstico em cada limite para identificar qual camada falha
  • SUB-SKILL OBRIGATÓRIA: Para bugs complexos encontrados durante o diagnóstico, aplique a Fase 1 de superpowers:systematic-debugging (Investigação de Causa Raiz) para confirmar antes de prosseguir

ROTULAGEM DE RISCO: Atribua a cada problema um rótulo de risco:

RiscoCritérios
ALTOSuperfície de API pública / contrato de interface quebrável / schema de BD / lógica de auth ou segurança / módulo amplamente importado (>3 chamadores) / hotspot do git
MÉDIOMódulo interno com testes / utilitário compartilhado / config com impacto de runtime / chamadores internos de funções alteradas
BAIXOMódulo folha / arquivo isolado / mudança somente de teste / helper de propósito único sem chamadores

Formato de saída:

RELATÓRIO DE DIAGNÓSTICO:
  Problemas encontrados: N

  CRÍTICOS:
    1. [ALTO] [arquivo:linha] — descrição do problema. Causa raiz: [explicação confirmada]
    2. [ALTO] [arquivo:linha] — descrição do problema. Causa raiz: [explicação confirmada]

  AVISOS:
    1. [MÉDIO] [arquivo:linha] — descrição do problema
    2. [BAIXO] [arquivo:linha] — descrição do problema

  TESTES:
    Executados: N testes
    Aprovados: N
    Falhos: N
    [liste cada falha com resumo de uma linha]

Fase 4: CORRIGIR — Reparar Tudo Sistematicamente

Corrija os problemas nesta EXATA ordem:

  1. DEPENDÊNCIAS PRIMEIRO — corrija importações quebradas, pacotes ausentes, versões erradas
  2. TIPOS SEGUNDO — corrija incompatibilidades de tipo nos limites da funcionalidade
  3. LÓGICA TERCEIRO — corrija bugs de lógica de negócio reais
  4. TESTES QUARTO — corrija ou crie testes para cada correção
  5. INTEGRAÇÃO POR ÚLTIMO — verifique se a funcionalidade funciona de ponta a ponta com seus consumidores

Regras:

  • Corrija UM problema por vez
  • Após cada correção, execute o teste relacionado para confirmar que funciona
  • Se uma correção quebrar outra coisa, PARE e reavalie (volte para DIAGNOSTICAR)
  • Mantenha um log em execução de cada mudança feita
  • Nunca mude código fora da pasta da funcionalidade sem declarar explicitamente o porquê
  • Corrija problemas de risco ALTO antes de MÉDIO, MÉDIO antes de BAIXO

REGRA DE ESCALADA — Verificação de Arquitetura em 3 Tentativas: Se 3+ correções nesta fase criarem NOVOS problemas (não pré-existentes), PARE imediatamente.

Este padrão indica um problema arquitetural, não uma coleção de bugs:

  • Cada correção revela novo estado compartilhado / acoplamento / problema em um lugar diferente
  • Correções requerem "grande refatoração" para implementar
  • Cada correção cria novos sintomas em outro lugar

Ação: Pare de corrigir. Diga ao usuário: "3+ correções cascatearam em novos problemas. Isso sugere que a arquitetura da funcionalidade pode precisar ser repensada, não corrigida. Aqui está o que encontrei: [resumo]. Devemos continuar corrigindo sintomas ou discutir a reestruturação?"

NÃO tente a correção nº 4 sem esta discussão.

Formato de saída após cada correção:

CORREÇÃO #1:
  Arquivo: auth/service.ts:45
  Problema: signToken chamado com ordem de argumento errada
  Mudança: trocou (expiresIn, payload) para (payload, expiresIn)
  Teste: auth.test.ts → APROVADO

Fase 5: VERIFICAR — Confirmar que Tudo Funciona

Após todas as correções serem aplicadas:

  1. Execute TODOS os testes na pasta da funcionalidade — cada um deve passar
  2. Execute TODOS os testes em arquivos que IMPORTAM desta funcionalidade — devem passar
  3. Execute o conjunto completo de testes se disponível — verifique regressões
  4. Se a funcionalidade tem UI, descreva como verificá-la manualmente
  5. Resuma todas as mudanças feitas

Saída final:

FOCUSED FIX CONCLUÍDO:
  Funcionalidade: auth
  Arquivos alterados: 4
  Total de correções: 7
  Testes: 23/23 aprovados
  Regressões: 0

  Mudanças:
    1. auth/service.ts — corrigida ordem de argumento de assinatura de token
    2. auth/repository.ts — adicionada verificação de nulo para busca de usuário
    3. auth/middleware.ts — corrigido tratamento de erro async
    4. auth/types.ts — tipo UserResponse alinhado com schema real de BD

  Consumidores verificados:
    - src/app/api/login/route.ts ✅
    - src/app/api/register/route.ts ✅
    - src/middleware.ts ✅

Sinais de Alerta — PARE e Retorne à Fase Atual

Se você se pegar pensando em qualquer um destes, está pulando fases:

  • "Posso ver o bug, deixe-me apenas corrigi-lo" → PARE. Você não rastreou dependências ainda.
  • "Determinar o escopo é exagero, é obviamente apenas este arquivo" → PARE. Isso está sempre errado para correções em nível de funcionalidade.
  • "Vou mapear dependências após corrigir as coisas óbvias" → PARE. Você perderá causas raiz.
  • "O usuário disse para corrigir X, então só preciso olhar para X" → PARE. Funcionalidades têm dependências.
  • "Os testes estão passando, então terminei" → PARE. Você executou os testes dos consumidores também?
  • "Não preciso verificar variáveis de env para isso" → PARE. Problemas de configuração se disfarçam de bugs de código.
  • "Mais uma correção deve resolver" (após 2+ falhas em cascata) → PARE. Escale.
  • "Vou pular o relatório de diagnóstico, as correções são óbvias" → PARE. Escreva.

TODOS esses significam: Retorne à fase em que deveria estar.

Racionalizações Comuns

DesculpaRealidade
"A funcionalidade é pequena, não preciso de todas as 5 fases"Funcionalidades pequenas também têm dependências. As Fases 1-2 levam minutos para funcionalidades pequenas — faça-as.
"Já conheço esta base de código"O conhecimento decai. Rastreie as importações reais, não confie na memória.
"O usuário quer velocidade, não processo"Pular fases causa retrabalho. Sistemático é mais rápido que se debater.
"Apenas um arquivo está quebrado"Se apenas um arquivo estivesse quebrado, o usuário diria "corrija este bug", não "faça a funcionalidade funcionar."
"Corrigi os testes, então funciona"Os testes podem passar enquanto os consumidores estão quebrados. Verifique a Fase 5 completamente.
"O mapa de dependências é grande demais para rastrear"Então a funcionalidade é grande demais para corrigir sem rastrear. É exatamente por isso que você precisa disso.
"A causa raiz é óbvia, não preciso confirmar"Causas raiz "óbvias" estão erradas 40% do tempo. Confirme com evidência.
"3 falhas em cascata são normais para uma grande correção"3 falhas em cascata significa que você está corrigindo sintomas de um problema arquitetural.

Anti-Padrões — NUNCA faça isso

Anti-PadrãoPor Que Está Errado
Começar a corrigir código antes de mapear todas as dependênciasVocê perderá causas raiz e criará correções do tipo bater e correr
Corrigir apenas o arquivo que o usuário mencionouArquivos relacionados provavelmente também têm problemas
Ignorar variáveis de ambiente e configuraçãoMuitos "bugs de código" são na verdade problemas de configuração
Pular a fase de execução de testesVocê não pode verificar correções sem executar testes
Fazer mudanças fora da pasta da funcionalidade sem explicar o porquêEfeitos colaterais inesperados confundem o usuário
Corrigir sintomas em arquivos consumidores em vez de causa raiz na funcionalidadeCurativos que quebram quando o próximo consumidor aparece
Declarar "feito" sem executar testes de verificaçãoCorreções não testadas são correções não verificadas
Mudar a API pública sem atualizar todos os consumidoresQuebra tudo que depende da funcionalidade

Skills Relacionadas

  • superpowers:systematic-debugging — Use dentro da Fase 3 para rastreamento de causa raiz de bugs individuais complexos
  • superpowers:verification-before-completion — Use dentro da Fase 5 antes de afirmar que a funcionalidade está corrigida
  • scope — Se você precisar entender o raio de blast antes de começar, execute scope primeiro e depois focused-fix

Referência Rápida

FaseAção PrincipalSaída
ESCOPOLeia cada arquivo, mapeie pontos de entradaManifesto de funcionalidade
RASTREARMapeie dependências de entrada + saídaMapa de dependências
DIAGNOSTICARVerifique código, runtime, testes, logs, configRelatório de diagnóstico
CORRIGIRCorrija em ordem: deps → tipos → lógica → testes → integraçãoLog de correção por problema
VERIFICARExecute todos os testes, verifique consumidores, resumaRelatório de conclusão
Skills enregistrées