Claude Code 自訂 Slash Commands:打造你的專屬 AI 工作流


如果你還不熟悉 CLAUDE.md 或 Claude Code 的基本設定,建議先閱讀: 📖 打造 AI 友善的專案文檔:CLAUDE.md 完整指南(上) 📖 Claude Code 權限控管:用 settings.local.json 保護你的專案


🎯 前言

用 Claude Code 一段時間後,你會發現一個問題:每次開始新任務,都要重複下達同樣的指示。

「先別急著改 code,先問我問題」「commit 的時候不要加 Co-Authored-By」「分析之前先探索 codebase」——這些話我說過幾十次。

Claude Code 的 Custom Slash Commands(自訂斜線指令)正是解決這個問題的方式。你只需要寫一個 Markdown 檔案,定義好流程,之後只要打 /interview/commit,Claude 就會照著你設計的劇本走。

這篇文章分享我在 AppSystem 專案中實際使用的幾個自訂指令,其中 /interview(需求訪談模式)是最核心的一個。


📂 自訂指令的基本結構

Custom Slash Commands 存放在專案的 .claude/commands/ 目錄中:

.claude/
└── commands/
    ├── interview.md       ← /interview
    ├── commit.md          ← /commit
    ├── ultra-think.md     ← /ultra-think
    └── reset.md           ← /reset

