Định nghĩa slash command tái sử dụng dưới dạng file Markdown, chia sẻ cho cả team qua git, và bao phủ các tác vụ thường xuyên như code review, tạo test và mô tả PR.
Claude Code có sẵn một số slash command tích hợp — /help, /clear, /compact. Nhưng những lệnh thực sự tăng tốc workflow của bạn là những cái tự viết.
Bài này hướng dẫn cách thiết kế hệ thống slash command có thể tái sử dụng để cả team dùng chung một thư viện prompt, thay vì mỗi lần lại phải mô tả công việc từ đầu.
Trong Claude Code, slash command tùy chỉnh chỉ là một file Markdown. Đặt nó vào đúng thư mục, Claude Code tự nhận khi khởi động, gõ /tên-file là kích hoạt.
Nội dung file chính là prompt gửi cho Claude. Chỉ vậy thôi.
Không có cú pháp đặc biệt, không có định dạng cấu hình — một file .md là một lệnh.
Hai vị trí, hai mục đích:
| Vị trí | Đường dẫn | Phạm vi |
|---|---|---|
| Dự án | .claude/commands/ |
Chỉ dự án hiện tại, có thể commit vào git |
| Người dùng | ~/.claude/commands/ |
Tất cả dự án, cá nhân |
Cấp dự án là cốt lõi của việc chia sẻ trong team. Commit .claude/commands/ vào git, mọi người clone repo đều tự động có bộ lệnh đầy đủ.
Cấp người dùng phù hợp cho thói quen cá nhân — kiểu kiểm tra code style bạn thích, hoặc tích hợp công cụ chỉ mình bạn dùng.
Từ thư mục gốc dự án:
mkdir -p .claude/commands
Tạo .claude/commands/review.md:
Xem xét chất lượng code của các thay đổi hiện tại. Tập trung vào:
1. Lỗi logic và các trường hợp biên
2. Tên biến/hàm có rõ ràng không
3. Code trùng lặp đáng được trích xuất
4. Vấn đề bảo mật (SQL injection, XSS, lộ thông tin nhạy cảm)
Đưa ra gợi ý cụ thể có thể thực hiện ngay — không phải lời khuyên chung chung.
Khởi động lại Claude Code và gõ /review để kích hoạt.
Lệnh có nội dung cố định giới hạn cách dùng. $ARGUMENTS làm lệnh linh hoạt hơn — nội dung người dùng gõ sau /lệnh sẽ được chèn vào prompt.
Ví dụ .claude/commands/test.md:
Viết test cho phần sau: $ARGUMENTS
Yêu cầu:
- Bao gồm đường dẫn thông thường và các trường hợp biên
- Tên test phải tự giải thích được
- Dùng dữ liệu thật thay vì mock khi có thể
Cách dùng:
/test phương thức login của class UserAuthentication
Claude nhận được:
Viết test cho phần sau: phương thức login của class UserAuthentication
Yêu cầu:
...
$ARGUMENTS có thể xuất hiện ở bất kỳ đâu trong prompt và dùng nhiều lần.
Một lệnh, một trách nhiệm
Đừng viết lệnh "đa năng" nhồi tất cả vào. /review chỉ để review code, /test chỉ để viết test, /pr chỉ để tạo mô tả PR. Lệnh có phạm vi hẹp dễ nhớ hơn và dễ tái sử dụng hơn.
Viết prompt cụ thể, không trừu tượng
Tệ:
Giúp tôi tối ưu code này
Tốt:
```
Tối ưu hóa code này về hiệu năng. Ưu tiên:
1. Giảm query database không cần thiết (vấn đề N+1)
2. Tránh tính toán lặp lại trong vòng lặp
3. Thay tìm kiếm tuyến tính bằng cấu trúc dữ liệu hiệu quả hơn
Giữ nguyên interface — chỉ thay đổi implementation bên trong.
```
Ràng buộc cụ thể dẫn đến kết quả đúng mục tiêu.
Thêm frontmatter vào lệnh
Field description hiển thị trong danh sách lệnh của Claude Code, giúp thành viên team nhanh chóng hiểu mục đích của từng lệnh:
---
description: Xem xét các thay đổi hiện tại để phản hồi chất lượng code
---
Xem xét chất lượng code của các thay đổi hiện tại...
Với dự án Rails, những lệnh này bao phủ các tác vụ phát triển hàng ngày phổ biến nhất:
.claude/commands/review.md — Code review
Xem xét các thay đổi trong git diff. Kiểm tra:
- Lỗi logic và xử lý trường hợp biên
- Vấn đề bảo mật: SQL injection, kiểm tra phân quyền
- Tên rõ ràng dễ đọc
- Logic trùng lặp đáng trích xuất
Với mỗi vấn đề, chỉ ra vị trí cụ thể và gợi ý sửa cụ thể.
```
.claude/commands/test.md — Tạo test
Viết test cho code này: $ARGUMENTS
Dùng RSpec. Bao phủ: đường dẫn thông thường, trường hợp biên, điều kiện lỗi.
Định dạng đặt tên: describe ... context ... it ...
Mặc định dùng object thật; chỉ mock dependency bên ngoài khi cần thiết.
```
.claude/commands/pr.md — Mô tả PR
Dựa trên git diff và log commit, tạo mô tả PR.
Định dạng:
(2-3 câu tóm tắt những gì đã làm)
(Bối cảnh và động lực)
(Cách xác minh thay đổi này)
Ngắn gọn, viết cho người review code.
```
.claude/commands/explain.md — Giải thích code
Giải thích $ARGUMENTS làm gì:
- Trách nhiệm tổng thể là gì?
- Logic chính hoạt động thế nào?
- Các trường hợp biên nào đáng lưu ý?
Viết cho developer mới tiếp cận phần code này. Tập trung vào tại sao, không chỉ làm gì.
```
Một số thói quen mang tính cá nhân, không nên áp đặt cho cả team. Đặt chúng vào ~/.claude/commands/:
~/.claude/commands/standup.md — Chuẩn bị standup hàng ngày
```markdown
Dựa trên git log hôm nay và TODO chưa hoàn thành, chuẩn bị tóm tắt standup:
- Những gì đã hoàn thành hôm qua
- Kế hoạch hôm nay
- Có blocker nào không
Tối đa 5 câu.
```
~/.claude/commands/refactor.md — Gợi ý refactor
```markdown
Phân tích $ARGUMENTS và gợi ý cải tiến qua refactoring.
Chỉ đề xuất thay đổi thực sự có giá trị — đừng refactor vì refactor.
Với mỗi gợi ý, giải thích: giải quyết vấn đề gì, khối lượng công việc thế nào, rủi ro ra sao.
```
Giá trị thực sự của lệnh tùy chỉnh không phải năng suất cá nhân — mà là tạo ra ngôn ngữ chung cho team.
Commit .claude/commands/ vào repo và ghi lại các lệnh có sẵn trong README hoặc CLAUDE.md. Thành viên mới clone repo là có ngay thư viện prompt mà team đã tích lũy, không cần tự mình khám phá.
Khi dự án phát triển, các lệnh cũng phát triển. Nếu một prompt không hiệu quả, sửa một dòng và push — cả team nhận cập nhật. Đây là cách chi phí thấp nhất để triển khai kỹ thuật prompt ở cấp team.
.claude/
├── commands/
│ ├── review.md # Code review
│ ├── test.md # Tạo test
│ ├── pr.md # Mô tả PR
│ └── explain.md # Giải thích code
└── settings.json