4 4
5# Plugins 參考5# Plugins 參考
6 6
7> Claude Code 外掛系統的完整技術參考,包括架構、CLI 命令和元件規格。7> Claude Code plugin 系統的完整技術參考,包括 schemas、CLI 命令和元件規格。
8 8
9<Tip>9<Tip>
10 想要安裝外掛?請參閱 [探索和安裝外掛](/docs/zh-TW/discover-plugins)。如需建立外掛,請參閱 [Plugins](/docs/zh-TW/plugins)。如需發佈外掛,請參閱 [Plugin marketplaces](/docs/zh-TW/plugin-marketplaces)。10 想要安裝 plugins?請參閱 [探索和安裝 plugins](/docs/zh-TW/discover-plugins)。如需建立 plugins,請參閱 [Plugins](/docs/zh-TW/plugins)。如需發佈 plugins,請參閱 [Plugin 市場](/docs/zh-TW/plugin-marketplaces)。
11</Tip>11</Tip>
12 12
13本參考提供 Claude Code 外掛系統的完整技術規格,包括元件架構、CLI 命令和開發工具。
14
15**plugin** 是一個自包含的目錄,包含擴展 Claude Code 功能的元件。Plugin 元件包括 skills、agents、hooks、MCP servers、LSP servers 和 monitors。13**plugin** 是一個自包含的目錄,包含擴展 Claude Code 功能的元件。Plugin 元件包括 skills、agents、hooks、MCP servers、LSP servers 和 monitors。
16 14
17<h2 id="plugin-components-reference">15<h2 id="plugin-components-reference">
22 Skills20 Skills
23</h3>21</h3>
24 22
25Plugins 將 skills 新增至 Claude Code,建立可由您或 Claude 叫用的 `/name` 快捷方式。23Plugins 會將 skills 新增至 Claude Code,建立 `/name` 快捷方式供您或 Claude 叫用。
26 24
27**位置**:plugin 根目錄中的 `skills/` 或 `commands/` 目錄,或 plugin 根目錄中的單一 `SKILL.md` 檔案25**位置**:plugin 根目錄中的 `skills/` 或 `commands/` 目錄,或 plugin 根目錄中的單一 `SKILL.md` 檔案
28 26
40 └── SKILL.md38 └── SKILL.md
41```39```
42 40
43**整合行為**:41當 plugin 安裝時,Skills 和 commands 會自動被發現。
44 42
45* 安裝 plugin 時會自動探索 skills 和 commands43如果 plugin 沒有 `skills/` 目錄且沒有 `skills` manifest 欄位,plugin 根目錄中的 `SKILL.md` 會被載入為單一 skill。設定 frontmatter `name` 欄位以控制 skill 的叫用名稱。沒有設定的話,Claude Code 會回退到安裝目錄名稱,對於從 marketplace 安裝的 plugins,這是一個在每次更新時都會改變的版本字串。對於提供多個 skills 的 plugins,請使用上面所示的 `skills/` 目錄配置。
46* Claude 可以根據任務上下文自動叫用它們
47* Skills 可以在 SKILL.md 旁邊包含支援檔案
48 44
49如果 plugin 沒有 `skills/` 目錄且沒有 `skills` manifest 欄位,plugin 根目錄中的 `SKILL.md` 會被載入為單一 skill。設定 frontmatter `name` 欄位以控制 skill 的叫用名稱。沒有它的話,Claude Code 會回退到安裝目錄名稱,對於 marketplace 安裝的 plugins,這是一個在每次更新時都會變更的版本字串。對於提供多個 skills 的 plugins,請使用上面所示的 `skills/` 目錄配置。45在 plugin skills 和 commands 中,Boolean frontmatter 欄位(例如 `disable-model-invocation`)接受 `yes`、`no`、`on`、`off`、`1` 和 `0`(任何字母大小寫),以及 `true` 和 `false`。在 v2.1.218 之前,Claude Code 只識別 `true` 和 `false`。
50 46
51如需完整詳細資訊,請參閱 [Skills](/docs/zh-TW/skills)。47如需完整詳細資訊,請參閱 [Skills](/docs/zh-TW/skills)。
52 48
54 Agents50 Agents
55</h3>51</h3>
56 52
57Plugins 可以提供專門的 subagents,用於 Claude 在適當時自動叫用的特定任務。53Plugins 可以提供專門的子代理程式來執行特定任務,Claude 可以在適當時自動叫用。
58 54
59**位置**:plugin 根目錄中的 `agents/` 目錄55**位置**:plugin 根目錄中的 `agents/` 目錄
60 56
61**檔案格式**:描述 agent 功能的 Markdown 檔案57**檔案格式**:描述代理程式功能的 Markdown 檔案
62 58
63**Agent 結構**:59**Agent 結構**:
64 60
65```markdown theme={null}61```markdown theme={null}
66---62---
67name: agent-name63name: agent-name
68description: 此 agent 的專長以及 Claude 應何時叫用它64description: What this agent specializes in and when Claude should invoke it
69model: sonnet65model: sonnet
70effort: medium66effort: medium
71maxTurns: 2067maxTurns: 20
72disallowedTools: Write, Edit68disallowedTools: Write, Edit
73---69---
74 70
75詳細的系統提示,描述 agent 的角色、專業知識和行為。71Detailed system prompt for the agent describing its role, expertise, and behavior.
76```72```
77 73
78Plugin agents 支援 `name`、`description`、`model`、`effort`、`maxTurns`、`tools`、`disallowedTools`、`skills`、`memory`、`background` 和 `isolation` frontmatter 欄位。唯一有效的 `isolation` 值是 `"worktree"`。出於安全原因,plugin 提供的 agents 不支援 `hooks`、`mcpServers` 和 `permissionMode`。74Plugin agents 支援 `name`、`description`、`model`、`effort`、`maxTurns`、`tools`、`disallowedTools`、`skills`、`memory`、`background` 和 `isolation` frontmatter 欄位。唯一有效的 `isolation` 值是 `"worktree"`。基於安全考量,plugin 提供的 agents 不支援 `hooks`、`mcpServers` 和 `permissionMode`。
75
76Claude Code 會載入 plugin agent,即使其 frontmatter 沒有 `name` 或無法解析:
77
78* 沒有 `name`:Claude Code 會根據檔案名稱為 agent 命名,所以名為 `my-plugin` 的 plugin 中的 `agents/reviewer.md` 會載入為 `my-plugin:reviewer`
79* 無法解析的 Frontmatter:Claude Code 會根據檔案名稱為 agent 命名,使用 `Agent from my-plugin plugin` 作為其描述,並忽略檔案中的每個欄位
80
81相比之下,Claude Code 會跳過其 frontmatter 沒有 `name` 或無法解析的專案、使用者或受管理的 agent 檔案。
79 82
80**整合點**:83若要找到 plugin 預設 `agents/` 目錄中 frontmatter 無法解析的檔案,請執行 `claude plugin validate`。您傳遞的路徑取決於 plugin 是否有 manifest,兩個範例都使用 `./my-plugin` 作為 plugin 目錄:
81 84
82* Agents 出現在 [@-mention 下拉式選單](/docs/zh-TW/sub-agents#invoke-subagents-explicitly) 中,其範圍名稱為 `my-plugin:code-reviewer`,一旦啟用 plugin85* 具有 manifest 的 plugin:`claude plugin validate ./my-plugin`
83* Claude 可以根據任務上下文自動叫用 agents86* 沒有 manifest 的 plugin:`claude plugin validate ./my-plugin/agents`。需要 Claude Code v2.1.233 或更新版本。
84* Users 可以手動叫用 agents87
85* Plugin agents 與內建 Claude agents 一起運作88Agents 會在 [@-mention 類型提前](/docs/zh-TW/sub-agents#invoke-subagents-explicitly) 中以其範圍名稱(例如 `my-plugin:code-reviewer`)出現,一旦 plugin 被啟用。
86 89
87如需完整詳細資訊,請參閱 [Subagents](/docs/zh-TW/sub-agents)。90如需完整詳細資訊,請參閱 [Subagents](/docs/zh-TW/sub-agents)。
88 91
92 95
93Plugins 可以提供事件處理程式,自動回應 Claude Code 事件。96Plugins 可以提供事件處理程式,自動回應 Claude Code 事件。
94 97
95**位置**:plugin 根目錄中的 `hooks/hooks.json`,或在 plugin.json 中內聯98**位置**:plugin 根目錄中的 `hooks/hooks.json`,或 plugin.json 中的內聯
96 99
97**格式**:具有事件匹配器和動作的 JSON 設定100**格式**:具有事件匹配器和動作的 JSON 設定
98 101
116}119}
117```120```
118 121
119Plugin hooks 回應與 [user-defined hooks](/docs/zh-TW/hooks) 相同的生命週期事件:122Plugin hooks 回應與 [使用者定義的 hooks](/docs/zh-TW/hooks) 相同的生命週期事件:
120 123
121| Event | When it fires |124| Event | When it fires |
122| :-------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |125| :-------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
159* `command`:執行 shell 命令或指令碼162* `command`:執行 shell 命令或指令碼
160* `http`:將事件 JSON 作為 POST 請求傳送到 URL163* `http`:將事件 JSON 作為 POST 請求傳送到 URL
161* `mcp_tool`:在已設定的 [MCP server](/docs/zh-TW/mcp) 上呼叫工具164* `mcp_tool`:在已設定的 [MCP server](/docs/zh-TW/mcp) 上呼叫工具
162* `prompt`:使用 LLM 評估提示(使用 `$ARGUMENTS` 佔位符表示上下文)165* `prompt`:使用 LLM 評估提示(使用 `$ARGUMENTS` 預留位置作為內容)
163* `agent`:執行具有工具的 agentic 驗證器以進行複雜驗證任務166* `agent`:執行具有工具的代理程式驗證器以進行複雜驗證任務
164 167
165針對 plugin 自己的 [bundled MCP server](#mcp-servers) 的 Hooks 必須使用其範圍名稱。工具匹配器和 `if` 欄位採用範圍工具名稱 `mcp__plugin_<plugin-name>_<server-name>__<tool>`,而 `mcp_tool` hook 的 `server` 欄位採用 `plugin:<plugin-name>:<server-name>`。針對裸伺服器金鑰撰寫的匹配器永遠不會觸發。請參閱 [Match MCP tools](/docs/zh-TW/hooks#match-mcp-tools) 和 [Plugin-provided MCP servers](/docs/zh-TW/mcp#plugin-provided-mcp-servers)。168針對 plugin 自己的 [bundled MCP server](#mcp-servers) 的 Hooks 必須使用其範圍名稱。工具匹配器和 `if` 欄位採用範圍工具名稱 `mcp__plugin_<plugin-name>_<server-name>__<tool>`,而 `mcp_tool` hook 的 `server` 欄位採用 `plugin:<plugin-name>:<server-name>`。針對裸伺服器金鑰編寫的匹配器永遠不會觸發。請參閱 [Match MCP tools](/docs/zh-TW/hooks#match-mcp-tools) 和 [Plugin-provided MCP servers](/docs/zh-TW/mcp#plugin-provided-mcp-servers)。
166 169
167<h3 id="mcp-servers">170<h3 id="mcp-servers">
168 MCP servers171 MCP servers
169</h3>172</h3>
170 173
171Plugins 可以捆綁 Model Context Protocol (MCP) servers,將 Claude Code 與外部工具和服務連接。174Plugins 可以捆綁 Model Context Protocol (MCP) 伺服器,以將 Claude Code 與外部工具和服務連接。
172 175
173**位置**:plugin 根目錄中的 `.mcp.json`,或在 plugin.json 中內聯176**位置**:plugin 根目錄中的 `.mcp.json`,或 plugin.json 中的內聯
174 177
175**格式**:標準 MCP server 設定178**格式**:標準 MCP 伺服器設定
176 179
177**MCP server 設定**:180**MCP 伺服器設定**:
178 181
179```json theme={null}182```json theme={null}
180{183{
196 199
197**整合行為**:200**整合行為**:
198 201
199* 啟用 plugin 時,Plugin MCP servers 會自動啟動202* Plugin MCP 伺服器在 plugin 啟用時自動啟動
200* Servers 在 Claude 的工具組中顯示為標準 MCP 工具203* 伺服器在 Claude 的工具組中顯示為標準 MCP 工具
201* Server 功能與 Claude 的現有工具無縫整合204* Plugin 伺服器可以獨立於使用者 MCP 伺服器進行設定
202* Plugin servers 可以獨立於使用者 MCP servers 進行設定205* 如果您在工作階段中執行 [`/reload-plugins`](/docs/zh-TW/discover-plugins#apply-plugin-changes-without-restarting),Claude Code 會保持其設定未變更的伺服器的即時連接
203 206
204<h3 id="lsp-servers">207<h3 id="lsp-servers">
205 LSP servers208 LSP servers
206</h3>209</h3>
207 210
208<Tip>211<Tip>
209 想要使用 LSP plugins?從官方 marketplace 安裝它們:在 `/plugin` Discover 標籤中搜尋「lsp」。本節記錄如何為官方 marketplace 未涵蓋的語言建立 LSP plugins。212 尋找使用 LSP plugins?從官方 marketplace 安裝它們:在 `/plugin` Discover 標籤中搜尋「lsp」。本節記錄如何為官方 marketplace 未涵蓋的語言建立 LSP plugins。
210</Tip>213</Tip>
211 214
212Plugins 可以提供 [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) (LSP) servers,在處理程式碼庫時為 Claude 提供即時程式碼智慧。215Plugins 可以提供 [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) (LSP) 伺服器,以在處理您的程式碼庫時為 Claude 提供 [即時程式碼智慧](/docs/zh-TW/discover-plugins#code-intelligence)。
213
214LSP 整合提供:
215
216* **即時診斷**:Claude 在每次編輯後立即看到錯誤和警告
217* **程式碼導航**:前往定義、尋找參考和懸停資訊
218* **語言感知**:程式碼符號的類型資訊和文件
219 216
220**位置**:plugin 根目錄中的 `.lsp.json`,或在 `plugin.json` 中內聯217**位置**:plugin 根目錄中的 `.lsp.json`,或 `plugin.json` 中的內聯
221 218
222**格式**:將語言伺服器名稱對應到其設定的 JSON 設定219**格式**:將語言伺服器名稱對應到其設定的 JSON 設定
223 220
262**選用欄位:**259**選用欄位:**
263 260
264| 欄位 | 描述 |261| 欄位 | 描述 |
265| :---------------------- | :------------------------------------------------------------------ |262| :---------------------- | :------------------------------------------------------------------------------------------ |
266| `args` | LSP server 的命令列引數 |263| `args` | LSP 伺服器的命令列引數 |
267| `transport` | 通訊傳輸:`stdio`(預設)或 `socket` |264| `transport` | 通訊傳輸:`stdio`(預設)或 `socket`。Claude Code 接受 `socket` 但在 stdio 上執行每個伺服器,因此 stdout 協定規則適用於所有伺服器 |
268| `env` | 啟動 server 時要設定的環境變數 |265| `env` | 啟動伺服器時要設定的環境變數 |
269| `initializationOptions` | 在初始化期間傳遞給 server 的選項 |266| `initializationOptions` | 在初始化期間傳遞給伺服器的選項 |
270| `settings` | 透過 `workspace/didChangeConfiguration` 傳遞的設定 |267| `settings` | 透過 `workspace/didChangeConfiguration` 傳遞的設定 |
271| `workspaceFolder` | server 的工作區資料夾路徑 |268| `workspaceFolder` | 伺服器的工作區資料夾路徑 |
272| `startupTimeout` | 等待 server 啟動的最長時間(毫秒) |269| `startupTimeout` | 等待伺服器啟動的最長時間(毫秒) |
273| `shutdownTimeout` | 等待正常關閉的最長時間(毫秒)。當逾時時間過去時,Claude Code 會終止 server 程序。未設定時,不適用逾時 |270| `shutdownTimeout` | 等待正常關閉的最長時間(毫秒)。當逾時時間過去時,Claude Code 會終止伺服器程序。未設定時,不適用逾時 |
274| `restartOnCrash` | server 崩潰後是否重新啟動。預設為 `true`。設定為 `false` 以保持崩潰的 server 停止而不是重新啟動它 |271| `restartOnCrash` | 伺服器當機後是否重新啟動。預設為 `true`。設定為 `false` 以保持當機的伺服器停止而不是重新啟動 |
275| `maxRestarts` | 放棄前的最大重新啟動嘗試次數 |272| `maxRestarts` | 放棄前的最大重新啟動嘗試次數 |
276| `diagnostics` | 是否在編輯後將診斷推送到 Claude 的上下文中(預設 `true`)。設定為 `false` 以保留程式碼導航但抑制自動診斷注入。 |273| `diagnostics` | 編輯後是否將診斷推送到 Claude 的內容中(預設 `true`)。設定為 `false` 以保持程式碼導覽但抑制自動診斷注入 |
277 274
278`restartOnCrash` 和 `shutdownTimeout` 需要 Claude Code v2.1.205 或更新版本。在 v2.1.205 之前,設定架構接受兩個選項,但設定其中任一個會導致 Claude Code 在啟動時完全跳過該 LSP server,原因僅在 `claude --debug` 輸出中可見。275`restartOnCrash` 和 `shutdownTimeout` 需要 Claude Code v2.1.205 或更新版本。在 v2.1.205 之前,設定結構描述接受兩個選項,但設定其中任一個會導致 Claude Code 在啟動時完全跳過該 LSP 伺服器,原因只在 `claude --debug` 輸出中可見。
279 276
280**相同副檔名的多個 servers**:當多個已啟用的 LSP servers 在 `extensionToLanguage` 中宣告相同的檔案副檔名時,無論 servers 來自一個 plugin 還是來自不同的 plugins,第一個註冊的 server 會處理具有該副檔名的檔案,其他的永遠不會啟動。`/plugin` 介面會顯示一個警告,命名其 server 為作用中的 plugin。277**同一副檔名的多個伺服器**:當多個已啟用的 LSP 伺服器在 `extensionToLanguage` 中宣告相同的檔案副檔名時,無論伺服器來自一個 plugin 還是來自不同的 plugins,第一個註冊的伺服器會處理具有該副檔名的檔案,其他伺服器永遠不會啟動。`/plugin` 介面會顯示一個警告,命名其伺服器為作用中的 plugin。
281 278
282**無法初始化的 Servers**:Claude Code 會跳過設定無效的 server,例如缺少 `command` 或 `extensionToLanguage` 的 server,其他已設定的 servers 仍會啟動。執行 `claude --debug` 以查看為什麼 server 被跳過。279**無法初始化的伺服器**:Claude Code 會跳過其設定無效的伺服器,例如缺少 `command` 或 `extensionToLanguage` 的伺服器,其他已設定的伺服器仍會啟動。執行 `claude --debug` 以查看伺服器被跳過的原因。
283 280
284被跳過的 server 不會聲稱其檔案副檔名,因此另一個宣告相同副檔名的有效 server(來自相同或不同的 plugin)仍會處理這些檔案。在 v2.1.205 之前,無法初始化的 server 仍會聲稱其副檔名並阻止另一個有效的 server 使用相同的副檔名。281被跳過的伺服器不會宣告其檔案副檔名,因此宣告相同副檔名的另一個有效伺服器(來自相同或不同的 plugin)仍會處理這些檔案。
282
283**將日誌輸出傳送到 stderr,而不是 stdout**:Claude Code 將伺服器的 stdout 讀取為協定訊息,並接受最多 64 KiB 的訊息標頭和最多 32 MiB 的訊息本文。Claude Code 會斷開超過任一限制或將非協定輸出寫入 stdout 的伺服器,並將斷開連接計為 `restartOnCrash` 和 `maxRestarts` 的當機。當您使用 `--debug` 執行時,Claude Code 會將命名原因的錯誤寫入偵錯日誌。
285 284
286<Warning>285<Warning>
287 **您必須單獨安裝語言伺服器二進位檔。** LSP plugins 設定 Claude Code 如何連接到語言伺服器,但它們不包括伺服器本身。如果您在 `/plugin` Errors 標籤中看到 `Executable not found in $PATH`,請為您的語言安裝所需的二進位檔。286 **您必須單獨安裝語言伺服器二進位檔。** LSP plugins 設定 Claude Code 如何連接到語言伺服器,但它們不包括伺服器本身。如果您在 `/plugin` Errors 標籤中看到 `Executable not found in $PATH`,請為您的語言安裝所需的二進位檔。
290**可用的 LSP plugins:**289**可用的 LSP plugins:**
291 290
292| Plugin | 語言伺服器 | 安裝命令 |291| Plugin | 語言伺服器 | 安裝命令 |
293| :------------------ | :------------------------- | :------------------------------------------------------------------------------ |292| :------------------ | :------------------------- | :------------------------------------------------------------------------------- |
294| `pyright-lsp` | Pyright (Python) | `pip install pyright` 或 `npm install -g pyright` |293| `pyright-lsp` | Pyright (Python) | `pip install pyright` 或 `npm install -g pyright` |
295| `typescript-lsp` | TypeScript Language Server | `npm install -g typescript-language-server typescript` |294| `typescript-lsp` | TypeScript Language Server | `npm install -g typescript-language-server typescript` |
296| `rust-analyzer-lsp` | rust-analyzer | [參閱 rust-analyzer 安裝](https://rust-analyzer.github.io/manual.html#installation) |295| `rust-analyzer-lsp` | rust-analyzer | [請參閱 rust-analyzer 安裝](https://rust-analyzer.github.io/manual.html#installation) |
297 296
298先安裝語言伺服器,然後從 marketplace 安裝 plugin。297先安裝語言伺服器,然後從 marketplace 安裝 plugin。
299 298
301 Monitors300 Monitors
302</h3>301</h3>
303 302
304Plugins 可以宣告背景 monitors,Claude Code 在 plugin 啟用時自動啟動。每個 monitor 執行一個 shell 命令,持續整個工作階段,並將每個 stdout 行傳遞給 Claude 作為通知,以便 Claude 可以對日誌項目、狀態變更或輪詢事件做出反應,而無需被要求自行啟動監視。303Plugins 可以宣告背景監視器,Claude Code 在 plugin 啟用時自動啟動。每個監視器在工作階段的生命週期內執行 shell 命令,並將每個 stdout 行傳遞給 Claude 作為通知,因此 Claude 可以對日誌項目、狀態變更或輪詢事件做出反應,而無需被要求自己啟動監視。
305 304
306Plugin monitors 使用與 [Monitor tool](/docs/zh-TW/tools-reference#monitor-tool) 相同的機制,並共享其可用性限制。它們僅在互動式 CLI 工作階段中執行,以與 [hooks](#hooks) 相同的信任級別在未沙箱化的環境中執行,並在 Monitor tool 不可用的主機上被跳過。305Plugin monitors 使用與 [Monitor tool](/docs/zh-TW/tools-reference#monitor-tool) 相同的機制,並共享其可用性限制。它們僅在互動式 CLI 工作階段中執行,以與 [hooks](#hooks) 相同的信任層級在未沙箱化的環境中執行,並在 Monitor tool 不可用的主機上被跳過。
307 306
308**位置**:plugin 根目錄中的 `monitors/monitors.json`,或在 `plugin.json` 中內聯307**位置**:plugin 根目錄中的 `monitors/monitors.json`,或 plugin.json 中的內聯
309 308
310**格式**:monitor 項目的 JSON 陣列309**格式**:監視器項目的 JSON 陣列
311 310
312以下 `monitors/monitors.json` 監視部署狀態端點和本機錯誤日誌:311以下 `monitors/monitors.json` 監視部署狀態端點和本機錯誤日誌:
313 312
327]326]
328```327```
329 328
330若要內聯宣告 monitors,請將 `plugin.json` 中的 `experimental.monitors` 設定為相同的陣列。若要從非預設路徑載入,請將 `experimental.monitors` 設定為相對路徑字串,例如 `"./config/monitors.json"`。Monitors 是 [experimental component](#experimental-components)。329若要內聯宣告監視器,請在 `plugin.json` 中將 `experimental.monitors` 設定為相同的陣列。若要從非預設路徑載入,請將 `experimental.monitors` 設定為相對路徑字串,例如 `"./config/monitors.json"`。Monitors 是 [experimental component](#experimental-components)。
331 330
332**必需欄位:**331**必需欄位:**
333 332
334| 欄位 | 描述 |333| 欄位 | 描述 |
335| :------------ | :------------------------------------------------- |334| :------------ | :------------------------------------------------ |
336| `name` | 在 plugin 中唯一的識別碼。防止 plugin 重新載入或再次叫用 skill 時出現重複程序 |335| `name` | 在 plugin 中唯一的識別碼。防止 plugin 重新載入或再次叫用 skill 時的重複程序 |
337| `command` | 在工作階段工作目錄中作為持久背景程序執行的 shell 命令 |336| `command` | 在工作階段工作目錄中作為持久背景程序執行的 shell 命令 |
338| `description` | 正在監視的內容的簡短摘要。顯示在任務面板和通知摘要中 |337| `description` | 正在監視的內容的簡短摘要。顯示在工作面板和通知摘要中 |
339 338
340**選用欄位:**339**選用欄位:**
341 340
342| 欄位 | 描述 |341| 欄位 | 描述 |
343| :----- | :----------------------------------------------------------------------------------------------------------------------- |342| :----- | :----------------------------------------------------------------------------------------------------------------- |
344| `when` | 控制 monitor 何時啟動。`"always"` 在工作階段啟動和 plugin 重新載入時啟動它,是預設值。`"on-skill-invoke:<skill-name>"` 在此 plugin 中的命名 skill 首次被分派時啟動它 |343| `when` | 控制監視器何時啟動。`"always"` 在工作階段啟動和 plugin 重新載入時啟動它,是預設值。`"on-skill-invoke:<skill-name>"` 在此 plugin 中的命名 skill 首次被分派時啟動它 |
345 344
346`command` 值支援 [path substitutions](#environment-variables) `${CLAUDE_PLUGIN_ROOT}`、`${CLAUDE_PLUGIN_DATA}` 和 `${CLAUDE_PROJECT_DIR}`,加上環境中的任何 `${ENV_VAR}`。如果指令碼需要從 plugin 自己的目錄執行,請在命令前加上 `cd "${CLAUDE_PLUGIN_ROOT}" && `。345`command` 值支援 [路徑替換](#environment-variables) `${CLAUDE_PLUGIN_ROOT}`、`${CLAUDE_PLUGIN_DATA}` 和 `${CLAUDE_PROJECT_DIR}`,加上環境中的任何 `${ENV_VAR}`。如果指令碼需要從 plugin 自己的目錄執行,請在命令前加上 `cd "${CLAUDE_PLUGIN_ROOT}" && `。
347 346
348monitor `command` 無法參考 [`${user_config.*}`](#user-configuration) 值。命令透過 shell 執行,所以 Claude Code 會以 [error](/docs/zh-TW/errors#plugin-command-references-user-config) 拒絕 monitor,而不是替換該值。Monitor 程序不會接收 `CLAUDE_PLUGIN_OPTION_<KEY>` 環境變數,所以讓 monitor 指令碼從它擁有的設定檔讀取該值。在 v2.1.207 之前,monitor 命令替換了 `${user_config.*}` 值。347Monitor `command` 無法參考 [`${user_config.*}`](#user-configuration) 值。命令透過 shell 執行,因此 Claude Code 會以 [error](/docs/zh-TW/errors#plugin-command-references-user-config) 拒絕監視器,而不是替換值。Monitor 程序不會接收 `CLAUDE_PLUGIN_OPTION_<KEY>` 環境變數,因此讓監視器指令碼從它擁有的設定檔讀取值。
349 348
350在工作階段中途停用 plugin 不會停止已在執行的 monitors。它們在工作階段結束時停止。349如果您在工作階段中停用 plugin,Claude Code 不會停止已在執行的監視器;它們在工作階段結束時停止。
351 350
352<h3 id="themes">351<h3 id="themes">
353 Themes352 Themes
354</h3>353</h3>
355 354
356Plugins 可以提供顏色主題,這些主題與內建預設值和使用者的本機主題一起出現在 `/theme` 中。主題是 `themes/` 中的 JSON 檔案,具有 `base` 預設值和稀疏的 `overrides` 顏色令牌對應。Themes 是 [experimental component](#experimental-components)。355Plugins 可以提供顏色主題,這些主題在 `/theme` 中與內建預設值和使用者的本機主題一起出現。主題是 `themes/` 中的 JSON 檔案,具有 `base` 預設值和稀疏的 `overrides` 顏色權杖對應。Themes 是 [experimental component](#experimental-components)。
357 356
358```json theme={null}357```json theme={null}
359{358{
367}366}
368```367```
369 368
370選擇 plugin 主題會在使用者的設定中保留 `custom:<plugin-name>:<slug>`。Plugin 主題是唯讀的;在 `/theme` 中按 `Ctrl+E` 會將其複製到 `~/.claude/themes/`,以便使用者可以編輯副本。369當使用者選擇 plugin 主題時,Claude Code 會在其設定中儲存 `custom:<plugin-name>:<slug>`。Plugin 主題是唯讀的:當使用者在 `/theme` 中按下 `Ctrl+E` 時,Claude Code 會將其複製到 `~/.claude/themes/` 中,以便他們可以編輯副本。
371 370
372***371***
373 372
375 Plugin 安裝範圍374 Plugin 安裝範圍
376</h2>375</h2>
377 376
378安裝 plugin 時,您選擇一個**範圍**,決定 plugin 的可用位置和誰可以使用它:377當您安裝 plugin 時,您可以選擇一個**範圍**,決定 plugin 在何處可用以及誰可以使用它:
379 378
380| 範圍 | 設定檔 | 使用案例 |379| 範圍 | 設定檔 | 使用案例 |
381| :-------- | :------------------------------------------------- | :----------------------- |380| :-------- | :------------------------------------------ | :------------------------------------------------ |
382| `user` | `~/.claude/settings.json` | 在所有專案中可用的個人 plugins(預設) |381| `user` | `~/.claude/settings.json` | 個人 plugin,可在所有專案中使用(預設) |
383| `project` | `.claude/settings.json` | 透過版本控制共享的團隊 plugins |382| `project` | `.claude/settings.json` | 透過版本控制共享的團隊 plugin |
384| `local` | `.claude/settings.local.json` | 專案特定的 plugins,gitignored |383| `local` | `.claude/settings.local.json` | 專案特定的 plugin,當 Claude Code 將設定儲存到其中時會被 gitignored |
385| `managed` | [Managed settings](/docs/zh-TW/settings#settings-files) | 受管理的 plugins(唯讀,僅更新) |384| `managed` | [Managed settings](/docs/zh-TW/managed-settings) | 受管理的 plugin(唯讀,僅更新) |
386 385
387Plugins 使用與其他 Claude Code 設定相同的範圍系統。如需安裝說明和範圍旗標,請參閱 [安裝 plugins](/docs/zh-TW/discover-plugins#install-plugins)。如需範圍的完整說明,請參閱 [Configuration scopes](/docs/zh-TW/settings#configuration-scopes)。386Plugin 使用與其他 Claude Code 設定相同的範圍系統。如需安裝說明和範圍旗標,請參閱 [Install plugins](/docs/zh-TW/discover-plugins#install-plugins)。如需範圍的完整說明,請參閱 [Configuration scopes](/docs/zh-TW/settings#where-settings-live)。
388 387
389***388***
390 389
391<h2 id="skills-directory-plugins">390<h2 id="skills-directory-plugins">
392 Skills 目錄 plugins391 Skills-directory plugins
393</h2>392</h2>
394 393
395任何 skills 目錄下包含 `.claude-plugin/plugin.json` manifest 的資料夾都會在下一個工作階段中作為名為 `<name>@skills-dir` 的 plugin 載入,無需 marketplace 和無需安裝步驟。使用 [`plugin init`](#plugin-init) 進行搭建。與 marketplace 安裝不同,plugin 是在原地發現的,而不是複製到 plugin 快取中。394任何 skills 目錄下的資料夾,如果包含 `.claude-plugin/plugin.json` 清單,就會在下一個工作階段中以 `<name>@skills-dir` 的名稱載入為 plugin,無需市集且無需安裝步驟。使用 [`plugin init`](#plugin-init) 來建立一個。與複製的市集安裝不同,plugin 是在原地被發現而不是被複製到 plugin 快取中。
396 395
397Skills 目錄樹支援三個不同的東西:396skills 目錄樹支援三種不同的東西:
398 397
399| 您擁有的內容 | 它是什麼 |398| 你擁有的 | 它是什麼 |
400| :-------------------------------------------- | :------------------------------------------------------- |399| :-------------------------------------------- | :------------------------------------------------------- |
401| `<skills-dir>/foo/SKILL.md`,沒有 manifest | 一個名為 `foo` 的純 [skill](/docs/zh-TW/skills) |400| `<skills-dir>/foo/SKILL.md` 且沒有清單 | 一個名為 `foo` 的純 [skill](/docs/zh-TW/skills) |
402| `<skills-dir>/foo/.claude-plugin/plugin.json` | 一個 plugin `foo@skills-dir`,可以捆綁自己的 skills、agents、hooks 等 |401| `<skills-dir>/foo/.claude-plugin/plugin.json` | 一個 plugin `foo@skills-dir`,可以捆綁自己的 skills、agents、hooks 等 |
403| `<plugin>/skills/bar/SKILL.md` | 一個 skill `bar`,打包在 plugin 內 |402| `<plugin>/skills/bar/SKILL.md` | 一個 skill `bar` 打包在 plugin 內 |
404 403
405<h3 id="choose-where-the-plugin-loads-from">404<h3 id="choose-where-the-plugin-loads-from">
406 選擇 plugin 載入的位置405 選擇 plugin 從何處載入
407</h3>406</h3>
408 407
409| Skills 目錄 | 範圍 | 載入 |408| Skills 目錄 | 範圍 | 載入 |
410| :---------------------- | :------- | :----------------------------------------------- |409| :---------------------- | :- | :---------------------------------------------------------------------------------- |
411| `~/.claude/skills/` | personal | 在每個專案中,因為位置只屬於您 |410| `~/.claude/skills/` | 個人 | 在每個專案中,因為該位置只屬於你 |
412| `<cwd>/.claude/skills/` | project | 只有在您接受該資料夾的工作區 [trust dialog](/docs/zh-TW/settings) 後 |411| `<cwd>/.claude/skills/` | 專案 | 只有在你接受該資料夾的工作區 [信任對話](/docs/zh-TW/permissions#what-runs-before-you-trust-a-folder) 後才會載入 |
413 412
414專案範圍的 plugin 被簽入存放庫,並到達克隆它的每個協作者。因為該內容來自存放庫而不是來自您,它只在與 `.claude/settings.json` 相同的信任閘道後載入,並且執行程式碼的元件受到進一步限制:413專案範圍的 plugin 被簽入到儲存庫中,並到達每個複製它的協作者。因為該內容來自儲存庫而不是來自你,它只有在與 `.claude/settings.json` 中的專案允許規則相同的信任閘道後才會載入,所以信任父資料夾或使用 `-p` 執行是不夠的,執行程式碼的元件會受到進一步限制:
415 414
416* 它宣告的 MCP servers 會經過與專案 `.mcp.json` 相同的 [per-server approval](/docs/zh-TW/mcp)415* 它宣告的 MCP 伺服器會經過與專案 `.mcp.json` 相同的 [每個伺服器批准](/docs/zh-TW/mcp)
417* LSP servers 只有在您信任工作區後才會啟動416* LSP 伺服器只有在你信任工作區後才會啟動
418* [Background monitors](#monitors) 不會載入417* [背景監視器](#monitors) 不會載入
419 418
420個人範圍的 plugins 沒有這些限制。419個人範圍的 plugins 沒有這些限制。
421 420
422<Warning>421<Warning>
423 專案範圍的 `@skills-dir` plugins 只從您啟動 Claude Code 的目錄的 `.claude/skills/` 載入。它們不會像純 skills 和 commands 那樣 [walk up to the repository root](/docs/zh-TW/skills#automatic-discovery-from-parent-and-nested-directories),所以從子目錄啟動會錯過位於存放庫根目錄的 plugin。從存放庫根目錄啟動,或在變更目錄後執行 `/reload-plugins`。422 專案範圍的 `@skills-dir` plugins 只從工作階段的 [主要工作目錄](/docs/zh-TW/permissions#working-directories) 的 `.claude/skills/` 載入。它們不會像純 skills 和命令那樣 [向上走到儲存庫根目錄](/docs/zh-TW/skills#discovery-from-parent-and-nested-directories),所以從子目錄啟動會錯過位於儲存庫根目錄的 plugin。從儲存庫根目錄啟動,或在 v2.1.246 或更新版本上 [使用 `/cd` 將工作階段移到那裡](/docs/zh-TW/permissions#move-the-session-to-another-directory)。
424</Warning>423</Warning>
425 424
426<h3 id="edit-reload-and-disable-a-skills-directory-plugin">425<h3 id="edit-reload-and-disable-a-skills-directory-plugin">
427 編輯、重新載入和停用 skills 目錄 plugin426 編輯、重新載入和停用 skills-directory plugin
428</h3>427</h3>
429 428
430您對 skill 的 `SKILL.md` 所做的變更會立即在目前工作階段中生效。對 plugin 的其他元件(例如 `hooks/`、`.mcp.json`、`agents/` 和 `output-styles/`)的變更則不會。執行 `/reload-plugins` 或重新啟動 Claude Code 以取得這些變更。請參閱 [Live change detection](/docs/zh-TW/skills#live-change-detection)。429你對 skill 的 `SKILL.md` 所做的更改會立即在目前工作階段中生效。對 plugin 的其他元件(例如 `hooks/`、`.mcp.json`、`agents/` 和 `output-styles/`)的更改則不會。執行 `/reload-plugins` 或重新啟動 Claude Code 來取得這些更改。請參閱 [Live change detection](/docs/zh-TW/skills#live-change-detection)。
431 430
432若要停止載入 skills 目錄 plugin,請刪除其資料夾或按名稱停用它。沒有 `uninstall` 步驟,因為沒有從 marketplace 安裝任何內容。431要停止載入 skills-directory plugin,請刪除其資料夾或按名稱停用它。沒有 `uninstall` 步驟,因為沒有從市集安裝任何東西。
433 432
434```bash theme={null}433```bash theme={null}
435claude plugin disable my-tool@skills-dir434claude plugin disable my-tool@skills-dir
437 436
438***437***
439 438
439<h2 id="synced-plugins">
440 從 claude.ai 同步的外掛程式
441</h2>
442
443在 [Cowork](https://claude.com/product/cowork) 和[雲端工作階段](/docs/zh-TW/cloud-environments#what-carries-over-from-your-setup)中,Claude Code 會將為您的 claude.ai 帳戶啟用的外掛程式下載到工作階段自身環境中的 `~/.claude/plugins/synced/`,並將每個外掛程式載入為 `<name>@synced`,沒有 marketplace 也沒有安裝記錄。Claude Code 不會在您於自己的終端機中啟動的工作階段中載入它們。在該 Cowork 或雲端環境內,`claude plugin list` 會在 `Synced from claude.ai` 標題下顯示下載的副本。在 v2.1.239 之前,Claude Code 將這些外掛程式載入為 `<name>@inline`,這是 `--plugin-dir` 外掛程式使用的身分。
444
445使用 `claude plugin list` 列印的 `<name>@synced` ID 來管理同步的外掛程式:
446
447* **關閉其中一個**:在同步的工作階段中,執行 `claude plugin disable <name>@synced`,或要求 Claude 執行它。Claude Code 會將選擇儲存為該環境使用者層級 [`enabledPlugins`](/docs/zh-TW/settings-reference#enabledplugins) 中的 `"<name>@synced": false`。若要重新開啟外掛程式,請在同一工作階段中執行 `claude plugin enable <name>@synced`。若要將外掛程式排除在每個同步工作階段之外,請[為您的 claude.ai 帳戶關閉它](/docs/zh-TW/desktop#extend-claude-code)。若要將它排除在一個專案在每個環境中的同步工作階段之外,請在該專案已提交的 `.claude/settings.json` 中的 `enabledPlugins` 下設定 `"<name>@synced": false`。
448* **在 claude.ai 上管理外掛程式本身**:`claude plugin install`、`update` 和 `uninstall` 不適用於同步的外掛程式。若要移除一個,請為您的 claude.ai 帳戶關閉該外掛程式;下一個同步工作階段將在沒有它的情況下啟動。
449
450當來自任何其他來源的已啟用外掛程式(例如 marketplace 安裝、[技能目錄外掛程式](#skills-directory-plugins)或 `--plugin-dir` 外掛程式)與同步外掛程式的名稱相符時,Claude Code 會載入該外掛程式並報告同步副本未被載入。若要改用 claude.ai 副本,請停用您自己的副本。在 v2.1.239 之前,Claude Code 會載入同步副本而不是同名的 marketplace 安裝。
451
452***
453
440<h2 id="plugin-manifest-schema">454<h2 id="plugin-manifest-schema">
441 Plugin manifest 架構455 Plugin 資訊清單架構
442</h2>456</h2>
443 457
444`.claude-plugin/plugin.json` 檔案定義您的 plugin 的中繼資料和設定。本節記錄所有支援的欄位和選項。458`.claude-plugin/plugin.json` 檔案定義了您的 plugin 的中繼資料和設定。
445 459
446manifest 是選用的。如果省略,Claude Code 會自動探索[預設位置](#file-locations-reference)中的元件,並從目錄名稱衍生 plugin 名稱。當您需要提供中繼資料或自訂元件路徑時,請使用 manifest。460資訊清單是選用的。如果省略,Claude Code 會在[預設位置](#file-locations-reference)自動探索元件,並從目錄名稱衍生 plugin 名稱。當您需要提供中繼資料或自訂元件路徑時,請使用資訊清單。
447 461
448<h3 id="complete-schema">462<h3 id="complete-schema">
449 完整架構463 完整架構
464 "repository": "https://github.com/author/plugin",478 "repository": "https://github.com/author/plugin",
465 "license": "MIT",479 "license": "MIT",
466 "keywords": ["keyword1", "keyword2"],480 "keywords": ["keyword1", "keyword2"],
481 "metadata": { "catalogId": "cat-123", "tier": "pro" },
467 "skills": "./custom/skills/",482 "skills": "./custom/skills/",
468 "commands": ["./custom/commands/special.md"],483 "commands": ["./custom/commands/special.md"],
469 "agents": ["./custom/agents/reviewer.md"],484 "agents": ["./custom/agents/reviewer.md"],
483```498```
484 499
485<h3 id="required-fields">500<h3 id="required-fields">
486 必需欄位501 必要欄位
487</h3>502</h3>
488 503
489如果您包含 manifest,`name` 是唯一必需的欄位。504如果您包含資訊清單,`name` 是唯一必要的欄位。
490 505
491| 欄位 | 類型 | 描述 | 範例 |506| 欄位 | 類型 | 說明 | 範例 |
492| :----- | :----- | :-------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------- |507| :----- | :----- | :---------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------- |
493| `name` | string | 唯一識別碼(kebab-case,無空格)。當[marketplace 項目](/docs/zh-TW/plugin-marketplaces#plugin-entries)以不同名稱列出 plugin 時,marketplace 項目名稱是 `enabledPlugins` 金鑰和 `/plugin` 使用的名稱 | `"deployment-tools"` |508| `name` | string | 唯一識別碼,採用 kebab-case,不含空格、控制字元或雙向格式化字元。當[市集項目](/docs/zh-TW/plugin-marketplaces#plugin-entries)以不同名稱列出 plugin 時,市集項目名稱是 `enabledPlugins` 金鑰和 `/plugin` 使用的名稱 | `"deployment-tools"` |
494 509
495此名稱用於命名空間元件。例如,在 UI 中,名稱為 `plugin-dev` 的 plugin 的 agent `agent-creator` 將顯示為 `plugin-dev:agent-creator`。510此名稱用於元件命名空間。例如,在 UI 中,名稱為 `plugin-dev` 的 plugin 的代理程式 `agent-creator` 將顯示為 `plugin-dev:agent-creator`。
496 511
497<h3 id="unrecognized-fields">512<h3 id="unrecognized-fields">
498 無法識別的欄位513 無法識別的欄位
499</h3>514</h3>
500 515
501Claude Code 會忽略它無法識別的頂層欄位。您可以在 `plugin.json` 中保留來自另一個生態系統的中繼資料,plugin 仍會載入。這使得維護一個 manifest 作為 VS Code 或 Cursor 擴充功能 manifest、npm `package.json` 或 MCPB/DXT bundle manifest 變得實用。516Claude Code 會忽略它無法識別的頂層欄位。您可以在 `plugin.json` 中保留來自另一個生態系統的中繼資料,plugin 仍會載入。這使得維護一個資訊清單變得實用,該資訊清單可同時用作 VS Code 或 Cursor 擴充功能資訊清單、npm `package.json` 或 MCPB/DXT 套件資訊清單。
517
518`claude plugin validate` 會將無法識別的欄位報告為警告,而非錯誤。如果欄位與已識別的欄位相差一或兩個字元,警告會建議可能的預期名稱。只有無法識別欄位警告的 plugin 仍會通過驗證並在執行時載入。
502 519
503`claude plugin validate` 將無法識別的欄位報告為警告,而不是錯誤。如果欄位與已識別的欄位相差一或兩個字元,警告會建議可能的預期名稱。只有無法識別欄位警告的 plugin 仍會通過驗證並在執行時載入。520Claude Code 如何處理已識別欄位但值類型錯誤的情況取決於該欄位:
504 521
505類型錯誤的欄位仍會失敗。例如,`keywords` 值是字串而不是陣列是載入錯誤,`claude plugin validate` 會將其報告為錯誤。522* **大多數欄位**:plugin 無法載入。例如,`keywords` 值為字串而非陣列是載入錯誤,`claude plugin validate` 會將其報告為錯誤。
523* **`experimental` 和 `metadata`**:Claude Code 會忽略非物件值,`claude plugin validate` 會報告警告。
506 524
507傳遞 `--strict` 以將警告視為錯誤。在 CI 中使用它來捕捉拼寫錯誤的欄位名稱或來自另一個工具的 manifest 中遺留的欄位,然後再發佈,即使 plugin 會在執行時載入。525傳遞 `--strict` 以將警告視為錯誤。在 CI 中使用它來在發佈前捕捉拼寫錯誤的欄位名稱或來自另一個工具資訊清單的遺留欄位,即使 plugin 在執行時會載入。
508 526
509```bash theme={null}527```bash theme={null}
510claude plugin validate ./my-plugin --strict528claude plugin validate ./my-plugin --strict
514 中繼資料欄位532 中繼資料欄位
515</h3>533</h3>
516 534
517| 欄位 | 類型 | 描述 | 範例 |535| 欄位 | 類型 | 說明 | 範例 |
518| :--------------- | :------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------- |536| :--------------- | :------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------- |
519| `$schema` | string | JSON Schema URL,用於編輯器自動完成和驗證。Claude Code 在載入時忽略此欄位。 | `"https://json.schemastore.org/claude-code-plugin-manifest.json"` |537| `$schema` | string | JSON Schema URL,用於編輯器自動完成和驗證。Claude Code 在載入時會忽略此欄位。 | `"https://json.schemastore.org/claude-code-plugin-manifest.json"` |
520| `displayName` | string | 在 `/plugin` 選擇器和其他 UI 介面中顯示的人類可讀名稱。當省略時回退到 `name`。與 `name` 不同,可能包含空格和任何大小寫。不用於命名空間或查詢。需要 Claude Code v2.1.143 或更新版本。 | `"Deployment Tools"` |538| `displayName` | string | 在 `/plugin` 選擇器和其他 UI 表面中顯示的人類可讀名稱。對於市集安裝的 plugin,[市集項目](/docs/zh-TW/plugin-marketplaces#optional-plugin-fields)上的 `displayName` 優先於此值。當兩個位置都未設定顯示名稱時,使用者會看到 `name`。與 `name` 不同,可包含空格和任何大小寫。不用於命名空間或查詢。 | `"Deployment Tools"` |
521| `version` | string | 選用。語義版本。設定此項會將 plugin 固定到該版本字串,因此使用者只會在您提升版本時收到更新。如果省略,Claude Code 會回退到 git commit SHA,因此每個 commit 都被視為新版本。如果也在 marketplace 項目中設定,`plugin.json` 優先。請參閱[版本管理](#version-management)。 | `"2.1.0"` |539| `version` | string | 選用。語義版本。設定此項會將 plugin 固定到該版本字串,因此使用者只有在您提升版本時才會收到更新,除了[`command` 來源](/docs/zh-TW/plugin-marketplaces#command-sources)外;請參閱[版本管理](#version-management)。如果也在市集項目中設定,`plugin.json` 優先。如果省略,版本來自[版本管理](#version-management)中的下一個來源。 | `"2.1.0"` |
522| `description` | string | plugin 用途的簡短說明 | `"Deployment automation tools"` |540| `description` | string | plugin 用途的簡短說明 | `"Deployment automation tools"` |
523| `author` | object | 作者資訊 | `{"name": "Dev Team", "email": "dev@company.com"}` |541| `author` | object | 作者資訊 | `{"name": "Dev Team", "email": "dev@company.com"}` |
524| `homepage` | string | 文件 URL | `"https://docs.example.com"` |542| `homepage` | string | 文件 URL | `"https://docs.example.com"` |
525| `repository` | string | 原始程式碼 URL | `"https://github.com/user/plugin"` |543| `repository` | string | 原始碼 URL | `"https://github.com/user/plugin"` |
526| `license` | string | 授權識別碼 | `"MIT"`、`"Apache-2.0"` |544| `license` | string | 授權識別碼 | `"MIT"`、`"Apache-2.0"` |
527| `keywords` | array | 探索標籤 | `["deployment", "ci-cd"]` |545| `keywords` | array | 探索標籤 | `["deployment", "ci-cd"]` |
528| `defaultEnabled` | boolean | 當使用者未設定時,plugin 是否以啟用狀態啟動。預設為 `true`。請參閱[預設啟用](#default-enablement)。需要 Claude Code v2.1.154 或更新版本。 | `false` |546| `metadata` | object | 自由格式物件,用於您自己的資料,例如權利或目錄欄位。Claude Code 不會讀取它,因此值永遠不會影響 plugin 行為。Claude Code 會忽略非物件值,`claude plugin validate` 會將其報告為警告。在 v2.1.222 之前,Claude Code 將金鑰視為[無法識別的欄位](#unrecognized-fields)。 | `{"catalogId": "cat-123"}` |
547| `defaultEnabled` | boolean | 當使用者未設定時,plugin 是否以啟用狀態開始。預設為 `true`。請參閱[預設啟用](#default-enablement)。 | `false` |
529 548
530<h3 id="default-enablement">549<h3 id="default-enablement">
531 預設啟用550 預設啟用
532</h3>551</h3>
533 552
534在 `plugin.json` 中設定 `defaultEnabled: false` 以提供安裝時停用的 plugin。使用者使用 `claude plugin enable <plugin>` 或 `/plugin` 介面將其開啟。對於新增成本或使用者應選擇加入的範圍的 plugins 使用此方法,例如連接到外部服務的 plugin。這需要 Claude Code v2.1.154 或更新版本。較早的版本會忽略該欄位並在安裝時啟用 plugin。553在 `plugin.json` 中設定 `defaultEnabled: false` 以發佈已停用安裝的 plugin。使用者可使用 `claude plugin enable <plugin>` 或 `/plugin` 介面將其開啟。對於新增成本或使用者應選擇加入的 plugin(例如連接到外部服務的 plugin),請使用此選項。
535 554
536`defaultEnabled` 是當沒有其他因素決定 plugin 狀態時的後備。有兩件事優先於它:555`defaultEnabled` 是當沒有其他因素決定 plugin 狀態時的後備選項。有兩件事優先於它:
537 556
538* **使用者的設定**:在任何設定範圍的 `enabledPlugins` 中為 plugin 的項目。一旦寫入,它會在 plugin 更新和重新安裝中保留,因此在後續版本中變更 `defaultEnabled` 不會翻轉現有使用者。557* **使用者的設定**:任何設定範圍中 `enabledPlugins` 中的 plugin 項目。一旦寫入,它會在 plugin 更新和重新安裝中持續存在,因此在後續版本中變更 `defaultEnabled` 不會翻轉現有使用者。
539* **相依性要求**:當 plugin 被另一個啟用的 plugin 所需時,Claude Code 會在安裝或啟用時為其寫入 `true`。這給了它一個明確的設定,所以它自己的預設不再適用。請參閱[啟用或停用具有相依性的 plugin](/docs/zh-TW/plugin-dependencies#enable-or-disable-a-plugin-with-dependencies)。558* **相依性要求**:當 plugin 由另一個啟用的 plugin 所需時,Claude Code 會在安裝或啟用時為其寫入 `true`。這給了它明確的設定,因此它自己的預設不再適用。請參閱[啟用或停用具有相依性的 plugin](/docs/zh-TW/plugin-dependencies#enable-or-disable-a-plugin-with-dependencies)。
540 559
541相同的欄位可以出現在 plugin 的 marketplace 項目中,其優先於 `plugin.json` 中的值。請參閱[選用 plugin 欄位](/docs/zh-TW/plugin-marketplaces#optional-plugin-fields)。560相同欄位也可以出現在 plugin 的市集項目中,其優先於 `plugin.json` 中的值。請參閱[選用 plugin 欄位](/docs/zh-TW/plugin-marketplaces#optional-plugin-fields)。
542 561
543<h3 id="component-path-fields">562<h3 id="component-path-fields">
544 元件路徑欄位563 元件路徑欄位
545</h3>564</h3>
546 565
547| 欄位 | 類型 | 描述 | 範例 |566| 欄位 | 類型 | 說明 | 範例 |
548| :---------------------- | :-------------------- | :---------------------------------------------------------------------------------------------------------- | :--------------------------------------------------- |567| :---------------------- | :-------------------- | :------------------------------------------------------------------------------------------------------- | :--------------------------------------------------- |
549| `skills` | string\|array | 包含 `<name>/SKILL.md` 的自訂 skill 目錄。新增到預設 `skills/` 掃描。請參閱[路徑行為規則](#path-behavior-rules)以了解 marketplace 根目錄例外 | `"./custom/skills/"` |568| `skills` | string\|array | 包含 `<name>/SKILL.md` 的自訂 skill 目錄。新增至預設 `skills/` 掃描。請參閱[路徑行為規則](#path-behavior-rules)以了解市集根目錄例外 | `"./custom/skills/"` |
550| `commands` | string\|array | 自訂平面 `.md` skill 檔案或目錄(取代預設 `commands/`) | `"./custom/cmd.md"` 或 `["./cmd1.md"]` |569| `commands` | string\|array | 自訂平面 `.md` skill 檔案或目錄(取代預設 `commands/`) | `"./custom/cmd.md"` 或 `["./cmd1.md"]` |
551| `agents` | string\|array | 自訂 agent 檔案(取代預設 `agents/`) | `"./custom/agents/reviewer.md"` |570| `agents` | string\|array | 自訂代理程式檔案(取代預設 `agents/`) | `"./custom/agents/reviewer.md"` |
552| `hooks` | string\|array\|object | Hook 設定路徑或內聯設定 | `"./my-extra-hooks.json"` |571| `workflows` | string\|array | 自訂[工作流程](/docs/zh-TW/workflows)指令檔案或目錄(取代預設 `workflows/`) | `"./custom/workflows/"` |
553| `mcpServers` | string\|array\|object | MCP 設定路徑或內聯設定 | `"./my-extra-mcp-config.json"` |572| `hooks` | string\|array\|object | Hook 設定路徑或內嵌設定 | `"./my-extra-hooks.json"` |
573| `mcpServers` | string\|array\|object | MCP 設定路徑或內嵌設定 | `"./my-extra-mcp-config.json"` |
554| `outputStyles` | string\|array | 自訂輸出樣式檔案/目錄(取代預設 `output-styles/`) | `"./styles/"` |574| `outputStyles` | string\|array | 自訂輸出樣式檔案/目錄(取代預設 `output-styles/`) | `"./styles/"` |
555| `lspServers` | string\|array\|object | [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) 設定,用於程式碼智慧(前往定義、尋找參考等) | `"./.lsp.json"` |575| `lspServers` | string\|array\|object | [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) 設定,用於程式碼智慧(前往定義、尋找參考等) | `"./.lsp.json"` |
556| `experimental.themes` | string\|array | 色彩主題檔案/目錄(取代預設 `themes/`)。請參閱[主題](#themes) | `"./themes/"` |576| `experimental.themes` | string\|array | 色彩主題檔案/目錄(取代預設 `themes/`)。請參閱[主題](#themes) | `"./themes/"` |
557| `experimental.monitors` | string\|array | 背景 [Monitor](/docs/zh-TW/tools-reference#monitor-tool) 設定,在 plugin 啟用時自動啟動。請參閱[監視器](#monitors) | `"./monitors.json"` |577| `experimental.monitors` | string\|array | 當 plugin 啟用時自動啟動的背景 [Monitor](/docs/zh-TW/tools-reference#monitor-tool) 設定。請參閱[監視器](#monitors) | `"./monitors.json"` |
558| `userConfig` | object | 在啟用時提示使用者的使用者可設定值。請參閱[使用者設定](#user-configuration) | 請參閱下方 |578| `userConfig` | object | 在啟用時提示的使用者可設定值。請參閱[使用者設定](#user-configuration) | 請參閱下方 |
559| `channels` | array | 訊息注入的頻道宣告(Telegram、Slack、Discord 風格)。請參閱[頻道](#channels) | 請參閱下方 |579| `channels` | array | 訊息注入的頻道宣告(Telegram、Slack、Discord 樣式)。請參閱[頻道](#channels) | 請參閱下方 |
560| `dependencies` | array | 此 plugin 需要的其他 plugins,可選擇使用 semver 版本限制。請參閱[限制 plugin 相依性版本](/docs/zh-TW/plugin-dependencies) | `[{ "name": "secrets-vault", "version": "~2.1.0" }]` |580| `dependencies` | array | 此 plugin 所需的其他 plugin,可選擇使用 semver 版本限制。請參閱[限制 plugin 相依性版本](/docs/zh-TW/plugin-dependencies) | `[{ "name": "secrets-vault", "version": "~2.1.0" }]` |
561 581
562<h3 id="experimental-components">582<h3 id="experimental-components">
563 實驗性元件583 實驗性元件
564</h3>584</h3>
565 585
566`experimental` 金鑰下的元件 `themes` 和 `monitors` 具有在版本之間穩定時可能會變更的 manifest 架構。您宣告它們的位置是一個單獨的遷移:頂層仍然有效,`claude plugin validate` 會發出警告,未來的版本將需要 `experimental.*`。586`experimental` 金鑰下的元件 `themes` 和 `monitors` 具有資訊清單架構,該架構可能在版本之間變更,同時它們穩定。您宣告它們的位置是一個單獨的遷移:頂層仍然有效,`claude plugin validate` 發出警告,未來版本將需要 `experimental.*`。
567 587
568<h3 id="user-configuration">588<h3 id="user-configuration">
569 使用者設定589 使用者設定
570</h3>590</h3>
571 591
572`userConfig` 欄位宣告 Claude Code 在啟用 plugin 時提示使用者的值。使用此方法而不是要求使用者手動編輯 `settings.json`。592`userConfig` 欄位宣告當 plugin 啟用時 Claude Code 提示使用者的值。使用此選項而不是要求使用者手動編輯 `settings.json`。
573 593
574```json theme={null}594```json theme={null}
575{595{
591 611
592金鑰必須是有效的識別碼。每個選項支援這些欄位:612金鑰必須是有效的識別碼。每個選項支援這些欄位:
593 613
594| 欄位 | 必需 | 描述 |614| 欄位 | 必要 | 說明 |
595| :------------ | :-- | :---------------------------------------------------- |615| :------------ | :- | :-------------------------------------------------- |
596| `type` | Yes | 其中之一:`string`、`number`、`boolean`、`directory` 或 `file` |616| `type` | 是 | `string`、`number`、`boolean`、`directory` 或 `file` 之一 |
597| `title` | Yes | 設定對話方塊中顯示的標籤 |617| `title` | 是 | 在設定對話方塊中顯示的標籤 |
598| `description` | Yes | 欄位下方顯示的說明文字 |618| `description` | 是 | 在欄位下方顯示的說明文字 |
599| `sensitive` | No | 如果 `true`,遮罩輸入並將值儲存在安全儲存體中,而不是 `settings.json` |619| `sensitive` | 否 | 如果為 `true`,會遮罩輸入並將值儲存在安全儲存中,而不是 `settings.json` |
600| `required` | No | 如果 `true`,當欄位為空時驗證失敗 |620| `required` | 否 | 如果為 `true`,當欄位為空時驗證失敗 |
601| `default` | No | 使用者未提供任何內容時使用的值 |621| `default` | 否 | 當使用者未提供任何內容時使用的值 |
602| `multiple` | No | 對於 `string` 類型,允許字串陣列 |622| `multiple` | 否 | 對於 `string` 類型,允許字串陣列 |
603| `min` / `max` | No | `number` 類型的界限 |623| `min` / `max` | 否 | `number` 類型的界限 |
604 624
605每個值都可用於在 MCP 和 LSP server 設定和 hook 命令中替換為 `${user_config.KEY}`。非敏感值也可以在 skill 和 agent 內容中替換。所有值都會匯出到 hook 程序作為 `CLAUDE_PLUGIN_OPTION_<KEY>` 環境變數,其中 `<KEY>` 是選項金鑰大寫。625每個值都可用於在 MCP 和 LSP 伺服器設定以及 hook 命令中替換為 `${user_config.KEY}`。非敏感值也可以在 skill 和代理程式內容中替換。所有值都會匯出到 hook 程序作為 `CLAUDE_PLUGIN_OPTION_<KEY>` 環境變數,其中 `<KEY>` 是選項金鑰的大寫版本。
606 626
607在 shell 中執行的欄位拒絕 `${user_config.*}`:將設定的值替換到 shell 命令中會讓 shell 執行該值包含的任何內容,因此元件會失敗並出現[錯誤](/docs/zh-TW/errors#plugin-command-references-user-config)。每個被拒絕的欄位都有一個替代方式來傳遞值:627在 shell 中執行的欄位會拒絕 `${user_config.*}`:將設定的值替換到 shell 命令中會讓 shell 執行該值包含的任何內容,因此元件會失敗並出現[錯誤](/docs/zh-TW/errors#plugin-command-references-user-config)。每個被拒絕的欄位都有一個替代方式來傳遞值:
608 628
609| 被拒絕的欄位 | 如何傳遞值 |629| 被拒絕的欄位 | 如何傳遞值 |
610| :------------------------------------------------------------------------------ | :-------------------------------------------------------------------------------------------------- |630| :------------------------------------------------------------------------------ | :-------------------------------------------------------------------------------------------------- |
611| Shell 形式的 hook 命令 | 使用[執行形式](/docs/zh-TW/hooks#exec-form-and-shell-form)搭配 `args`,或從 hook 的環境讀取 `CLAUDE_PLUGIN_OPTION_<KEY>` |631| Shell 形式 hook 命令 | 使用[執行形式](/docs/zh-TW/hooks#exec-form-and-shell-form)搭配 `args`,或從 hook 的環境讀取 `CLAUDE_PLUGIN_OPTION_<KEY>` |
612| [Monitor](#monitors) 命令 | 從指令碼中的設定檔讀取值 |632| [Monitor](#monitors) 命令 | 從指令碼中的設定檔讀取值 |
613| MCP [`headersHelper`](/docs/zh-TW/mcp#use-dynamic-headers-for-custom-authentication) | 從指令碼中的設定檔讀取值 |633| MCP [`headersHelper`](/docs/zh-TW/mcp#use-dynamic-headers-for-custom-authentication) | 從指令碼中的設定檔讀取值 |
614 634
615在 v2.1.207 之前,這些欄位替換 `${user_config.KEY}` 值;更新依賴此功能的 plugins。635在 v2.1.207 之前,這些欄位替換了 `${user_config.KEY}` 值;更新依賴此功能的 plugin。
636
637非敏感值儲存在您的使用者 `settings.json` 中的 [`pluginConfigs`](/docs/zh-TW/settings-reference#pluginconfigs) 金鑰下,作為 `pluginConfigs[<plugin-id>].options`。
638
639在 macOS 上,Claude Code 將敏感值儲存在 macOS Keychain 中,當 Keychain 拒絕寫入時回退到 `~/.claude/.credentials.json`。在沒有支援的 keychain 的平台上,它將它們儲存在 `~/.claude/.credentials.json` 中。Keychain 儲存與 OAuth 令牌共享,總限制約為 2 KB,因此請保持敏感值較小。
616 640
617非敏感值儲存在 `settings.json` 中的 [`pluginConfigs`](/docs/zh-TW/settings#pluginconfigs) 金鑰下,作為 `pluginConfigs[<plugin-id>].options`。Claude Code 將金鑰寫入使用者設定並從使用者設定、`--settings` 旗標和受管設定讀取;專案的 `.claude/settings.json` 或 `.claude/settings.local.json` 中的項目會被忽略。在 v2.1.207 之前,Claude Code 也讀取專案和本地設定。641Claude Code 只從三個設定來源讀取所有 `pluginConfigs` 值:
618 642
619敏感值進入 macOS Keychain,或在沒有支援的 keychain 可用的平台上進入 `~/.claude/.credentials.json`。Keychain 儲存與 OAuth 令牌共享,總限制約為 2 KB,因此請保持敏感值較小。643* **使用者設定**:`~/.claude/settings.json`,啟用時提示寫入的檔案
644* **`--settings`**:CLI 旗標或 SDK 內嵌設定
645* **受管設定**:[組織控制的原則](/docs/zh-TW/permissions#managed-settings)
646
647當多個來源設定相同金鑰時,受管設定優先,然後是 `--settings`,然後是使用者設定。您可以從此清單中移除的唯一來源是使用者設定:傳遞 [`--setting-sources`](/docs/zh-TW/cli-reference#cli-flags) 而不包含 `user`,Claude Code 會跳過它們。受管設定和 `--settings` 保持您傳遞的任何內容。SDK 的 [`settingSources`](/docs/zh-TW/agent-sdk/claude-code-features#what-settingsources-does-not-control) 選項設定相同的清單。
648
649專案的 `.claude/settings.json` 或 `.claude/settings.local.json` 中的項目會被忽略。兩個檔案都位於工作區中,因此複製的儲存庫可以在那裡提供值,這些值會流入 plugin hook 命令、MCP 伺服器設定、LSP 命令和監視器命令。在 v2.1.207 之前,這些項目被讀取。限制特定於 `pluginConfigs`:[`enabledPlugins`](/docs/zh-TW/settings-reference#enabledplugins) 仍然遵守專案和本機設定。
620 650
621<h3 id="channels">651<h3 id="channels">
622 頻道652 頻道
623</h3>653</h3>
624 654
625`channels` 欄位讓 plugin 宣告一個或多個訊息頻道,將內容注入對話中。每個頻道繫結到 plugin 提供的 MCP server。655`channels` 欄位讓 plugin 宣告一個或多個訊息頻道,將內容注入對話中。每個頻道繫結到 plugin 提供的 MCP 伺服器。
626 656
627```json theme={null}657```json theme={null}
628{658{
647}677}
648```678```
649 679
650`server` 欄位是必需的,必須與 plugin 的 `mcpServers` 中的金鑰相符。選用的每個頻道 `userConfig` 使用與頂層欄位相同的架構,讓 plugin 在啟用 plugin 時提示輸入機器人令牌或擁有者 ID。680`server` 欄位是必要的,必須符合 plugin 的 `mcpServers` 中的金鑰。選用的每個頻道 `userConfig` 使用與頂層欄位相同的架構,讓 plugin 在啟用時提示 bot 令牌或擁有者 ID。
651 681
652<h3 id="path-behavior-rules">682<h3 id="path-behavior-rules">
653 路徑行為規則683 路徑行為規則
654</h3>684</h3>
655 685
656自訂路徑是否取代或擴展 plugin 的預設目錄取決於欄位:686自訂路徑是取代還是擴展 plugin 的預設目錄取決於欄位:
657 687
658* **取代預設值**:`commands`、`agents`、`outputStyles`、`experimental.themes`、`experimental.monitors`。例如,當 manifest 指定 `commands` 時,預設 `commands/` 目錄不會被掃描。若要保留預設值並新增更多,請明確列出:`"commands": ["./commands/", "./extras/"]`688* **取代預設**:`commands`、`agents`、`workflows`、`outputStyles`、`experimental.themes`、`experimental.monitors`。例如,當資訊清單指定 `commands` 時,預設 `commands/` 目錄不會被掃描。若要保留預設並新增更多,請明確列出:`"commands": ["./commands/", "./extras/"]`
659* **新增到預設值**:`skills`。預設 `skills/` 目錄始終被掃描,`skills` 中列出的目錄與其一起載入。例外:對於[其 `source` 解析為 marketplace 根目錄的 marketplace 項目](/docs/zh-TW/plugin-marketplaces#advanced-plugin-entries),宣告特定子目錄會取代掃描689* **新增至預設**:`skills`。預設 `skills/` 目錄始終被掃描,`skills` 中列出的目錄與其一起載入。例外:對於[其 `source` 解析為市集根目錄的市集項目](/docs/zh-TW/plugin-marketplaces#advanced-plugin-entries),宣告特定子目錄會取代預設 `skills/` 掃描
660* **自有合併規則**:[hooks](#hooks)、[MCP servers](#mcp-servers) 和 [LSP servers](#lsp-servers)。請參閱每個部分以了解多個來源如何組合690* **自己的合併規則**:[hooks](#hooks)、[MCP 伺服器](#mcp-servers) 和 [LSP 伺服器](#lsp-servers)。請參閱每個部分以了解多個來源如何結合
661 691
662當 plugin 同時具有預設資料夾和相符的 manifest 金鑰時,Claude Code v2.1.140 及更新版本會在 `claude plugin list` 和 `/plugin` 詳細檢視中標記被忽略的資料夾。plugin 仍會使用 manifest 路徑載入。當 manifest 金鑰指向預設資料夾時不會顯示警告,例如 `"commands": ["./commands/deploy.md"]`,因為在這種情況下資料夾是明確定址的。692當 plugin 同時具有預設資料夾和相符的資訊清單金鑰時,Claude Code 會在 `claude plugin list` 和 `/plugin` 詳細檢視中警告被忽略的資料夾。plugin 仍會使用資訊清單路徑載入。當資訊清單金鑰指向預設資料夾時,Claude Code 不會警告,例如 `"commands": ["./commands/deploy.md"]`,因為該路徑明確命名資料夾。
663 693
664對於所有路徑欄位:694對於所有路徑欄位:
665 695
666* 所有路徑必須相對於 plugin 根目錄,並以 `./` 開頭696* 所有路徑必須相對於 plugin 根目錄並以 `./` 開頭,除了 `skills` 欄位也接受 `"."`
697 * `"."` 和 `"./"` 都表示 plugin 根目錄本身
698 * 在 v2.1.221 之前,`"."` 無法通過資訊清單驗證,plugin 無法載入,因此使用 `"./"` 以支援較早版本
667* 來自自訂路徑的元件使用相同的命名和命名空間規則699* 來自自訂路徑的元件使用相同的命名和命名空間規則
668* 可以將多個路徑指定為陣列700* 多個路徑可以指定為陣列
669* 當 skill 路徑指向直接包含 `SKILL.md` 的目錄時,例如 `"skills": ["./"]` 指向 plugin 根目錄,frontmatter 中的 `name` 欄位決定 skill 的叫用名稱。這提供了一個穩定的名稱,無論安裝目錄如何。如果 frontmatter 中未設定 `name`,目錄基名將用作後備。701* skill 路徑可以指向直接包含 `SKILL.md` 的目錄,例如 `"skills": ["."]` 用於 plugin 根目錄
702 * Claude Code 從 `SKILL.md` 中的前置事項 `name` 欄位取得 skill 的呼叫名稱,因此無論安裝目錄名稱如何,名稱保持穩定
703 * 如果前置事項中未設定 `name`,Claude Code 會回退到目錄基底名稱
670 704
671在其根目錄中具有 `SKILL.md`、沒有 `skills/` 子目錄且沒有 `skills` manifest 欄位的 plugin 在 Claude Code v2.1.142 及更新版本中會自動載入為單一 skill plugin。您不需要在 `plugin.json` 中設定 `"skills": ["./"]` 來進行此配置。skill 的叫用名稱遵循相同的規則:frontmatter `name` 欄位,或目錄基名作為後備。705具有根目錄中 `SKILL.md`、沒有 `skills/` 子目錄且沒有 `skills` 資訊清單欄位的 plugin 會自動載入為單一 skill plugin。您不需要為此配置在 `plugin.json` 中設定 `"skills": ["./"]`。
672 706
673**路徑範例**:707**路徑範例**:
674 708
693 727
694| 變數 | 解析為 | 用途 |728| 變數 | 解析為 | 用途 |
695| :---------------------- | :--------------------------------------------------------- | :------------------------------------------------ |729| :---------------------- | :--------------------------------------------------------- | :------------------------------------------------ |
696| `${CLAUDE_PLUGIN_ROOT}` | plugin 安裝目錄的絕對路徑 | 與 plugin 捆綁的指令碼、二進位檔和設定檔 |730| `${CLAUDE_PLUGIN_ROOT}` | plugin 安裝目錄的絕對路徑 | 與 plugin 捆綁的指令碼、二進位檔案和設定檔 |
697| `${CLAUDE_PLUGIN_DATA}` | [持久目錄](#persistent-data-directory),在首次參考時建立,在 plugin 更新後保留 | 已安裝的依賴項,例如 `node_modules` 或 Python 虛擬環境、生成的程式碼和快取 |731| `${CLAUDE_PLUGIN_DATA}` | [持續目錄](#persistent-data-directory),在首次參考時建立,在 plugin 更新中存活 | 已安裝的相依性,例如 `node_modules` 或 Python 虛擬環境、產生的程式碼和快取 |
698| `${CLAUDE_PROJECT_DIR}` | 專案根目錄 | 專案本地指令碼和設定檔 |732| `${CLAUDE_PROJECT_DIR}` | 專案根目錄 | 專案本機指令碼和設定檔 |
699 733
700所有三個都會匯出為環境變數到 hook 程序和 MCP 及 LSP server 子程序。哪些欄位內聯替換它們取決於 plugin 元件:734所有三個都匯出為環境變數到 hook 程序以及 MCP 和 LSP 伺服器子程序。哪些欄位內嵌替換它們取決於 plugin 元件:
701 735
702| Plugin 元件 | 佔位符解析的欄位 |736| Plugin 元件 | 預留位置解析的欄位 |
703| :---------------------------- | :--------------------------------------- |737| :------------------------ | :--------------------------------------- |
704| Skill 和 agent 內容 | 佔位符出現的任何地方 |738| Skill 和代理程式內容 | 預留位置出現的任何位置 |
705| Hook 和 monitor 命令 | 佔位符出現的任何地方 |739| Hook 和監視器命令 | 預留位置出現的任何位置 |
706| MCP `stdio` servers | `command`、`args`、`env` |740| MCP `stdio` 伺服器 | `command`、`args`、`env` |
707| MCP `http`、`sse`、`ws` servers | `url`、`headers`、`headersHelper` |741| MCP `http`、`sse`、`ws` 伺服器 | `url`、`headers`、`headersHelper` |
708| LSP servers | `command`、`args`、`env`、`workspaceFolder` |742| LSP 伺服器 | `command`、`args`、`env`、`workspaceFolder` |
709 743
710在 hook 命令中,使用[執行形式](/docs/zh-TW/hooks#exec-form-and-shell-form)搭配 `args`,以便每個路徑作為一個引數傳遞,無需引號。在 shell 形式的 hooks 和 monitor 命令中,將變數包裝在雙引號中,如 `"${CLAUDE_PROJECT_DIR}/scripts/server.sh"`。此 shell 形式的 hook 執行與 plugin 捆綁的指令碼:744在 hook 命令中,使用[執行形式](/docs/zh-TW/hooks#exec-form-and-shell-form)搭配 `args`,以便每個路徑作為一個引數傳遞,無需引號。在 shell 形式 hook 和監視器命令中,用雙引號包裝變數,如 `"${CLAUDE_PROJECT_DIR}/scripts/server.sh"`。此 shell 形式 hook 執行與 plugin 捆綁的指令碼:
711 745
712```json theme={null}746```json theme={null}
713{747{
726}760}
727```761```
728 762
729`${CLAUDE_PLUGIN_ROOT}` 在 plugin 更新時會變更。前一個版本的目錄在更新後約七天內保留在磁碟上,然後才進行清理,但應將其視為暫時性的,不要在此處寫入狀態。763`${CLAUDE_PLUGIN_ROOT}` 在 plugin 更新時變更。前一個版本的目錄在更新後的寬限期內保留在磁碟上,但將其視為暫時的,不要在那裡寫入狀態。請參閱 [plugin 快取](#plugin-caching-and-file-resolution)以了解清理語義。
764
765當 plugin 在工作階段中期更新時,hook 命令、監視器、MCP 伺服器和 LSP 伺服器繼續使用前一個版本的路徑。執行 `/reload-plugins` 以將 hook、MCP 伺服器和 LSP 伺服器切換到新路徑;監視器需要工作階段重新啟動。在沒有互動式終端的工作階段中,重新載入會將 plugin MCP 伺服器保留在舊路徑上,直到下一個工作階段。
730 766
731當 plugin 在工作階段中途更新時,hook 命令、monitors、MCP servers 和 LSP servers 會繼續使用前一個版本的路徑。執行 `/reload-plugins` 以將 hooks、MCP servers 和 LSP servers 切換到新路徑;monitors 需要工作階段重新啟動。767對於具有 `command` 來源的 plugin,Claude Code [可以重新載入 plugin 本身](/docs/zh-TW/plugin-marketplaces#when-claude-code-re-runs-the-command)。
732 768
733MCP servers 也可以呼叫 `roots/list` 請求以在執行時讀取工作階段的工作目錄。請參閱[`roots/list` 傳回的內容以及 Claude Code 何時通知伺服器變更](/docs/zh-TW/mcp#option-3-add-a-local-stdio-server)。769MCP 伺服器也可以呼叫 `roots/list` 要求以在執行時讀取工作階段的工作目錄。請參閱 [`roots/list` 傳回的內容以及 Claude Code 何時通知伺服器變更](/docs/zh-TW/mcp#option-3-add-a-local-stdio-server)。
734 770
735<h4 id="persistent-data-directory">771<h4 id="persistent-data-directory">
736 持久資料目錄772 持續資料目錄
737</h4>773</h4>
738 774
739`${CLAUDE_PLUGIN_DATA}` 目錄解析為 `~/.claude/plugins/data/{id}/`,其中 `{id}` 是 plugin 識別碼,其中 `a-z`、`A-Z`、`0-9`、`_` 和 `-` 以外的字元被替換為 `-`。對於安裝為 `formatter@my-marketplace` 的 plugin,目錄是 `~/.claude/plugins/data/formatter-my-marketplace/`。775`${CLAUDE_PLUGIN_DATA}` 目錄解析為 `~/.claude/plugins/data/{id}/`,其中 `{id}` 是 plugin 識別碼,其中 `a-z`、`A-Z`、`0-9`、`_` 和 `-` 以外的字元被替換為 `-`。對於安裝為 `formatter@my-marketplace` 的 plugin,目錄是 `~/.claude/plugins/data/formatter-my-marketplace/`。
740 776
741常見用途是一次安裝語言依賴項並在工作階段和 plugin 更新中重複使用它們。因為資料目錄的壽命超過任何單一 plugin 版本,僅檢查目錄存在無法偵測更新何時變更 plugin 的依賴項清單。建議的模式是比較捆綁的清單與資料目錄中的副本,並在它們不同時重新安裝。777常見用途是一次安裝語言相依性並在工作階段和 plugin 更新中重複使用它們。將其用於 Python 相依性、使用 Yarn 或 pnpm 鎖定的相依性,以及其生命週期指令碼必須執行的套件。對於市集安裝的 plugin,您可能根本不需要它:Claude Code 在快取 plugin 時會自動安裝符合條件的 [Node.js 套件相依性](#node-js-package-dependencies)。
742 778
743此 `SessionStart` hook 在第一次執行時安裝 `node_modules`,並在 plugin 更新包含變更的 `package.json` 時再次安裝:779因為資料目錄的壽命超過任何單一 plugin 版本,單獨檢查目錄存在無法偵測當更新變更 plugin 的相依性資訊清單時。建議的模式是比較捆綁的資訊清單與資料目錄中的副本,並在它們不同時重新安裝。
780
781此 `SessionStart` hook 在首次執行時安裝 `node_modules`,並在 plugin 更新包含變更的 `package.json` 時再次安裝:
744 782
745```json theme={null}783```json theme={null}
746{784{
759}797}
760```798```
761 799
762`diff` 在儲存的副本遺失或與捆綁的副本不同時以非零值退出,涵蓋第一次執行和依賴項變更更新。如果 `npm install` 失敗,尾部 `rm` 會移除複製的清單,以便下一個工作階段重試。800`diff` 在儲存的副本遺失或與捆綁的副本不同時以非零值退出,涵蓋首次執行和相依性變更更新。如果 `npm install` 失敗,尾部 `rm` 會移除複製的資訊清單,以便下一個工作階段重試。
763 801
764捆綁在 `${CLAUDE_PLUGIN_ROOT}` 中的指令碼可以針對保留的 `node_modules` 執行:802捆綁在 `${CLAUDE_PLUGIN_ROOT}` 中的指令碼可以針對持續的 `node_modules` 執行:
765 803
766```json theme={null}804```json theme={null}
767{805{
785 Plugin 快取和檔案解析823 Plugin 快取和檔案解析
786</h2>824</h2>
787 825
788Plugins 可以透過以下兩種方式之一指定:826Plugin 可以透過以下兩種方式指定:
827
828* 透過 `claude --plugin-dir` 或 `claude --plugin-url`,在工作階段期間使用。
829* 透過市集安裝,供未來的工作階段使用。
830
831基於安全性和驗證目的,Claude Code 會將\_市集\_ plugin 複製到使用者的本機 **plugin 快取**(`~/.claude/plugins/cache`)中,而不是就地使用,除了[連結模式中的 `command` 來源](/docs/zh-TW/plugin-marketplaces#copy-mode-and-link-mode),Claude Code 會透過快取項目中的連結就地使用。
832
833對於複製的 plugin,每個已安裝的版本都是快取中的單獨目錄,按市集和 plugin 分組,並以已解析的版本命名,具有自己的 plugin 檔案副本和 [Node.js 套件相依性](#node-js-package-dependencies)。從[發行標籤](/docs/zh-TW/plugin-dependencies#tag-plugin-releases-for-version-resolution)解析的相依性會取得帶有 commit-SHA 後綴的目錄名稱。
834
835當您更新或解除安裝 plugin 時,Claude Code 會將先前的版本目錄標記為孤立,並在大約 14 天後的背景掃描中將其移除。寬限期讓已載入舊版本的並行 Claude Code 工作階段繼續執行而不會出現錯誤。Claude Code 只在至少安裝了一個 plugin 時執行掃描;在您解除安裝最後一個 plugin 後,孤立目錄會保留在磁碟上,直到您再次安裝 plugin。
836
837Claude Code 只在快取中的目錄或符號連結不再存在時,才會從快取中移除 plugin 或市集資料夾。如果您將開發簽出符號連結到快取中作為 plugin 的版本項目,Claude Code 永遠不會將連結標記為孤立,也永遠不會移除它或保存它的資料夾。Claude Code 也永遠不會在連結的簽出中寫入其版本追蹤檔案。
838
839Claude 的 Glob 和 Grep 工具在搜尋期間會跳過孤立的版本目錄,因此檔案結果不包括過時的 plugin 程式碼。
840
841<h3 id="node-js-package-dependencies">
842 Node.js 套件相依性
843</h3>
844
845當 Claude Code 將 plugin 複製到快取時,它也會在那裡安裝 plugin 的 Node.js 套件相依性,以便 plugin 的 hooks 和 MCP 伺服器可以載入它們。本節涵蓋 plugin 在其自己的 `package.json` 中宣告的 npm 和 Bun 套件。對於依賴其他 plugin 的 plugin,請參閱 [plugin 相依性版本](/docs/zh-TW/plugin-dependencies)。
846
847Claude Code 在每次建立複製版本目錄時都會在其中執行安裝:當您安裝 plugin 時、當 Claude Code 將 plugin 更新為新版本時,以及在工作階段開始時(當已啟用的 plugin 尚未快取時),例如在新機器上。只有當 plugin 的根目錄同時包含 `package.json` 和支援的鎖定檔案時,安裝才會執行:
848
849| 鎖定檔案 | 命令 |
850| :------------------------------------------ | :----------------------------------------------- |
851| `bun.lock` 或 `bun.lockb` | `bun install --frozen-lockfile --ignore-scripts` |
852| `npm-shrinkwrap.json` 或 `package-lock.json` | `npm ci --ignore-scripts` |
853
854如果 plugin 包含多個這些鎖定檔案,Claude Code 會使用第一個符合項,按順序檢查:`bun.lock`、`bun.lockb`、`npm-shrinkwrap.json`、`package-lock.json`。Claude Code 會跳過 `yarn.lock` 和 `pnpm-lock.yaml`,因為 Yarn 和 pnpm 支援可以繞過 `--ignore-scripts` 的解析時間設定 hooks。
855
856提供 npm 鎖定檔案以獲得最廣泛的覆蓋。Claude Code 從使用者的 PATH 執行符合的鎖定檔案的套件管理員,如果遺失,不會回退到其他鎖定檔案。對於透過 npm 來源分發的 plugin,請使用 `npm-shrinkwrap.json`;npm 會從已發佈的套件中排除 `package-lock.json`。
857
858Claude Code 限制此相依性安裝,使得 plugin 或其套件中的任何程式碼在安裝期間都不會執行,並限制其執行時間:
859
860* **凍結解析:** Bun 和 npm 安裝鎖定檔案精確指定的內容,當 `package.json` 和鎖定檔案不一致時,會失敗而不是重新解析版本。
861* **無生命週期指令碼:** `--ignore-scripts` 防止 `preinstall`、`install` 和 `postinstall` 指令碼執行,因此在這些指令碼中建置原生模組的相依性會下載但在此安裝期間不會編譯。
862* **60 秒逾時:** Claude Code 會停止執行時間超過此時間的安裝,並將其視為失敗。
789 863
790* 透過 `claude --plugin-dir` 或 `claude --plugin-url`,在工作階段期間。864提取 npm 來源 plugin 本身會在此相依性安裝執行之前,以啟用的生命週期指令碼執行 `npm install`。
791* 透過 marketplace,為未來的工作階段安裝。
792 865
793出於安全和驗證目的,Claude Code 將 *marketplace* plugins 複製到使用者的本機 **plugin 快取**(`~/.claude/plugins/cache`),而不是就地使用它們。在開發參考外部檔案的 plugins 時,理解此行為很重要。866失敗或跳過的安裝永遠不會阻止 plugin。當安裝失敗或 Claude Code 跳過 yarn 或 pnpm 鎖定檔案時,它會在[偵錯輸出](#debugging-commands)中將原因記錄為警告。具有 `package.json` 且沒有鎖定檔案的 plugin 會被跳過,不會有日誌項目。逾時的安裝可能會在快取副本中留下部分 `node_modules` 樹。
794 867
795每個已安裝的版本是快取中的單獨目錄。當您更新或卸載 plugin 時,先前的版本目錄被標記為孤立,並在 7 天後自動移除。寬限期讓已載入舊版本的並行 Claude Code 工作階段繼續執行而不出錯。868您無法關閉自動安裝;沒有設定或環境變數可以停用它。在受限網路中,請參閱[網路存取需求](/docs/zh-TW/network-config#network-access-requirements)以了解要允許的主機。
796 869
797Claude 的 Glob 和 Grep 工具在搜尋期間跳過孤立的版本目錄,因此檔案結果不包含過時的 plugin 程式碼。870對於自動安裝無法提供的相依性,例如需要其生命週期指令碼來建置的套件、Python 相依性或使用 Yarn 或 pnpm 鎖定的 plugin,請從 hook 將其安裝到[持久資料目錄](#persistent-data-directory)。
798 871
799<h3 id="path-traversal-limitations">872<h3 id="path-traversal-limitations">
800 路徑遍歷限制873 路徑遍歷限制
801</h3>874</h3>
802 875
803已安裝的 plugins 無法參考其目錄外的檔案。遍歷 plugin 根目錄外的路徑(例如 `../shared-utils`)在安裝後將無法運作,因為這些外部檔案不會複製到快取中。876Claude Code 不允許 plugin 參考其自己目錄外的檔案。它會拒絕解析到 plugin 根目錄外的元件路徑,無論路徑是在 `plugin.json` 中宣告還是在[市集項目](/docs/zh-TW/plugin-marketplaces#plugin-entries)中宣告。這涵蓋指向 plugin 外部的路徑(如寫入的),例如 `../shared-utils`,以及導向 plugin 外部的符號連結,除了[市集內的連結](#share-files-within-a-marketplace-with-symlinks)。
877
878在 macOS 和 Linux 上,Claude Code 也會拒絕包含反斜線的元件路徑,即使路徑保留在 plugin 內。因此,使用反斜線路徑宣告的元件只在 Windows 上載入。使用正斜線編寫元件路徑,例如 `./commands/deploy.md`。
879
880當 Claude Code 拒絕路徑時,它會報告 [`path escapes plugin directory`](/docs/zh-TW/errors#path-escapes-plugin-directory) 錯誤,並在沒有該元件的情況下載入 plugin。
881
882Claude Code 在安裝 plugin 時也不會將 plugin 目錄外的檔案複製到快取中,因此當複製的 plugin 內的指令碼讀取 plugin 根目錄上方的路徑時,它也找不到這些檔案。
804 883
805<h3 id="share-files-within-a-marketplace-with-symlinks">884<h3 id="share-files-within-a-marketplace-with-symlinks">
806 使用 symlinks 在 marketplace 內共享檔案885 使用符號連結在市集內共享檔案
807</h3>886</h3>
808 887
809如果您的 plugin 需要與同一 marketplace 的其他部分共享檔案,您可以在 plugin 目錄內建立符號連結。當 plugin 被複製到快取時,symlink 的處理方式取決於其目標的解析位置:888如果您的 plugin 需要與同一市集的其他部分共享檔案,您可以在 plugin 目錄內建立符號連結。當 plugin 複製到快取時符號連結的處理方式取決於其目標的解析位置:
810 889
811* **在 plugin 自身目錄內:** symlink 在快取中被保留為相對 symlink,因此在執行時繼續解析到複製的目標。890* **在 plugin 自己的目錄內:** 符號連結在快取中保留為相對符號連結,因此在執行時它會繼續解析到複製的目標。
812* **在同一 marketplace 內的其他位置:** symlink 被取消參考。目標的內容被複製到快取中以取代它。這讓 meta-plugin 的 `skills/` 目錄可以連結到 marketplace 中其他 plugins 定義的 skills。891* **在同一市集內的其他位置:** 符號連結被取消參考。目標的內容被複製到快取中以取代它。這讓中繼 plugin 的 `skills/` 目錄可以連結到市集中其他 plugin 定義的技能。
813* **在 marketplace 外:** symlink 因安全考量而被跳過。這防止 plugins 將任意主機檔案(例如系統路徑)拉入快取。892* **在市集外:** 符號連結因安全性而被跳過。這防止 plugin 將任意主機檔案(例如系統路徑)拉入快取。
814 893
815對於使用 `--plugin-dir` 安裝或從本機路徑安裝的 plugins,只有解析在 plugin 自身目錄內的 symlinks 被保留。所有其他的都被跳過。894對於使用 `--plugin-dir` 安裝的 plugin、來自本機路徑的 plugin,或來自複製模式中的 [`command` 來源](/docs/zh-TW/plugin-marketplaces#copy-mode-and-link-mode)的 plugin,只有解析到 plugin 自己目錄內的符號連結會被保留。所有其他連結都會被跳過。
816 895
817以下命令從 marketplace plugin 內建立到由同級 plugin 定義的共享 skill 的連結。在 Windows 上,從提升的命令提示字元使用 `mklink /D` 或啟用開發人員模式:896以下命令會建立從市集 plugin 內部到由同級 plugin 定義的共享技能的連結。在 Windows 上,從提升的命令提示字元使用 `mklink /D` 或啟用開發人員模式:
818 897
819```bash theme={null}898```bash theme={null}
820ln -s ../../shared-plugin/skills/foo ./skills/foo899ln -s ../../shared-plugin/skills/foo ./skills/foo
821```900```
822 901
823這在維持快取系統安全優勢的同時提供了靈活性。
824
825***902***
826 903
827<h2 id="plugin-directory-structure">904<h2 id="plugin-directory-structure">
832 標準 plugin 配置909 標準 plugin 配置
833</h3>910</h3>
834 911
835完整的 plugin 遵循此結構:912一個完整的 plugin 遵循此結構:
836 913
837```text theme={null}914```text theme={null}
838enterprise-plugin/915enterprise-plugin/
839├── .claude-plugin/ # Metadata directory (optional)916├── .claude-plugin/ # 中繼資料目錄(選用)
840│ └── plugin.json # plugin manifest917│ └── plugin.json # plugin 資訊清單
841├── skills/ # Skills918├── skills/ # Skills
842│ ├── code-reviewer/919│ ├── code-reviewer/
843│ │ └── SKILL.md920│ │ └── SKILL.md
844│ └── pdf-processor/921│ └── pdf-processor/
845│ ├── SKILL.md922│ ├── SKILL.md
846│ └── scripts/923│ └── scripts/
847├── commands/ # Skills as flat .md files924├── commands/ # Skills 作為平面 .md 檔案
848│ ├── status.md925│ ├── status.md
849│ └── logs.md926│ └── logs.md
850├── agents/ # Subagent definitions927├── agents/ # Subagent 定義
851│ ├── security-reviewer.md928│ ├── security-reviewer.md
852│ ├── performance-tester.md929│ ├── performance-tester.md
853│ └── compliance-checker.md930│ └── compliance-checker.md
854├── output-styles/ # Output style definitions931├── workflows/ # Workflow 指令碼
932│ └── release-audit.js
933├── output-styles/ # 輸出樣式定義
855│ └── terse.md934│ └── terse.md
856├── themes/ # Color theme definitions935├── themes/ # 色彩主題定義
857│ └── dracula.json936│ └── dracula.json
858├── monitors/ # Background monitor configurations937├── monitors/ # 背景監視器設定
859│ └── monitors.json938│ └── monitors.json
860├── hooks/ # Hook configurations939├── hooks/ # Hook 設定
861│ ├── hooks.json # Main hook config940│ ├── hooks.json # 主要 hook 設定
862│ └── security-hooks.json # Additional hooks941│ └── security-hooks.json # 其他 hooks
863├── bin/ # Plugin executables added to PATH942├── bin/ # Plugin 可執行檔新增至 PATH
864│ └── my-tool # Invokable as bare command in Bash tool943│ └── my-tool # 在 Bash tool 中可作為裸命令叫用
865├── settings.json # Default settings for the plugin944├── settings.json # Plugin 的預設設定
866├── .mcp.json # MCP server definitions945├── .mcp.json # MCP 伺服器定義
867├── .lsp.json # LSP server configurations946├── .lsp.json # LSP 伺服器設定
868├── scripts/ # Hook and utility scripts947├── scripts/ # Hook 和公用程式指令碼
869│ ├── security-scan.sh948│ ├── security-scan.sh
870│ ├── format-code.py949│ ├── format-code.py
871│ └── deploy.js950│ └── deploy.js
872├── LICENSE # License file951├── LICENSE # 授權檔案
873└── CHANGELOG.md # Version history952└── CHANGELOG.md # 版本歷史
874```953```
875 954
876<Warning>955<Warning>
877 `.claude-plugin/` 目錄包含 `plugin.json` 檔案。所有其他目錄(commands/、agents/、skills/、output-styles/、themes/、monitors/、hooks/)必須位於 plugin 根目錄,而不是在 `.claude-plugin/` 內。956 `.claude-plugin/` 目錄包含 `plugin.json` 檔案。所有其他目錄(commands/、agents/、skills/、workflows/、output-styles/、themes/、monitors/、hooks/)必須位於 plugin 根目錄,而不是在 `.claude-plugin/` 內。
878</Warning>957</Warning>
879 958
880plugin 根目錄的 `CLAUDE.md` 檔案不會作為專案內容載入。Plugin 透過 skills、agents 和 hooks 貢獻內容,而不是透過 CLAUDE.md。若要提供載入到 Claude 內容中的指示,請將其放在 [skill](#skills) 中。959Plugin 根目錄的 `CLAUDE.md` 檔案不會作為專案內容載入。Plugins 透過 skills、agents 和 hooks 而非 CLAUDE.md 來貢獻內容。若要提供載入至 Claude 內容的指示,請將其放在 [skill](#skills) 中。
881 960
882<h3 id="file-locations-reference">961<h3 id="file-locations-reference">
883 檔案位置參考962 檔案位置參考
884</h3>963</h3>
885 964
886| 元件 | 預設位置 | 用途 |965| 元件 | 預設位置 | 用途 |
887| :---------------- | :--------------------------- | :------------------------------------------------------------------------------------------------------------------------- |966| :------------ | :--------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
888| **Manifest** | `.claude-plugin/plugin.json` | Plugin 中繼資料和設定(選用) |967| **資訊清單** | `.claude-plugin/plugin.json` | Plugin 中繼資料和設定(選用) |
889| **Skills** | `skills/` | 具有 `<name>/SKILL.md` 結構的 Skills |968| **Skills** | `skills/` | 具有 `<name>/SKILL.md` 結構的 Skills |
890| **Commands** | `commands/` | 作為平面 Markdown 檔案的 Skills。新 plugins 使用 `skills/` |969| **Commands** | `commands/` | Skills 作為平面 Markdown 檔案。新 plugins 請使用 `skills/` |
891| **Agents** | `agents/` | Subagent Markdown 檔案 |970| **Agents** | `agents/` | Subagent Markdown 檔案 |
892| **Output styles** | `output-styles/` | 輸出樣式定義 |971| **Workflows** | `workflows/` | [Workflow](/docs/zh-TW/workflows) 指令碼檔案 |
893| **Themes** | `themes/` | 色彩主題定義 |972| **輸出樣式** | `output-styles/` | 輸出樣式定義 |
973| **主題** | `themes/` | 色彩主題定義 |
894| **Hooks** | `hooks/hooks.json` | Hook 設定 |974| **Hooks** | `hooks/hooks.json` | Hook 設定 |
895| **MCP servers** | `.mcp.json` | MCP server 定義 |975| **MCP 伺服器** | `.mcp.json` | MCP 伺服器定義 |
896| **LSP servers** | `.lsp.json` | 語言伺服器設定 |976| **LSP 伺服器** | `.lsp.json` | 語言伺服器設定 |
897| **Monitors** | `monitors/monitors.json` | 背景 monitor 設定 |977| **監視器** | `monitors/monitors.json` | 背景監視器設定 |
898| **Executables** | `bin/` | 新增到 Bash tool 的 `PATH` 的可執行檔。此處的檔案在 plugin 啟用時可在任何 Bash tool 呼叫中作為裸命令叫用 |978| **可執行檔** | `bin/` | 新增至 Bash tool 的 `PATH` 的可執行檔,在 plugin 啟用時可作為裸命令叫用。您無法在透過 claude.ai 組織設定 [分發的 plugin 中包含此目錄](/docs/zh-TW/plugin-marketplaces#keep-executables-out-of-the-top-level-bin-directory) |
899| **Settings** | `settings.json` | 啟用 plugin 時套用的預設設定。目前僅支援 [`agent`](/docs/zh-TW/sub-agents) 和 [`subagentStatusLine`](/docs/zh-TW/statusline#subagent-status-lines) 金鑰 |979| **設定** | `settings.json` | Plugin 啟用時套用的預設設定。僅支援 [`agent`](/docs/zh-TW/sub-agents) 和 [`subagentStatusLine`](/docs/zh-TW/statusline#subagent-status-lines) 鍵 |
900 980
901***981***
902 982
904 CLI 命令參考984 CLI 命令參考
905</h2>985</h2>
906 986
907Claude Code 提供 CLI 命令用於非互動式 plugin 管理,適用於指令碼和自動化。987Claude Code 提供 CLI 命令用於非互動式外掛程式管理,適用於指令碼和自動化。
908 988
909<h3 id="plugin-init">989<h3 id="plugin-init">
910 plugin init990 plugin init
911</h3>991</h3>
912 992
913在 `~/.claude/skills/<name>/` 搭建新 plugin。在下一個 Claude Code 工作階段中,它會自動作為 `<name>@skills-dir` 載入,並出現在 `/plugin` 和 `claude plugin list` 中,無需安裝步驟。993在 `~/.claude/skills/<name>/` 處建立新外掛程式的框架。在下一個 Claude Code 工作階段中,它會自動載入為 `<name>@skills-dir`,並在 `/plugin` 和 `claude plugin list` 中出現,無需安裝步驟。
914 994
915請參閱 [Skills-directory plugins](#skills-directory-plugins) 以了解範圍和信任要求。995請參閱[技能目錄外掛程式](#skills-directory-plugins)以了解範圍和信任要求。
916 996
917```bash theme={null}997```bash theme={null}
918claude plugin init <name> [options]998claude plugin init <name> [options]
920 1000
921**引數:**1001**引數:**
922 1002
923* `<name>`:Plugin 名稱。成為 skill 命名空間和 `~/.claude/skills/` 下的目錄名稱,因此不能包含空格或路徑分隔符。1003* `<name>`:外掛程式名稱。成為技能命名空間和 `~/.claude/skills/` 下的目錄名稱,因此不能包含空格或路徑分隔符。
924 1004
925**選項:**1005**選項:**
926 1006
927| 選項 | 描述 | 預設 |1007| 選項 | 說明 | 預設值 |
928| :----------------------- | :--------------------------------------------------------------------------- | :---------------------- |1008| :----------------------- | :------------------------------------------------------------------------------ | :---------------------- |
929| `--description <text>` | Manifest 描述 | |1009| `--description <text>` | 資訊清單說明 | |
930| `--author <name>` | 作者名稱 | `git config user.name` |1010| `--author <name>` | 作者名稱 | `git config user.name` |
931| `--author-email <email>` | 作者電子郵件 | `git config user.email` |1011| `--author-email <email>` | 作者電子郵件 | `git config user.email` |
932| `--with <components...>` | 同時搭建元件資料夾。有效值:`skills`、`agents`、`hooks`、`mcp`、`lsp`、`output-style`、`channel` | |1012| `--with <components...>` | 同時建立元件資料夾的框架。有效值:`skills`、`agents`、`hooks`、`mcp`、`lsp`、`output-style`、`channel` | |
933| `-f, --force` | 覆寫目標的現有 `.claude-plugin/` | |1013| `-f, --force` | 覆寫目標處現有的 `.claude-plugin/` | |
934| `-h, --help` | 顯示命令說明 | |1014| `-h, --help` | 顯示命令說明 | |
935 1015
936**別名:** `new`1016**別名:** `new`
937 1017
938每個 `--with` 值都會為該元件新增一個入門檔案,準備好編輯:1018每個 `--with` 值都會為該元件新增一個入門檔案,準備好編輯:
939 1019
940| 元件 | 它搭建什麼 |1020| 元件 | 建立的內容 |
941| :------------- | :--------------------------------------------------------------------------------------------------- |1021| :------------- | :------------------------------------------------------------------------------------------ |
942| `skills` | 一個額外的命名空間 `<name>:example` skill,與預設 skill 一起 |1022| `skills` | 一個額外的命名空間 `<name>:example` 技能,與預設技能並列 |
943| `agents` | 一個 `agents/` subagent 定義 |1023| `agents` | 一個 `agents/` 子代理定義 |
944| `hooks` | 一個 `hooks/hooks.json`,包含範例事件處理程式 |1024| `hooks` | 一個 `hooks/hooks.json`,包含範例事件處理程式 |
945| `mcp` | 一個 `.mcp.json`,包含 HTTP 和 stdio server 範例 |1025| `mcp` | 一個 `.mcp.json`,包含 HTTP 和 stdio 伺服器範例 |
946| `lsp` | 一個 `.lsp.json` 語言伺服器範例 |1026| `lsp` | 一個 `.lsp.json` 語言伺服器範例 |
947| `output-style` | 一個 `output-styles/<name>.md`,在 plugin 啟用時自動套用 |1027| `output-style` | 一個 `output-styles/<name>.md`,在外掛程式啟用時自動套用 |
948| `channel` | 一個基於 MCP 的 [channel](/docs/zh-TW/channels):一個 stdio server (`server.ts`)、其 `.mcp.json` 和一個 `package.json` |1028| `channel` | 一個基於 MCP 的[頻道](/docs/zh-TW/channels):一個 stdio 伺服器 (`server.ts`)、其 `.mcp.json` 和一個 `package.json` |
949 1029
950搭建的 plugin 使用 `@skills-dir` 來源而不是 marketplace。管理員可以使用 `strictKnownMarketplaces` 或透過在 [managed settings](/docs/zh-TW/plugin-marketplaces#managed-marketplace-restrictions) 中新增 `{"source": "skills-dir"}` 到 `blockedMarketplaces` 來阻止此來源。當被阻止時,`plugin init` 在寫入前失敗。1030建立框架的外掛程式使用 `@skills-dir` 來源,而不是市集。管理員可以使用 `strictKnownMarketplaces` 或在[受管設定](/docs/zh-TW/plugin-marketplaces#managed-marketplace-restrictions)中新增 `{"source": "skills-dir"}` 至 `blockedMarketplaces` 來封鎖此來源。當被封鎖時,`plugin init` 會在寫入前失敗。
951 1031
952**範例:**1032**範例:**
953 1033
954```bash theme={null}1034```bash theme={null}
955# Scaffold a minimal plugin1035# 建立最小外掛程式的框架
956claude plugin init my-helper1036claude plugin init my-helper
957 1037
958# Scaffold with skill and hook folders1038# 使用技能和掛鉤資料夾建立框架
959claude plugin init my-helper --with skills hooks1039claude plugin init my-helper --with skills hooks
960 1040
961# Overwrite an existing scaffold1041# 覆寫現有框架
962claude plugin init my-helper --force1042claude plugin init my-helper --force
963```1043```
964 1044
966 plugin install1046 plugin install
967</h3>1047</h3>
968 1048
969從可用的 marketplaces 安裝 plugin。1049從可用市集安裝外掛程式。
970 1050
971```bash theme={null}1051```bash theme={null}
972claude plugin install <plugin> [options]1052claude plugin install <plugin> [options]
974 1054
975**引數:**1055**引數:**
976 1056
977* `<plugin>`:Plugin 名稱或 `plugin-name@marketplace-name` 用於特定 marketplace1057* `<plugin>`:外掛程式名稱或 `plugin-name@marketplace-name` 以指定特定市集
978 1058
979**選項:**1059**選項:**
980 1060
981| 選項 | 描述 | 預設 |1061| 選項 | 說明 | 預設值 |
982| :--------------------- | :---------------------------------------------------------------------------- | :----- |1062| :--------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :----- |
983| `-s, --scope <scope>` | 安裝範圍:`user`、`project` 或 `local` | `user` |1063| `-s, --scope <scope>` | 安裝範圍:`user`、`project` 或 `local` | `user` |
984| `--config <key=value>` | 設定 plugin manifest 中宣告的 [`userConfig`](#user-configuration) 選項。重複使用此旗標以設定多個選項 | |1064| `--config <key=value>` | 設定外掛程式資訊清單中宣告的 [`userConfig`](#user-configuration) 選項。重複此旗標以設定多個選項 | |
1065| `-y, --yes` | 接受外掛程式市集宣告的命令,無需確認提示:產生具有 [`command` 來源](/docs/zh-TW/plugin-marketplaces#command-sources)的外掛程式的命令,或驗證封存下載的 [`headersHelper`](/docs/zh-TW/plugin-marketplaces#authenticate-archive-downloads)。接受 `headersHelper` 需要 Claude Code v2.1.238 或更新版本。Claude Code 仍會先列印命令。當 stdin 或 stdout 不是 TTY 時為必需。在 Claude Code 工作階段內無效,因此請從您自己的終端執行命令 | |
985| `-h, --help` | 顯示命令說明 | |1066| `-h, --help` | 顯示命令說明 | |
986 1067
987範圍決定已安裝的 plugin 新增到哪個設定檔。例如,`--scope project` 寫入 `.claude/settings.json` 中的 `enabledPlugins`,使 plugin 對克隆專案存放庫的每個人都可用。1068範圍決定已安裝外掛程式新增至哪個設定檔。例如,`--scope project` 會寫入 .claude/settings.json 中的 `enabledPlugins`,使外掛程式可供複製專案存放庫的所有人使用。
988 1069
989**範例:**1070**範例:**
990 1071
991```bash theme={null}1072```bash theme={null}
992# Install to user scope (default)1073# 安裝至使用者範圍(預設)
993claude plugin install formatter@my-marketplace1074claude plugin install formatter@my-marketplace
994 1075
995# Install to project scope (shared with team)1076# 安裝至專案範圍(與團隊共享)
996claude plugin install formatter@my-marketplace --scope project1077claude plugin install formatter@my-marketplace --scope project
997 1078
998# Install to local scope (gitignored)1079# 安裝至本機範圍(不與團隊共享)
999claude plugin install formatter@my-marketplace --scope local1080claude plugin install formatter@my-marketplace --scope local
1000```1081```
1001 1082
1003 plugin uninstall1084 plugin uninstall
1004</h3>1085</h3>
1005 1086
1006移除已安裝的 plugin。1087移除已安裝的外掛程式。
1007 1088
1008```bash theme={null}1089```bash theme={null}
1009claude plugin uninstall <plugin> [options]1090claude plugin uninstall <plugin> [options]
1011 1092
1012**引數:**1093**引數:**
1013 1094
1014* `<plugin>`:Plugin 名稱或 `plugin-name@marketplace-name`1095* `<plugin>`:外掛程式名稱或 `plugin-name@marketplace-name`
1015 1096
1016**選項:**1097**選項:**
1017 1098
1018| 選項 | 描述 | 預設 |1099| 選項 | 說明 | 預設值 |
1019| :-------------------- | :------------------------------------------------------------------ | :----- |1100| :-------------------- | :------------------------------------------------------- | :----- |
1020| `-s, --scope <scope>` | 從範圍卸載:`user`、`project` 或 `local` | `user` |1101| `-s, --scope <scope>` | 從範圍解除安裝:`user`、`project` 或 `local` | `user` |
1021| `--keep-data` | 保留 plugin 的 [persistent data directory](#persistent-data-directory) | |1102| `--keep-data` | 保留外掛程式的[持久資料目錄](#persistent-data-directory) | |
1022| `--prune` | 同時移除其他 plugin 不需要的自動安裝相依性。請參閱 [plugin prune](#plugin-prune) | |1103| `--prune` | 同時移除其他外掛程式不再需要的自動安裝相依性。請參閱 [plugin prune](#plugin-prune) | |
1023| `-y, --yes` | 跳過 `--prune` 確認提示。當 stdin 或 stdout 不是 TTY 時為必需 | |1104| `-y, --yes` | 跳過 `--prune` 確認提示。當 stdin 或 stdout 不是 TTY 時為必需 | |
1024| `-h, --help` | 顯示命令說明 | |1105| `-h, --help` | 顯示命令說明 | |
1025 1106
1026**別名:** `remove`、`rm`1107**別名:** `remove`、`rm`
1027 1108
1028預設情況下,從最後一個剩餘範圍卸載也會刪除 plugin 的 `${CLAUDE_PLUGIN_DATA}` 目錄。使用 `--keep-data` 保留它,例如在測試新版本後重新安裝時。1109根據預設,從最後剩餘的範圍解除安裝也會刪除外掛程式的 `${CLAUDE_PLUGIN_DATA}` 目錄。使用 `--keep-data` 保留它,例如在測試新版本後重新安裝時。
1029 1110
1030<Note>1111<Note>
1031 當來自不同 marketplaces 的已安裝 plugins 共用名稱時,`plugin-name@marketplace-name` 形式只會卸載指定 marketplace 的 plugin。在 v2.1.212 之前,限定形式可能會比對並卸載來自不同 marketplace 的同名 plugin。1112 當來自不同市集的已安裝外掛程式共享名稱時,`plugin-name@marketplace-name` 形式只會解除安裝來自指定市集的外掛程式。在 v2.1.212 之前,合格形式可能會符合並解除安裝來自不同市集的同名外掛程式。
1032</Note>1113</Note>
1033 1114
1034<h3 id="plugin-prune">1115<h3 id="plugin-prune">
1035 plugin prune1116 plugin prune
1036</h3>1117</h3>
1037 1118
1038移除不再被任何已安裝 plugin 所需的自動安裝 plugin 相依性。Claude Code 為滿足另一個 plugin 的 [`dependencies`](/docs/zh-TW/plugin-dependencies) 欄位而引入的相依性會被移除;您直接安裝的 plugins 永遠不會被觸及。1119移除不再由任何已安裝外掛程式需要的自動安裝外掛程式相依性。Claude Code 為滿足另一個外掛程式的 [`dependencies`](/docs/zh-TW/plugin-dependencies) 欄位而拉入的相依性會被移除;您直接安裝的外掛程式永遠不會被觸及。
1039 1120
1040```bash theme={null}1121```bash theme={null}
1041claude plugin prune [options]1122claude plugin prune [options]
1043 1124
1044**選項:**1125**選項:**
1045 1126
1046| 選項 | 描述 | 預設 |1127| 選項 | 說明 | 預設值 |
1047| :-------------------- | :---------------------------------- | :----- |1128| :-------------------- | :---------------------------------- | :----- |
1048| `-s, --scope <scope>` | 在範圍進行修剪:`user`、`project` 或 `local` | `user` |1129| `-s, --scope <scope>` | 在範圍進行清理:`user`、`project` 或 `local` | `user` |
1049| `--dry-run` | 列出將被移除的內容而不實際移除 | |1130| `--dry-run` | 列出將被移除的內容,但不實際移除 | |
1050| `-y, --yes` | 跳過確認提示。當 stdin 或 stdout 不是 TTY 時為必需 | |1131| `-y, --yes` | 跳過確認提示。當 stdin 或 stdout 不是 TTY 時為必需 | |
1051| `-h, --help` | 顯示命令說明 | |1132| `-h, --help` | 顯示命令說明 | |
1052 1133
1053**別名:** `autoremove`1134**別名:** `autoremove`
1054 1135
1055該命令列出孤立的相依性並在移除前要求確認。若要在一個步驟中移除 plugin 並清理其相依性,請執行 `claude plugin uninstall <plugin> --prune`。1136該命令列出孤立的相依性,並在移除前要求確認。若要在一個步驟中移除外掛程式並清理其相依性,請執行 `claude plugin uninstall <plugin> --prune`。
1056
1057<Note>
1058 `claude plugin prune` 需要 Claude Code v2.1.121 或更新版本。
1059</Note>
1060 1137
1061<h3 id="plugin-enable">1138<h3 id="plugin-enable">
1062 plugin enable1139 plugin enable
1063</h3>1140</h3>
1064 1141
1065啟用已停用的 plugin。如果 plugin 宣告 [dependencies](/docs/zh-TW/plugin-dependencies),Claude Code 會在相同範圍內以傳遞方式啟用它們,當相依性未安裝時命令會失敗。1142啟用已停用的外掛程式。當目標從市集安裝並宣告[相依性](/docs/zh-TW/plugin-dependencies)時,Claude Code 會在相同範圍內以遞移方式啟用它們。該命令在[啟用或停用具有相依性的外掛程式](/docs/zh-TW/plugin-dependencies#enable-or-disable-a-plugin-with-dependencies)列出的條件下失敗。
1066 1143
1067```bash theme={null}1144```bash theme={null}
1068claude plugin enable <plugin> [options]1145claude plugin enable <plugin> [options]
1070 1147
1071**引數:**1148**引數:**
1072 1149
1073* `<plugin>`:Plugin 名稱或 `plugin-name@marketplace-name`1150* `<plugin>`:外掛程式名稱或 `plugin-name@marketplace-name`
1074 1151
1075**選項:**1152**選項:**
1076 1153
1077| 選項 | 描述 | 預設 |1154| 選項 | 說明 | 預設值 |
1078| :-------------------- | :------------------------------------------------------------------- | :--- |1155| :-------------------- | :------------------------------------------------------------- | :--- |
1079| `-s, --scope <scope>` | 要啟用的範圍:`user`、`project` 或 `local`。省略時,Claude Code 會偵測 plugin 安裝所在的範圍 | 自動偵測 |1156| `-s, --scope <scope>` | 要啟用的範圍:`user`、`project` 或 `local`。省略時,Claude Code 會偵測安裝外掛程式的範圍 | 自動偵測 |
1080| `-h, --help` | 顯示命令說明 | |1157| `-h, --help` | 顯示命令說明 | |
1081 1158
1082<h3 id="plugin-disable">1159<h3 id="plugin-disable">
1083 plugin disable1160 plugin disable
1084</h3>1161</h3>
1085 1162
1086停用 plugin 而不卸載它。當另一個已啟用的 plugin [depends on](/docs/zh-TW/plugin-dependencies#enable-or-disable-a-plugin-with-dependencies) 目標時失敗。錯誤訊息包含一個鏈式命令,該命令會先停用每個相依項。1163停用外掛程式而不解除安裝它。當目標從市集安裝時,如果另一個已啟用的外掛程式[依賴](/docs/zh-TW/plugin-dependencies#enable-or-disable-a-plugin-with-dependencies)它,該命令會失敗。錯誤訊息包含一個鏈式命令,可先停用每個相依項。
1087 1164
1088```bash theme={null}1165```bash theme={null}
1089claude plugin disable [plugin] [options]1166claude plugin disable [plugin] [options]
1091 1168
1092**引數:**1169**引數:**
1093 1170
1094* `[plugin]`:Plugin 名稱或 `plugin-name@marketplace-name`。使用 `--all` 時可省略1171* `[plugin]`:外掛程式名稱或 `plugin-name@marketplace-name`。使用 `--all` 時為選用。
1095 1172
1096**選項:**1173**選項:**
1097 1174
1098| 選項 | 描述 | 預設 |1175| 選項 | 說明 | 預設值 |
1099| :-------------------- | :------------------------------------------------------------------- | :--- |1176| :-------------------- | :------------------------------------------------------------- | :--- |
1100| `-a, --all` | 停用所有已啟用的 plugins。不能與 `--scope` 結合使用 | |1177| `-a, --all` | 停用所有已啟用的外掛程式。無法與 `--scope` 結合 | |
1101| `-s, --scope <scope>` | 要停用的範圍:`user`、`project` 或 `local`。省略時,Claude Code 會偵測 plugin 安裝所在的範圍 | 自動偵測 |1178| `-s, --scope <scope>` | 要停用的範圍:`user`、`project` 或 `local`。省略時,Claude Code 會偵測安裝外掛程式的範圍 | 自動偵測 |
1102| `-h, --help` | 顯示命令說明 | |1179| `-h, --help` | 顯示命令說明 | |
1103 1180
1104<h3 id="plugin-update">1181<h3 id="plugin-update">
1105 plugin update1182 plugin update
1106</h3>1183</h3>
1107 1184
1108將 plugin 更新到最新版本。1185將外掛程式更新至最新版本。
1109 1186
1110```bash theme={null}1187```bash theme={null}
1111claude plugin update <plugin> [options]1188claude plugin update <plugin> [options]
1113 1190
1114**引數:**1191**引數:**
1115 1192
1116* `<plugin>`:Plugin 名稱或 `plugin-name@marketplace-name`1193* `<plugin>`:外掛程式名稱或 `plugin-name@marketplace-name`
1117 1194
1118**選項:**1195**選項:**
1119 1196
1120| 選項 | 描述 | 預設 |1197| 選項 | 說明 | 預設值 |
1121| :-------------------- | :------------------------------------------ | :----- |1198| :-------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :----- |
1122| `-s, --scope <scope>` | 要更新的範圍:`user`、`project`、`local` 或 `managed` | `user` |1199| `-s, --scope <scope>` | 要更新的範圍:`user`、`project`、`local` 或 `managed` | `user` |
1200| `-y, --yes` | 接受外掛程式市集宣告的命令,無需確認提示:產生具有 [`command` 來源](/docs/zh-TW/plugin-marketplaces#command-sources)的外掛程式的命令,或驗證封存下載的 [`headersHelper`](/docs/zh-TW/plugin-marketplaces#authenticate-archive-downloads)。接受 `headersHelper` 需要 Claude Code v2.1.238 或更新版本。Claude Code 仍會先列印命令。當 stdin 或 stdout 不是 TTY 時為必需。在 Claude Code 工作階段內無效,因此請從您自己的終端執行命令 | |
1123| `-h, --help` | 顯示命令說明 | |1201| `-h, --help` | 顯示命令說明 | |
1124 1202
1203<Note>
1204 Claude Code 根據您已安裝的外掛程式解析裸外掛程式名稱。當來自不同市集的已安裝外掛程式共享名稱時,Claude Code 會拒絕更新並列出要執行的合格 `plugin-name@marketplace-name` 命令。在 v2.1.246 之前,Claude Code 只接受合格形式,並將裸名稱拒絕為未找到。
1205</Note>
1206
1125***1207***
1126 1208
1127<h3 id="plugin-list">1209<h3 id="plugin-list">
1128 plugin list1210 plugin list
1129</h3>1211</h3>
1130 1212
1131列出已安裝的 plugins 及其版本、來源 marketplace 和啟用狀態。1213列出已安裝的外掛程式及其版本、來源市集和啟用狀態。
1132 1214
1133```bash theme={null}1215```bash theme={null}
1134claude plugin list [options]1216claude plugin list [options]
1136 1218
1137**選項:**1219**選項:**
1138 1220
1139| 選項 | 描述 | 預設 |1221| 選項 | 說明 | 預設值 |
1140| :------------ | :---------------------------------------- | :- |1222| :------------ | :----------------------- | :-- |
1141| `--json` | 輸出為 JSON | |1223| `--json` | 輸出為 JSON | |
1142| `--available` | 包含來自 marketplaces 的可用 plugins。需要 `--json` | |1224| `--available` | 包含市集中的可用外掛程式。需要 `--json` | |
1143| `-h, --help` | 顯示命令說明 | |1225| `-h, --help` | 顯示命令說明 | |
1144 1226
1145在互動式工作階段中,`/plugin list` 會內嵌列印相同的列表。互動式表單接受 `--enabled` 或 `--disabled` 以僅顯示該狀態中的 plugins,以及 `ls` 作為 `list` 的簡寫。1227在互動式工作階段中,`/plugin list` 會列印類似的列表內容,但它只涵蓋市集安裝的外掛程式:
1228
1229* 從技能目錄載入的外掛程式會在 `/plugin` 介面和 `claude plugin list` 中出現,但不會在內嵌 `/plugin list` 輸出中出現。
1230* 在 Claude Code v2.1.239 或更新版本上,[從 claude.ai 同步的外掛程式](#synced-plugins)會在您在同步工作階段下載它們的環境中執行 `claude plugin list` 時出現。它們不會在內嵌 `/plugin list` 輸出中出現。
1231* 使用 `--plugin-dir` 或 `--plugin-url` 為工作階段載入的外掛程式會在 `/plugin` 介面中出現,並且在相同旗標位於子命令前時才會在 `claude plugin list` 中出現,如 `claude --plugin-dir <dir> plugin list`。只有旗標名稱會指出它們的位置,因此裸 `claude plugin list` 無法找到它們,不同於同步外掛程式和技能目錄外掛程式,Claude Code 會掃描其固定目錄。
1232
1233互動式形式接受 `--enabled` 或 `--disabled` 以僅顯示該狀態中的外掛程式,並接受 `ls` 作為 `list` 的簡寫。
1146 1234
1147<h3 id="plugin-details">1235<h3 id="plugin-details">
1148 plugin details1236 plugin details
1149</h3>1237</h3>
1150 1238
1151顯示 plugin 的元件清單和預計的 token 成本。輸出列出 plugin 貢獻的所有元件,分組為 Skills、Agents、Hooks、MCP servers 和 LSP servers,以及它為每個工作階段新增多少 tokens 的估計。Skills 群組包括 `skills/` 和 `commands/` 項目。1239顯示外掛程式的元件清單和預計權杖成本。輸出列出外掛程式貢獻的所有元件,分組為技能、代理、掛鉤、MCP 伺服器和 LSP 伺服器,以及它為每個工作階段新增多少權杖的估計。技能群組包括 `skills/` 和 `commands/` 項目。
1152 1240
1153```bash theme={null}1241```bash theme={null}
1154claude plugin details <name>1242claude plugin details <name>
1156 1244
1157**引數:**1245**引數:**
1158 1246
1159* `<name>`:Plugin 名稱或 `plugin-name@marketplace-name`1247* `<name>`:外掛程式名稱或 `plugin-name@marketplace-name`
1160 1248
1161**選項:**1249**選項:**
1162 1250
1163| 選項 | 描述 | 預設 |1251| 選項 | 說明 | 預設值 |
1164| :----------- | :----- | :- |1252| :----------- | :----- | :-- |
1165| `-h, --help` | 顯示命令說明 | |1253| `-h, --help` | 顯示命令說明 | |
1166 1254
1167輸出為每個元件顯示兩個成本數字:1255輸出為每個元件顯示兩個成本數字:
1168 1256
1169* **Always-on:** plugin 的列表文字新增到每個工作階段的 tokens,例如技能描述、agent 描述和命令名稱,無論任何元件是否觸發。1257* **Always-on:** 外掛程式的列表文字(例如技能說明、代理說明和命令名稱)無論任何元件是否觸發,都會新增至每個工作階段的權杖。
1170* **On-invoke:** 元件觸發時的成本。按元件顯示,而不是作為 plugin 總計,因為典型的工作階段只會呼叫元件的子集。1258* **On-invoke:** 元件觸發時的成本。按元件顯示,而不是外掛程式總計,因為典型工作階段只會叫用元件的子集。
1171 1259
1172此範例顯示具有兩個技能的 plugin 的輸出外觀:1260此範例顯示具有兩個技能的外掛程式的輸出外觀:
1173 1261
1174```1262```
1175dependency-guard 1.2.01263dependency-guard 1.2.0
1179Component inventory1267Component inventory
1180 Skills (2) scan-dependencies, review-changes1268 Skills (2) scan-dependencies, review-changes
1181 Agents (0)1269 Agents (0)
1182 Hooks (1) (harness-only — no model context cost)1270 Hooks (1) SessionStart (harness-only — no model context cost)
1183 MCP servers (0)1271 MCP servers (0)
1184 LSP servers (0)1272 LSP servers (0)
1185 1273
1195 Token counts are estimates and may differ from actual usage.1283 Token counts are estimates and may differ from actual usage.
1196```1284```
1197 1285
1198always-on 總計是透過您的作用中模型的 `count_tokens` API 計算的。按元件的數字按比例從該總計縮放。如果 API 無法連線,該命令會回退到基於字元的估計。1286always-on 總計是透過您的作用中模型的 `count_tokens` API 計算的。按元件的數字按比例從該總計縮放。如果 API 無法到達,該命令會回退至基於字元的估計。
1287
1288<h3 id="plugin-validate">
1289 plugin validate
1290</h3>
1291
1292在發佈前檢查外掛程式或市集是否有語法和結構描述錯誤。
1293
1294當驗證通過時命令退出 0,失敗時退出 1,驗證執行本身失敗時退出 2,例如當您傳遞的路徑無法讀取時。
1295
1296```bash theme={null}
1297claude plugin validate <path> [options]
1298```
1299
1300**引數:**
1301
1302* `<path>`:外掛程式目錄或市集目錄的路徑。請參閱[驗證沒有資訊清單的外掛程式或目錄](/docs/zh-TW/plugin-marketplaces#validate-a-plugin-or-a-directory-without-a-manifest)以了解外掛程式執行涵蓋的檔案。
1303
1304**選項:**
1305
1306| 選項 | 說明 | 預設值 |
1307| :----------- | :---------------------------------------------------------------------- | :-- |
1308| `--strict` | 將警告視為錯誤,並在警告時退出 1。在 CI 中使用以捕捉執行時容許的問題,例如[無法識別的欄位](#unrecognized-fields) | |
1309| `--json` | 將驗證報告輸出為一個 JSON 物件,具有相同的退出代碼。需要 Claude Code v2.1.259 或更新版本 | |
1310| `-h, --help` | 顯示命令說明 | |
1311
1312使用 `--json` 時,Claude Code 會將報告寫入 stdout 作為一個 JSON 物件,具有這些頂層欄位:
1313
1314* `success`:退出代碼給出的相同判決
1315* `strict`:執行是否將警告視為錯誤
1316* `target`:Claude Code 驗證的已解析路徑
1317* `manifest`:資訊清單本身的結果,或 `null` 用於[沒有資訊清單的執行](/docs/zh-TW/plugin-marketplaces#validate-a-plugin-or-a-directory-without-a-manifest)
1318* `contents`:按檔案結果,每個命名其 `file` 並攜帶 `errors`、`warnings` 和 `notes` 陣列
1319
1320退出 2 時,該命令不會向 stdout 寫入任何內容;錯誤訊息會進入 stderr。
1321
1322在互動式工作階段中,`/plugin validate <path>` 會內嵌執行相同的檢查。
1199 1323
1200<h3 id="plugin-tag">1324<h3 id="plugin-tag">
1201 plugin tag1325 plugin tag
1202</h3>1326</h3>
1203 1327
1204為 plugin 建立發行版 git 標籤。預設情況下,命令會標記目前目錄中的 plugin;傳遞路徑即可標記其他位置的 plugin。請參閱 [Tag plugin releases](/docs/zh-TW/plugin-dependencies#tag-plugin-releases-for-version-resolution)。1328為外掛程式建立發行 git 標籤。根據預設,該命令會標籤目前目錄中的外掛程式;傳遞路徑以標籤其他位置的外掛程式。請參閱[標籤外掛程式發行](/docs/zh-TW/plugin-dependencies#tag-plugin-releases-for-version-resolution)。
1205 1329
1206```bash theme={null}1330```bash theme={null}
1207claude plugin tag [path] [options]1331claude plugin tag [path] [options]
1209 1333
1210**引數:**1334**引數:**
1211 1335
1212* `[path]`:Plugin 目錄的路徑。預設為目前目錄。1336* `[path]`:外掛程式目錄的路徑。預設為目前目錄。
1213 1337
1214**選項:**1338**選項:**
1215 1339
1216| 選項 | 描述 | 預設 |1340| 選項 | 說明 | 預設值 |
1217| :-------------------- | :---------------------- | :------- |1341| :-------------------- | :----------------------- | :------- |
1218| `--push` | 建立標籤後將其推送到遠端 | |1342| `--push` | 建立標籤後將其推送至遠端 | |
1219| `--dry-run` | 列印將被標籤的內容而不建立標籤 | |1343| `--dry-run` | 列印將被標籤的內容,但不建立標籤 | |
1220| `-f, --force` | 即使工作樹髒污或標籤已存在也建立標籤 | |1344| `-f, --force` | 即使工作樹髒污或標籤已存在,也建立標籤 | |
1221| `-m, --message <msg>` | 標籤註解訊息。使用 `%s` 作為版本的佔位符 | |1345| `-m, --message <msg>` | 標籤註解訊息。使用 `%s` 作為版本的預留位置 | |
1222| `--remote <name>` | 使用 `--push` 時推送到的遠端 | `origin` |1346| `--remote <name>` | 使用 `--push` 推送至的遠端 | `origin` |
1223| `-h, --help` | 顯示命令說明 | |1347| `-h, --help` | 顯示命令說明 | |
1224 1348
1225***1349***
1226 1350
1227<h2 id="debugging-and-development-tools">1351<h2 id="debugging-and-development-tools">
1228 偵錯和開發工具1352 除錯和開發工具
1229</h2>1353</h2>
1230 1354
1231<h3 id="debugging-commands">1355<h3 id="debugging-commands">
1232 偵錯命令1356 除錯命令
1233</h3>1357</h3>
1234 1358
1235使用 `claude --debug` 查看 plugin 載入詳細資訊:1359使用 `claude --debug` 查看外掛程式載入詳細資訊:
1236 1360
1237這會顯示:1361這會顯示:
1238 1362
1239* 正在載入哪些 plugins1363* 正在載入哪些外掛程式
1240* plugin manifests 中的任何錯誤1364* 外掛程式清單中的任何錯誤
1241* Skill、agent 和 hook 註冊1365* Skill、agent 和 hook 註冊
1242* MCP server 初始化1366* MCP 伺服器初始化
1243 1367
1244<h3 id="common-issues">1368<h3 id="common-issues">
1245 常見問題1369 常見問題
1246</h3>1370</h3>
1247 1371
1248| 問題 | 原因 | 解決方案 |1372| 問題 | 原因 | 解決方案 |
1249| :---------------------------------- | :------------------------- | :------------------------------------------------------------------------------------------------------------------------------ |1373| :---------------------------------- | :------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
1250| Plugin 未載入 | 無效的 `plugin.json` | 執行 `claude plugin validate` 或 `/plugin validate` 檢查 `plugin.json`、skill/agent/command frontmatter 和 `hooks/hooks.json` 的語法和架構錯誤 |1374| 外掛程式未載入 | 無效的 `plugin.json` | 執行 `claude plugin validate ./my-plugin` 或 `/plugin validate ./my-plugin`,其中 `./my-plugin` 是您的外掛程式目錄,以檢查 `plugin.json`、`hooks/hooks.json` 以及外掛程式預設目錄中的 skills、agents 和 commands 的前置資訊是否有語法和結構描述錯誤。請參閱[驗證外掛程式或沒有清單的目錄](/docs/zh-TW/plugin-marketplaces#validate-a-plugin-or-a-directory-without-a-manifest)以了解執行涵蓋的內容 |
1251| Skills 未出現 | 目錄結構錯誤 | 確保 `skills/` 或 `commands/` 在 plugin 根目錄,而不是在 `.claude-plugin/` 中 |1375| Skills 未出現 | 目錄結構錯誤 | 確保 `skills/` 或 `commands/` 位於外掛程式根目錄,而不是在 `.claude-plugin/` 內 |
1252| Hooks 未觸發 | 指令碼不可執行 | 執行 `chmod +x script.sh` |1376| Hooks 未觸發 | 指令碼不可執行 | 執行 `chmod +x script.sh` |
1253| MCP server 失敗 | 缺少 `${CLAUDE_PLUGIN_ROOT}` | 對所有 plugin 路徑使用變數 |1377| MCP 伺服器失敗 | 缺少 `${CLAUDE_PLUGIN_ROOT}` | 對所有外掛程式路徑使用變數 |
1254| 路徑錯誤 | 使用了絕對路徑 | 所有路徑必須是相對的,並以 `./` 開頭 |1378| 路徑錯誤 | 使用了絕對路徑 | 使路徑相對,以 `./` 開頭;請參閱[路徑行為規則](#path-behavior-rules),其中涵蓋了 `skills` 欄位的 `"."` 例外 |
1255| LSP `Executable not found in $PATH` | 未安裝語言伺服器 | 安裝二進位檔(例如 `npm install -g typescript-language-server typescript`) |1379| LSP `Executable not found in $PATH` | 語言伺服器未安裝 | 安裝二進位檔案(例如,`npm install -g typescript-language-server typescript`) |
1256 1380
1257<h3 id="example-error-messages">1381<h3 id="example-error-messages">
1258 範例錯誤訊息1382 範例錯誤訊息
1259</h3>1383</h3>
1260 1384
1261**Manifest 驗證錯誤**:1385**清單驗證錯誤**:
1262 1386
1263* `Invalid JSON syntax: Unexpected token } in JSON at position 142`:檢查是否缺少逗號、多餘逗號或未引用的字串1387* `Invalid JSON syntax: Unexpected token } in JSON at position 142`:檢查是否缺少逗號、多餘逗號或未加引號的字串
1264* `Plugin has an invalid manifest file at .claude-plugin/plugin.json. Validation errors: name: Required`:缺少必需欄位1388* `Plugin <name> has an invalid manifest file at .claude-plugin/plugin.json. Validation errors: name: Invalid input: expected string, received undefined`:缺少必需欄位
1265* `Plugin has a corrupt manifest file at .claude-plugin/plugin.json. JSON parse error: ...`:JSON 語法錯誤1389* `Plugin <name> has a corrupt manifest file at .claude-plugin/plugin.json. JSON parse error: ...`:JSON 語法錯誤。在 v2.1.246 之前,Claude Code 也會針對以位元組順序標記 (BOM) 儲存為 UTF-8 的 `plugin.json` 產生此錯誤,即使 JSON 在其他方面有效。
1266 1390
1267**Plugin 載入錯誤**:1391**外掛程式載入錯誤**:
1268 1392
1269* `Warning: No commands found in plugin my-plugin custom directory: ./cmds. Expected .md files or SKILL.md in subdirectories.`:命令路徑存在但不包含有效的命令檔案1393* `Warning: No commands found in plugin my-plugin custom directory: ./cmds. Expected .md files or SKILL.md in subdirectories.`:命令路徑存在但不包含有效的命令檔案
1270* `Plugin directory not found at path: ./plugins/my-plugin. Check that the marketplace entry has the correct path.`:marketplace.json 中的 `source` 路徑指向不存在的目錄1394* `Plugin directory not found at path: ./plugins/my-plugin. Check that the marketplace entry has the correct path.`:marketplace.json 中的 `source` 路徑指向不存在的目錄
1271* `Plugin my-plugin has conflicting manifests: both plugin.json and marketplace entry specify components.`:移除重複的元件定義或移除 marketplace 項目中的 `strict: false`1395* `Plugin my-plugin has conflicting manifests: both plugin.json and marketplace entry specify components.`:移除重複的元件定義或移除 marketplace 項目中的 `strict: false`
1272 1396
1273<h3 id="hook-troubleshooting">1397<h3 id="hook-troubleshooting">
1274 Hook 疑難排解1398 Hook 除錯
1275</h3>1399</h3>
1276 1400
1277**Hook 指令碼未執行**:1401**Hook 指令碼未執行**:
1283 1407
1284**Hook 未在預期事件上觸發**:1408**Hook 未在預期事件上觸發**:
1285 1409
12861. 驗證事件名稱是否正確(區分大小寫):`PostToolUse`,而不是 `postToolUse`14101. 驗證事件名稱正確(區分大小寫):`PostToolUse`,而不是 `postToolUse`
12872. 檢查匹配器模式是否與您的工具相符:`"matcher": "Write|Edit"` 用於檔案操作14112. 檢查匹配器模式是否與您的工具相符:`"matcher": "Write|Edit"` 用於檔案操作
12883. 確認 hook 類型有效:`command`、`http`、`mcp_tool`、`prompt` 或 `agent`14123. 確認 hook 類型有效:`command`、`http`、`mcp_tool`、`prompt` 或 `agent`
1289 1413
1290<h3 id="mcp-server-troubleshooting">1414<h3 id="mcp-server-troubleshooting">
1291 MCP server 疑難排解1415 MCP 伺服器除錯
1292</h3>1416</h3>
1293 1417
1294**Server 未啟動**:1418**伺服器未啟動**:
1295 1419
12961. 檢查命令是否存在且可執行14201. 檢查命令是否存在且可執行
12972. 驗證所有路徑是否使用 `${CLAUDE_PLUGIN_ROOT}` 變數14212. 驗證所有路徑都使用 `${CLAUDE_PLUGIN_ROOT}` 變數
12983. 檢查 MCP server 日誌:`claude --debug` 顯示初始化錯誤14223. 檢查 MCP 伺服器日誌:`claude --debug` 顯示初始化錯誤
12994. 在 Claude Code 外手動測試 server14234. 在 Claude Code 外手動測試伺服器
1300 1424
1301**Server 工具未出現**:1425**伺服器工具未出現**:
1302 1426
13031. 確保 server 在 `.mcp.json` 或 `plugin.json` 中正確設定14271. 確保伺服器在 `.mcp.json` 或 `plugin.json` 中正確設定
13042. 驗證 server 是否正確實現 MCP 協定14282. 驗證伺服器正確實作 MCP 協定
13053. 檢查偵錯輸出中的連接逾時14293. 檢查除錯輸出中的連線逾時
1306 1430
1307<h3 id="directory-structure-mistakes">1431<h3 id="directory-structure-mistakes">
1308 目錄結構錯誤1432 目錄結構錯誤
1309</h3>1433</h3>
1310 1434
1311**症狀**:Plugin 載入但元件(skills、agents、hooks)遺失。1435**症狀**:外掛程式載入但元件(skills、agents、hooks)遺失。
1312
1313**正確結構**:元件必須位於 plugin 根目錄,而不是在 `.claude-plugin/` 內。只有 `plugin.json` 屬於 `.claude-plugin/`。
1314
1315```text theme={null}
1316my-plugin/
1317├── .claude-plugin/
1318│ └── plugin.json ← Only manifest here
1319├── commands/ ← At root level
1320├── agents/ ← At root level
1321└── hooks/ ← At root level
1322```
1323 1436
1324如果您的元件在 `.claude-plugin/` 內,請將它們移到 plugin 根目錄。1437**正確結構**:元件必須位於外掛程式根目錄,而不是在 `.claude-plugin/` 內。只有 `plugin.json` 屬於 `.claude-plugin/`。
1325 1438
1326**偵錯檢查清單**:1439**除錯檢查清單**:
1327 1440
13281. 執行 `claude --debug` 並查找「loading plugin」訊息14411. 執行 `claude --debug` 並查找「loading plugin」訊息
13292. 檢查每個元件目錄是否列在偵錯輸出中14422. 檢查每個元件目錄是否列在除錯輸出中
13303. 驗證檔案權限允許讀取 plugin 檔案14433. 驗證檔案權限允許讀取外掛程式檔案
1331 1444
1332***1445***
1333 1446
1334<h2 id="distribution-and-versioning-reference">1447<h2 id="distribution-and-versioning-reference">
1335 發佈和版本控制參考1448 發佈和版本管理參考
1336</h2>1449</h2>
1337 1450
1338<h3 id="version-management">1451<h3 id="version-management">
1339 版本管理1452 版本管理
1340</h3>1453</h3>
1341 1454
1342Claude Code 使用 plugin 的版本作為快取金鑰,以決定是否有可用的更新。當您執行 `/plugin update` 或自動更新觸發時,Claude Code 會計算目前版本,如果與已安裝的版本相符,則跳過更新。1455Claude Code 使用外掛程式的版本作為快取金鑰,以判斷是否有可用的更新。當您執行 `/plugin update` 或自動更新觸發時,Claude Code 會計算目前版本,如果與已安裝的版本相符,則跳過更新。
1343 1456
1344版本會從以下第一個設定的項目解析:1457對於除了 `command` 以外的每種來源類型,Claude Code 會從以下第一個已設定的項目解析版本:
1345 1458
13461. Plugin 的 `plugin.json` 中的 `version` 欄位14591. 外掛程式 `plugin.json` 中的 `version` 欄位
13472. Plugin 在 `marketplace.json` 中的 marketplace 項目中的 `version` 欄位14602. 外掛程式在 `marketplace.json` 中的市集項目中的 `version` 欄位
13483. Plugin 來源的 git commit SHA,適用於 git 託管 marketplace 中的 `github`、`url`、`git-subdir` 和相對路徑來源14613. 外掛程式來源的 git 提交 SHA,適用於 git 託管市集中的 `github`、`url`、`git-subdir` 和相對路徑來源
13494. `unknown`,適用於 `npm` 來源或不在 git 儲存庫內的本機目錄14624. SHA-256 摘要,適用於 [`archive` 來源](/docs/zh-TW/plugin-marketplaces#zip-archives):市集項目中的 `sha256` 釘選,或當您未設定釘選時下載檔案的摘要。Claude Code 將其縮短為前 12 個字元
14635. `unknown`,適用於 `npm` 來源或不在 git 儲存庫內的本機目錄
1350 1464
1351這為您提供了兩種方式來版本化 plugin:1465對於 [`command` 來源](/docs/zh-TW/plugin-marketplaces#command-sources),Claude Code 始終從命令產生的內容衍生版本:單獨的 12 字元內容雜湊,或在設定了一個時附加到 `plugin.json` 版本作為 `<version>-<hash>`。Claude Code 會忽略命令來源的市集項目 `version` 欄位。因此,命令的雜湊輸出變更會產生新版本,即使編寫的版本字串保持不變。在[連結模式](/docs/zh-TW/plugin-marketplaces#copy-mode-and-link-mode)中,雜湊涵蓋列印目錄的實際路徑及其頂層項目,而不是檔案內容。
1352 1466
1353| 方法 | 如何操作 | 更新行為 | 最適合 |1467對於這些來源類型,這為您提供了三種方式來版本化外掛程式:
1354| :---------------- | :-------------------------------------------- | :----------------------------------------------------------------------- | :------------------- |
1355| **明確版本** | 在 `plugin.json` 中設定 `"version": "2.1.0"` | 使用者只有在您提升此欄位時才會獲得更新。推送新的 commit 而不提升版本沒有效果,`/plugin update` 會報告「已是最新版本」。 | 具有穩定發行週期的已發佈 plugin |
1356| **Commit-SHA 版本** | 從 `plugin.json` 和 marketplace 項目中省略 `version` | 使用者在每次 plugin 的 git 來源有新 commit 時都會獲得更新 | 正在積極開發中的內部或團隊 plugin |
1357 1468
1358<Warning>1469| 方法 | 如何操作 | 更新行為 | 最適合 |
1359 如果您在 `plugin.json` 中設定 `version`,每次您想讓使用者接收變更時,都必須提升它。僅推送新的 commit 是不夠的,因為 Claude Code 會看到相同的版本字串並保留快取副本。如果您正在快速迭代,請保持 `version` 未設定,以便改為使用 git commit SHA。1470| :------------ | :-------------------------------------------------------------------------------------------- | :--------------------------------------------------------------- | :--------------------------- |
1360</Warning>1471| **明確版本** | 在 `plugin.json` 中設定 `"version": "2.1.0"` | 使用者只有在您更新此欄位時才會獲得更新。推送新提交而不更新它沒有效果,`/plugin update` 會報告「已是最新版本」。 | 具有穩定發佈週期的已發佈外掛程式 |
1472| **提交 SHA 版本** | 從 `plugin.json` 和市集項目中省略 `version` | 每當來源的已解析提交變更時,使用者都會獲得更新 | 正在積極開發中的內部或團隊外掛程式 |
1473| **摘要版本** | 使用 [`archive` 來源](/docs/zh-TW/plugin-marketplaces#zip-archives)並從 `plugin.json` 和市集項目中省略 `version` | 使用 `sha256` 釘選時,使用者在您變更釘選時獲得更新。沒有釘選時,使用者在託管 zip 檔案的位元組變更時獲得更新 | 作為 zip 檔案發佈到靜態伺服器或成品儲存庫的外掛程式 |
1361 1474
1362如果您使用明確版本,請遵循 [semantic versioning](https://semver.org)(`MAJOR.MINOR.PATCH`):針對破壞性變更提升 MAJOR,針對新功能提升 MINOR,針對錯誤修正提升 PATCH。在 `CHANGELOG.md` 中記錄變更。1475如果您使用明確版本,請遵循[語義版本控制](https://semver.org)(`MAJOR.MINOR.PATCH`):針對重大變更更新 MAJOR,針對新功能更新 MINOR,針對錯誤修正更新 PATCH。在 `CHANGELOG.md` 中記錄變更。
1363 1476
1364***1477***
1365 1478