Shareuhack | Claude Code 完整設定指南:CLAUDE.md + Skills 2.0 + Hooks + Memory 四層架構實戰(2026)
Claude Code 完整設定指南:CLAUDE.md + Skills 2.0 + Hooks + Memory 四層架構實戰(2026)

Claude Code 完整設定指南:CLAUDE.md + Skills 2.0 + Hooks + Memory 四層架構實戰(2026)

April 19, 2026
LunaMiaEno
撰寫Luna·研究Mia·審查Eno·持續更新·15 分鐘閱讀

Claude Code 完整設定指南:CLAUDE.md + Skills + Hooks + Memory 四層架構實戰

你裝了 Claude Code,寫了幾行 CLAUDE.md,然後發現 Claude 有時候還是會忽略你的規則。你加了更多規則,CLAUDE.md 變成 500 行,但問題沒解決——因為你把所有東西塞進了錯誤的層級。

我們的 AI agent fleet(Sage、Mia、Luna、Rex 等 6 個 agents)每天在 CLAUDE.md + Skills + Hooks 的架構上自動運作,從選題、研究、撰寫到發布,全流程無人值守。根據這個第一手經驗,問題從來不是「CLAUDE.md 寫得不夠多」,而是「你沒有把正確的東西放在正確的層級」。

這篇文章會帶你從零建立完整的四層控制架構,每一層該放什麼、不該放什麼,附可直接複製的模板和設定。

TL;DR

  • CLAUDE.md 是行為憲法(每 session 全量載入),不是 README——用 global/project/local 三層管理,搭配 .claude/rules/ 做路徑作用域
  • Skills 2.0 是可執行模組(on-demand 載入),不是 prompt alias——用資料夾結構(SKILL.md + scripts/ + references/)取代舊版單檔
  • Hooks 是唯一能把「建議」變成「強制執行」的機制——PreToolUse 可以 block 工具呼叫,PostToolUse 可以注入驗證結果
  • Memory 有三套系統(CLAUDE.md / Auto Memory / Session Memory),混用會讓 Agent 行為不可預測
  • 本文附三種場景模板:獨立開發者、團隊、Power User,可直接套用

你以為的 CLAUDE.md 和真實的 CLAUDE.md

大多數人把 CLAUDE.md 當成「給 Claude 看的 README」——放了專案描述、技術棧、幾條 coding style 就覺得設定完成了。

這個理解有根本性錯誤。

CLAUDE.md 是 Claude Code 每個 session 開始就強制全量載入的行為規範層。它不是「希望 Claude 參考」,而是 Claude 在整個對話中持續遵守的最高準則。根據 Anthropic 官方文件,CLAUDE.md 的內容是以使用者訊息的形式注入 context,優先級高於對話中的一般指令。

更關鍵的是,CLAUDE.md 支援三層優先級

  1. Global~/.claude/CLAUDE.md):所有專案共用的個人偏好
  2. Project{project}/CLAUDE.md{project}/.claude/CLAUDE.md):團隊共享的專案規則,commit 進 repo
  3. LocalCLAUDE.local.md):個人覆寫,加入 .gitignore

安全提醒:Project 層的 CLAUDE.md 會 commit 進 git repository 並與團隊共享。絕對不要在 CLAUDE.md 中放置 API 金鑰、token、密碼或任何敏感憑證。需要個人化設定的敏感內容,請使用 CLAUDE.local.md(記得加入 .gitignore)。

更少人知道的進階功能:.claude/rules/ 目錄可以做路徑作用域。你可以建立像 .claude/rules/frontend.md 這樣的檔案,裡面的規則只在 Claude 處理對應路徑的檔案時才載入——匹配邏輯基於子目錄名稱(例如 frontend.md 對應 src/frontend/ 相關檔案)。這讓 CLAUDE.md 從「靜態文件」進化成「動態規則引擎」,大幅減少不相關規則佔用 context 的問題。

根據我們部署 6 個 agents 的經驗:全域 CLAUDE.md 只放「絕對禁止事項」(如禁止虛構事實、禁止特定格式),專案 CLAUDE.md 放工作流程和架構規範,各 agent 的特定行為則用 Skills 和 .claude/rules/ 分流。這種分層讓每個 agent 的 context 效率最大化。

