- 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 항목을 수정하면 예제 대신 더 유용하거나 재미있는 문구로 바꿔 사용할 수 있음