
Revisão por pares com IA para achados de pentest ou relatórios de Bug Bounty — valida a severidade, as evidências e a qualidade do relatório antes da entrega, usando múltiplos revisores de IA independentes (Claude, GPT, Gemini) que criticam uns aos outros antes de chegar a um veredito.
Um pipeline de revisão cega por pares que valida um achado de teste de penetração antes que ele chegue a um cliente. Lentes de especialistas independentes avaliam o achado, revisam-se cegamente entre si, e um Chairman sintetiza um veredito verificado — vale a pena reportá-lo e a severidade está calibrada?
Duas formas de executá-lo:
| Modo | Onde | O que acontece |
|---|---|---|
| Chairman Manual | claude.ai / chat do aplicativo Claude | Um Claude raciocina através de cada lente isoladamente e depois sintetiza. Custo zero, sem chaves. |
| Paralelo (cross-vendor) | Claude Code na sua máquina | council_direct.py distribui as lentes entre Claude + ChatGPT + Gemini como chamadas concorrentes reais. Custa tokens dos provedores. Captura pontos cegos que um único provedor compartilha. |
Este repositório é a fonte da verdade. Edite aqui, commit com git. A base de conhecimento do Projeto Claude é um espelho somente leitura — re-upload dos arquivos alterados quando houver mudanças materiais. Não sincronize nos dois sentidos.
llm-council-vapt/
├── README.md # this file
├── requirements.txt # python deps
├── .env.template # key names, no values
├── .gitignore # ignores .env (keys never committed)
├── skills/
│ └── llm-council/
│ └── SKILL.md # the skill (8 members, protocols, modes)
├── scripts/
│ └── council_direct.py # parallel cross-vendor engine
└── docs/
└── project_system_prompt.md # paste into Claude Project settings
# 1. clone / place the repo
git clone <your-repo-url> llm-council-vapt
cd llm-council-vapt
# 2. make the skill discoverable by Claude Code (symlink, so edits stay live)
mkdir -p ~/.claude/skills
ln -s ~/llm-council-vapt/skills/llm-council ~/.claude/skills/llm-council
# 3. keys
cp .env.template .env
nano .env # paste the three keys, save
Edite o .env e adicione suas chaves de API da Anthropic, OpenAI e Google.
Mantém as dependências isoladas do seu Python do sistema.
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
pip install -r requirements.txt
Nota (sistemas Kali / Debian): O PEP 668 bloqueia
pip installem todo o sistema por padrão. Se você encontrarexternally-managed-environment, use a Opção A ou force:pip install -r requirements.txt --break-system-packages
python scripts/council_direct.py --help
ls -l ~/.claude/skills/llm-council/SKILL.md # should resolve via the symlink
Se ambos rodarem limpos, você está pronto.
Veja docs/USAGE.md para a referência completa de comandos (todas as flags, todos os modos, todos os exemplos).
Basta digitar um comando — sem chaves, sem scripts:
/llm-council -q -u # quick, upload file
/llm-council medium validation -p # medium, paste content
/llm-council -f -u -v2 -s high # full, upload, version 2, validate High claim
Flags: modo -q|-m|-f (ou quick|medium|full validation), entrada -u (upload) /
-p (colar), versão -vN, severidade -s low|medium|high|critical.
python3 scripts/council_direct.py \
--mode full \
--finding ./finding.md \
--severity high \
--version 2 \
--finding-id <YOUR-FINDING-ID> \
--project <PREFIX> > council_run.json
--finding aceita um caminho de arquivo ou texto bruto. O script imprime JSON
(avaliações + rankings cegos + agregado + quaisquer falhas). Em seguida, peça ao Claude Code
para ler council_run.json e executar o Estágio 3 do conselho (síntese do Chairman)
para produzir o veredito final.
rápido (-q) → Red-teamer · Auditor CVSS · Auditor de Evidências (3)
médio (-m) → + Analista de Cadeia de Ataque · Crítico de Remediação (5)
completo (-f) → + Analista de Inteligência de Ameaças · Caçador de Falsos Negativos ·
Tradutor de Impacto de Negócios (8)
Rápido = verificação de sanidade rápida durante o engajamento. Médio = achados que você pretende reportar. Completo = porta de pré-entrega; padrão para qualquer High/Critical.
Verificado contra documentação oficial dos provedores (junho de 2026). Não perene — atualize MODELS no topo de scripts/council_direct.py quando os provedores lançarem novos carros-chefe.
.env está no gitignore. Chaves reais nunca são commitadas. Verifique com
git status antes do seu primeiro git add — .env não deve aparecer.python-dotenv. Elas nunca
são escritas em logs ou no JSON de saída.O script lê achados baseados em texto diretamente: .md, .txt, .json, .csv,
.yaml ou texto bruto passado inline. Formatos binários/documentos (.pdf, .docx,
.xlsx, etc.) não são suportados — o script os detecta e sai com uma
mensagem informando para converter para .md/.txt primeiro. Como os achados são escritos
em markdown, isso normalmente não é um problema.
No modo completo/médio, o Analista de Cadeia de Ataque pode considerar achados irmãos:
--findings-dir <caminho> — diretório para escanear (padrão é o próprio diretório do arquivo de achado).--project <prefixo> — tag opcional de prefixo de nome de arquivo para filtrar quais irmãos
contam como relacionados. Se omitido, todos os irmãos de texto legíveis são considerados. A tag
é fornecida em tempo de execução; nenhum nome de cliente ou prefixo está embutido no código.Mantenha seus arquivos de achado reais fora deste repositório (em qualquer lugar da sua máquina). Aponte
--findings-dir para esse local a cada execução.
Construído por Holiday
| Cadeira | Provedor | ID do Modelo | Chave |
|---|
| Claude | Anthropic | claude-opus-4-8 | ANTHROPIC_API_KEY |
| ChatGPT | OpenAI | gpt-5.5 | OPENAI_API_KEY |
| Gemini | gemini-3.1-pro-preview | GEMINI_API_KEY |