SynapseWire

Claude Code 自動化實戰:用 Hooks、Skills 與 MCP 打造自己的 AI 開發工作流

深入 Claude Code 最被低估的三大功能——事件鉤子(Hooks)、自訂技能(Skills)與 MCP 整合——教你如何讓 AI 編碼助手從「對話工具」升級為自動化開發夥伴,附完整設定範例。

作者: SynapseWire 編輯部 發布於:
Claude Code 自動化工作流的技術插畫,程式碼片段與齒輪狀的鉤子機制交織

如果你每天用 Claude Code 寫程式,你可能已經習慣了這樣的流程:下指令 → 看它改程式碼 → 手動跑 linter → 發現問題 → 告訴它修正 → 再跑一次。來回幾趟,半小時就過去了。

Claude Code 其實有一套機制可以讓這些步驟自動化,只是多數人沒有用到。這篇文章會帶你設定三個最實用的功能:事件鉤子(Hooks)、自訂技能(Skills)和 MCP 整合。設定一次,長期受益。

一、Hooks:讓 Claude Code 在對的時間自動做對的事

Hooks 是 Claude Code 的事件驅動自動化系統。你定義「當某件事發生時,自動執行某個動作」,就像 GitHub Actions 之於 CI/CD、或者 Git Hooks 之於版本控制。Claude Code 支援的事件類型包括 PreToolUse(工具使用前)、PostToolUse(工具使用後)、Stop(會話結束前)等。

實戰一:每次編輯後自動跑 linter

把以下設定放到專案根目錄的 .claude/settings.json

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "cd $CLAUDE_PROJECT_DIR && npx eslint --fix --quiet ./src/"
          }
        ]
      }
    ]
  }
}

matcher 欄位告訴 Claude Code「只在 Edit 或 Write 操作後觸發」。command 會在 Claude 每次改完檔案後自動跑 ESLint。重點是:Claude 可以看到 linter 的輸出。如果有錯誤,它會在下一次回應中自動處理,不需要你手動告訴它。

對於 Python 專案,把 command 換成 ruff check --fix .black --check . 即可。

實戰二:讓 AI 檢查 AI——LLM 驅動的品質閘門

新版 Claude Code 支援 type: "prompt" 的鉤子,也就是在特定事件發生時,叫另一個 LLM 實例來做檢查。這聽起來有點「套娃」,但實際用起來很有效:

{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          {
            "type": "prompt",
            "prompt": "在 Claude 停止前檢查:1. 所有測試是否通過?2. 有沒有遺留 TODO 註解?3. 有沒有 console.log / print 語句該刪掉?如果有問題,列出清單。"
          }
        ]
      }
    ]
  }
}

這會在 Claude 準備結束對話時,由另一個 LLM 快速掃描當前的工作成果,給出檢查清單。這比你自己手動 code review 快得多。

實戰三:pre-commit 風格的安全檢查

你還可以把安全性檢查掛到 PreToolUse 上,在 Claude 執行任何終端指令之前先過濾:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "prompt",
            "prompt": "檢查即將執行的指令是否安全。是否包含 rm -rf、curl | bash、或任何可能造成資料損失的操作?如果安全,回覆 'OK'。如果有風險,解釋原因。"
          }
        ]
      }
    ]
  }
}

二、Skills:教 Claude Code 學會你的領域知識

Skills 是 Claude Code 的知識擴展系統,本質上是一個 Markdown 檔案,放在 .claude/skills/ 目錄下。當你 @mention 一個 skill 時,Claude 會讀取整個檔案作為上下文。

建立你的第一個 Skill

.claude/skills/frontend-review.md 中寫:

# Frontend Code Review

當審查 React 元件時,檢查以下項目:

1. 是否使用了 React.memo 包裹純展示元件?
2. useEffect 的依賴陣列是否完整?
3. 是否有不必要的重新渲染?
4. CSS 是否使用了 Tailwind 的響應式斷點?
5. 無障礙屬性(aria-label、role)是否齊全?

發現問題時,直接給出具體修改建議,不要只說「應該優化」。

之後在 Claude Code 中輸入 /frontend-review@frontend-review,它就會按照這份清單來審查程式碼。

你可以在不同專案中維護不同的 skills:React 專案的審查標準、Python 專案的型別檢查習慣、資料庫遷移的安全規則——全部寫成 skill 檔案,團隊成員之間可以共享。

三、MCP 整合:把 Claude Code 變成指揮中心

MCP(Model Context Protocol)是 Anthropic 推出的開放標準,讓 LLM 可以安全地連接外部資料來源和工具。Claude Code 原生支援 MCP,你只需要在設定檔中聲明伺服器即可。

連接專案管理工具

以 Linear 為例(假設已安裝對應的 MCP 伺服器):

{
  "mcpServers": {
    "linear": {
      "command": "npx",
      "args": ["-y", "@linear/mcp-server"],
      "env": {
        "LINEAR_API_KEY": "${LINEAR_API_KEY}"
      }
    }
  }
}

設定完成後,你可以在 Claude Code 中直接說「把這個 bug 的狀態改成 In Progress」或「列出我今天的待辦任務」,不需要切換到 Linear 的網頁界面。

連接資料庫查詢

如果你的專案使用 PostgreSQL:

{
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": ["-y", "@anthropic/mcp-server-postgres"],
      "env": {
        "DATABASE_URL": "${DATABASE_URL}"
      }
    }
  }
}

現在你可以說「查一下 users 表中最近 7 天有登入的用戶數」,Claude Code 會直接執行 SQL 查詢並把結果帶回對話中。對於需要頻繁查資料的開發場景,省下了反覆切換視窗的摩擦。

把三個功能串起來

設定完成後,你的日常開發流程會變成這樣:

  1. 告訴 Claude Code 要開發什麼功能
  2. 它開始寫程式碼
  3. PostToolUse hook 自動觸發 linter
  4. Claude 看到 linter 的輸出,自動修正
  5. Stop hook 在結束前做最後的品質檢查
  6. 你收到一份完整的工作報告,附帶通過的檢查清單

你只需要在開始時下指令,結束時確認結果。中間的來回——lint → fix → re-lint → 檢查——全部自動化。

設定建議

如果你剛開始,建議按照這個順序來:

  1. 先設 linter hook。這是最容易看到效果的一步,五分鐘之內就能感受到差異。
  2. 再建一到兩個常用 skill。挑一個你每天都在做的 code review 檢查,寫成 skill。
  3. MCP 最後再做。MCP 需要額外的伺服器安裝,但一旦跑起來,它會徹底改變你使用 AI 輔助開發的方式。

三個功能都不難設定,但它們合在一起的效果遠大於各自為戰。Claude Code 不只是「一個會寫程式的聊天機器人」——配上 hooks、skills 和 MCP,它是一個可程式化的開發工作台。

分享文章

留言評論

0 則評論

暫無評論,搶先發表你的看法吧!

相關文章