用 Markdown 檔案定義可複用的 slash command,透過 git 讓團隊共享提示詞資產,涵蓋程式碼審查、測試、PR 等高頻場景。
Claude Code 內建了一批 slash command——/help、/clear、/compact。但真正讓工作流提速的,是你自己寫的那些。
本文講的是如何設計一套可複用的 slash command 體系,讓團隊裡每個人都能用上同一套提示詞,而不是每次靠記憶重新描述任務。
在 Claude Code 裡,自定義 slash command 就是一個 Markdown 檔案。你把它放在指定目錄,Claude Code 啟動時自動識別,輸入 /檔案名 即可觸發。
檔案內容就是發給 Claude 的提示詞。僅此而已。
沒有特殊語法,沒有設定格式,一個 .md 檔案就是一個 command。
兩個位置,職責不同:
| 位置 | 路徑 | 作用域 |
|---|---|---|
| 專案級 | .claude/commands/ |
僅當前專案,可隨程式碼提交 git |
| 使用者級 | ~/.claude/commands/ |
所有專案,個人私有 |
專案級是團隊共享的核心。把 .claude/commands/ 提交進 git,clone 倉庫的每個人都自動擁有這套 commands。
使用者級適合放個人習慣類的指令,比如你自己偏好的程式碼風格檢查方式,或者只有你在用的工具整合。
在專案根目錄:
mkdir -p .claude/commands
新建 .claude/commands/review.md:
審查當前改動的程式碼品質。重點檢查:
1. 邏輯錯誤和邊界條件
2. 命名是否清晰
3. 有沒有重複程式碼可以提取
4. 安全問題(SQL 注入、XSS、敏感資訊暴露)
給出具體的修改建議,不要泛泛而談。
重啟 Claude Code,輸入 /review 即可觸發。
固定內容的 command 用途有限。$ARGUMENTS 讓 command 變得靈活——使用者在 /command 後面輸入的內容,會替換進提示詞裡。
例如 .claude/commands/test.md:
為以下內容編寫測試:$ARGUMENTS
要求:
- 覆蓋正常路徑和邊界情況
- 測試命名要能自解釋
- 不要 mock 能用真實資料的地方
使用時:
/test UserAuthentication 類別的 login 方法
Claude 收到的實際提示詞是:
為以下內容編寫測試:UserAuthentication 類別的 login 方法
要求:
- 覆蓋正常路徑和邊界情況
...
$ARGUMENTS 可以出現在提示詞的任何位置,也可以出現多次。
一個 command,一個職責
不要寫一個「萬能助手」command,把所有任務塞進去。/review 只管程式碼審查,/test 只管寫測試,/pr 只管產生 PR 描述。粒度細的 command 更容易記憶,也更容易複用。
提示詞寫具體,不寫抽象
壞的寫法:
幫我優化這段程式碼
好的寫法:
```
優化以下程式碼的效能。優先考慮:
1. 減少不必要的資料庫查詢(N+1 問題)
2. 避免在迴圈裡做重複計算
3. 用更高效的資料結構替換線性查找
保持介面不變,只改內部實作。
```
具體的約束條件,才能讓 Claude 給出有針對性的結果。
給 command 加 frontmatter
在檔案開頭加上元資料,Claude Code 在命令列表裡會顯示 description,方便團隊成員快速了解用途:
---
description: 審查當前改動,給出程式碼品質反饋
---
審查當前改動的程式碼品質...
以 Rails 專案為例,這幾個 command 覆蓋了日常開發的高頻場景:
.claude/commands/review.md — 程式碼審查
審查 git diff 裡的改動。檢查:
- 邏輯錯誤和邊界條件處理
- SQL 注入、權限校驗等安全問題
- 命名可讀性
- 是否有重複邏輯可以提取
每條問題給出具體位置和修改建議。
```
.claude/commands/test.md — 產生測試
為這段程式碼寫測試:$ARGUMENTS
使用 RSpec。覆蓋:正常路徑、邊界值、異常情況。
測試命名格式:describe ... context ... it ...
優先用真實物件,只在必要時 mock 外部依賴。
```
.claude/commands/pr.md — PR 描述
根據 git diff 和 commit log,產生 PR 描述。
格式:
(簡述做了什麼,2-3 句)
(背景和動機)
(如何驗證這次改動)
語氣簡潔,面向 code reviewer。
```
.claude/commands/explain.md — 解釋程式碼
解釋 $ARGUMENTS 的作用:
- 整體職責是什麼
- 關鍵邏輯怎麼運作
- 有哪些值得注意的邊界情況
面向剛接手這部分程式碼的開發者,說清楚「為什麼」而不只是「做了什麼」。
```
有些習慣是個人的,不適合強加給整個團隊。放在 ~/.claude/commands/ 裡:
~/.claude/commands/standup.md — 晨會準備
```markdown
根據今天的 git log 和未關閉的 TODO,整理一份晨會摘要:
- 昨天完成了什麼
- 今天計畫做什麼
- 有沒有阻塞項
控制在 5 句話以內。
```
~/.claude/commands/refactor.md — 重構建議
```markdown
分析 $ARGUMENTS,給出重構建議。
只提真正有價值的改動,不要為了重構而重構。
每條建議說明:能解決什麼問題、改動量大不大、風險如何。
```
自定義 command 最大的價值不在於個人提效,而在於讓團隊形成共同語言。
把 .claude/commands/ 提交進程式碼庫,在 README 或 CLAUDE.md 裡列出可用的 commands 和用途。新人 clone 倉庫後,直接就有了團隊積累的提示詞資產,不需要各自摸索。
隨著專案演進,commands 也會迭代——發現某個提示詞效果不好,改一行提交上去,全團隊生效。這是提示詞工程在團隊層面落地的最低成本方式。
.claude/
├── commands/
│ ├── review.md # 程式碼審查
│ ├── test.md # 產生測試
│ ├── pr.md # PR 描述
│ └── explain.md # 解釋程式碼
└── settings.json