Slash command Claude Code: tạo lệnh tùy chỉnh từ A-Z (2026)
Slash command tùy chỉnh trong Claude Code là một file Markdown đặt trong thư mục .claude/commands/: tên file chính là tên lệnh, nội dung file chính là prompt sẽ chạy. Ví dụ tạo .claude/commands/review.md rồi gõ /review là Claude làm theo. Bạn truyền dữ liệu vào lệnh qua $ARGUMENTS (hoặc $1, $2), cấu hình bằng frontmatter YAML, và thậm chí nhúng output bash trực tiếp. Từ 2026, custom command đã hợp nhất với Skills nhưng các file cũ vẫn chạy bình thường.
- Bài viết bám theo tài liệu chính thức code.claude.com/docs/slash-commands (truy cập 09/08/2026). Docs Claude Code đổi khá nhanh nên một vài field cần Claude Code phiên bản mới (v2.1.x trở lên).
Slash command trong Claude Code là gì? (built-in vs custom)
Trong Claude Code, slash command là lệnh bắt đầu bằng dấu / bạn gõ ngay trong phiên chat để ra lệnh nhanh. Có hai loại và rất dễ nhầm.
Lệnh có sẵn (built-in) do Anthropic cung cấp, không cần cài gì thêm. Vài lệnh bạn dùng gần như mỗi ngày:
/help- liệt kê mọi lệnh khả dụng/clear- xóa toàn bộ lịch sử hội thoại, bắt đầu context sạch/compact- nén hội thoại để tiết kiệm context/init- tạo fileCLAUDE.mdcho dự án/model- đổi model đang dùng/status- xem trạng thái phiên, tài khoản, context
Lệnh tùy chỉnh (custom) là lệnh bạn tự tạo để đóng gói một prompt hay dùng thành một cú gõ. Nói gọn: custom slash command là một file Markdown trong .claude/commands/, tên file là tên lệnh, còn nội dung file là prompt Claude sẽ thực thi khi bạn gọi lệnh đó. Thay vì dán lại đoạn "hãy review diff hiện tại theo checklist…" mỗi lần, bạn lưu nó một lần rồi gõ /review.
Điểm hay: lệnh tùy chỉnh sống chung menu với lệnh built-in. Gõ / là menu bật lên, gợi ý cả lệnh có sẵn lẫn lệnh của bạn. Nếu bạn commit thư mục .claude/commands/ vào repo, cả team dùng chung bộ lệnh - đây là lý do custom command mạnh hơn "prompt copy-paste" rất nhiều.
Vì sao không cứ dán prompt cho nhanh? Ba lý do thực tế: prompt hay dùng thường dài và dễ gõ thiếu ý nếu nhớ theo trí nhớ; mỗi người trong team lại viết một kiểu nên kết quả không đồng đều; và khi bạn cải tiến prompt, không có cách nào lan tới cả nhóm. Đóng thành file command giải quyết cả ba: prompt được lưu một chỗ, ai cũng gọi cùng một lệnh, và sửa file là mọi người cập nhật theo. Nói cách khác, custom command biến "bí kíp cá nhân" thành "công cụ dùng chung" có thể version-control như code.
Tạo custom slash command đầu tiên (.claude/commands)
Làm một lệnh /review để Claude tự review thay đổi code. Ba bước, mỗi bước copy-paste được.
Bước 1 - Tạo thư mục lệnh ở gốc dự án:
mkdir -p .claude/commands
Trên Windows PowerShell không có mkdir -p, dùng:
New-Item -ItemType Directory -Force .claude/commands
Bước 2 - Tạo file review.md trong thư mục đó. Tên file (bỏ đuôi .md) chính là tên lệnh. Nội dung file là prompt:
Bạn là reviewer khó tính. Hãy review thay đổi code hiện tại.
Tập trung vào:
- Bug logic và edge case chưa xử lý
- Lỗ hổng bảo mật (input chưa validate, secret lộ ra)
- Đặt tên, độ rõ ràng, code trùng lặp
Với mỗi vấn đề: nêu file + dòng, mức độ nghiêm trọng,
và cách sửa cụ thể. Đừng khen chung chung.
Bước 3 - Gõ lệnh trong phiên Claude Code:
/review
Claude nạp nội dung file làm prompt và chạy ngay. Xong. Bạn vừa tạo lệnh tùy chỉnh đầu tiên mà không cần một dòng code nào.
Mẹo: nếu vừa tạo file mà menu / chưa thấy lệnh, xem mục "Lỗi thường gặp" cuối bài - thường chỉ cần đúng thư mục hoặc khởi động lại phiên.
Truyền tham số cho command ($ARGUMENTS, $1, tham số đặt tên)
Một lệnh cứng nhắc thì tái sử dụng kém. Sức mạnh thật đến từ tham số - text bạn gõ sau tên lệnh sẽ được chèn vào prompt.
Gộp toàn bộ - $ARGUMENTS. Biến này nhận tất cả text sau tên lệnh. Tạo .claude/commands/fix-issue.md:
Sửa GitHub issue #$ARGUMENTS. Đọc mô tả issue,
tìm nguyên nhân trong code, viết fix và test đi kèm.
Gõ /fix-issue 123 thì $ARGUMENTS thành 123. Gõ /fix-issue 123 ưu tiên bảo mật thì $ARGUMENTS thành cả cụm 123 ưu tiên bảo mật.
Tham số vị trí - $1, $2… Khi cần tách riêng từng đối số, dùng biến vị trí. Ví dụ .claude/commands/rename.md:
Đổi tên biến `$1` thành `$2` trong toàn bộ file đang mở,
giữ nguyên logic và cập nhật mọi tham chiếu.
Gõ /rename oldName newName → $1 là oldName, $2 là newName. Với đối số nhiều từ, bọc trong dấu ngoặc kép: /rename "user id" "customer id".
Tham số đặt tên - frontmatter arguments. Nếu muốn tên rõ nghĩa thay vì $1/$2, khai báo trong frontmatter (xem mục kế tiếp) rồi tham chiếu bằng tên. Ví dụ khai arguments: [from, to] thì dùng $from, $to - map theo thứ tự đối số.
Bảng nhanh các biến thay thế:
| Biến | Ý nghĩa | Ví dụ gõ → giá trị |
|---|---|---|
$ARGUMENTS | Toàn bộ text sau tên lệnh | /fix-issue 123 gấp → 123 gấp |
$1, $2… | Đối số theo vị trí (tách theo khoảng trắng) | /rename a b → $1=a, $2=b |
"nhiều từ" | Bọc ngoặc kép để giữ đối số nhiều từ | /rename "old id" new → $1=old id |
$from (đặt tên) | Map từ frontmatter arguments: [from, to] | /rename a b → $from=a |
Khi nào dùng cái nào? Quy tắc đơn giản: nếu lệnh chỉ nhận "một khối text tự do" (mô tả issue, câu hỏi, đoạn cần giải thích) thì $ARGUMENTS là đủ và linh hoạt nhất. Nếu lệnh cần đúng số đối số theo thứ tự cố định (đổi tên: từ gì → thành gì) thì biến vị trí $1/$2 rõ ràng hơn. Tham số đặt tên chỉ đáng dùng khi lệnh có nhiều đối số dễ lẫn, lúc đó $from/$to đọc dễ hơn $1/$2.
Chi tiết biến $ARGUMENTS và tham số vị trí theo tài liệu Claude Code (09/08/2026). Muốn xem nhanh mọi cú pháp lệnh, mình để dành trong cheat sheet Claude Code.
Frontmatter: cấu hình command bằng YAML
Đầu file lệnh, bạn có thể thêm khối frontmatter YAML (nằm giữa hai dòng ---) để cấu hình hành vi. Đây chính là phần mà nhiều hướng dẫn tiếng Việt bỏ sót hoàn toàn, dù nó quyết định lệnh an toàn và tiện đến đâu.
| Field | Công dụng |
|---|---|
description | Mô tả ngắn hiện trong menu / (khuyến nghị luôn có) |
argument-hint | Gợi ý đối số hiện cạnh tên lệnh, ví dụ <issue-number> |
allowed-tools | Giới hạn tool lệnh được dùng, ví dụ chỉ Bash(git *) |
disable-model-invocation | Chặn Claude tự gọi lệnh này; chỉ chạy khi bạn gõ tay |
model | Ép lệnh chạy bằng model chỉ định |
arguments | Khai báo tham số đặt tên (xem mục trên) |
Tất cả đều optional; thực tế chỉ description là nên có luôn. Ví dụ file .claude/commands/commit.md chỉ cho lệnh đụng vào git, không cho tự ý chạy bừa:
---
description: Tạo conventional commit từ thay đổi đang staged
argument-hint: [scope tùy chọn]
allowed-tools: Bash(git add:*), Bash(git commit:*), Bash(git diff:*)
---
Xem thay đổi đang staged, viết một conventional commit
gọn và chính xác (feat/fix/docs/refactor...).
Nếu chưa có gì staged, nhắc mình `git add` trước.
Với allowed-tools đặt đúng, lệnh chỉ chạy được vài lệnh git định trước - an toàn hơn nhiều so với để Claude tùy nghi. Đây là thói quen nên có với mọi lệnh có đụng tới shell.
Chèn dữ liệu động với !`bash` (và tham chiếu file)
Command sẽ mạnh hơn hẳn khi tự lấy được ngữ cảnh hiện tại thay vì bắt bạn dán vào. Claude Code cho phép nhúng output của lệnh bash ngay trong prompt bằng cú pháp !`<command>`.
Điểm mấu chốt cần hiểu: lệnh trong !`...` chạy TRƯỚC khi Claude đọc prompt, và output của nó được ghép thẳng vào nội dung. Đây không phải Claude tự quyết định chạy lệnh - nó đã chạy xong rồi. Ví dụ một lệnh /review tự lấy diff hiện tại:
Review đoạn diff sau và chỉ ra bug + rủi ro bảo mật:
!`git diff HEAD`
Khi gõ /review, Claude Code chạy git diff HEAD, lấy kết quả, dán vào chỗ đó rồi mới đưa cả prompt cho Claude. Bạn không phải copy diff thủ công lần nào nữa.
Với lệnh bash nhiều dòng, dùng khối fenced mở đầu bằng !:
```!
git status --short
git log --oneline -5
```
Lưu ý: để !`...` ở đầu dòng hoặc sau khoảng trắng. Muốn viết dấu $ theo nghĩa đen (ví dụ giá tiền \$1.00 trong văn bản) thì escape bằng dấu \ để nó không bị hiểu là tham số.
Chia sẻ command: Project vs Personal + thư mục con
Lệnh tùy chỉnh lưu ở hai nơi, khác nhau về phạm vi:
- Project -
.claude/commands/ở gốc repo. Commit vào git thì cả team dùng chung. Hợp cho lệnh gắn với dự án:/deploy,/test, quy ước commit của team. - Personal -
~/.claude/commands/ở home directory. Chỉ máy bạn, nhưng dùng được ở mọi project. Hợp cho thói quen cá nhân:/explain,/tldr.
Khi trùng tên, lệnh cấp project thường được ưu tiên vì gần ngữ cảnh dự án hơn.
Thư mục con để nhóm lệnh (namespacing). Khi bộ lệnh nhiều lên, tạo thư mục con để gom nhóm. Ví dụ .claude/commands/git/commit.md gợi ý lệnh theo nhóm git, giúp menu / gọn gàng và dễ tìm.
Cơ chế "cấu hình theo repo, commit chia sẻ team" này giống hệt tinh thần của file CLAUDE.md. Nếu chưa quen, đọc thêm cách viết file CLAUDE.md cho repo để hai thứ bổ trợ nhau: CLAUDE.md nêu quy ước chung, còn .claude/commands/ đóng gói các thao tác lặp.
5 command mẫu copy-paste (chạy được ngay)
Đây là bộ lệnh mình dùng thật hằng ngày. Copy vào .claude/commands/, đổi cho hợp stack của bạn.
1. /review - review diff hiện tại (review.md):
---
description: Review thay đổi đang có, tìm bug và rủi ro bảo mật
---
Review diff sau, ưu tiên bug logic và lỗ hổng bảo mật:
!`git diff HEAD`
Với mỗi vấn đề: nêu file:dòng, mức độ, cách sửa cụ thể.
2. /commit - conventional commit (commit.md):
---
description: Viết conventional commit từ thay đổi staged
allowed-tools: Bash(git add:*), Bash(git commit:*), Bash(git diff:*)
---
Xem `git diff --staged`, viết một conventional commit
chính xác. Không thêm reference AI vào message.
3. /test - chạy test và sửa lỗi (test.md):
---
description: Chạy test suite và sửa test fail
argument-hint: [đường dẫn file test tùy chọn]
---
Chạy test cho $ARGUMENTS (không có thì chạy toàn bộ).
Nếu có test fail: đọc lỗi, tìm nguyên nhân, sửa code
hoặc test cho đúng, rồi chạy lại tới khi xanh.
4. /docs - viết docstring (docs.md):
---
description: Viết docstring cho code đang mở
---
Viết docstring cho các hàm/class trong file đang mở.
Theo convention của ngôn ngữ, nêu tham số, giá trị trả về,
và lỗi có thể ném. Ngắn gọn, không lặp lại tên hàm.
5. /fix-issue - sửa issue theo số (fix-issue.md):
---
description: Sửa GitHub issue theo số
argument-hint: <issue-number>
---
Sửa issue #$ARGUMENTS: đọc mô tả, tìm nguyên nhân,
viết fix kèm test, giải thích ngắn cách sửa.
[Mới 2026] Custom command giờ hợp nhất với Skills
Đây là thay đổi lớn mà hầu hết hướng dẫn tiếng Việt hiện tại chưa cập nhật. Theo tài liệu chính thức Claude Code về Skills (truy cập 09/08/2026), custom command đã được hợp nhất vào Skills.
Cụ thể: một file .claude/commands/deploy.md và một skill .claude/skills/deploy/SKILL.md cùng tạo ra lệnh /deploy, dùng chung cơ chế frontmatter. Điều quan trọng cho bạn: các file .claude/commands/*.md cũ vẫn chạy bình thường - không có gì phải vội chuyển đổi.
Vậy khi nào nên nâng lên Skill? Skill khác command ở hai điểm: (1) là một thư mục nên chứa được file phụ (script, template, tài liệu tham chiếu) bên cạnh prompt; (2) Claude có thể tự động nạp skill khi thấy liên quan tới việc đang làm, không cần bạn gõ lệnh. Nói ngắn: command hợp cho thao tác đơn, gọi tay; skill hợp cho năng lực phức tạp, nhiều file, muốn tự kích hoạt.
Muốn hiểu sâu, đọc Skills trong Claude Code là gì rồi tới cách tạo custom skill. Nếu vẫn rối giữa các khái niệm, bài phân biệt skills, subagents, hooks, MCP gỡ giúp bạn.
Lỗi thường gặp & mẹo
- Lệnh không hiện trong menu
/. Kiểm tra đúng thư mục.claude/commands/(số nhiều, có dấu chấm đầu) và file có đuôi.md. Khi mới tạo thư mục con lần đầu, khởi động lại phiên Claude Code để nó quét lại. - Tham số không expand. Nếu prompt có
$2mà bạn chỉ truyền một đối số,$2giữ nguyên dạng chữ. Dùng$ARGUMENTSkhi số đối số không cố định. - Dấu
$bị hiểu nhầm là biến. Viết\$1.00(có\) khi muốn ký tự đô-la trong văn bản thường. - Khi nào KHÔNG nên tạo command. Nếu việc chỉ làm một lần, hoặc mỗi lần một khác, gõ thẳng prompt còn nhanh hơn. Command chỉ đáng khi thao tác lặp lại và ổn định. Đừng đóng gói mọi thứ thành lệnh - bộ lệnh phình to mà ít dùng chỉ làm menu
/rối thêm.
Không muốn tự viết? Dùng bộ command dựng sẵn
Tự viết command là cách tốt nhất để hiểu cơ chế và nắm quyền kiểm soát - mình khuyên ai cũng nên làm ít nhất vài lệnh đầu tiên bằng tay. Nhưng nếu bạn muốn có ngay một bộ lệnh và skill đã được thiết kế, kiểm thử sẵn cho các workflow thường gặp, có thể tham khảo bộ command và skill dựng sẵn của AgentKit: theo trang chủ, bộ này gồm 108+ skills và 45 AI agents cho Claude Code, chia thành Engineer Kit và Marketing Kit. Bạn vẫn tùy biến được như file .claude/commands/ bình thường, chỉ là không phải bắt đầu từ con số 0. Muốn xem trực tiếp, dùng thử AgentKit (giảm 20% qua link) - trang có ghi money-back guarantee (không nêu điều kiện cụ thể) và cập nhật trọn đời cho kit.
Câu hỏi thường gặp (FAQ)
Custom slash command lưu ở đâu?
Ở .claude/commands/ trong gốc dự án (dùng chung cho team khi commit vào git), hoặc ~/.claude/commands/ ở home directory (chỉ máy bạn, dùng được mọi project). Tên file bỏ đuôi .md chính là tên lệnh.
Truyền nhiều tham số cho command thế nào?
Dùng $ARGUMENTS để lấy gộp toàn bộ text sau tên lệnh, hoặc $1, $2… cho từng đối số theo vị trí. Đối số nhiều từ thì bọc trong dấu ngoặc kép: /rename "old id" new.
Custom command khác lệnh built-in ra sao?
Lệnh built-in (/help, /clear, /compact…) do Anthropic cung cấp sẵn. Custom command do bạn tự tạo bằng file Markdown, đóng gói một prompt của riêng bạn hoặc team. Cả hai xuất hiện chung trong menu /.
Có chạy được lệnh terminal bên trong command không?
Có. Dùng cú pháp !`<lệnh>` - lệnh bash chạy trước và output được ghép thẳng vào prompt trước khi Claude đọc. Ví dụ !`git diff HEAD` giúp command tự lấy diff hiện tại.
Command có commit chia sẻ cho cả team được không?
Được. Đặt lệnh trong .claude/commands/ ở gốc repo rồi commit vào git. Mọi thành viên clone repo về sẽ có cùng bộ lệnh, đồng bộ workflow toàn team.
Custom command khác Skills thế nào?
Từ 2026, hai thứ đã hợp nhất và các file command cũ vẫn chạy. Khác biệt: command là một file prompt, gọi bằng tay; skill là một thư mục chứa được file phụ và có thể tự động nạp khi Claude thấy liên quan. Command hợp thao tác đơn, skill hợp năng lực phức tạp.
Kết luận + bước tiếp theo
Custom slash command là cách rẻ nhất để biến những prompt lặp đi lặp lại thành công cụ dùng chung: một file Markdown, một cú gõ, và cả team hưởng lợi. Bắt đầu với /review và /commit, thêm frontmatter khi cần an toàn, rồi nâng dần lên Skill khi workflow phức tạp hơn. Đọc tiếp Skills trong Claude Code là gì và cách tạo custom skill, hoặc mở nhanh cheat sheet Claude Code để tra cú pháp bất cứ lúc nào.
Muốn Claude Code mạnh hơn ngay? Nếu không có thời gian tự dựng từng lệnh, một bộ command và skill làm sẵn giúp bạn bỏ qua phần setup và bắt tay vào việc luôn - vẫn tùy biến được sau này.