Extensions — 9 hooks + 5 skills
코마드월드(~/.claude/) 위에 얹는 자가진화·안전·증명 레이어. Claude Code OAuth 사용자를 위한 로컬 전용 확장,
외부 서비스 의존성 없음. 복사 기반 설치, Python stdlib + bash 만 사용.
Python 3
bash
9 hooks
5 skills
zero deps
설치
한 명령으로 hooks/skills/config 가 ~/.claude/ 에 복사됩니다. 기존 파일은 .bak-<UTC> 백업 후 덮어쓰기. 재실행 안전.
# Clone + install
git clone https://github.com/kinkos1234/comad-world-extensions \
~/Programmer/01-comad/comad-world-extensions
cd ~/Programmer/01-comad/comad-world-extensions
./install.sh
# 설치 후 두 가지 수동 작업:
# 1. ~/.claude/settings.json 의 hooks 블록에 9개 훅 등록
# (install.sh 종료 시 스니펫 출력)
# 2. ~/.claude/CLAUDE.md 에 T6 섹션 추가
전제 — comad-world 가 먼저 설치되어 있어야 합니다 (
~/.claude/ 디렉터리 구조 가정).
comad-world 가 없어도 hooks/skills 자체는 동작하지만 brain/ear 와의 연동 시나리오는 제한됩니다.
훅 9종
pre-tool-use 4개 + Stop 5개. 모두 silent (exit 0 + 로그); 환경변수 COMAD_*_BLOCK=1 로 exit 2 승격 가능.
pre-tool-use (4종)
| 훅 | 역할 | 트리거 | 승인 플래그 |
|---|---|---|---|
destroy-gate | Approval-Gated Destruction | rm -rf /, rm -rf ~/..., git push --force, DROP, truncate 등 | approve-destroy[.<hash>] |
no-env-commit | .env/credentials git add 차단 | .env, credentials.json, *.pem staging | approve-env-commit[.<hash>] |
qa-gate-before-push | .qa-evidence.json 있으면 verdict=PASS 강제 | git push | approve-push-qa-skip[.<hash>] |
usage-gate | OAuth 5h/7d 쿼터 방어 (현재 dormant) | 배경 Task 호출 | approve-usage-once |
Stop (5종)
| 훅 | 역할 | 로그 |
|---|---|---|
t6-capture | 세션 종료 시 현재 repo 의 최근 fix:/feat:/bugfix: 커밋 포착 | .comad/pending/*.json |
claim-done-gate | "모두 통과 / 92/92 PASS" 류 주장 + Bash 검증 없음 감지 | .comad/pending/claim-done.jsonl |
premature-completion-detector | "수렴 달성" 조기 선언 감지 | .comad/pending/premature-completion.jsonl |
numeric-claim-gate | "완벽 / production-ready / 100%" 절대 주장 vs 실제 evidence 대조 | .comad/pending/numeric-claim.jsonl |
inventory-gate | coverage 주장 vs inventory cross-check | .comad/pending/inventory-gate.jsonl |
스킬 5종
| 스킬 | 목적 | 핵심 바이너리 |
|---|---|---|
comad-learn | T6 pending JSON → feedback memory 승격 + validator 2종 | validate-pending.py, validate-feedback.py |
comad-memory | ~/.claude/projects/*/memory/*.md 의 SQLite FTS5 인덱스 + 검색 | sync.py, search.py, trace.py, refresh.py |
comad-qa-evidence | .qa-evidence.json 생성·검증 (L0~L5 QA levels) | init-qa-evidence.py, validate-qa-evidence.py |
comad-second-opinion | .second-opinion.md 생성 가이드 (codex CLI → subagent → self-adversarial 3-tier fallback) | validate-second-opinion.py |
comad-parallel | Codex CLI 병렬 외주 (Claude=PM, Codex×N=구현) + 5종 comad 통합 게이트 | parallel.sh, parallel-job.js (1500+ LOC) |
comad-parallel 심화 — 5종 통합 게이트
gptaku-plugins/pumasi v1.7.2 를 포팅 후 comad 시스템에 맞게 5종 게이트 신설. 모두 opt-in (env 로 활성화) 또는 default-on (handoff). 한 번의 parallel.sh run-all 로 results → qa-gate → second-opinion-gate → destroy-check → handoff → ear-notify 의 6-단계 파이프라인 자동 실행.
| 명령 | 기능 | 환경변수 | 산출물 |
|---|---|---|---|
parallel.sh handoff |
7-section 핸드오프 doc (Summary / Key Decisions / Traps / Working Agreements / Relevant Files / Open Work / Prompt for New Chat). Summary/Files/Open Work 자동 채움. | COMAD_AUTO_HANDOFF=0 으로 비활성 |
.comad/sessions/<ts>-parallel-<jobid>.md |
parallel.sh qa-gate |
done task cwd 의 .qa-evidence.json + verdict=PASS 검증. validate-qa-evidence.py 우선, jq fallback. |
COMAD_QA_EVIDENCE=1 |
members/<task>/qa-evidence.json |
parallel.sh second-opinion-gate |
.second-opinion.md frontmatter verdict (APPROVED/REQUEST_CHANGES/BLOCKS) 검증. 자동 실행 X — verify only. |
COMAD_SECOND_OPINION=1 |
members/<task>/second-opinion.json |
parallel.sh destroy-check |
Worker output 에서 13종 destructive 패턴 grep (rm -rf /|~|$HOME, git push --force, DROP DATABASE, mkfs.*, fork bomb 등). Codex 가 별도 프로세스라 사후 검사. |
COMAD_DESTROY_CHECK=1 |
members/<task>/destroy-check.json |
| (ear-notify, internal) | cmdRunAll 끝에 Discord webhook POST. 한 줄 요약 (job id + done/failed). 실패 silent. | COMAD_EAR_NOTIFY=1 + DISCORD_WEBHOOK_URL |
Discord 메시지 |
실행 흐름
# 한 번의 호출로 6단계 파이프라인 (default + 모든 게이트 활성화)
COMAD_QA_EVIDENCE=1 \
COMAD_SECOND_OPINION=1 \
COMAD_DESTROY_CHECK=1 \
COMAD_EAR_NOTIFY=1 DISCORD_WEBHOOK_URL=... \
parallel.sh run-all "프로젝트 컨텍스트"
# 흐름:
# 1. start → Codex worker N개 spawn
# 2. wait → 모두 종료까지 대기
# 3. results → 각 worker output.txt 출력
# 4. qa-gate → .qa-evidence.json verdict 검증 (env 활성 시)
# 5. second-opinion-gate → .second-opinion.md verdict (env 활성 시)
# 6. destroy-check → 13 패턴 사후 스캔 (env 활성 시)
# 7. handoff → 7섹션 doc 생성, 위 결과 모두 반영 (default ON)
# 8. ear-notify → Discord 한 줄 요약 POST (env 활성 시)
# 9. clean → job dir 삭제
handoff doc 의 인지적 섹션 — Key Decisions / Traps / Working Agreements 는
TODO(claude) stub 으로 남겨집니다.
Claude 가 후속 세션에서 수동으로 채워야 함. Summary / Relevant Files / Open Work 는 worker report.json 에서 자동 채움.
T6 자가진화 루프
"실수 → 자동 포착 → 분석 → 기억 → 반복 회피" 의 4-step 루프. 외부 서비스 없이 동작.
- Stop hook (자동) — 매 Claude 세션 종료 시
~/.claude/hooks/stop/t6-capture.sh가 현재 git repo 의 최근fix:/feat:/bugfix:커밋을~/.claude/.comad/pending/<hash>.json에 덤프. 사용자 개입 없음. - 분석 (사용자 호출) —
/comad-learn스킬이 pending JSON 들을 읽어 반복 패턴 추출. 판정 기준 통과 시memory/feedback_<topic>.md로 승격 (append-only). - HARD 훅 후보 (2회+ 반복) — 같은 topic 이 2회 이상 관찰되면 해당 메모리 파일에 "HARD 훅 후보" 섹션 추가 + 사용자 승인 요청. 승인 시
destroy-gate.sh패턴 리스트에 추가. - 처리 완료 — 처리한 pending 은
_processed/, 거부는_rejected/로 이동 (원본 삭제 금지).
parallel 과의 연계 —
parallel worker 가 산출 변경을 fix:/feat: prefix 로 git commit 하면, 다음 Claude 세션 종료에서 t6-capture 가 자동 포착 → /comad-learn 으로 학습 가능.
Worker instruction 에 "When done, create a git commit with prefix fix: or feat:" 명시 권장.
레포 / 라이선스
GitHub: kinkos1234/comad-world-extensions · 라이선스: MIT · 외부 서비스 의존성 0 (Python stdlib + bash 만 사용)
자매 레포 —
comad-world (8 핵심 모듈) +
comad-studio (5 시각/미디어 생성) 와 함께 한 시스템을 이룹니다.
설치 순서 권장: world → extensions → studio.