
펜테스트 결과 또는 버그 바운티 보고서를 위한 AI 기반 피어 리뷰 — 전달 전에 심각도, 증거 및 보고 품질을 검증하며, 여러 독립적인 AI 검토자(Claude, GPT, Gemini)가 서로를 비판한 후 최종 판정을 내립니다.
| 모드 | 위치 | 설명 |
|---|
| 수동 의장 (Manual Chairman) | claude.ai / Claude 앱 채팅 | 각 렌즈를 개별적으로 추론한 후 종합합니다. 비용 무료, 키 불필요. |
| 병렬 (교차 벤더) | 사용자 머신의 Claude Code | council_direct.py가 렌즈를 Claude + ChatGPT + Gemini에 실제 동시 호출로 분배합니다. 제공자 토큰 비용 발생. 단일 벤더의 사각지대를 포착합니다. |
이 저장소는 진실 공급원입니다. 여기서 편집하고, git으로 커밋하세요. Claude Project 지식 베이스는 읽기 전용 미러입니다. 파일이 실질적으로 변경되면 다시 업로드하세요. 양방향 동기화하지 마세요.
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
.env 파일을 편집하여 Anthropic, OpenAI, Google API 키를 추가하세요.
시스템 Python과 종속성을 분리합니다.
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
pip install -r requirements.txt
참고 (Kali / Debian 기반 시스템): PEP 668은 기본적으로 시스템 전체
pip install을 차단합니다.externally-managed-environment오류가 발생하면 옵션 A를 사용하거나 강제로 설치하세요: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
두 명령어 모두 정상 실행되면 설정이 완료된 것입니다.
전체 명령어 참조(모든 플래그, 모드, 예제)는 docs/USAGE.md를 참조하세요.
명령어를 입력하기만 하면 됩니다. 키나 스크립트가 필요 없습니다:
/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
플래그: 모드 -q|-m|-f (또는 quick|medium|full validation), 입력 -u (업로드) / -p (붙여넣기), 버전 -vN, 심각도 -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은 파일 경로 또는 원시 텍스트를 허용합니다. 스크립트는 JSON(평가 + 블라인드 순위 + 집계 + 실패 내역)을 출력합니다. 그런 다음 Claude Code에게 council_run.json을 읽고 카운슬의 3단계(의장 종합)를 실행하여 최종 평결을 생성하도록 요청하세요.
quick (-q) → Red-teamer · CVSS Auditor · Evidence Auditor (3)
medium (-m) → + Attack Chain Analyst · Remediation Critic (5)
full (-f) → + Threat Intel Analyst · False Negative Hunter ·
Business Impact Translator (8)
Quick = 빠른 인게이지먼트 내 온전성 검사. Medium = 보고할 목적의 취약점 발견. Full = 전달 전 게이트; High/Critical의 기본값.
공식 제공자 문서(2026년 6월) 기준으로 확인됨. 영구적이지 않음 — 제공자가 새로운 플래그십을 출시하면 scripts/council_direct.py 상단의 MODELS를 업데이트하세요.
| 역할 | 제공자 | 모델 ID | 키 |
|---|---|---|---|
| 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 |
.env는 gitignore에 등록되어 있습니다. 실제 키는 절대 커밋되지 않습니다. 첫 git add 전에 git status로 확인하세요. .env가 나타나면 안 됩니다.python-dotenv를 통해 런타임에 환경에서 읽어옵니다. 로그나 출력 JSON에 기록되지 않습니다.스크립트는 텍스트 기반 결과를 직접 읽습니다: .md, .txt, .json, .csv, .yaml 또는 인라인으로 전달된 원시 텍스트. 바이너리/문서 형식 (.pdf, .docx, .xlsx 등)은 지원되지 않습니다. 스크립트가 이를 감지하고 먼저 .md/.txt로 변환하라는 메시지와 함께 종료됩니다. 결과는 일반적으로 마크다운으로 작성되므로 문제가 되지 않습니다.
전체/중간 모드에서 공격 체인 분석가(Attack Chain Analyst)는 형제 결과를 고려할 수 있습니다:
--findings-dir <path> — 스캔할 디렉토리 (기본값: 결과 파일의 자체 디렉토리).--project <prefix> — 형제 결과 중 관련 있는 것으로 간주할 파일 이름 접두사 태그 (선택 사항). 생략하면 모든 읽을 수 있는 텍스트 형제 결과가 고려됩니다. 태그는 런타임에 제공되며, 클라이언트 이름이나 접두사가 코드에 하드코딩되지 않습니다.실제 결과 파일은 이 저장소 외부(사용자 머신 어디든)에 보관하세요. 실행 시 --findings-dir을 해당 위치로 지정하세요.
제작: Holiday