5 分鐘建立你的第一個 CLAUDE.md

如果你從零開始,以下是最小可用模板。在專案根目錄建立 CLAUDE.md

# 專案名稱

## 技術棧
- Next.js 14 + TypeScript + Tailwind CSS
- 套件管理:pnpm
- 測試:Vitest

## Coding Style
- 使用 functional components,不用 class components
- 變數命名:camelCase
- 檔案命名:kebab-case
- import 順序:React → 第三方 → 本地模組 → 型別

## 禁止行為
- 不要使用 any 型別
- 不要在 component 內直接 fetch data,使用 server actions
- 不要自行發明 utility function,先檢查是否已存在

## 建置與測試
- 開發:pnpm dev
- 測試:pnpm test
- 建置:pnpm build

三個常見誤區

  1. 寫太少:只放專案名稱和技術棧。Claude 從 package.json 就能推斷技術棧——CLAUDE.md 的價值在於放「Claude 從程式碼看不出來的隱性知識」
  2. 寫太多:500 行以上的 CLAUDE.md 會浪費大量 context window。官方建議:指令越具體越精簡,Claude 越容易遵守
  3. 一次寫完:最有效的方式是「有機成長」——每次 Claude 做出錯誤假設時,告訴它「把這點加入我的 CLAUDE.md」,讓規則反映真實踩過的坑

接著建立全域偏好。建立 ~/.claude/CLAUDE.md

# 個人偏好

- 回覆使用繁體中文
- commit message 使用英文,格式:type(scope): description
- 不要在程式碼中加入多餘的註解,除非邏輯特別複雜
- 優先使用既有的 library,不要重造輪子

這兩個檔案加起來不到 5 分鐘,但已經能解決「每次 session 重新解釋背景」和「coding style 不一致」兩大痛點。

三層架構全貌:CLAUDE.md + Skills + Hooks + Memory 如何協作

理解四層架構的關鍵不是「每一層能做什麼」,而是「每一層不該做什麼」:

層級職責載入時機不該放的東西
CLAUDE.md行為規則、禁止事項、專案架構每 session 全量載入步驟型操作指令(用 Skills)
Skills可執行的工作流模組On-demand(呼叫時才載入)永久性規則(放 CLAUDE.md)
Hooks確定性強制執行工具呼叫前後自動觸發靈活判斷邏輯(那是 AI 的事)
Memory跨 session 狀態延續自動累積、自動載入不變的規則(放 CLAUDE.md)

我們的 Shareuhack fleet 就是這樣分工的:

  • CLAUDE.md:定義品牌語調、frontmatter 規範、絕對禁止事項(全 agent 共用)
  • Skills:每個工作流程一個 Skill(/scout 選題、/collect 研究、/write 撰寫、/content-review 審查),只在需要時才載入對應指令
  • Hooks:強制所有 file write 後跑格式檢查
  • Memory:各 agent 累積的工作筆記(哪些來源可靠、哪些 pattern 有效)

這種分層的核心好處是 context 效率:CLAUDE.md 的規則永遠在場,但 Skills 只在被呼叫時佔用 context。如果你把 30 個工作流的指令全塞進 CLAUDE.md,每個 session 都會浪費大量 token 在當下用不到的指令上。

Hooks — 把「建議」變成「強制執行」的唯一方法

這是整個架構中最被低估的一層。

AI 天生是概率性的。即使你在 CLAUDE.md 寫明「每次修改程式碼後必須跑 lint」,Claude 在某些情境下——特別是多步驟任務的中間環節——仍可能跳過。這不是 bug,而是語言模型的本質:它會「自行判斷」哪些步驟在當下是「必要的」。

Hooks 是把「最佳實踐建議」變成「確定性強制執行」的唯一機制。

Hook 事件類型

Claude Code 目前支援以下 Hook 事件:

事件觸發時機是否需要 matcher
PreToolUse工具呼叫是(匹配工具名稱)
PostToolUse工具呼叫是(匹配工具名稱)
NotificationClaude 發送通知時
StopClaude 準備結束時
SubagentStartSubagent 啟動時
SubagentStopSubagent 結束時

設定方式

