AI 도서관 · Claude · 하네스 설정 · Hooks

코드 수정 후 자동 포맷 Hook

파일을 고친 직후 포맷터를 돌립니다. 파일 경로는 stdin JSON의 tool_input.file_path 에 있습니다

내용

⚠️ 파일 경로도 환경변수가 아니라 표준입력 JSON에서 꺼내야 합니다.
Write·Edit 도구에서는 .tool_input.file_path 입니다.

# .claude/settings.local.json
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "bash -c 'f=$(jq -r \".tool_input.file_path // empty\"); [ -z \"$f\" ] && exit 0; case \"${f##*.}\" in py) black \"$f\" >/dev/null 2>&1;; js|jsx|ts|tsx) npx prettier --write \"$f\" >/dev/null 2>&1;; esac; exit 0'"
          }
        ]
      }
    ]
  }
}

📌 마지막의 exit 0 이 중요합니다
포맷터가 실패해도 작업 흐름을 막지 않기 위해서입니다.
포맷 실패로 작업이 중단되면 오히려 방해가 됩니다.

🧪 시험
echo '{"tool_input":{"file_path":"test.py"}}' | <위 command 부분>
→ 파일이 포맷되는지, 오류 없이 끝나는지 확인

⚠️ 포맷터가 설치돼 있지 않으면 조용히 넘어갑니다.
적용이 안 되는 것 같으면 먼저 black·prettier 가 실제로 실행되는지 확인하세요.

적용할 언어와 포맷터: {{INPUT}}

{{INPUT}} 자리에 내 내용을 넣어 쓰는 프롬프트입니다. 아래 버튼으로 열면 넣는 칸이 나옵니다.

근거

유형
설정 가이드 — 지정된 파일이나 설정에 적용합니다
사용 환경
Claude Code — jq 와 포맷터(black·prettier) 필요
공식 출처
https://code.claude.com/docs/en/hooks
확인일
2026-09-08 — 이후 바뀌었을 수 있습니다
도서관에서 열기 — 내 내용 넣고 복사하기