本文根據 Claude Code 官方文檔《Extend Claude with skills》整理,資料核對於 2026-10-11。Skill 的基本概念和安裝官方技能包的命令見《Claude Skills 是什麼、怎麼裝》,本文只講「放在哪、誰優先、誰能調用」。
適用於誰
- 搜「claude code skills 安裝目錄」「claude code skills 安裝在哪裏」「claude code skills 目錄結構」的人;
- 個人目錄和項目目錄裏有同名 Skill,不確定哪個在生效的人;
- 在 monorepo 的子目錄裏放了 Skill 卻在選單裏找不到的人。
結論先說
- 自己用,放
~/.claude/skills/技能名/SKILL.md;團隊共用,放倉庫裏的.claude/skills/技能名/SKILL.md並提交。 - 同名時:企業 > 個人 > 項目。個人目錄和項目目錄裏都有
deploy,/deploy運行的是個人那一份。 - 插件裏的 Skill 帶命名空間(
/插件名:技能名),不會和別的衝突。 - 改了不用重啟。Claude Code 會監視 Skill 目錄,新增、修改、刪除在當前會話內生效;唯一要手動處理的是會話中途新建了頂層 skills 目錄,這時運行
/reload-skills。 - 子目錄裏的嵌套 Skill 是懶加載的:Claude 第一次讀或改那個子目錄裏的文件時才出現。
一、七種存放位置
| 位置 | 路徑 | 在哪裏生效 |
|---|---|---|
| 企業 | 託管設定目錄下的 .claude/skills/<skill-name>/SKILL.md | 組織部署到的所有機器、所有用戶 |
| 個人 | ~/.claude/skills/<skill-name>/SKILL.md | 這台電腦上你的所有項目(不含 Cowork 和雲端會話) |
| 項目 | .claude/skills/<skill-name>/SKILL.md | 在這個倉庫裏啟動的會話 |
| 嵌套 | <subdir>/.claude/skills/<skill-name>/SKILL.md | 在該子目錄或其下啟動的會話 |
| 附加目錄 | 用 --add-dir 傳入的目錄裏的 .claude/skills/ | 當次會話 |
| 插件 | <plugin>/skills/<skill-name>/SKILL.md | 啟用了該插件的地方,以 /plugin-name:skill-name 調用 |
| claude.ai 帳號 | 你在 claude.ai 上啟用的技能 | Cowork、雲端會話,以及用該帳號登入的終端會話 |
Windows 上的 ~ 指用戶主目錄。
兩個保留名稱:不要把 Skill 文件夾命名為 synced(那是 claude.ai 同步下來的技能所在的子目錄);anthropic-skills 以及以 anthropic-skills: 開頭的名字在插件之外不會加載。
用符號連結指向別處的 Skill 文件夾也可以,Claude Code 會跟隨連結;多個位置指向同一個目標時只加載一次。
二、同名時誰生效
官方列出的規則:
- 企業 > 個人 > 項目;
- 項目根目錄的 Skill 和嵌套 Skill 都會加載。同名時
/deploy運行根目錄那一份,嵌套的那一份用帶路徑的名字調用,如/apps/web:deploy; - 插件 Skill 和非插件 Skill 都會加載,因為插件 Skill 帶命名空間;
- Skill 和
.claude/commands/裏的同名文件:Skill 生效; - 自己的 Skill 和內置命令同名:在本地終端會話裏,Skill 會替換同名的內置命令,但不替換它的別名。官方舉的例子:項目裏一個叫
usage的 Skill 會替換/usage,而/cost仍然運行內置命令。
第一條容易和直覺相反:很多人以為項目級配置會覆蓋個人配置,Skill 這裏是個人優先。團隊 Skill 不生效時,先查自己的 ~/.claude/skills/ 裏有沒有同名的。
三、monorepo 和子目錄
- 啟動時,Claude Code 從啟動目錄一路向上到倉庫根目錄,加載每一層的
.claude/skills/; - 啟動目錄之下的子目錄裏的 Skill 屬於嵌套 Skill,要等 Claude 第一次讀取或編輯該子目錄裏的文件才加載,在那之前
/選單裏看不到; - 想提前加載,運行
/add-dir <subdir>; - 在連結的 git worktree 裏,向上查找到 worktree 根目錄為止。
--add-dir 傳入的目錄會加載其中的 .claude/skills/、.claude/commands/ 和 .claude/agents/。其中只有 skills 目錄會被持續監視,另外兩個改了需要重啟。官方還特別區分了一點:設定裏的 permissions.additionalDirectories 只是授予文件訪問權限,不會加載任何 Skill。
四、改了之後要不要重啟
| 情況 | 需要做什麼 |
|---|---|
| 在已有的 skills 目錄裏新增、修改、刪除 Skill | 不用做,會話內自動生效(bare 模式除外) |
| 會話中途新建了一個啟動時不存在的頂層 skills 目錄 | 運行 /reload-skills;之後該目錄再有變化也要再運行一次 |
改的是插件裏的 hooks、.mcp.json、agents 等 | 運行 /reload-plugins |
注意一個細節:Skill 的內容在調用時加載進對話,之後不會重讀文件。所以你在會話中途改了某個已經調用過的 Skill,要重新調用一次才會用上新內容。
五、控制誰能調用
預設情況下,你可以用 /技能名 調用,Claude 也可以自動調用。兩個 frontmatter 字段可以改變這一點:
| frontmatter | 你能調用 | Claude 能調用 | 進入上下文的內容 |
|---|---|---|---|
| (預設) | 能 | 能 | 描述始終在;調用時加載全文 |
disable-model-invocation: true | 能 | 不能 | 描述不進上下文 |
user-invocable: false | 不能 | 能 | 描述始終在 |
- 有副作用的流程(部署、發佈、發消息)用
disable-model-invocation: true:只在你點名時運行,平時也不佔上下文; - 純背景知識用
user-invocable: false:不出現在/選單裏,只由 Claude 在需要時讀取。
手動調用的寫法也有講究:/deploy staging 放在消息開頭才會直接運行;寫成「go ahead and /deploy to staging」只是授權,不會直接運行。
六、不改文件也能調整:skillOverrides
別人寫的 Skill、插件之外同步來的 Skill,不方便改它的文件,可以在設定裏覆蓋可見性。輸入 /skills 打開列表,按空格在幾種狀態之間切換,按 Esc 儲存到 .claude/settings.local.json 的 skillOverrides。四個取值:
| 取值 | 含義 |
|---|---|
"on" | 正常 |
"name-only" | 只列名稱,不列描述,用來節省上下文 |
"user-invocable-only" | 只能你手動調用 |
"off" | 關閉 |
官方註明插件裏的 Skill 不受這個設定影響,插件 Skill 在插件管理裏啟停。
七、Claude Code 額外支持的 frontmatter 字段
除了開放規範裏的字段,Claude Code 還認下面這些(節選自官方參考表):
| 字段 | 作用 |
|---|---|
name | / 選單裏的命令名,不寫時預設用目錄名 |
description | 做什麼、什麼時候用;不寫時取正文第一個非空行 |
when_to_use | 補充的觸發場景,在清單裏接在 description 後面 |
argument-hint | 自動補全時顯示的參數提示,如 [issue-number] |
arguments | 命名的位置參數,正文裏用 $name 引用 |
allowed-tools | 調用這一輪裏免確認可用的工具 |
disallowed-tools | Skill 生效期間移除的工具 |
model / effort | 只對當前這一輪生效的模型和思考強度 |
context | 設為 fork 時在分叉出的子代理裏運行 |
agent | 配合 context: fork,指定子代理類型,預設 general-purpose |
paths | 用 glob 限定只在處理匹配文件時才自動啟用 |
hooks | 調用時註冊、保留到會話結束的 Hook |
shell | 正文裏內聯命令使用的 shell,bash(預設)或 powershell |
官方說明:不認識的字段會被靜默忽略;布爾字段接受 true / false。這些擴展字段只在 Claude Code 裏有效,上載到 claude.ai 或通過 API 使用時,多出來的鍵會直接報錯,詳見《SKILL.md 怎麼寫》。
正文裏可用的變量包括 $ARGUMENTS(全部參數)、$0 $1(按位置,從 0 開始)、${CLAUDE_SKILL_DIR}(SKILL.md 所在目錄)、${CLAUDE_PROJECT_DIR}(項目根目錄)等。引用 Skill 自帶的腳本時用 ${CLAUDE_SKILL_DIR},不要寫死絕對路徑。
八、舊的 .claude/commands 還能用嗎
能。官方說明:.claude/commands/deploy.md 和 .claude/skills/deploy/SKILL.md 都會創建 /deploy,已有的命令文件繼續有效。Skill 多出來的是三樣:可以帶支持文件、可以控制誰能調用、可以被 Claude 自動加載。自定義命令的寫法見《Claude Code 斜槓命令大全》。
常見問題
Q:個人 Skill 在 Cowork 或網頁版的 Claude Code 裏為什麼沒有?
官方表格寫明個人目錄的 Skill 只在這台電腦上生效,不含 Cowork 和雲端會話。那些環境用的是你 claude.ai 帳號上啟用的技能,或倉庫裏提交的項目 Skill。
Q:怎麼確認某個 Skill 到底加載沒有?
輸入 /skills 看列表,或者直接問 Claude 現在有哪些 Skill 可用。在列表裏卻不被自動調用,見《Skill 不觸發怎麼辦》。
Q:子代理裏能用 Skill 嗎?
能,方式不同。子代理定義裏的 skills 字段會在啟動時把列出的 Skill 全文預加載;沒列出的項目、個人、插件 Skill,子代理仍可以通過 Skill 工具發現並調用。子代理的配置見《Claude Code 子代理》。
Q:權限規則裏能限制 Skill 嗎?
可以。官方給的寫法:Skill(commit) 精確匹配某個 Skill,Skill(review-pr *) 匹配帶參數的調用,單寫 Skill 則針對整個工具。
參考資料
- Extend Claude with skills(Claude Code 官方):https://code.claude.com/docs/en/skills
- Extend Claude Code(Claude Code 官方):https://code.claude.com/docs/en/features-overview
0 條評論
還沒有評論,來搶沙發~