規則很簡單

  • 每個 .md 檔案就是一個指令
  • 檔名就是指令名稱(interview.md/interview
  • 檔案內容就是 Claude 收到的 prompt

基本格式

---
description: 指令的簡短描述(顯示在指令列表中)
argument-hint: [可選參數的提示文字]
---

# 指令標題

這裡寫你要 Claude 執行的完整指示...

$ARGUMENTS 變數會自動替換為使用者在指令後面輸入的內容。例如 /interview 我想優化查詢效能,其中「我想優化查詢效能」就是 $ARGUMENTS


🎤 核心指令:/interview(需求訪談模式)

這是我最常用、也最推薦的自訂指令。它解決了一個根本問題:Claude 太急著動手。

沒有 /interview 的時候,對話通常是這樣的:

我:我想加一個匯出功能
Claude:好的,我來幫你實作![直接開始寫 code]
我:等等,我還沒說要匯出什麼格式...
Claude:抱歉,讓我重新來...

有了 /interview,Claude 會被迫先做完整的需求釐清,再探索 codebase,最後才提出執行計畫。

/interview 的完整設計

---
description: Interview Mode (project)
argument-hint: [optional context or specific area to focus on]
---

# Interview Mode

當進入此模式時,執行以下流程:

## 階段一:問題收集

一次列出核心問題,讓用戶回答:

🎤 Interview

請回答以下問題(可以簡答,我會追問細節):

1. **Why** - 為什麼要做這個?想解決什麼問題?
2. **What** - 具體要做什麼?範圍包含哪些?
3. **How** - 有偏好的做法或技術限制嗎?
4. **Edge cases** - 有需要特別處理的例外情況嗎?

**如果用戶提供了 $ARGUMENTS**
將其作為初始上下文,但仍然要問完整的 4 個問題來確保理解完整。

## 階段二:動態追問 + 自主探索

### A. 追問模糊點(最多 3 輪)

根據用戶回答,針對模糊或不完整的部分追問:
- 如果範圍不清楚 → 追問具體檔案或模組
- 如果做法不明 → 提供 2-3 個選項讓用戶選擇
- 如果有潛在風險 → 主動提醒並確認
- 如果用戶回答「不確定」「你決定」→ 說明建議方案並確認

**追問規則**
- 一次只問一個重點,保持簡短
- 如果用戶明確說「就這樣」「開始吧」→ 停止追問,進入探索

### B. 自主探索 codebase(關鍵增強)

告知用戶:「讓我先探索一下相關的程式碼...」

**使用工具理解現況**
1. **Glob** - 找出相關檔案
2. **Grep** - 搜尋關鍵字或模式
3. **Read** - 讀取關鍵檔案理解邏輯

**探索重點**
- 找出會被影響的檔案
- 理解現有實作方式
- 發現潛在衝突或依賴
- 確認是否有現成可用的 pattern

## 階段三:生成詳細計劃

基於問答 + 探索結果,整理成結構化計劃:

📋 執行計劃

## 目標
{一句話描述目標}

## 現況分析(探索發現)
- 相關檔案:{列出關鍵檔案}
- 現有機制:{簡述現有實作}
- 潛在影響:{列出會影響的地方}

## 執行步驟
1. **{動作}** ({影響範圍})
   - {具體改動}

## 影響範圍
- {檔案列表,附行號或函數名}

## 風險提醒
- {如有潛在風險列出,沒有就省略}

## 驗證方式
- {如何確認改動成功}

---
確認執行?回覆「確認」開始,或告訴我要調整的地方。

## 階段四:執行

用戶確認後:
1. 依序執行每個步驟
2. 每完成一步,標記進度
3. 全部完成後,簡短總結改動

四個核心設計原則

原則說明
不進入 Plan Mode/interview 本身就整合了規劃能力,確認後直接執行
探索與執行分離階段二只讀不改,階段四才真正動手
保持計劃一致性執行中遇到計劃外的歧義會暫停再問,不偷偷多做或少做
工具分階段使用探索階段用 Glob/Grep/Read;執行階段才用 Edit/Write/Bash

實際使用範例

# 直接進入訪談模式
/interview

# 帶上下文
/interview 我想優化資料庫查詢效能

# 針對特定功能
/interview 新增使用者權限管理功能

一個典型的完整流程:

我:/interview 優化登入查詢效能

Claude:🎤 Interview
請回答以下問題:
1. Why: 為什麼要做這個?
2. What: 具體範圍?
3. How: 偏好做法?
4. Edge cases: 例外情況?

我:
1. 登入太慢,使用者抱怨
2. 優化 auth.php 的查詢
3. 不確定
4. 要保持現有功能

Claude:讓我先探索一下相關的程式碼...
(使用 Glob 找出 auth*.php)
(使用 Read 讀取 auth.php)
發現:使用 SELECT *、無 index、無快取

📋 執行計劃
## 目標
優化登入查詢效能
## 現況分析
- 相關檔案:AppSystem/class/auth.php
- 現有機制:SELECT * FROM users,無快取
## 執行步驟
1. 修改查詢語句(auth.php:45)
   - SELECT * 改為只查必要欄位
2. 新增快取機制
   - 使用 Session 快取 5 分鐘

確認執行?

我:確認

Claude:(開始按步驟執行)
✓ 完成

為什麼 /interview 比直接下指令好?

場景直接下指令用 /interview
需求明確可以直接做過程稍長,但更安全
需求模糊Claude 猜測 → 返工先釐清再做 → 一次到位
複雜任務容易遺漏細節結構化拆解,不遺漏
跨模組修改可能漏改某個檔案探索階段找出所有相關檔案

我的經驗:大約 70% 的任務用 /interview 會更有效率。剩下 30% 是很明確的小修改(修 typo、改一個 CSS),直接說就好。


🔧 其他實用的自訂指令

/commit:安全的 Git 提交流程

團隊有自己的 commit message 格式?寫成指令就不用每次提醒:

# Commit - 安全的 git commit 流程

執行以下步驟:

1. 執行 `git status` 查看狀態
2. 執行 `git diff` 查看未暫存的改動
3. 執行 `git diff --cached` 查看已暫存的改動
4. 如果沒有暫存改動,詢問要暫存哪些檔案
5. **詢問用戶 issue 編號**(例如:001)
6. 根據改動內容生成 commit message,格式:
   issue-{編號} {改動描述}
7. 顯示完整 commit message 讓用戶確認
8. 用戶確認後執行 `git commit`

## 規則

- **不要** 加 Co-Authored-By
- **不要** 加 Generated with Claude Code
- **不要** 自動 push
- commit message 第一行必須是 `issue-{編號}` 開頭
- 如果用戶沒有提供編號,必須詢問

效果:打 /commit 就好,Claude 會自動走完整個流程,還會遵守你的 commit message 格式。

/reset:重置安全狀態

如果你有用 hooks 做安全檢查(例如追蹤修改檔案數量),有時候需要重置狀態:

# Reset - 重置 safety hooks 狀態

清空 `.claude/hooks/state.json` 的追蹤資料。

## 會重置的內容
- 已修改檔案列表
- 已確認的操作記錄
- 錯誤計數

## 不會影響的內容
- hooks 規則本身
- Git 狀態

## 執行

執行 Python 腳本刪除 state.json,完成後告知用戶。

簡短、明確、一次性任務——完美的指令候選。

/ultra-think:深度分析模式

遇到架構決策或複雜問題時,讓 Claude 從多個角度深入分析:

---
description: Deep analysis and problem solving
argument-hint: [problem or question to analyze]
---

# Deep Analysis Mode

1. **多維度分析**
   - 技術面:可行性、效能、可維護性
   - 業務面:價值、時程、風險
   - 使用者面:需求、體驗、邊界情況

2. **產生多個方案**(至少 3 個)
   - 每個方案列出優缺點
   - 包含實作複雜度和風險評估

3. **挑戰與精煉**
   - 用魔鬼代言人的角度質疑每個方案
   - 考慮二階效應(改 A 會不會影響 B?)

4. **結構化建議**
   - 推薦方案 + 理由
   - 實作路線圖
   - 風險緩解策略

使用場景:

/ultra-think 我們應該繼續用 MySQL 5.7 還是遷移到 8.0?
/ultra-think 多租戶架構要不要改成 schema-per-tenant?

💡 設計自訂指令的技巧

技巧 1:明確定義「不要做什麼」

## 規則
- **不要** 自動 push(讓用戶自己決定)
- **不要** 修改不相關的檔案
- **不要** 跳過確認步驟

「不要做什麼」往往比「要做什麼」更重要。Claude 很容易「好心辦壞事」,明確的禁止清單能有效防止。

技巧 2:分階段,而非一次全做

## 階段一:分析(只讀)
...

## 階段二:計劃(輸出但不執行)
...

## 階段三:執行(用戶確認後才開始)
...

分階段設計讓你在每個階段都有機會介入和修正方向。

技巧 3:善用 $ARGUMENTS 做條件分支

**如果用戶提供了 $ARGUMENTS**
- 將其作為初始上下文
- 但仍然要問確認問題

**如果沒有 $ARGUMENTS**
- 從頭開始問

技巧 4:指定工具使用規則

## 探索階段的工具使用
- ✅ 使用 Glob、Grep、Read
- ❌ 不要使用 Edit、Write、Bash

## 執行階段的工具使用
- ✅ 使用 Edit、Write、Bash
- ❌ 不要使用 Bash 執行破壞性指令

技巧 5:定義輸出格式

發現問題時,用以下格式輸出:

| 檔案 | 行號 | 問題 | 建議 |
|------|------|------|------|
| ... | ... | ... | ... |

統一的輸出格式讓結果更容易審閱和追蹤。


📋 我的指令清單總覽

指令用途使用頻率
/interview需求訪談 → 探索 → 計劃 → 執行每天
/commit安全的 git 提交流程每天
/ultra-think深度分析複雜問題每週
/reset重置 hooks 安全狀態偶爾

🎉 結語

自訂 Slash Commands 的本質是把你的「工作流程」變成可重複執行的劇本。

與其每次都告訴 Claude「先問我問題再動手」、「commit 要用 issue 編號開頭」,不如寫一次,之後只要打一個 / 就好。

我的建議:先從 /interview 開始。這個指令能解決最大的痛點——Claude 太急著動手。用了一段時間後,你會自然發現哪些流程值得再包裝成指令。

指令不需要一開始就很完美。先寫一個粗略版本,用幾次後根據實際體驗迭代修改,就會越來越順手。


📎 相關文章