擴展 Claude Code
了解何時使用 CLAUDE.md、Skills、subagents、hooks、MCP 和 plugins。
Claude Code 結合了一個能夠推理您程式碼的模型與內建工具,用於檔案操作、搜尋、執行和網路存取。內建工具涵蓋了大多數編碼任務。本指南涵蓋擴展層:您添加的功能,用於自訂 Claude 的知識、將其連接到外部服務,以及自動化工作流程。
有關核心代理迴圈如何運作的資訊,請參閱Claude Code 如何運作。
初次使用 Claude Code? 從CLAUDE.md開始了解專案約定,然後根據特定觸發器添加其他擴展。
概述
擴展插入代理迴圈的不同部分:
- CLAUDE.md 添加 Claude 在每個會話中看到的持久上下文
- Skills 添加可重複使用的知識和可調用的工作流程
- Code intelligence 將 Claude 連接到語言伺服器以進行符號級導航和即時類型錯誤
- MCP 將 Claude 連接到外部服務和工具
- Subagents 在隔離的上下文中運行自己的迴圈,返回摘要
- Agent teams 協調多個獨立會話,具有共享任務和點對點訊息傳遞
- Hooks 在生命週期事件上觸發,可以運行指令碼、HTTP 請求、提示或 subagent
- Plugins 和 marketplaces 打包和分發這些功能
Skills 是最靈活的擴展。Skill 是一個包含知識、工作流程或指令的 markdown 檔案。您可以使用像 /deploy 這樣的命令調用 skills,或者 Claude 可以在相關時自動載入它們。Skills 可以在您目前的對話中運行,或通過 subagents 在隔離的上下文中運行。
將功能與您的目標相匹配
功能範圍從 Claude 在每個會話中看到的始終開啟的上下文,到您或 Claude 可以調用的按需功能,再到在特定事件上運行的背景自動化。下表顯示了可用的功能以及何時使用每一個。
| 功能 | 它的作用 | 何時使用 | 範例 |
|---|---|---|---|
| CLAUDE.md | 每次對話載入的持久上下文 | 專案約定、「始終執行 X」規則 | 「使用 pnpm,而不是 npm。在提交前運行測試。」 |
| Skill | Claude 可以使用的指令、知識和工作流程 | 可重複使用的內容、參考文件、可重複的任務 | /deploy 運行您的部署檢查清單;包含端點模式的 API 文件 skill |
| Subagent | 返回摘要結果的隔離執行上下文 | 上下文隔離、並行任務、專門的工作者 | 讀取許多檔案但僅返回關鍵發現的研究任務 |
| Agent teams | 協調多個獨立的 Claude Code 會話 | 並行研究、新功能開發、使用競爭假設進行除錯 | 生成審查者以同時檢查安全性、效能和測試 |
| Code intelligence | 語言伺服器導航和診斷 | 類型化語言、大型程式碼庫,其中 grep 速度慢或不精確 | 跳轉到符號的定義,而不是讀取整個檔案 |
| MCP | 連接到外部服務 | 外部資料或操作 | 查詢您的資料庫、發佈到 Slack、控制瀏覽器 |
| Hook | 由事件觸發的指令碼、HTTP 請求、提示或 subagent | 必須在每個匹配事件上運行的自動化 | 在每次檔案編輯後運行 ESLint |
Plugins 是打包層。Plugin 將 skills、hooks、subagents 和 MCP servers 捆綁到單個可安裝單元中。Plugin skills 是命名空間的(如 /my-plugin:review),因此多個 plugins 可以共存。當您想在多個儲存庫中重複使用相同的設置或通過 marketplace 分發給他人時,使用 plugins。
隨著時間推移構建您的設置
您不需要預先配置所有內容。每個功能都有一個可識別的觸發器,大多數團隊大致按以下順序添加它們:
| 觸發器 | 添加 |
|---|---|
| Claude 兩次出錯的約定或命令 | 將其添加到 CLAUDE.md |
| 您一直在輸入相同的提示來啟動任務 | 將其保存為使用者可調用的 skill |
| 您第三次將相同的劇本或多步驟程序粘貼到聊天中 | 將其捕獲為 skill |
| 您一直在從 Claude 無法看到的瀏覽器選項卡複製資料 | 將該系統連接為 MCP server |
| Claude 讀取許多檔案以找到符號的定義或使用位置 | 為您的語言安裝 code intelligence plugin |
| 一個附帶任務用您不會再次參考的輸出淹沒您的對話 | 通過 subagent 路由它 |
| 您希望每次都發生某事而無需詢問 | 編寫 hook |
| 第二個儲存庫需要相同的設置 | 將其打包為 plugin |
相同的觸發器告訴您何時更新您已經擁有的內容。重複的錯誤或反覆出現的審查評論是 CLAUDE.md 編輯,而不是聊天中的一次性更正。您一直手動調整的工作流程是需要另一次修訂的 skill。
比較相似的功能
某些功能可能看起來相似。以下是如何區分它們。
Skills 和 subagents 解決不同的問題:
- Skills 是可重複使用的內容,您可以將其載入任何上下文
- Subagents 是與您的主要對話分開運行的隔離工作者
| 方面 | Skill | Subagent |
|---|---|---|
| 它是什麼 | 可重複使用的指令、知識或工作流程 | 具有自己上下文的隔離工作者 |
| 主要優勢 | 在上下文之間共享內容 | 上下文隔離。工作單獨進行,僅返回摘要 |
| 上下文視窗影響 | 添加到您的主視窗 | 使用具有自己輸入和輸出令牌的單獨視窗 |
| 最適合 | 參考資料、可調用的工作流程 | 讀取許多檔案的任務、並行工作、專門的工作者 |
Skills 可以是參考或操作。 參考 skills 提供 Claude 在整個會話中使用的知識(如您的 API 風格指南)。操作 skills 告訴 Claude 執行特定操作(如運行您的部署工作流程的 /deploy)。
當您需要上下文隔離或您的上下文視窗變滿時,使用 subagent。Subagent 可能讀取數十個檔案或運行廣泛的搜尋,但您的主要對話僅接收摘要。由於 subagent 工作不消耗您的主要上下文,當您不需要中間工作保持可見時,這也很有用。自訂 subagents 可以有自己的指令,並可以預載 skills。
它們可以結合。 Subagent 可以預載特定 skills(skills: 欄位)。Skill 可以使用 context: fork 在隔離的上下文中運行。有關詳細資訊,請參閱 Skills。
兩者都存儲指令,但它們的載入方式和用途不同。
| 方面 | CLAUDE.md | Skill |
|---|---|---|
| 載入 | 每個會話,自動 | 按需 |
| 可以包含檔案 | 是,使用 @path 匯入 |
是,使用 @path 匯入 |
| 可以觸發工作流程 | 否 | 是,使用 /<name> |
| 最適合 | 「始終執行 X」規則 | 參考資料、可調用的工作流程 |
如果 Claude 應該始終知道它,請將其放在 CLAUDE.md 中:編碼約定、構建命令、專案結構、「永遠不要執行 X」規則。
如果它是 Claude 有時需要的參考資料(API 文件、風格指南)或您使用 /<name> 觸發的工作流程(部署、審查、發佈),請將其放在 skill 中。
經驗法則: 保持 CLAUDE.md 在 200 行以下。如果它在增長,將參考內容移動到 skills 或拆分為 .claude/rules/ 檔案。
所有三者都存儲指令,但它們的載入方式不同:
| 方面 | CLAUDE.md | .claude/rules/ |
Skill |
|---|---|---|---|
| 載入 | 每個會話 | 每個會話,或在打開匹配檔案時 | 按需,在調用或相關時 |
| 範圍 | 整個專案 | 可以限定到檔案路徑 | 特定於任務 |
| 最適合 | 核心約定和構建命令 | 特定於語言或目錄的指南 | 參考資料、可重複的工作流程 |
使用 CLAUDE.md 用於每個會話需要的指令:構建命令、測試約定、專案架構。
使用 rules 保持 CLAUDE.md 專注。具有 paths frontmatter 的 rules 僅在 Claude 使用匹配檔案時載入,節省上下文。
使用 skills 用於 Claude 有時只需要的內容,如 API 文件或您使用 /<name> 觸發的部署檢查清單。
兩者都並行化工作,但它們在架構上不同:
- Subagents 在您的會話內運行並將結果報告回您的主要上下文
- Agent teams 是相互通訊的獨立 Claude Code 會話
| 方面 | Subagent | Agent team |
|---|---|---|
| 上下文 | 自己的上下文視窗;結果返回給呼叫者 | 自己的上下文視窗;完全獨立 |
| 通訊 | 僅向主代理報告結果 | 隊友直接相互訊息傳遞 |
| 協調 | 主代理管理所有工作 | 具有自我協調的共享任務清單 |
| 最適合 | 只有結果重要的專注任務 | 需要討論和協作的複雜工作 |
| 令牌成本 | 較低:結果摘要回主上下文 | 較高:每個隊友是單獨的 Claude 實例 |
當您需要快速、專注的工作者時,使用 subagent:研究問題、驗證聲明、審查檔案。Subagent 執行工作並返回摘要。您的主要對話保持乾淨。
當隊友需要共享發現、相互質疑和獨立協調時,使用 agent team。Agent teams 最適合具有競爭假設的研究、並行程式碼審查,以及每個隊友擁有單獨部分的新功能開發。
轉換點: 如果您運行並行 subagents 但遇到上下文限制,或者您的 subagents 需要相互通訊,agent teams 是自然的下一步。
Agent teams 是實驗性的,預設情況下被禁用。有關設置和目前限制,請參閱 agent teams。
MCP 將 Claude 連接到外部服務。Skills 擴展 Claude 的知識,包括如何有效地使用這些服務。
| 方面 | MCP | Skill |
|---|---|---|
| 它是什麼 | 連接到外部服務的協議 | 知識、工作流程和參考資料 |
| 提供 | 工具和資料存取 | 知識、工作流程、參考資料 |
| 範例 | Slack 整合、資料庫查詢、瀏覽器控制 | 程式碼審查檢查清單、部署工作流程、API 風格指南 |
這些解決不同的問題,並且可以很好地協同工作:
MCP 給予 Claude 與外部系統互動的能力。沒有 MCP,Claude 無法查詢您的資料庫或發佈到 Slack。
Skills 給予 Claude 關於如何有效使用這些工具的知識,以及您可以使用 /<name> 觸發的工作流程。Skill 可能包括您的團隊資料庫架構和查詢模式,或具有您的團隊訊息格式規則的 /post-to-slack 工作流程。
範例:MCP 伺服器將 Claude 連接到您的資料庫。Skill 教導 Claude 您的資料模型、常見查詢模式,以及用於不同任務的表格。
Hook 在生命週期事件上觸發;skill 被載入上下文供 Claude 應用。
| 方面 | Hook | Skill |
|---|---|---|
| 運行 | 殼層命令、HTTP 請求、LLM 提示或 subagent | Claude 讀取並遵循的指令 |
| 由以下觸發 | 生命週期事件,例如 PostToolUse 或 SessionStart |
您輸入 /<name>,或 Claude 將描述與您的任務相匹配 |
| 確定性 | 始終在其事件上觸發;觸發器是有保證的 | Claude 解釋指令;結果可能會有所不同 |
| 上下文成本 | 零,除非 hook 返回輸出 | 描述在每個會話載入;使用時完整內容載入 |
| 最適合 | 每次都以相同方式發生且不需要 Claude 思考的操作 | 需要推理的工作流程、參考資料、多步驟任務 |
當操作必須每次都以相同方式發生且不需要 Claude 思考時,使用 hook。例如:保存時格式化、拒絕 rm -rf /、在會話結束時發佈 Slack 訊息。
當 Claude 應該決定如何應用步驟或內容是知識而不是指令碼時,使用 skill。例如:/release 檢查清單、您的 API 風格指南、除錯劇本。
將護欄放在 hooks 中。 CLAUDE.md 或 skill 中的「永遠不要編輯 .env」之類的指令是請求,而不是保證。阻止編輯的 PreToolUse hook 是強制執行。如果規則必須每次都成立,將其作為 hook 而不是提示指令。
Hook 輸出進入上下文。 運行您的 linter 的 PostToolUse hook 將結果作為 Claude 讀取的文本反饋;/fix-lint skill 告訴 Claude 如何解決它們。
了解功能如何分層
功能可以在多個級別定義:使用者範圍、每個專案、通過 plugins,或通過受管理的策略。您也可以在子目錄中嵌套 CLAUDE.md 檔案,或在 monorepo 的特定套件中放置 skills。當相同的功能存在於多個級別時,以下是它們的分層方式:
- CLAUDE.md 檔案 是累加的:所有級別同時對 Claude 的上下文貢獻內容。來自您的工作目錄及以上的檔案在啟動時載入;子目錄在您在其中工作時載入。當指令衝突時,Claude 使用判斷來協調它們,更具體的指令通常優先。請參閱 CLAUDE.md 檔案如何載入。
- Skills 和 subagents 按名稱覆蓋:當相同名稱存在於多個級別時,一個定義根據優先級獲勝(skills 為受管理 > 使用者 > 專案;subagents 為受管理 > CLI 標誌 > 專案 > 使用者 > plugin)。Plugin skills 是命名空間的,以避免衝突。請參閱 skill 發現 和 subagent 範圍。
- MCP 伺服器 按名稱覆蓋:本地 > 專案 > 使用者。請參閱 MCP 範圍。
- Hooks 合併:所有註冊的 hooks 為其匹配事件觸發,無論來源如何。請參閱 hooks。
結合功能
每個擴展解決不同的問題:CLAUDE.md 處理始終開啟的上下文,skills 處理按需知識和工作流程,MCP 處理外部連接,subagents 處理隔離,hooks 處理自動化。真實的設置根據您的工作流程結合它們。
例如,您可能使用 CLAUDE.md 用於專案約定、skill 用於您的部署工作流程、MCP 用於連接到您的資料庫,以及 hook 用於在每次編輯後運行 linting。每個功能處理它最擅長的事情。
| 模式 | 它如何運作 | 範例 |
|---|---|---|
| Skill + MCP | MCP 提供連接;skill 教導 Claude 如何很好地使用它 | MCP 連接到您的資料庫,skill 記錄您的架構和查詢模式 |
| Skill + Subagent | Skill 生成 subagents 進行並行工作 | /audit skill 啟動在隔離上下文中工作的安全性、效能和風格 subagents |
| CLAUDE.md + Skills | CLAUDE.md 保持始終開啟的規則;skills 保持按需載入的參考資料 | CLAUDE.md 說「遵循我們的 API 約定」,skill 包含完整的 API 風格指南 |
| Hook + MCP | Hook 通過 MCP 觸發外部操作 | 編輯後 hook 在 Claude 修改關鍵檔案時發送 Slack 通知 |
了解上下文成本
您添加的每個功能都消耗 Claude 的一些上下文。太多可能會填滿您的上下文視窗,但它也可能添加噪聲,使 Claude 效率降低;skills 可能無法正確觸發,或 Claude 可能會失去對您的約定的追蹤。了解這些權衡有助於您構建有效的設置。有關這些功能如何在運行會話中結合的互動式視圖,請參閱探索上下文視窗。
按功能的上下文成本
每個功能都有不同的載入策略和上下文成本:
| 功能 | 何時載入 | 什麼載入 | 上下文成本 |
|---|---|---|---|
| CLAUDE.md | 會話開始 | 完整內容 | 每個請求 |
| Skills | 會話開始 + 使用時 | 啟動時的描述,使用時的完整內容 | 低(每個請求的描述)* |
| MCP 伺服器 | 會話開始 | 工具名稱;完整架構按需 | 低,直到使用工具 |
| Code intelligence | 檔案編輯後和按需 | 編輯後的診斷;查詢時的符號位置 | 低;減少其他地方的檔案讀取 |
| Subagents | 生成時 | 具有指定 skills 的新鮮上下文 | 與主會話隔離 |
| Hooks | 觸發時 | 無(外部運行) | 零,除非 hook 返回額外上下文 |
*預設情況下,skill 描述在會話開始時載入,以便 Claude 決定何時使用它們。在 skill 的 frontmatter 中設置 disable-model-invocation: true 以將其完全隱藏在 Claude 中,直到您手動調用它。這將 skills 的上下文成本降低到零,您只需自己觸發這些 skills。對於您未編寫的 skill,在設置中設置 skillOverrides 以執行相同操作,而無需編輯其檔案。
了解功能如何載入
每個功能在您的會話中的不同點載入。下面的選項卡說明每個功能何時載入以及什麼進入上下文。
何時: 會話開始
什麼載入: 所有 CLAUDE.md 檔案的完整內容(受管理、使用者和專案級別)。
繼承: Claude 從您的工作目錄讀取 CLAUDE.md 檔案直到根目錄,並在訪問這些檔案時在子目錄中發現嵌套的檔案。有關詳細資訊,請參閱 CLAUDE.md 檔案如何載入。
保持 CLAUDE.md 在 200 行以下。將參考資料移動到 skills,它們按需載入。
Skills 是 Claude 工具包中的額外功能。它們可以是參考資料(如 API 風格指南)或可調用的工作流程,您可以使用 /<name> 觸發(如 /deploy)。Claude Code 附帶捆綁的 skills,如 /code-review、/batch 和 /debug,開箱即用。您也可以創建自己的。Claude 在適當時使用 skills,或者您可以直接調用一個。
何時: 取決於 skill 的配置。預設情況下,描述在會話開始時載入,完整內容在使用時載入。對於僅使用者 skills(disable-model-invocation: true),在您調用它們之前不會載入任何內容。
什麼載入: 對於模型可調用的 skills,Claude 在每個請求中看到名稱和描述。當您使用 /<name> 調用 skill 或 Claude 自動載入它時,完整內容載入到您的對話中。
Claude 如何選擇 skills: Claude 將您的任務與 skill 描述相匹配,以決定哪些相關。如果描述模糊或重疊,Claude 可能載入錯誤的 skill 或錯過會有幫助的。要告訴 Claude 使用特定 skill,請使用 /<name> 調用它。具有 disable-model-invocation: true 的 Skills 對 Claude 不可見,直到您調用它們。
上下文成本: 低,直到使用。僅使用者 skills 在調用前成本為零。
在 subagents 中: Skills 在 subagents 中的工作方式不同。不是按需載入,skills 列表中列出的 skills 在啟動時完全預載入其上下文。Subagents 仍然可以通過 Skill 工具發現和調用未列出的專案、使用者和 plugin skills。
對具有副作用的 skills 使用 disable-model-invocation: true。這節省上下文並確保只有您觸發它們。
何時: 會話開始。
什麼載入: 來自連接伺服器的工具名稱。完整 JSON 架構保持延遲,直到 Claude 需要特定工具。
上下文成本: 工具搜尋預設啟用,因此閒置 MCP 工具消耗最少上下文。
運行 /mcp 以查看連接狀態和每個伺服器的令牌成本。Claude Code 自動重新連接到遠程伺服器(如果它們斷開連接),您可以斷開您未主動使用的伺服器。
何時: 檔案編輯後,以及當 Claude 導航程式碼時按需。
什麼載入: 每次檔案編輯後的類型錯誤和警告。當 Claude 查詢符號時的定義、參考和類型資訊。
上下文成本: 低。符號查詢通常會取代廣泛的檔案讀取,因此淨上下文使用可能會下降。
LSP 工具在您為您的語言安裝程式碼智能 plugin之前處於非活動狀態。
何時: 按需,當您或 Claude 為任務生成一個時。
什麼載入: 新鮮、隔離的上下文,包含:
- 代理的自身系統提示,而不是完整的 Claude Code 系統提示
- 代理
skills:欄位中列出的 skills 的完整內容 - CLAUDE.md 和 git 狀態,除了內置的 Explore 和 Plan 代理省略兩者
- 主代理在提示中傳遞的任何上下文
上下文成本: 與主會話隔離。Subagents 不繼承您的對話歷史或調用的 skills。
對不需要您完整對話上下文的工作使用 subagents。它們的隔離防止膨脹您的主會話。
何時: 觸發時。Hooks 在特定生命週期事件(如工具執行、會話邊界、提示提交、權限請求和壓縮)時觸發。有關完整清單,請參閱 Hooks。
什麼載入: 預設情況下無。Hooks 在主對話外執行。
上下文成本: 零,除非 hook 返回添加為訊息到您的對話的輸出。
Hooks 非常適合不需要影響 Claude 上下文的副作用(linting、logging)。
了解更多
每個功能都有自己的指南,包含設置指令、範例和配置選項。