Claude Code Hook 食譜:每次編輯後自動格式化+lint(PostToolUse)
用一段 PostToolUse hook,讓 Claude Code 每次 Edit/Write 完檔案就自動跑 formatter(Prettier/Black/gofmt)+linter,把「格式不一致」這件雜事從你的 code review 裡永久移除。
AI 改完 code 排版又亂掉?掛一個 PostToolUse hook,Edit/Write 一落地就自動 format+lint。
你 review 的永遠是「已經對齊」的 diff,不再為了縮排吵架。
[ Log in to see the full prompt ]Sign up free to see the full prompt, copy it, save it, and join the discussion. Free content unlocks on login; Pro content is a separate subscription.
## 這是什麼/解決什麼痛點 讓 AI 寫 code 最惱人的小事之一,就是「排版風格不一致」:它有時用 2 空白、有時 4 空白,import 順序、引號、結尾分號每次都不太一樣。結果你的 code review 一半時間在看 whitespace diff,git blame 也被無意義的格式變動洗版。這個 hook 食譜把「格式化+lint --fix」綁進 Claude Code 的生命週期:只要 AI 用 Edit / Write / MultiEdit 改了檔案,PostToolUse hook 就立刻對那個檔案跑 formatter 與 linter,等你看到 diff 時它「已經對齊」了。 ## 為什麼這來源值得用 Claude Code 的 hooks 是「由 harness 執行的確定性 shell 指令」,不是請 AI「記得格式化」——AI 會忘、hook 不會。本食譜的 PostToolUse 結構(`matcher` 鎖定 `Edit|Write`、`hooks[].type=command`、由 stdin 收 JSON 取 `tool_input.file_path`)直接取自 rohitg00/awesome-claude-code-toolkit 裡實際運作的 `auto-stage` PostToolUse hook;該 hook 原本是「編輯後自動 git stage」,我把同一套觸發機制改寫成「編輯後自動 format+lint」,是對同一個官方機制的忠實延伸,不是憑空杜撰。 ## 怎麼用(步驟) 1. 把上面的 JSON 併進 `.claude/settings.json`(只想對自己生效就放 `~/.claude/settings.json`)。 2. 建立 `.claude/hooks/format-after-edit.sh`,貼上腳本,`chmod +x` 給執行權限。 3. 確認機器上有 `jq`(hook 用它解析 stdin JSON)與你要的工具(prettier / eslint / black / ruff / gofmt …)。 4. 把 `{{PRETTIER_CMD}}`、`{{ESLINT_CMD}}`、`{{PY_FORMATTER}}` 換成你的實際指令(例:`npx prettier`、`npx eslint`、`black`)。 5. 在 Claude Code 裡用 `/hooks` 確認載入,然後叫 AI 隨便改一個檔案,觀察是否自動被格式化。 ## 要點 - **找不到工具就靜默跳過**(`|| true`):別讓 hook 因為某台機器沒裝某工具而中斷整個編輯流程。 - **只針對單一檔案跑**:用 `file_path` 對剛改的檔案 format,而不是全 repo,速度快、不污染其他檔案。 - **PostToolUse 無法阻止編輯**:它在工具執行「之後」才跑,定位是「事後自動修好」。要在危險動作發生前攔截,請改用 PreToolUse(見本站另一篇危險指令 guardrail 食譜)。 ## 何時用 團隊有共用 formatter/linter 設定、又常讓 Claude Code 大量改檔時最有感;個人專案想維持乾淨 git 歷史、讓每個 diff 都只有「真正的邏輯變動」也很適合。若你的 formatter 很慢(大型 mono-repo 全量跑),記得把它鎖在「單檔」而非全專案,避免每次編輯都卡住。 📎 來源:rohitg00/awesome-claude-code-toolkit(作者 Rohit Ghumare,Apache-2.0 授權)— 本篇 PostToolUse hook 結構取自其 auto-stage hook,繁中改寫並從「自動 git stage」延伸為「自動格式化+lint」,原始內容見上方連結。
Suno Engineer's Mindset: 4 Steps to a Song That Doesn't Sound Like AI
A studio engineer's breakdown of Suno's fatal weaknesses (fried vocals, high-frequency artifacts), plus a 4-step DAW workflow and a Suno Studio cleanup prompt.
5 Claude Weekly Workflows That Stuck After 6 Months
Proposal generator / meeting processor / content repurposer / Friday review / shutdown reset — out of 40 I tried, only these 5 survived, each saving 30+ minutes per run.