Claude가 ‘load-bearing’을 말하지 않게 만드는 방법

4 hours ago 2
  • Claude Code가 “honest take”, “load-bearing seam” 같은 문구를 반복한다면 MessageDisplay 훅으로 화면에 표시되기 전 다른 표현으로 치환할 수 있음
  • Python 스크립트가 표준 입력의 JSON에서 delta를 읽어 대소문자를 구분하지 않고 치환한 뒤, 변경된 displayContent를 JSON으로 반환함
  • 예제에서는 seam을 whatchamacallit, you're absolutely right를 I'm a complete clown, honest take를 spicy doodad, load-bearing을 cooked로 바꿈
  • 스크립트를 ~/.claude/hooks/wordswap.sh에 저장해 실행 권한을 부여하고, ~/.claude/settings.json의 hooks.MessageDisplay에 명령 훅으로 등록해야 함
  • 훅은 Claude Code 시작 시 로드되므로 새 세션을 열어야 적용되며, 치환 목록은 원하는 어휘로 자유롭게 바꿀 수 있음

출력 문구를 바꾸는 스크립트

  • MessageDisplay 훅을 이용해 Claude Code가 화면에 표시할 텍스트를 변경함
  • wordswap.sh는 Python으로 작성하며, 표준 입력에서 JSON을 읽어 delta 필드의 문자열을 가져옴
  • 각 원문 문구의 앞뒤에 \b 경계를 붙이고 re.escape()로 이스케이프한 다음, re.IGNORECASE를 적용해 대소문자와 관계없이 치환
  • 처리 결과는 다음 구조의 JSON으로 출력함
    • hookSpecificOutput.hookEventName: MessageDisplay
    • hookSpecificOutput.displayContent: 치환된 텍스트
  • 예제 치환 규칙은 다음과 같음
    • seam → whatchamacallit
    • you're absolutely right → I'm a complete clown
    • honest take → spicy doodad
    • load-bearing → cooked

설치하고 활성화하기

  • 스크립트를 ~/.claude/hooks/wordswap.sh에 저장함
  • chmod +x ~/.claude/hooks/wordswap.sh를 실행해 실행 권한을 부여함
  • ~/.claude/settings.json의 hooks 블록에 다음과 같이 등록함
{ "hooks": { "MessageDisplay": [ { "hooks": [ { "type": "command", "command": "$HOME/.claude/hooks/wordswap.sh" } ] } ] } }
  • 훅은 Claude Code 시작 시 로드되므로 설정 후 새 세션을 시작해야 적용됨
  • replacements 항목을 수정하면 예제 대신 더 유용하거나 재미있는 문구로 바꿔 사용할 수 있음
Read Entire Article