什麼是 Custom Slash Command?
在 Claude Code 中,你可以把常用的工作流程定義成自訂斜線命令(Custom Slash Command),例如 /audit、/write-test、/review-pr。當你需要執行這些任務時,直接呼叫對應的命令,Claude 會按照你預先定義好的步驟進行操作。
與單純提示詞捷徑的差異: Custom Command 不只是簡單的文本替換,而是把整個工作流程結構化,包含輸入參數、執行步驟、驗證方式等,讓 Claude 能更精確地執行你設計的任務。
💡 為什麼需要 Custom Command?
- 提高重複任務的執行效率
- 確保同一類型任務的一致性
- 可帶參數進行靈活的自訂
- 支援專案規範和最佳實踐的推行
目錄結構:.claude/commands/
Custom Command 的定義檔存放在 .claude/commands/ 目錄下,每個 .md 檔代表一個命令。
圖 1:命令檔的組織方式。audit.md、write_tests.md 和 review_pr.md 分別對應 /audit、/write_tests 和 /review_pr 命令。
Custom Command 的 8 大組成區塊
一個設計完善的 Custom Command 應該包含以下區塊:
| 區塊 | 說明 | 必要性 |
|---|---|---|
| 任務目標 | 明確告訴 Claude 這個 command 要完成什麼 | 必要 |
| 輸入參數 | 使用 $ARGUMENTS 接收使用者輸入,支援靈活自訂 | 常用 |
| 執行步驟 | 列出 Claude 要依序執行的具體動作 | 必要 |
| 專案規範 | 補充測試、命名、架構、匯入路徑等規則 | 強烈建議 |
| 工具使用方式 | 指示 Claude 何時讀檔、查詢、執行測試或修改程式 | 視任務而定 |
| 輸出格式 | 定義 Claude 如何格式化回報結果 | 強烈建議 |
| 驗證方式 | 指定要執行的測試、lint、build 或 type check | 強烈建議 |
| 失敗處理 | 當測試失敗或資訊不足時的處理方式 | 進階建議 |
實戰範例:Review PR Command
以下是一個完整的 review_pr.md 範例,展示如何整合上述 8 個區塊:
# Review PR
請根據以下目標進行程式碼審查:
$ARGUMENTS
## 任務目標
你審查目前變更內容,找出設計、可讀性、安全性、測試覆蓋與維護性問題。
## 執行步驟
1. 檢查 git diff。
2. 理解這次變更的目的。
3. 找出可能的 bug。
4. 檢查是否違反專案架構規範。
5. 檢查是否缺少測試。
6. 檢查是否有安全性風險。
7. 提出具體修改建議。
## 審查重點
請特別注意:
- 是否有破壞既有 API 行為
- 是否有 null pointer / undefined 風險
- 是否有權限驗證缺漏
- 是否有不必要的耦合
- 是否有重複邏輯
- 是否缺少測試案例
- 是否有過度設計
## 輸出格式
請用以下格式回報:
### 總結
簡短說明這次變更的整體品質。
### 必修問題
列出一定要修的問題。
### 建議改善
列出可以改善但不阻塞合併的問題。
### 測試建議
列出建議補上的測試。
如何呼叫 Custom Command
基本呼叫
/review_pr
帶參數呼叫
/review_pr focus on auth and permission risk
此時 $ARGUMENTS 會被替換為 focus on auth and permission risk,Claude 便會在審查時重點關注權限驗證與安全風險。
提示:參數可以多行,支援複雜的指引與上下文。
Custom Command 與 Skill 的關係
官方說明:「custom commands have been merged into skills」
Claude Code 的最新版本將 Custom Command 整合到 Skill 機制中。這並不意味著 .claude/commands/ 目錄被廢棄,而是引入了更強大的 Skill 系統。
新舊寫法對比
舊寫法:Command(.claude/commands/deploy.md)
# Deploy
Deploy the application to production.
## 執行步驟
1. Run tests
2. Build the application
3. Deploy to production
4. Report the result
新寫法:Skill(.claude/skills/deploy/)
.claude/skills/deploy/
├── SKILL.md # 任務定義(frontmatter + 內容)
├── scripts/
│ └── deploy.sh # 可選的輔助腳本
└── docs/
└── runbook.md # 詳細文件
SKILL.md 可包含 frontmatter 控制自動觸發行為:
---
name: deploy
description: Deploy application to production
category: deployment
---
# Deploy
按照以下步驟部署應用...
Skill 的優勢
- 自動載入能力:Claude 可在相關情境自動判斷是否載入該 Skill,而非需要手動呼叫
- 檔案目錄支援:可組織多個檔案(腳本、文件、範例等)
- Frontmatter 控制:透過元資料控制觸發條件、分類、依賴關係等
- 更好的文件化:支援獨立的文件目錄與範例
Command vs Skill:決策對比表
| 功能特性 | Custom Command | Skill |
|---|---|---|
| 觸發方式 | 手動呼叫 /命令名稱 | 手動呼叫或自動載入 |
| 自動載入 | 否 | 是(可透過 frontmatter 控制) |
| Frontmatter 控制 | 不支援 | 支援(name、description、category 等) |
| 檔案目錄支援 | 單一 .md 檔 | 目錄結構(SKILL.md + 腳本 + 文件) |
| 參數傳遞 | $ARGUMENTS | $ARGUMENTS + 額外變數支援 |
| 最佳應用場景 | 明確的、頻繁手動呼叫的任務 | 長期、多面向、可複用的能力 |
何時用 Command,何時用 Skill?
使用 Custom Command 的時機
✓ 任務明確且場景單一
✓ 開發者會經常主動呼叫
✓ 任務流程相對簡單,不需要複雜的檔案結構
✓ 新手想快速體驗自訂命令的效果
例: /review-pr、/audit、/format-code
使用 Skill 的時機
✓ 能力較為複雜,涉及多個檔案或腳本
✓ 希望 Claude 能在相關情境自動觸發(不限手動呼叫)
✓ 任務需要配套文件、範例、最佳實踐
✓ 能力會在多個專案間複用
✓ 需要更精細的元資料控制(分類、依賴、觸發條件等)
例: 完整的部署流程、安全審計工具、重構工作流程
小結
Slash Command 是入口,Skill 是可被重複使用與擴充的能力包。
核心要點
- Custom Command 是在
.claude/commands/下定義的工作流程指令,支援參數化和結構化設計 - 8 大組成區塊(任務目標、參數、步驟、規範、工具使用、輸出、驗證、失敗處理)是設計高品質命令的指導原則
- Skill 是新一代機制,整合了 Command 的功能並加入自動載入、frontmatter 控制和檔案目錄支援
- 既有 Command 仍可運作,但建議新建能力時優先採用 Skill 模式
- 選擇標準很清楚:簡單明確的任務用 Command,複雜可複用的能力用 Skill
無論選擇哪種方式,關鍵都在於結構化設計和清晰的指引,這樣 Claude 才能確實理解你的意圖並精確執行。