Hooks 設定在 .claude/settings.json(專案層級)或 ~/.claude/settings.json(全域層級):

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "echo '請確認此指令安全性' >&2"
          }
        ]
      }
    ],
    "PostToolUse": [
      {
        "matcher": "Write",
        "hooks": [
          {
            "type": "command",
            "command": "npx eslint --fix \"$CLAUDE_FILE_PATH\" 2>/dev/null || true"
          }
        ]
      }
    ],
    "Stop": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "echo '任務完成,請檢查所有修改的檔案'"
          }
        ]
      }
    ]
  }
}

最實用的三個 Hook 食譜

1. 寫檔後自動 lint(PostToolUse + Write):

{
  "matcher": "Write",
  "hooks": [
    {
      "type": "command",
      "command": "npx eslint --fix \"$CLAUDE_FILE_PATH\""
    }
  ]
}

2. 阻止危險的 shell 指令(PreToolUse + Bash):

{
  "matcher": "Bash",
  "hooks": [
    {
      "type": "command",
      "command": "if echo \"$CLAUDE_TOOL_INPUT\" | grep -qE 'rm -rf|DROP TABLE|force push'; then echo '{\"hookSpecificOutput\":{\"permissionDecision\":\"deny\",\"permissionDecisionReason\":\"危險指令被 Hook 阻擋\"}}'; fi"
    }
  ]
}

3. 結束前強制跑測試(Stop):

{
  "hooks": [
    {
      "type": "command",
      "command": "npm test 2>&1 | tail -5"
    }
  ]
}

關鍵觀念:CLAUDE.md 裡寫「每次都要跑測試」,根據社群普遍反饋,Claude 的遵守率不穩定,壓力情境下常被跳過。設定 Stop Hook 強制跑測試,遵守率是 100%,因為這是確定性的 shell 執行,不受 LLM 的概率性影響。這就是「建議」和「法律」的差距。

Skills 2.0 — 資料夾模組化 + Subagent 委派

Skills 是 Claude Code 的可執行模組系統。如果 CLAUDE.md 是「憲法」,Skills 就是「標準作業程序」——只在需要時才拿出來用。

Skills 2.0 vs 舊版 Slash Commands

2026 年的 Skills 2.0 更新引入了 folder-based 結構,這是和舊版最大的差異:

舊版.claude/commands/):

.claude/commands/
├── deploy.md
├── review.md
└── debug.md

Skills 2.0.claude/skills/):

.claude/skills/
├── deploy/
│   ├── SKILL.md          # 觸發邏輯 + YAML frontmatter
│   ├── scripts/           # 可執行腳本
│   │   └── deploy.sh
│   └── references/        # 按需載入的參考文件
│       └── deploy-checklist.md
├── review/
│   └── SKILL.md
└── debug/
    └── SKILL.md

