Claude-skill-registry fact-checker
Protocolo Anti-Alucinacao. Valida TODAS as afirmacoes antes de responder. Usa MCPs, busca no codebase e verifica dados no MongoDB. NUNCA assume, SEMPRE verifica. Use quando precisar de respostas 100% factuais ou para validar informacoes criticas.
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/fact-checker" ~/.claude/skills/majiayu000-claude-skill-registry-fact-checker && rm -rf "$T"
skills/data/fact-checker/SKILL.mdFact Checker Skill - Protocolo Anti-Alucinacao
Missao
Eliminar alucinacoes garantindo que TODA afirmacao seja verificada em fonte primaria antes de ser apresentada ao usuario.
REGRA DE OURO: VERIFICAR ANTES DE AFIRMAR
NUNCA FACA:
- Assumir que um arquivo existe sem verificar
- Afirmar estrutura de dados sem consultar schema
- Citar numeros/estatisticas sem fonte
- Dizer "provavelmente" ou "deve ser"
- Inventar nomes de funcoes, variaveis ou arquivos
- Extrapolar comportamento sem evidencia no codigo
SEMPRE FACA:
- Verificar existencia de arquivos com
ouGlobls - Ler o arquivo ANTES de comentar sobre seu conteudo
- Consultar MongoDB para dados reais
- Usar Grep para localizar funcoes/variaveis
- Citar linha exata do codigo fonte
- Dizer "nao encontrei" quando nao encontrar
PROTOCOLO DE VERIFICACAO (V.E.R.I.F.Y)
V - Validate Existence (Validar Existencia)
Antes de mencionar qualquer arquivo, verificar se existe:
# ERRADO: Assumir que arquivo existe "O arquivo controllers/pagamentoController.js..." # CERTO: Verificar primeiro ls -la controllers/ | grep -i pagamento # Se nao encontrar: find . -name "*pagamento*" -type f
E - Extract Real Data (Extrair Dados Reais)
Nunca inventar dados. Sempre consultar fonte:
# Para dados do MongoDB: mcp__mongo__find_documents({ collection: "times", query: '{"temporada": 2026}', limit: 5 }) # Para estrutura de collections: mcp__mongo__get_collection_schema({ collection: "extratofinanceirocaches", sampleSize: 3 })
R - Read Before Responding (Ler Antes de Responder)
NUNCA comentar sobre codigo sem ler:
# ERRADO: "A funcao calcularSaldo provavelmente faz X..." # CERTO: Ler primeiro cat controllers/extratoFinanceiroCacheController.js | grep -A 20 "calcularSaldo" # Entao comentar com base no codigo real
I - Investigate Dependencies (Investigar Dependencias)
Mapear conexoes reais entre arquivos:
# Quem usa esta funcao? grep -rn "calcularSaldo" . --include="*.js" # Quais arquivos importam este modulo? grep -rn "require.*extratoFinanceiroCache" . --include="*.js"
F - Find External Sources (Buscar Fontes Externas)
Para informacoes fora do codebase:
// API/Framework documentation: mcp__context7__query_docs({ libraryId: "/expressjs/express", query: "middleware error handling" }) // Informacoes nao-documentadas (API Cartola): mcp__perplexity__perplexity_ask({ messages: [{ role: "user", content: "Quais endpoints da API Cartola FC retornam dados de mercado?" }] })
Y - Yield Uncertainty (Admitir Incerteza)
Quando nao encontrar evidencia:
# ERRADO: "A funcao X faz Y" (sem evidencia) # CERTO: "Nao encontrei a funcao X no codebase. Verifiquei em: - controllers/ (0 resultados) - services/ (0 resultados) - routes/ (0 resultados) Pode estar em outro local ou nao existir."
NIVEIS DE CONFIANCA
ALTA CONFIANCA (Afirmar)
Usar quando:
- Leu o arquivo e viu o codigo
- Consultou MongoDB e obteve dados
- Verificou com MCP e tem fonte
Formato:
A funcao `calcularSaldo` em `controllers/extratoFinanceiroCacheController.js:142` retorna o saldo calculado como Number. [Fonte: leitura direta do arquivo]
MEDIA CONFIANCA (Indicar)
Usar quando:
- Encontrou referencia mas nao o codigo completo
- MCP retornou informacao parcial
- Grep encontrou mas contexto incerto
Formato:
Encontrei referencias a `calcularSaldo` em 3 arquivos: - controllers/extratoFinanceiroCacheController.js:142 - services/financeiro.js:89 - public/js/fluxo-financeiro/core.js:201 Preciso ler os arquivos para confirmar comportamento.
BAIXA CONFIANCA (Ressalvar)
Usar quando:
- Nao encontrou no codebase
- MCP nao retornou resultado
- Baseado em inferencia
Formato:
NAO ENCONTREI esta funcao no codebase atual. Busquei em: controllers/, services/, routes/, models/ Possibilidades: 1. Nome diferente do esperado 2. Funcao ainda nao implementada 3. Removida em refatoracao recente
CHECKLIST DE VALIDACAO
Antes de responder, verificar:
Para Afirmacoes sobre Codigo
- Li o arquivo que menciono?
- Citei linha exata?
- Verifiquei se funcao existe?
- Confirmei nome correto (case-sensitive)?
Para Afirmacoes sobre Dados
- Consultei MongoDB?
- Dados sao da temporada correta?
- Verifiquei collection certa?
- Filtrei por liga_id (multi-tenant)?
Para Afirmacoes sobre APIs/Libs
- Usei Context7 para docs oficiais?
- Versao da lib esta correta?
- Exemplo e compativel com Node.js?
Para Afirmacoes sobre Regras de Negocio
- Encontrei no CLAUDE.md?
- Verificou modelo LigaRules?
- Consultou documentacao do sistema?
SCRIPTS DE VERIFICACAO RAPIDA
Verificar Existencia de Arquivo
# Por nome exato ls -la [path/arquivo.js] 2>/dev/null || echo "ARQUIVO NAO EXISTE" # Por padrao find . -name "*[palavra-chave]*" -type f 2>/dev/null
Verificar Funcao Existe
# Grep com contexto grep -rn "function [nomeFuncao]\|[nomeFuncao]\s*=\s*function\|[nomeFuncao]\s*=\s*async" --include="*.js"
Verificar Dados no MongoDB
// Listar collections mcp__mongo__list_collections() // Buscar documentos mcp__mongo__find_documents({ collection: "times", query: '{"nome_time": {"$regex": "Flamengo", "$options": "i"}}', limit: 5 }) // Ver schema mcp__mongo__get_collection_schema({ collection: "rodadas", sampleSize: 3 })
Verificar Documentacao Externa
// Docs oficiais (Context7) mcp__context7__resolve_library_id({ query: "mongoose findOneAndUpdate", libraryName: "mongoose" }) mcp__context7__query_docs({ libraryId: "/mongoose/mongoose", query: "findOneAndUpdate options" }) // Info nao-documentada (Perplexity) mcp__perplexity__perplexity_search({ query: "API Cartola FC endpoints 2026", max_results: 5 })
TRATAMENTO DE ERROS
Quando Arquivo Nao Existe
VERIFICACAO: Arquivo `controllers/pagamentoController.js` RESULTADO: NAO ENCONTRADO Busca realizada: 1. `ls controllers/` - Nao listado 2. `find . -name "*pagamento*"` - 0 resultados 3. `grep -r "pagamento" controllers/` - 0 resultados CONCLUSAO: Este arquivo NAO existe no codebase atual. Arquivos de controllers existentes: [listar os reais]
Quando Funcao Nao Existe
VERIFICACAO: Funcao `processarPagamento` RESULTADO: NAO ENCONTRADA Busca realizada: 1. `grep -rn "processarPagamento" .` - 0 resultados 2. `grep -rn "processar.*pagamento" .` - 0 resultados CONCLUSAO: Esta funcao NAO existe. Funcoes similares encontradas: - `registrarAcertoFinanceiro` em controllers/acertoFinanceiroController.js:45 - `calcularSaldo` em controllers/extratoFinanceiroCacheController.js:142
Quando Dados Nao Existem
VERIFICACAO: Collection `pagamentos` RESULTADO: NAO ENCONTRADA Collections existentes no banco: - times - rodadas - extratofinanceirocaches - fluxofinanceirocampos - acertofinanceiros - ligarules CONCLUSAO: Collection `pagamentos` NAO existe. Dados financeiros estao em: acertofinanceiros, fluxofinanceirocampos
FORMATO DE RESPOSTA VERIFICADA
Estrutura Padrao
## [Topico/Pergunta] ### Verificacao Realizada - [ ] Arquivo X lido: `path/arquivo.js` - [ ] Collection Y consultada: `collection_name` - [ ] MCP Z usado: Context7/Perplexity ### Resposta Verificada [Resposta baseada APENAS em evidencias encontradas] ### Fontes 1. `path/arquivo.js:linha` - [o que encontrou] 2. MongoDB collection `X` - [dados relevantes] 3. MCP Context7 - [documentacao citada] ### Incertezas Remanescentes - [Se houver algo que nao conseguiu verificar]
ANTI-PATTERNS (O QUE NAO FAZER)
1. Resposta Inventada
# ERRADO "O sistema usa a funcao `processarCompra()` para gerenciar transacoes..." (Sem ter verificado se essa funcao existe) # CERTO Primeiro: grep -rn "processarCompra" . --include="*.js" Se nao encontrar: "Nao encontrei funcao `processarCompra`. Funcoes de transacao encontradas: [listar as reais]"
2. Estrutura de Dados Inventada
# ERRADO "O documento de participante tem campos: nome, email, saldo..." (Sem consultar schema real) # CERTO Primeiro: mcp__mongo__get_collection_schema({ collection: "times", sampleSize: 3 }) Entao: "O schema real inclui: id, nome_time, nome_cartoleiro, ativo, temporada..."
3. Numero/Estatistica Inventada
# ERRADO "O sistema tem aproximadamente 50 participantes..." (Sem consultar banco) # CERTO Primeiro: mcp__mongo__find_documents({ collection: "times", query: '{"temporada": 2026}', limit: 100 }) Entao: "Encontrei X participantes na temporada 2026."
4. Path de Arquivo Inventado
# ERRADO "Edite o arquivo src/controllers/userController.js..." (Sem verificar estrutura real) # CERTO Primeiro: ls -la controllers/ && find . -name "*user*" -type f Entao: Citar path REAL encontrado ou informar que nao existe
QUANDO ATIVAR ESTE PROTOCOLO
Uso Automatico (Sempre Ativo)
- Afirmacoes sobre codigo existente
- Mencao a arquivos especificos
- Citacao de funcoes/variaveis
- Dados numericos/estatisticas
Uso Explicito (Usuario Solicita)
- Verificar afirmacao especifica/fact-checker [afirmacao]- "Verifique se..." - Validar informacao
- "Confirme que..." - Checar existencia
- "E verdade que..." - Fact-check
METRICAS DE QUALIDADE
Taxa de Verificacao
- META: 100% das afirmacoes sobre codigo verificadas
- META: 100% dos dados do banco consultados antes de citar
- META: 0% de "provavelmente", "deve ser", "acho que"
Indicadores de Alucinacao
Se encontrar estes padroes na resposta, PARAR e verificar:
- "provavelmente"
- "deve existir"
- "imagino que"
- "normalmente"
- "geralmente"
- "pelo que sei"
- Path que nao foi verificado
- Nome de funcao que nao foi buscado
INTEGRACAO COM OUTRAS SKILLS
Com /pesquisa
/pesquisaFact-checker valida PRD gerado, confirmando que arquivos listados existem.
Com /spec
/specFact-checker verifica se funcoes/modulos citados no SPEC sao reais.
Com /code
/codeFact-checker valida que imports e dependencias existem antes de implementar.
Com /audit-financa
/audit-financaFact-checker confirma dados financeiros consultando MongoDB diretamente.
EXEMPLO COMPLETO
Pergunta do Usuario
"Como funciona o calculo de saldo no sistema?"
Processo de Verificacao
1. BUSCAR funcoes de saldo: grep -rn "saldo\|calcular" controllers/ services/ --include="*.js" 2. LER arquivo encontrado: cat controllers/extratoFinanceiroCacheController.js 3. CONSULTAR dados reais: mcp__mongo__get_collection_schema({ collection: "extratofinanceirocaches" }) 4. VERIFICAR documentacao: cat CLAUDE.md | grep -A 20 "Fluxo Financeiro"
Resposta Verificada
## Calculo de Saldo no Sistema ### Verificacao Realizada - [x] Arquivo lido: `controllers/extratoFinanceiroCacheController.js` - [x] Collection consultada: `extratofinanceirocaches` - [x] CLAUDE.md verificado ### Resposta Verificada O saldo e calculado em `controllers/extratoFinanceiroCacheController.js:142-180`. A funcao `calcularSaldoFinal()` soma: 1. `ganho_rodada` de cada rodada (collection `rodadas`) 2. Campos manuais (collection `fluxofinanceirocampos`) 3. Acertos financeiros (collection `acertofinanceiros`) **IMPORTANTE:** O saldo NUNCA e persistido, sempre calculado em tempo real. [Fonte: CLAUDE.md secao "Financial Calculation Pattern"] ### Fontes 1. `controllers/extratoFinanceiroCacheController.js:142` - funcao calcularSaldoFinal 2. `CLAUDE.md:1870-1878` - padrao de calculo financeiro 3. MongoDB schema `extratofinanceirocaches` - campos time_id, temporada, ganho_rodada ### Incertezas Remanescentes - Nenhuma. Todas as afirmacoes verificadas no codigo.
STATUS: FACT-CHECKER PROTOCOL - ZERO HALLUCINATION MODE
Versao: 1.0
Principio: "Se nao verificou, nao afirme."