subinium workflow-config hook 통합 제안서
subinium workflow-config hook 통합 제안
배경
- 출처: https://github.com/subinium/subinium-agentic-workflow-config
- 해리 현재 hook 23개(~2082줄) 이미 매우 정교. 대부분 중복.
- subinium 6개 훅 중 5개를 해리 환경과 비교 → 보완 가치 있는 것만 선별.
이미 커버된 것 (도입 불필요)
block-destructive-git.sh
- 역할:
git push --force,git reset --hard,rm -rf /등 차단. - 해리 기존:
tier-gate.py(Tier 4 경고 + Tier 5 차단 + 텔레그램 승인 요청). - 판정: 해리 것이 더 강력. 도입 안 함.
선별한 5개 hook 제안 (우선순위 순)
제안 1: session-guard.sh — 세션 타이머 + Plan Mode 권유 (★★★)
어떤 상황에 발동
- UserPromptSubmit(사용자가 프롬프트를 제출할 때마다).
- 세션 시작 시각 저장, 60분 / 120분 경과 시 경고 출력.
- 프롬프트에 build|implement|refactor|migrate|redesign 포함 시 Plan Mode 권유.
어떤 효과
- 2시간 넘는 마라톤 세션 자동 감지 → /session-wrap + /clear 권유.
- 복잡 작업 시 Plan Mode(Shift+Tab) 사용 유도.
왜 필요
- 해리 기존 prompt-model-gate.py는 모델 선택만 담당, 세션 지속 시간 감시는 없음.
- 해리 5원칙 중 "드리프트, 확신 오류" 자기 감시 강화.
어떻게 추가
- 새 파일: ~/.claude/hooks/session-guard.sh (58줄, Bash+Python).
- settings.json hooks.UserPromptSubmit 블록에 추가.
"UserPromptSubmit": [
{
"hooks": [
{ "type": "command", "command": "python3 ~/.claude/hooks/prompt-model-gate.py", "timeout": 3000 },
{ "type": "command", "command": "~/.claude/hooks/session-guard.sh", "timeout": 5000 }
]
}
]
참고: subinium은 /session-wrap 슬래시 명령 전제. 해리 환경에는 없으므로 안내 문구를 /close(이미 있음) 또는 메모리 저장으로 치환 필요.
제안 2: backup-before-compact.sh — 압축 직전 컨텍스트 백업 (★★★)
어떤 상황에 발동
- PreCompact 이벤트(Claude Code가 conversation을 compact하기 직전).
- stdin으로 들어오는 JSON을 ~/.claude/compaction-backups/pre-compact_YYYYMMDD_HHMMSS.json에 저장.
- 20개 초과 시 가장 오래된 것부터 자동 삭제.
어떤 효과 - Compaction 시 잘리는 대화 맥락을 디스크에 보존. - 나중에 "그때 어떻게 했지?" 추적 가능.
왜 필요
- 해리 기존 post-compact-context.sh는 compact 이후 상태 저장.
- Compact 전 원본이 없어서, 무엇이 잘렸는지 확인 불가.
- 장기 세션에서 특히 중요(해리는 1M 컨텍스트 Opus 자주 사용).
어떻게 추가
- 새 파일: ~/.claude/hooks/backup-before-compact.sh (22줄).
- settings.json에 PreCompact 블록 신규 추가.
"PreCompact": [
{
"hooks": [
{ "type": "command", "command": "~/.claude/hooks/backup-before-compact.sh", "timeout": 10000 }
]
}
]
제안 3: warn-large-files.sh — Write/Edit 시 파일 크기 경고 (★★)
어떤 상황에 발동
- PostToolUse (Write | Edit).
- 수정된 파일이 300줄 초과 → 주의, 500줄 초과 → 경고.
- .md/.json/.yaml/.lock/.css/.svg 등 설정·문서는 제외.
어떤 효과 - 단일 파일이 비대해지는 것을 조기 감지. - "파일 쪼개라" 권유.
왜 필요
- 해리 기존 large-file-guard.sh는 Read 시 2000줄 이상 경고(토큰 절약 목적).
- 반대 방향 — 쓰는 쪽 거대화 방지 훅은 없음.
- 해리 pipeline 스크립트 일부(예: analyst_daily_brief.py ~500줄+) 쪼갤 후보 자동 발굴.
어떻게 추가
- 새 파일: ~/.claude/hooks/write-size-guard.sh (45줄, 이름 충돌 피하기).
- settings.json PostToolUse Edit|Write 기존 블록에 추가.
{ "matcher": "Edit|Write",
"hooks": [
// ...기존...
{ "type": "command", "command": "~/.claude/hooks/write-size-guard.sh", "timeout": 5 }
]
}
제안 4: format-on-save.sh — 자동 포매터 (★★)
어떤 상황에 발동
- PostToolUse (Write | Edit).
- .py → black, .ts/.tsx/.js/.json/.md → prettier(프로젝트 설정 있을 때).
어떤 효과
- 커밋 전 수동 black/prettier 실행 불필요.
- 일관된 포맷 자동 유지.
왜 필요 - 해리 투자 분석 스크립트 다수. 수동 포맷 종종 누락. - 파이프라인 유지보수 시 diff 잡음 감소.
주의점
- black이 없으면 아무 동작 안 함(안전).
- 웹앱의 경우 .prettierrc 있는 프로젝트만 포맷.
어떻게 추가
- ~/.claude/hooks/format-on-save.sh (81줄).
- PostToolUse Edit|Write 블록.
판단 포인트: 자동 포매팅이 해리 의도와 충돌할 수 있음(예: 한글 주석 포함 파일 스타일 변경). 도입 전 black 설정(line-length, skip-string-normalization) 맞추는 작업 필요.
제안 5: typecheck-on-edit.sh — TypeScript 타입체크 (★)
어떤 상황에 발동
- PostToolUse (Write | Edit) + .ts/.tsx 파일.
- tsconfig.json을 프로젝트 루트까지 상향 탐색.
- npx tsc --noEmit --project ... 10초 타임아웃.
- 첫 5개 에러만 출력.
어떤 효과 - 웹앱 TS 수정 후 실시간 타입 에러 발견.
왜 필요 - 해리 웹앱(briefing, PM 등)에 TS 다수. - 지금은 Edit 후 별도 실행 필요.
주의점 - tsc가 프로젝트 전체 스캔 → 큰 프로젝트는 10초 넘김(timeout으로 끊음). - CI에서 이미 돌고 있다면 중복일 수 있음.
어떻게 추가
- ~/.claude/hooks/typecheck-on-edit.sh (59줄).
- PostToolUse Edit|Write 블록.
추천 도입 순서
- session-guard (제안 1) — 세션 관리, 즉시 효과, 파일 독립.
- backup-before-compact (제안 2) — 데이터 손실 방지, 부작용 없음.
- write-size-guard (제안 3) — 파일 비대화 감지, 코드 리팩터 트리거.
- format-on-save (제안 4) — 선택사항. black/prettier 사전 설정 필요.
- typecheck-on-edit (제안 5) — TS 프로젝트 위주, 선택사항.
위험 요소
- 기존 23개 hook에 5개 더 추가 시 프롬프트 1회당 훅 실행 시간 누적.
- session-guard: ~50ms
- backup-before-compact: ~10ms (PreCompact만이라 프롬프트마다 안 돌음)
- write-size-guard: ~20ms
- format-on-save: 2~10초 (파일 크기에 따라)
- typecheck-on-edit: 1~10초 (tsc 실행)
- 실질 걸림돌은 format/typecheck. 처음엔 1~3번만 도입 권장.
해리 결정 포인트
- session-guard + backup-before-compact 먼저 도입? (즉시 가치, 부작용 없음)
- write-size-guard 같이 도입? (리팩터 트리거 얻음)
- format/typecheck는 보류? (설정 맞춤 필요)
승인 시 hook 파일 복사 + ~/.claude/settings.json 편집까지 진행.
미승인/보류 시 이 제안서만 볼트에 남겨두고 종료.