Hook Troubleshooting
Hook이 의도한 대로 동작하지 않을 때 가장 먼저 점검해야 할 항목들과, 성능 저하·예기치 못한 동작을 줄이기 위한 진단 절차를 정리했습니다.
자주 발생하는 문제
Hook은 파일 변경, 저장, 사용자 명령 등 다양한 이벤트에 반응하는 자동화 장치입니다. 문제가 생겼다면 보통 트리거 조건, 동작 정의, 실행 환경 셋 중 하나에 원인이 있습니다. 아래 체크리스트를 위에서 아래로 따라가며 좁혀 보세요.
Hook이 아예 트리거되지 않을 때
가장 흔한 사례입니다. Hook을 만들었는데도 작업 흐름에서 발화하지 않는다면 다음을 차례대로 확인합니다.
- 파일 기반 Hook이라면 설정한 file pattern(예:
**/*.ts,src/**/*.test.tsx)이 실제로 대상 파일을 포함하는지 확인합니다. 너무 좁거나, 잘못된 glob 문법으로 적힌 경우가 많습니다. - Hook 자체가 활성화(enabled) 상태인지 확인합니다. 비활성화된 Hook은 조건이 맞아도 실행되지 않습니다.
- 이벤트 타입(예: On file save, On file create, Manual)이 의도한 트리거와 일치하는지 다시 점검합니다. 저장 이벤트로 만들어 놓고 생성 이벤트에서 동작하길 기대하는 식의 혼동이 흔합니다.
팁. 패턴이 의심스러울 때는 일시적으로
**/*처럼 넓힌 뒤, Hook이 발화하는지 먼저 확인하고 다시 좁혀 가는 방식이 디버깅에 유용합니다.
예상과 다른 방식으로 동작할 때
Hook은 실행되지만 결과가 의도와 어긋나는 경우입니다. 대개 지시문이 모호하거나, 다른 Hook과 작업이 충돌하고 있습니다.
- Hook의 instructions를 다시 읽고, 모호한 표현이나 해석의 여지가 있는 문장을 구체적으로 다듬습니다. "필요한 경우 정리"보다 "변경된 파일에 대해서만 import 정렬을 수행"처럼 명확하게 적습니다.
- 같은 이벤트나 같은 파일 패턴을 공유하는 다른 Hook이 없는지 확인합니다. 두 Hook이 동일 파일을 동시에 수정하면 결과가 비결정적으로 보일 수 있습니다.
- file pattern이 지나치게 광범위하지 않은지 점검합니다. 의도하지 않은 디렉터리(예:
node_modules, 빌드 산출물)까지 매칭되면 부수 효과가 발생합니다.
성능이 느리거나 IDE가 무거워질 때
Hook은 편집 흐름과 함께 자주 실행되므로, 무거운 작업이 묶이면 체감 속도가 빠르게 떨어집니다.
- 파일 기반 Hook은 file pattern을 더 구체적으로 좁혀 매칭되는 파일 수를 줄입니다.
- agent prompt를 사용하는 Hook이라면 지시를 간결하게 만들고, 한 번에 너무 많은 작업을 시키지 않습니다. 작업을 나누거나 조건을 추가해 호출 빈도를 낮추는 것이 효과적입니다.
- shell command 액션은 가능한 한 짧게 끝나도록 작성합니다. 장시간 실행되는 명령은 백그라운드 작업으로 분리하거나, 캐시·증분 처리를 도입합니다.
- 트리거 이벤트가 너무 자주 발생하지 않도록 조건을 보강합니다. 예를 들어 모든 저장이 아니라 특정 디렉터리의 저장에서만 동작하도록 좁힐 수 있습니다.
주의. shell command 액션이 프로젝트 외부 자원을 변경하거나 빌드를 트리거하는 경우, 의도치 않은 빈번 실행이 환경을 오염시킬 수 있습니다. 트리거 범위를 좁히고 dry-run 옵션을 우선 검토하세요.
여전히 해결되지 않는다면
위 항목으로도 원인을 좁히지 못했다면 일반 문제 해결 가이드인 /docs/troubleshooting을 참고합니다. IDE 전반의 로그 확인 방법, Agent 동작 점검 절차, 환경 진단 도구 등이 정리되어 있어 Hook 외부 요인까지 살펴볼 때 도움이 됩니다.