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

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

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

설치하고 활성화하기

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