Bài 6 · Vận dụng · 18 phút· Cập nhật 11/06/2026
Slash command tùy chỉnh
Biên soạn bởi Nguyễn Anh Tuấn
Tự tạo lệnh tắt trong .claude/commands: frontmatter, tham số $ARGUMENTS/$1, namespacing; và các lệnh có sẵn.
Bạn có để ý mình gõ đi gõ lại vài câu giống nhau? “Viết commit message theo quy ước”, “Review đoạn này về bảo mật”, “Giải thích hàm này bằng tiếng Việt”… Slash command tùy chỉnh đóng gói một prompt hay dùng thành một lệnh /tên - gõ một lần là xong.
- ▸Lệnh tùy chỉnh = một file markdown chứa sẵn prompt; gõ /tên để chạy lại nhanh.
- ▸Bên cạnh các lệnh CÓ SẴN (/help, /clear…), bạn tạo lệnh CỦA RIÊNG mình.
- ▸Tên file = tên lệnh: commit.md → /commit.
Lệnh nay là “Skill” - nói thật
Tạo file .claude/commands/<tên>.md trong dự án; nội dung file chính là prompt sẽ chạy khi bạn gõ lệnh:
.claude/commands/review.md
Review đoạn code thay đổi gần đây trong dự án.
Tập trung vào: lỗi tiềm ẩn, bảo mật, và code khó đọc.
Trả lời ngắn gọn bằng tiếng Việt, nêu file + dòng cụ thể. Giờ gõ /review trong phiên là Claude chạy đúng prompt trên. Đặt ở .claude/commands/ (dự án - commit để cả nhóm dùng) hoặc ~/.claude/commands/ (cá nhân - mọi dự án của bạn).
- ▸Một file .md = một lệnh; nội dung file là prompt sẽ chạy.
- ▸Cấp dự án (.claude/commands/) chia sẻ qua git; cấp cá nhân (~/.claude/commands/) theo bạn.
- ▸Không cần khai báo gì thêm - có file là có lệnh.
Lệnh sẽ mạnh hơn nhiều khi nhận tham số. Dùng $ARGUMENTS - nó được thay bằng những gì bạn gõ sau tên lệnh:
.claude/commands/fix.md
Sửa lỗi sau, giải thích nguyên nhân ngắn gọn rồi vá:
$ARGUMENTS Gõ /fix nút đăng nhập bị lệch trên mobile → $ARGUMENTS thành “nút đăng nhập bị lệch trên mobile”.
- ▸$ARGUMENTS = toàn bộ phần bạn gõ sau tên lệnh.
- ▸Cần tách riêng: $0 là tham số đầu, $1 là tham số thứ hai (đếm từ 0).
- ▸frontmatter argument-hint: [issue-number] giúp hiện gợi ý khi gõ lệnh.
Tham số có tên cho rõ ràng
Một lệnh thật sự lợi hại khi nó tự kéo dữ liệu mới nhất vào. Dòng dạng !`lệnh` được Claude Code chạy trước và thay bằng kết quả; @đường-dẫn chèn nội dung một file:
.claude/commands/commit.md
Các thay đổi đã stage:
!`git diff --staged`
Viết MỘT commit message theo Conventional Commits (vd "feat(...): ..."),
ngắn gọn, mô tả đúng thay đổi ở trên. Thử ngay: chọn một ví dụ rồi sửa ô “Bạn gõ” để thấy prompt Claude thực sự nhận đổi theo - kể cả lệnh /commit tự nhúng diff:
Một lệnh tắt là một template prompt. Chọn ví dụ, rồi sửa ô “Bạn gõ” để xem prompt Claude thực sự nhận thay đổi ra sao:
.claude/skills/<tên>/SKILL.md
--- argument-hint: [issue] ---
→ Prompt Claude nhận
Sửa GitHub issue 123 theo đúng quy ước code của dự án. Đọc mô tả issue, viết test trước, rồi mới sửa.
- ▸!`lệnh` chạy bash và nhúng kết quả vào prompt trước khi Claude đọc.
- ▸@đường-dẫn nhúng nội dung file (vd @docs/quy-uoc.md).
- ▸Nhờ vậy lệnh luôn làm việc với trạng thái mới nhất của dự án.
Bên cạnh lệnh của bạn, Claude Code có nhiều lệnh dựng sẵn rất hữu ích - gõ /help để xem tất cả:
| /init | Sinh CLAUDE.md ban đầu cho dự án. |
| /review | Review thay đổi/PR. |
| /agents | Tạo & quản lý subagent (bài sau). |
| /mcp | Xem trạng thái server MCP (bài sau). |
| /compact · /clear · /memory · /permissions | Đã gặp ở các bài trước. |
Thêm frontmatter (tùy chọn) để lệnh “xịn” hơn:
.claude/commands/fix.md - có frontmatter
---
description: Sửa một lỗi được mô tả, giải thích rồi vá
argument-hint: [mô tả lỗi]
allowed-tools: Read, Edit, Bash
---
Sửa lỗi sau, giải thích nguyên nhân ngắn gọn rồi vá:
$ARGUMENTS Tiếp theo: Skills
Câu hỏi thường gặp
Giống nhau ở cách gõ (đều bắt đầu bằng /). Khác ở chỗ: lệnh có sẵn do Claude Code cung cấp; lệnh TÙY CHỈNH do BẠN tạo - mỗi lệnh là một file markdown chứa sẵn một prompt. Gõ /tên-lệnh là Claude chạy đúng prompt đó, khỏi gõ lại cả đoạn.
Cấp DỰ ÁN: .claude/commands/<tên>.md (commit vào git để cả nhóm dùng). Cấp CÁ NHÂN: ~/.claude/commands/<tên>.md (mọi dự án của bạn). Tên file chính là tên lệnh: commit.md → /commit.
Đúng - Claude Code đã HỢP NHẤT chúng. Một file .claude/commands/deploy.md và một skill .claude/skills/deploy/SKILL.md đều tạo ra /deploy và chạy như nhau. File .claude/commands/ cũ vẫn dùng tốt. Bài này dạy dạng ĐƠN GIẢN (một file lệnh); bài sau (Skills) dạy dạng ĐẦY ĐỦ (thư mục kèm file phụ, tự gọi khi cần…).
Dùng $ARGUMENTS trong nội dung lệnh - nó được thay bằng tất cả những gì bạn gõ sau tên lệnh. Vd lệnh /fix với nội dung “Sửa lỗi: $ARGUMENTS”, gõ /fix nút đăng nhập bị lệch → prompt thành “Sửa lỗi: nút đăng nhập bị lệch”. Cần tách riêng từng tham số thì dùng $0, $1 (đếm từ 0) hoặc khai báo tham số có tên.
Tick những điều em tự tin làm được. Càng lên cao, em càng hiểu sâu.
Trả lời vài câu để chắc rằng em đã nắm bài.
Tên file lệnh tùy chỉnh quan hệ thế nào với tên lệnh?
- 1
Lệnh đầu tiên
Tạo
.claude/commands/giai-thich.mdvới nội dung: “Giải thích đoạn code sau bằng tiếng Việt, ngắn gọn cho người mới:$ARGUMENTS”. Dùng thử/giai-thich.Hoàn thành khi: Gõ
/giai-thichkèm một đoạn code (hoặc tên hàm) → Claude giải thích đúng theo prompt bạn đã lưu. - 2
Lệnh commit động
Tạo một lệnh
/commitchèn !git diff --stagedrồi yêu cầu viết commit message theo quy ước. Stage vài thay đổi và chạy thử.Hoàn thành khi: Lệnh tự nhúng diff đã stage và đề xuất commit message - bạn không phải dán diff thủ công.
- 3
Dự án hay cá nhân?
Bằng lời: lệnh
/committheo quy ước CỦA NHÓM nên đặt ở đâu? Còn lệnh/giai-thichtiện ích RIÊNG bạn?Hoàn thành khi: Quy ước nhóm →
.claude/commands/(commit vào git). Tiện ích riêng →~/.claude/commands/(mọi dự án của bạn). - 4
Thêm gợi ý tham số
Thêm frontmatter cho một lệnh:
descriptionvàargument-hint(vd[tên-file]). Gõ/và xem gợi ý hiện ra.Hoàn thành khi: Khi gõ
/, lệnh của bạn hiện kèm mô tả và gợi ý tham số - dễ dùng hơn cho cả nhóm. - 5
Săn lệnh có sẵn
Gõ
/helpvà lướt danh sách. Tìm 3 lệnh có sẵn bạn thấy hữu ích và ghi lại chúng làm gì.Hoàn thành khi: Một danh sách 3 lệnh (vd
/init,/review,/compact) kèm công dụng - bạn biết khi nào dùng chúng.