Anthropic
Custom commands
.claude/commands/、$ARGUMENTS、什麼時候該抽出來。
TL;DR
- 在
.claude/commands/<name>.md放一個 markdown 檔,自動變成/<name>slash command - 內容就是 prompt 本身,可以用
$ARGUMENTS接參數 - 重複工作做超過 3 次就該抽出來——不然每次都在重打同一段 prompt
一個情境:每次寫完功能都要重打那三段
寫完一個 feature,你大概會跟 Claude Code 講三句話:
「跑 lint,把可以自動修的修一修。」 「幫我為剛改的檔案生 unit test。」 「最後檢查 deps 有沒有過時或 CVE。」
第一次打沒事,第十次打就開始懷疑人生——而且每次措辭略微不同,Claude 的反應也跟著飄。這三個都是該抽成 custom command 的明顯訊號。
Command 是什麼
就一個 markdown 檔。把它丟進 .claude/commands/ 底下:
.claude/
└── commands/
├── audit-deps.md
├── lint-fix.md
└── write-tests.md
檔名就是 command 名字——audit-deps.md 自動變成 /audit-deps。檔案內容就是會被送進去的 prompt body,沒有什麼 magic syntax。Claude Code 會自己掃這個資料夾,新增不用 restart。
三個可以直接抄的範本
/audit-deps — 檢查過時或有 CVE 的 dependency
跑 `npm audit` 找出有資安問題的套件,
再跑 `npm outdated` 看哪些版本落後超過一個 major。
請輸出表格:套件名 / 目前版本 / 建議版本 / 風險等級。
不要直接升級——先讓我看清單。
/write-tests <file> — 為指定檔生 unit test
幫 $ARGUMENTS 寫 unit test。
慣例:
- Vitest + React Testing Library
- test 檔放在同層的 __tests__/
- 命名為 [filename].test.ts(x)
- happy path、edge case、error state 各一組
呼叫:/write-tests src/hooks/use-auth.ts——$ARGUMENTS 會被替換成 src/hooks/use-auth.ts。參數也不一定要是路徑,任何字串都行(「auth 那個 hook」也可以,Claude 會自己找)。
/lint-fix — 跑 linter 並修自動修得了的部分
1. 跑 `pnpm lint --fix`
2. 把無法自動修的 error 列出來,每個附一句該怎麼改
3. 不要動 warning,只處理 error
何時該抽
| 訊號 | 該抽嗎 |
|---|---|
| 同一段 prompt 重打超過 3 次 | 抽 |
| 想跨 session / 跨機器帶過去 | 抽 |
| 團隊裡別人也會用到 | 抽(放 project 層) |
| 一次性的探索 | 不用,直接打 |
抽出來的 cost 很低(一個 markdown 檔),但下次開新 session 不用再回想「上次那段 prompt 我怎麼寫的」。
接下來
Custom command 是 prompt 層的擴充——把你常打的指令封裝起來。下一篇看 tool 層的擴充:在 Claude Code 接 MCP server,讓 Claude Code 能呼叫外部系統的 API、查資料庫、操作 SaaS 工具。