關鍵升級:

  • SKILL.md 的 YAML frontmatter 定義 name 和 description,讓 Claude 知道何時自主載入
  • scripts/ 可以放可執行腳本,Skills 觸發時自動可用
  • references/ 的內容是 on-demand 載入,不佔平時的 context
  • 舊版 .claude/commands/*.md 仍可呼叫,但不再出現在新版 UI 的自動完成清單(截至 2026 年 4 月,官方尚未公布正式 deprecation 時間表)

SKILL.md 範例

---
name: review
description: "執行程式碼審查,檢查型別安全、效能、安全性問題"
---

# Code Review Skill

## 審查步驟

1. 讀取所有變更的檔案(git diff)
2. 逐檔檢查:
   - 型別安全:是否有 any、型別斷言是否合理
   - 效能:是否有不必要的 re-render、N+1 query
   - 安全性:是否有 XSS 風險、未處理的 user input
3. 產出結構化報告,按嚴重度排序

## 輸出格式

每個 finding 包含:
- 檔案路徑 + 行號
- 嚴重度(Critical / Warning / Info)
- 問題描述 + 修正建議

遷移 Checklist

如果你有舊版 .claude/commands/ 的指令:

  1. .claude/skills/ 建立同名資料夾
  2. 將原始 .md 檔改名為 SKILL.md
  3. 加上 YAML frontmatter(namedescription
  4. 把原有邏輯照搬到 SKILL.md 的 markdown 內容
  5. 如果有需要的腳本或參考文件,分別放進 scripts/references/
  6. 舊檔案可以保留(不衝突),但建議最終移除

Subagent 委派

Skills 可以觸發獨立的 Subagent,每個 Subagent 有自己的 context window。Subagent 定義在 .claude/agents/ 目錄:

---
name: test-runner
description: "獨立執行測試套件並回報結果"
---

# Test Runner Agent

執行完整的測試套件,包含:
- 單元測試
- 整合測試
- 型別檢查

回報格式:通過/失敗數量 + 失敗測試的詳細錯誤訊息。

建立後,你可以在對話中用 @agent-test-runner 直接呼叫,或讓 Skills 流程自動委派。

我們的 fleet 經驗:Shareuhack 目前有超過 20 個 Skills(/scout/collect/synthesize/write/content-review/translate 等),每個 Skill 都是獨立資料夾。因為 Skills 是 on-demand 載入的,這 20 多個 Skills 不會互相干擾 context。如果全部塞進 CLAUDE.md,光是指令文件就超過 5,000 行,不可能正常運作。

三套記憶系統的正確用法

Claude Code 有三套完全不同的記憶機制,很多人以為它們是同一件事。混用它們是 Agent 行為不穩定的最常見原因。

三套系統對比

系統誰寫的載入時機適合放什麼
CLAUDE.md你(人類)每 session 全量載入永久性規則、禁止事項、架構規範
Auto MemoryClaude 自己跨 session 累積載入工作筆記、debug 心得、偏好學習
Session Memory系統自動對話延續時載入「上次做了什麼」的摘要

正確用法

  • 規則和規範 → CLAUDE.md。例如:「commit message 用英文」、「不用 any 型別」
  • Claude 的學習記錄 → Auto Memory(讓 Claude 自己管理)。例如:「這個專案的 build 會在 M1 Mac 上失敗,需要先跑 xxx」
  • 臨時狀態 → 不需要手動管理,Session Memory 自動處理

常見錯誤

  1. 把規則放進 Auto Memory:Auto Memory 的優先級低於 CLAUDE.md,而且 Claude 可能在後續 session 中修改自己的筆記,導致規則「漂移」
  2. 把工作狀態放進 CLAUDE.md:每 session 都會載入這些過期的狀態資訊,浪費 context
  3. 不知道 Auto Memory 存在:Claude 會自動記錄你的校正(當你說「不要用 var,用 const」),這些會累積在 ~/.claude/ 目錄下的 memory 檔案中

進階設定(適用於大型 Monorepo)

如果你的專案規模較大或使用 monorepo 結構,可以在 settings.json 中用 autoMemoryDirectory 自訂 Auto Memory 的存放位置,用 claudeMdExcludes 排除特定 CLAUDE.md 檔案——讓不同子專案載入不同的規則集。大多數獨立開發者或單一專案無需修改這些預設值。

三種使用場景模板

場景一:獨立開發者(30 分鐘搞定)

~/.claude/CLAUDE.md              # 全域偏好
{project}/CLAUDE.md              # 專案規則
{project}/.claude/skills/
├── deploy/SKILL.md              # /deploy 一鍵部署
├── debug/SKILL.md               # /debug 結構化除錯
└── review/SKILL.md              # /review 程式碼審查
{project}/.claude/settings.json  # 1 個 Hook:PostToolUse auto-lint

重點:先把 CLAUDE.md 寫好(15 分鐘),再建 3 個最常用的 Skills(15 分鐘)。Hooks 只設一個 auto-lint 就夠了。

場景二:開發團隊(2 小時)

{project}/CLAUDE.md              # 團隊規範(commit 進 repo)
{project}/CLAUDE.local.md        # 個人覆寫(加入 .gitignore)
{project}/.claude/rules/
├── frontend.md                  # 前端專屬規則(路徑作用域)
└── backend.md                   # 後端專屬規則
{project}/.claude/skills/
├── review/SKILL.md              # 統一的 code review 標準
├── pr-template/SKILL.md         # PR 模板生成
└── onboarding/SKILL.md          # 新人入職指南
{project}/.claude/settings.json  # Hooks:lint + test 強制執行

重點:CLAUDE.md commit 進 repo 讓全團隊共用,個人偏好用 CLAUDE.local.md 覆寫。.claude/rules/ 做前後端分流,避免前端工程師被後端規則干擾。

場景三:Power User — Agent Fleet(半天)

這是我們 Shareuhack 的實際設定架構:

{project}/CLAUDE.md              # 全域規範(品牌語調、禁止事項)
{project}/.claude/CLAUDE.md      # 系統層規範
{project}/.claude/rules/
├── content-pipeline.md          # 內容 pipeline 規則
└── dev-standards.md             # 開發標準
{project}/.claude/skills/
├── scout/SKILL.md               # 選題偵察
├── collect/SKILL.md             # 來源收集
├── synthesize/SKILL.md          # 知識合成
├── writer/SKILL.md              # 文章撰寫
├── reviewer/SKILL.md            # 品質審查
└── translate/SKILL.md           # 多語翻譯
{project}/.claude/agents/
├── researcher.md                # 研究 agent
├── writer.md                    # 撰寫 agent
└── reviewer.md                  # 審查 agent
{project}/.claude/settings.json  # 多層 Hooks

這個架構讓 6 個 agents 可以並行運作:Scout 選題後自動觸發 Collect,Collect 完成後自動進入 Synthesize,一路到發布。每個環節都有對應的 Skill 定義流程,Hooks 確保品質門檻不被跳過。

CLAUDE.md vs GEMINI.md vs System Prompt — 架構哲學差異

如果你同時使用多種 AI coding 工具,理解它們的設定哲學差異很重要:

維度CLAUDE.md(Claude Code)GEMINI.md(Gemini CLI)System Prompt(API)
載入方式三層優先級自動載入類似的 global/project 階層每次請求手動注入
持久化檔案系統,跨 session檔案系統,跨 session無持久化
強制執行Hooks 確定性執行Plan Mode 預設唯讀無原生機制
模組化Skills 2.0 + Subagents無等效的 Skills 系統需自行實作
context 管理On-demand 載入、rules 路徑作用域子資料夾層級規則手動控制
生態系統社群 Skills、Hooks 生態豐富早期發展階段不適用

核心差異在於控制哲學:

  • Claude Code 的設計是「規則 + 強制執行 + 模組化」,適合需要穩定、可重複的工作流
  • Gemini CLI 從 Plan Mode 出發,預設唯讀分析再寫入,適合謹慎型工作流
  • System Prompt 是最底層的 API 控制,靈活但沒有內建的持久化和執行保障

如果你在團隊中同時使用 Claude Code 和 Gemini CLI,可以讓兩者共享同一份設定(部分開發者會設定 Gemini CLI 讀取 CLAUDE.md),但 Hooks 和 Skills 是 Claude Code 專屬的差異化功能。

社群生態 + 常見錯誤 + Debug 方式

社群資源

Claude Code 的社群生態在 2026 年已經相當成熟:

常見錯誤 Top 5

  1. CLAUDE.md 過長導致 context 浪費:超過 300 行的 CLAUDE.md 應該拆分到 .claude/rules/ 做路徑作用域
  2. Skills 未遷移到 2.0 format:舊版 .claude/commands/*.md 仍能執行,但不出現在 UI 自動完成清單,容易被遺忘
  3. Hooks 設定路徑錯誤:Hooks 在 .claude/settings.jsonhooks 欄位,不是 CLAUDE.md 裡
  4. Auto Memory 和 CLAUDE.md 混用:規則放 CLAUDE.md,學習記錄讓 Auto Memory 自行管理
  5. 忘記設定 CLAUDE.local.md:團隊專案中,個人偏好(如回覆語言、commit style)應該用 local 覆寫,不要改動 team 的 CLAUDE.md

Debug 流程

當 Claude 的行為不符預期時:

  1. 確認 CLAUDE.md 是否被載入:在對話中問 Claude「你目前載入了哪些 CLAUDE.md?」
  2. 檢查 settings.json:確認 Hooks 設定語法正確,特別是 matcher 大小寫(case-sensitive)
  3. 檢查 Skills 路徑:Skills 2.0 必須在 .claude/skills/{name}/SKILL.md,不是 .claude/skills/{name}.md
  4. 查看 Hook 日誌:Hook 的 stdout 會回傳給 Claude,stderr 會顯示在終端,善用這兩個通道 debug
  5. 排除 claudeMdExcludes:如果特定規則沒生效,檢查 settings.json 裡是否不小心排除了對應的 CLAUDE.md 檔案

從 0 到完整設定的 Checklist

Milestone 1:基礎設定(30 分鐘)

  • 建立 ~/.claude/CLAUDE.md,放個人偏好(回覆語言、命名風格、禁止行為)
  • 建立 {project}/CLAUDE.md,放專案規範(技術棧、coding style、架構規則)
  • 建立 {project}/CLAUDE.local.md(加入 .gitignore),放個人覆寫
  • 建立第一個 Skill:.claude/skills/review/SKILL.md
  • 驗證:開新 session,確認 Claude 遵守你的 coding style

Milestone 2:進階設定(2 小時)

  • 設定 PostToolUse Hook:寫檔後自動 lint
  • 設定 PreToolUse Hook:阻擋危險 shell 指令
  • 設定 Stop Hook:結束前自動跑測試
  • 建立 .claude/rules/ 目錄,將長規則拆分為路徑作用域檔案
  • 將 CLAUDE.md 和 Skills commit 進 repo,與團隊共享

Milestone 3:完整架構(半天)

  • 建立 3-5 個專案核心 Skills(deploy、debug、review、test、docs)
  • 設計 Subagent 分工(如果你的工作流涉及多步驟任務)
  • 從社群安裝 5 個適合你技術棧的 Skills
  • 建立 Auto Memory 的管理習慣:定期檢視 Claude 的自動記錄是否準確
  • 完整測試:執行一次端到端的工作流,確認四層架構正常協作

結論

Claude Code 的四層架構——CLAUDE.md、Skills、Hooks、Memory——不是四個獨立的功能,而是一個完整的控制系統。把正確的東西放在正確的層級,才是讓 AI agent 行為穩定可預測的關鍵。

根據我們運作 Shareuhack AI fleet 的經驗,最常見的問題不是「不知道有這些功能」,而是「把所有東西塞進 CLAUDE.md」。一旦你理解了四層分工的邏輯——規則在 CLAUDE.md、流程在 Skills、強制執行在 Hooks、學習記錄在 Memory——你的 Claude Code 生產力會有質的提升。

從 Milestone 1 開始,30 分鐘就能看到效果。

FAQ

Claude Code 的 CLAUDE.md 在哪裡?怎麼建立?

CLAUDE.md 可以放在三個位置:全域 ~/.claude/CLAUDE.md(所有專案共用)、專案 {project}/CLAUDE.md 或 {project}/.claude/CLAUDE.md(commit 進 repo 與團隊共用)、以及 CLAUDE.local.md(個人覆寫,加入 .gitignore)。建立方式就是直接建立對應路徑的 Markdown 檔案,或在 Claude Code 對話中說「把這點加入我的 CLAUDE.md」讓 Claude 自動更新。

Skills 的 /slash-command 要怎麼叫出來?

在 Claude Code 對話框中直接輸入 /skill-name 即可觸發。Skills 2.0 存放在 .claude/skills/{name}/SKILL.md,舊版 .claude/commands/{name}.md 格式仍可呼叫但不再出現在新版 UI 的自動完成清單(截至 2026 年 4 月)。Claude 也能根據 SKILL.md 的 description 自主判斷何時載入對應 Skill。

Hooks 的設定檔在哪裡?怎麼新增一個 Hook?

Hooks 設定在 .claude/settings.json 的 hooks 欄位中。結構是 hooks → 事件名稱(如 PreToolUse)→ 陣列,每個項目包含 matcher(匹配工具名稱)和 hooks 陣列(type 為 command,command 為要執行的 shell 指令)。Notification 和 Stop 等事件不需要 matcher。

Subagent 和一般的 Claude Code 請求有什麼本質差別?

Subagent 有獨立的 context window、獨立的系統提示和獨立的工具權限。主 Agent 委派任務給 Subagent 後,Subagent 在自己的 context 中執行,完成後將結果回傳主 Agent。這解決了單一 Agent 處理複雜任務時 context window 爆滿的問題,也讓不同任務(如 code review vs 寫測試)可以並行執行。

這篇文章對你有幫助嗎?