Techsy
Liên hệ
Bắt đầu
Quay lại Blog
web-development

Cách thêm flag vào slash command của Claude Code: 4 pattern thực sự hiệu quả

Viết bởi Techsy Editorial Team
May 3, 2026
22 phút đọc
Mục lục
Cách thêm flag vào slash command của Claude Code: 4 pattern thực sự hiệu quả

Cách Thêm Cờ (Flag) Vào Lệnh Slash Của Claude Code: 4 Mẫu Thực Sự Hiệu Quả

Claude Code thực chất không phân tích cú pháp --flags theo cách bạn kỳ vọng đối với các lệnh slash tùy chỉnh, nhưng có bốn mẫu giúp bạn đạt được cùng một trải nghiệm người dùng, và ba trong số đó còn gọn gàng hơn cả việc phân tích cú pháp CLI truyền thống. Dưới đây là cách thêm cờ vào lệnh slash của Claude Code một cách đúng đắn, kèm theo các tệp .md hoạt động được mà bạn có thể sao chép ngay hôm nay.

Câu Trả Lời Nhanh:

  • Claude Code không phân tích cú pháp các cờ CLI (--json, --verbose) cho các lệnh tùy chỉnh, vì bản thân nó không có bộ phân tích cờ.
  • Để có trải nghiệm kiểu CLI, hãy viết các cờ vào $ARGUMENTS và để LLM diễn giải chúng như ngôn ngữ tự nhiên.
  • Với các đối số có kiểu, hãy dùng $1/$2 theo vị trí hoặc các đối số có tên được khai báo trong trường frontmatter arguments:.
  • Ghi tài liệu cho các cờ dự kiến trong argument-hint: để tính năng tự động hoàn thành / hiển thị chúng cho người dùng.

Các đối số của Slash Command trong Claude Code thực sự hoạt động như thế nào?

Trước khi gửi lệnh của bạn đến LLM, cơ chế use của Claude Code sẽ thay thế ba loại token: $ARGUMENTS (toàn bộ chuỗi đứng sau tên lệnh), các token theo vị trí $0/$1/$2 (các phân đoạn được trích dẫn theo kiểu shell), và $variableName có tên được khai báo trong frontmatter. Không có trình phân tích cú pháp cờ (flag) CLI tích hợp sẵn nào, nên --dry-run sẽ nằm nguyên trong $ARGUMENTS dưới dạng văn bản thuần túy.

Đây là phần khiến mọi người bối rối nhất. Khi bạn gõ /deploy --staging --dry-run, Claude Code không chạy argparse trên --staging --dry-run. Cơ chế use sẽ dán toàn bộ chuỗi đó vào bất kỳ nơi nào trong tệp .md của bạn tham chiếu đến $ARGUMENTS, rồi gửi prompt đã được kết xuất đến mô hình. LLM nhìn thấy --staging --dry-run như tiếng Anh thông thường và tự quyết định phải làm gì.

Đó không phải lỗi, mà là thiết kế có chủ đích. Cơ chế use là một lớp thay thế, không phải trình phân tích cú pháp. Các lệnh tích hợp sẵn như /clear và /help (xem tài liệu tham khảo CLI chính thức) có hỗ trợ cờ, nhưng các lệnh tùy chỉnh mà bạn tự tạo lại tuân theo những quy tắc khác.

Cơ chế use của Claude Code thay thế các token, rồi chuyển prompt đã kết xuất cho LLM. Không hề có trình phân tích cú pháp cờ nào.

Trong chính quá trình làm việc với Claude Code của chúng tôi, sự nhầm lẫn phổ biến nhất chính xác là điều này: các lập trình viên dành cả giờ để tìm hiểu tại sao --verbose "không được nhận diện" trước khi nhận ra rằng LLM mới chính là trình phân tích cú pháp. Tính đến Claude Code v2.1.126 (tháng 5 năm 2026), hành vi này đã được ghi chép trong tài liệu slash-commands chính thức và sẽ không sớm thay đổi. Slash command là một primitive anh em với Claude Code hooks, cả hai đều mở rộng cơ chế use, nhưng command được kích hoạt bởi đầu vào của người dùng trong khi hook được kích hoạt bởi các sự kiện công cụ.

Dưới đây là lệnh tùy chỉnh nhỏ nhất có thể chứng minh mô hình thay thế này:

markdown
---
description: Echo whatever the user types after the command
argument-hint: [anything]
---

The user passed these arguments: $ARGUMENTS

Repeat them back verbatim, then describe what the user probably meant.

Lưu tệp đó thành .claude/commands/echo-args.md, gõ /echo-args hello world --foo, và LLM sẽ nhìn thấy chuỗi nguyên văn hello world --foo được thay thế vào prompt. Đó là toàn bộ mô hình tư duy cần nắm. Để tìm hiểu sâu hơn về cách các tệp lệnh liên quan đến hệ thống skills rộng lớn hơn, hãy xem Hướng dẫn nhập môn Skills của chúng tôi.

Tạo Slash Command có tham số đầu tiên của bạn trong 5 phút

Tạo tệp .claude/commands/greet.md với ba dòng frontmatter và một dòng prompt tham chiếu đến $ARGUMENTS. Khởi động lại Claude Code, nhập /greet World, và xem World được thay thế vào prompt trước khi LLM nhìn thấy nó. Toàn bộ quy trình chỉ có vậy, năm bước, không cần công cụ build.

Dưới đây là công thức hoàn chỉnh từ đầu đến cuối:

  1. Tạo thư mục. Từ thư mục gốc của dự án, chạy mkdir -p .claude/commands. Thư mục .claude/ nằm cùng cấp với mã nguồn của bạn; các lệnh bên trong nó sẽ được tự động phát hiện khi Claude Code bắt đầu một phiên làm việc.
  2. Viết tệp lệnh. Lưu đoạn mã dưới đây thành .claude/commands/greet.md.
  3. Tải lại phiên làm việc. Thoát và khởi chạy lại Claude Code (hoặc chạy /reload nếu phiên bản của bạn hỗ trợ). Các lệnh chỉ được đọc một lần khi bắt đầu phiên.
  4. Gọi lệnh. Nhập /greet World trong khung chat.
  5. Xác minh việc thay thế. Mở bản ghi cuộc hội thoại và xác nhận rằng LLM đã thấy World được nội suy vào phần nội dung prompt, chứ không phải token nguyên văn $ARGUMENTS.

Dưới đây là toàn bộ tệp:

markdown
---
description: Greet someone enthusiastically
argument-hint: <name>
---

You are a friendly assistant. Greet the person named "$ARGUMENTS" with one short, warm sentence. Then ask them what they're working on today.

Và tương tác trên terminal:

bash
> /greet World
Hey World, great to see you! What are you working on today?

Chỉ có vậy. Bây giờ bạn đã có một slash command có tham số. Trường argument-hint chính là thứ khiến menu tự động hoàn thành của / hiển thị <name> bên cạnh lệnh của bạn, một điểm nhấn UX nhỏ nhưng mang lại hiệu quả lớn.

Nếu $ARGUMENTS không được thay thế, thì 9 trên 10 lần là do bạn đã nhập $args hoặc $ARGS, token này phải là chữ in hoa nguyên văn.

Token này phân biệt hoa thường và phải chính xác tuyệt đối. $ARGUMENTS hoạt động. Còn $arguments, $args, $ARGS, ${ARGUMENTS} đều thất bại trong im lặng, chúng được gửi đến LLM dưới dạng văn bản nguyên văn và mô hình chỉ thấy một mớ hỗn độn. Hãy kiểm tra kỹ chính tả ba lần trước khi cho rằng có một lỗi nghiêm trọng hơn.

Các trường Frontmatter nào kiểm soát việc xử lý đối số?

Năm trường frontmatter định hình cách một lệnh slash xử lý đối số: argument-hint (những gì tính năng tự động hoàn thành hiển thị), allowed-tools (những gì lệnh có thể gọi), arguments (khai báo đối số có tên), model (biến thể Claude nào sẽ chạy lệnh), và disable-model-invocation (khóa lệnh để chỉ người dùng mới có thể gọi). Kết hợp lại, chúng bao quát hầu như mọi mẫu tham số hóa mà bạn sẽ cần.

Dưới đây là tài liệu tham khảo frontmatter đầy đủ cho các lệnh tùy chỉnh của Claude Code v2.1.x:

TrườngMục đíchVí dụBắt buộc?
description:Tóm tắt một dòng trong menu /Run staging deployKhuyến nghị
argument-hint:Gợi ý tự động hoàn thành hiển thị sau tên lệnh[--dry-run] [--region us]Khuyến nghị
allowed-tools:Danh sách trắng các công cụ mà lệnh có thể gọiBash(git:*) Read EditTùy chọn
arguments:Khai báo đối số có tên[issue, branch]Tùy chọn
model:Ghi đè mô hình cho lệnh nàyclaude-opus-4-7Tùy chọn
disable-model-invocation:Chặn agent gọi lệnh nàytrueTùy chọn
context: forkChạy trong ngữ cảnh biệt lậpforkTùy chọn

Có hai điểm đáng lưu ý mà bạn nên ghim ngay lên màn hình. Thứ nhất, allowed-tools được phân tách bằng dấu cách, không phải dấu phẩy. Nếu viết Bash(git:*), Read, Edit, toàn bộ danh sách trắng sẽ âm thầm không có hiệu lực, vì trình phân tích cú pháp coi cả chuỗi là một mục sai định dạng. Hãy dùng Bash(git:*) Read Edit. Chúng tôi đã phải trả giá để nhận ra điều này; để biết thêm các mẫu tương tự, hãy xem bài các thực hành tốt nhất cho CLAUDE.md của chúng tôi về các quy ước tệp cấu hình.

Thứ hai, trường model: ghi đè bất kỳ mô hình nào mà người dùng hiện đang chọn cho phiên làm việc. Điều này hữu ích khi một lệnh ít tốn tài nguyên tính toán và bạn muốn buộc nó chạy trên một biến thể nhỏ hơn, hãy xem hướng dẫn của chúng tôi về lựa chọn mô hình để chọn giữa Opus 4.7 và Sonnet cho các loại lệnh khác nhau.

Trường disable-model-invocation: true là lưới an toàn của bạn cho các lệnh có tính hủy hoại. Hãy đặt nó cho /deploy-prod hoặc /drop-database và các agent khác sẽ không thể gọi những lệnh đó thông qua lập trình, chỉ có con người gõ vào khung chat mới có thể kích hoạt chúng.

4 mẫu đối số nào bạn sẽ thực sự sử dụng?

Bốn mẫu bao phủ khoảng 95% các lệnh slash thực tế của Claude Code: (1) cờ boolean như /deploy --dry-run được LLM phân tích từ $ARGUMENTS, (2) cờ có giá trị như /test --filter auth được trích xuất từ $ARGUMENTS, (3) đối số vị trí bắt buộc + cờ tùy chọn như /fix-issue 123 --priority high kết hợp giữa $1 và $ARGUMENTS, và (4) đối số vị trí được định kiểu chặt chẽ như /migrate-component SearchBar React Vue sử dụng $0/$1/$2.

Hãy chọn mẫu phù hợp với hình dạng lệnh của bạn. Dưới đây là một tệp .md hoạt động được cho từng mẫu.

Bốn mẫu đối số cho lệnh slash của Claude Code: cờ boolean, cờ có giá trị, đối số vị trí cộng với cờ, và đối số vị trí nghiêm ngặt, mỗi mẫu kèm cú pháp ví dụ

Pattern 1: Cờ Boolean (--dry-run)

Khi bạn muốn có trải nghiệm dạng cờ CLI và cờ đó chỉ đơn thuần là bật/tắt, hãy để LLM tự nhận diện nó bên trong $ARGUMENTS. Không cần logic phân tích cú pháp, không cần xoay sở với thứ tự tham số, chỉ cần mô tả quy tắc đó trong prompt.

markdown
---
description: Deploy to staging or production
argument-hint: [--dry-run]
allowed-tools: Bash(git:*) Bash(npm:*) Read
---

Deploy the current branch to staging.

Arguments passed: $ARGUMENTS

If "$ARGUMENTS" contains "--dry-run", DO NOT actually deploy. Instead, print the deployment plan: which files would change, which env vars would be set, and which commands would run. Stop after printing the plan.

Otherwise, proceed with the real deployment using `git push staging main` and `npm run deploy:staging`.

Gõ /deploy --dry-run và LLM sẽ nhìn thấy cờ, in ra kế hoạch, rồi dừng lại. Gõ /deploy và nó sẽ triển khai. Người dùng không phải phân tích cú pháp gì cả, LLM đã làm toàn bộ công việc, và đó chính xác là thế mạnh của nó.

Mẫu 2: Cờ có giá trị (--filter <pattern>)

Cùng ý tưởng, nhưng giờ đây cờ mang theo một giá trị. LLM đọc --filter auth từ $ARGUMENTS và sử dụng phần chuỗi con đứng sau nó.

markdown
---
description: Run the test suite, optionally filtered
argument-hint: [--filter <pattern>]
allowed-tools: Bash(npm:*) Read
---

Run the project's test suite.

Arguments: $ARGUMENTS

If "$ARGUMENTS" contains "--filter <pattern>", run only tests matching <pattern>. Use `npm test -- --grep <pattern>` for the actual command.

If no `--filter` is present, run the full suite with `npm test`.

Report pass/fail counts at the end.

/test --filter auth chỉ chạy các bài kiểm thử auth. /test chạy tất cả. LLM trích xuất mẫu đứng sau --filter một cách đáng tin cậy vì Claude thực sự giỏi trong việc trích xuất loại văn bản có cấu trúc này, đáng tin cậy hơn nhiều so với mọi người thường nghĩ.

Mẫu 3: Đối số vị trí bắt buộc + Cờ tùy chọn

Đây là dạng lai mà chúng tôi sử dụng nhiều nhất trong thư viện lệnh của chính mình. $1 mang đối số bắt buộc, còn $ARGUMENTS mang toàn bộ nội dung (để LLM vẫn có thể nhận diện các cờ tùy chọn). Đây là sự kết hợp gọn gàng nhất khi có một đối số là không thể thiếu, còn phần còn lại là ngữ cảnh tự do.

markdown
---
description: Fix a GitHub issue
argument-hint: <issue-number> [--priority high|medium|low] [context...]
allowed-tools: Bash(gh:*) Bash(git:*) Read Edit
---

Fix GitHub issue #$1.

Full arguments: $ARGUMENTS

Steps:
1. Run `gh issue view $1` to load the issue body.
2. Read the codebase to locate the relevant file(s).
3. If "$ARGUMENTS" contains "--priority high", create a hotfix branch off main. Otherwise branch off develop.
4. Apply the fix, run tests, and open a PR linked to the issue.

Anything else in $ARGUMENTS after the issue number is freeform context — fold it into your understanding of the bug.

Gọi lệnh dưới dạng /fix-issue 1234 --priority high the login form blanks the email field after a failed attempt. $1 được phân giải thành 1234. $ARGUMENTS được phân giải thành toàn bộ chuỗi theo sau, và LLM sẽ vui vẻ phân tích chuỗi đó để lấy cả cờ ưu tiên lẫn phần mô tả tự do.

Chúng tôi sử dụng chính xác sự kết hợp $1 + $ARGUMENTS này trong lệnh /fix-issue của mình, $1 dành cho số thứ tự của issue, phần còn lại là ngữ cảnh tự do để LLM phân tích. Đây là mẫu có tỷ suất hoàn vốn (ROI) cao nhất trong suốt một năm sử dụng Claude Code hằng ngày của chúng tôi.

Pattern 4: Strict Positional (Typed)

Khi mọi đối số đều bắt buộc và thứ tự có ý nghĩa, hãy bỏ hoàn toàn $ARGUMENTS. Sử dụng $0/$1/$2 (hoặc đối số đặt tên qua trường frontmatter arguments:) để có các slot được định kiểu rõ ràng.

markdown
---
description: Migrate a component between frameworks
argument-hint: <component> <from-framework> <to-framework>
arguments: [component, fromFramework, toFramework]
allowed-tools: Read Edit Write
---

Migrate the component named "$component" from $fromFramework to $toFramework.

1. Read the existing component file (search for `$component.{jsx,tsx,vue,svelte}`).
2. Translate the component idioms from $fromFramework to $toFramework: lifecycle methods, state handling, prop syntax, event binding.
3. Write the new file in the matching extension for $toFramework.
4. Print a diff summary at the end.

If $fromFramework or $toFramework is unsupported, abort and tell the user which frameworks ARE supported (React, Vue, Svelte, Solid).

Gọi bằng /migrate-component SearchBar React Vue. Khai báo đối số đặt tên giúp autocomplete và nội dung prompt tự mô tả chính nó — bất kỳ ai đọc migrate-component.md đều có thể nhận ra ngay slot nào là slot nào. Pattern này phát huy hiệu quả với các lệnh có từ ba đối số bắt buộc trở lên. Bạn cũng có thể thấy phong cách này trong các thư viện cộng đồng như wshobson/commands trên GitHub.

Cờ boolean và cờ có giá trị hoạt động được vì LLM là một trình phân tích cú pháp linh hoạt. Strict positional hoạt động được vì không cần trí thông minh của LLM. Kết hợp cả hai chính là bí quyết.

Khi nào nên dùng $ARGUMENTS vs tham số vị trí vs tham số đặt tên?

Hãy dùng $ARGUMENTS khi các tham số mang kiểu cờ CLI và bạn muốn LLM phân tích cú pháp linh hoạt. Dùng tham số vị trí $1/$2 khi các tham số có kiểu dữ liệu, có thứ tự, và bạn muốn loại bỏ hoàn toàn sự mơ hồ cho LLM. Dùng tham số đặt tên arguments: khi có từ 3 tham số trở lên và sự rõ ràng trong phần tự động hoàn thành quan trọng hơn sự ngắn gọn. Dưới đây là ma trận quyết định:

Trường hợp sử dụngLựa chọn tốt nhấtCú phápƯu điểmNhược điểmVí dụ
Trải nghiệm kiểu cờ CLI với tham số tùy chọn$ARGUMENTS$ARGUMENTS trong nội dungLinh hoạt, mô phỏng trải nghiệm UnixPhân tích cú pháp ở phía LLM, không có kiểm tra hợp lệ/deploy --staging --dry-run
Tham số bắt buộc có kiểu dữ liệu, có thứ tựTham số vị trí $0/$1$0 $1 $2 trong nội dungKhông mơ hồ, nhanhDễ vỡ khi thay đổi thứ tự tham số/migrate Button React Vue
3+ tham số cần sự rõ ràngĐặt tên qua arguments:arguments: [a, b, c] rồi $a $b $cTự mô tảFrontmatter dài dòng/issue 123 main high
Kết hợp bắt buộc + tùy chọnHỗn hợp ($1 + $ARGUMENTS)$1 then $ARGUMENTSKết hợp ưu điểm cả haiHai mô hình tư duy trong một tệp/fix-issue 123 --priority high

Cây quyết định để lựa chọn giữa các mẫu tham số dollar-ARGUMENTS, tham số vị trí và tham số đặt tên trong lệnh slash của Claude Code

Bản năng của hầu hết lập trình viên là tìm đến $ARGUMENTS trước tiên vì nó mang lại cảm giác gần gũi nhất với thế giới bash mà họ quen thuộc. Điều đó ổn cho các nguyên mẫu, nhưng tham số vị trí có kiểu dữ liệu thực sự tốt hơn khi giao diện lệnh đã ổn định. LLM không cần phân tích cú pháp $1, nó đã là một chuỗi sạch sẽ rồi.

Một quy tắc kinh nghiệm đơn giản: nếu bạn có thể mô tả chữ ký của lệnh bằng một câu tiếng Anh mà không cần dùng từ "hoặc" và "tùy chọn", hãy dùng tham số vị trí. Nếu bạn cần những từ đó, hãy dùng $ARGUMENTS.

Lệnh Slash và Skills hiện có giống nhau không?

Anthropic đã hợp nhất các lệnh tùy chỉnh vào hệ thống skills rộng hơn vào mùa xuân năm 2026, nhưng các tệp .claude/commands/*.md vẫn hoạt động và sử dụng cùng một frontmatter. Một skill là một thư mục (.claude/skills/foo/SKILL.md cùng các tệp hỗ trợ) với khả năng kiểm soát lời gọi bổ sung như disable-model-invocation. Một lệnh là một tệp .md duy nhất. Cùng quy tắc thay thế, khác cách đóng gói.

Dưới đây là sự khác biệt trong thực tế:

Khía cạnh.claude/commands/foo.md.claude/skills/foo/
Hình thức tệpMột tệp .md duy nhấtThư mục chứa SKILL.md + các tệp hỗ trợ
Phù hợp nhất choCác lệnh dùng một lần nhanh chóng, tự động hóa cục bộ trong dự ánCác gói có thể tái sử dụng kèm mẫu, tài liệu tham khảo, tệp con
Kiểm soát lời gọiChỉ frontmatterFrontmatter + disable-model-invocation cho từng tệp
Xử lý đối sốGiống nhau ($ARGUMENTS, $1, có tên)Giống nhau ($ARGUMENTS, $1, có tên)

So sánh cây tệp: một tệp .claude/commands/foo.md duy nhất so với thư mục .claude/skills/foo/ chứa SKILL.md và các tệp hỗ trợ

Vậy nên không, .claude/commands/ không hề bị loại bỏ. Anthropic đã chủ động giữ cho dạng tệp này tiếp tục hoạt động khi họ hợp nhất các hệ thống, bởi quá nhiều dự án có các thư viện lệnh được ghim trong hệ thống kiểm soát phiên bản. Nếu bạn cần các tệp hỗ trợ (như một tệp tham chiếu CONTRIBUTING.md mà skill của bạn tải vào, hay một template.json mà nó sao chép), hãy dùng skills. Nếu không, cứ tiếp tục dùng lệnh.

Việc hợp nhất này là một phần của nỗ lực rộng lớn hơn hướng tới tiêu chuẩn mở agentskills.io, và đây là một trong số vài thay đổi đáng chú ý của phiên bản v2.1.x, hãy xem bài tổng hợp của chúng tôi về các tính năng Claude Code v2.1 để nắm toàn cảnh các tính năng, cùng hướng dẫn về skills để tìm hiểu sâu hơn về skills.

Tại sao $ARGUMENTS của tôi không được thay thế? Sửa các lỗi thường gặp

Năm lý do phổ biến khiến $ARGUMENTS không được thay thế: (1) token viết thường hoặc viết tắt ($args, $ARGS, $arguments, phải là $ARGUMENTS đúng nguyên văn), (2) đối số gồm nhiều từ không được đặt trong dấu ngoặc kép (/cmd hello world sẽ bị tách ra; /cmd "hello world" sẽ giữ nguyên thành một khối), (3) allowed-tools phân tách bằng dấu phẩy thay vì khoảng trắng, (4) tệp lệnh không nằm trong .claude/commands/ hoặc .claude/skills/, (5) phiên Claude Code cần được tải lại sau khi chỉnh sửa tệp.

$ARGUMENTS Xuất Hiện Nguyên Văn Trong Prompt Của LLM

Triệu chứng: Prompt của bạn hiển thị $ARGUMENTS dưới dạng văn bản thuần trong phản hồi của mô hình, như thể người dùng đã bỏ qua nó. Nguyên nhân: Sai chữ hoa/thường hoặc sai chính tả. Token này chính xác là $ARGUMENTS, tám ký tự, viết hoa toàn bộ. Cách khắc phục: Mở tệp .md, grep tìm $args, $ARGS, $arguments, ${ARGUMENTS}, rồi thay thế bằng $ARGUMENTS. Lỗi đánh máy $args đã khiến mọi lập trình viên trong nhóm chúng tôi mắc phải ít nhất một lần; đây là lỗi có tần suất cao nhất trong nhóm lỗi "lệnh slash không xác định".

Đối số nhiều từ bị tách một cách bất ngờ

Triệu chứng: Bạn đã chạy /migrate-component Search Bar React Vue và $1 là Search, $2 là Bar. Nguyên nhân: Khoảng trắng sẽ tách các đối số theo vị trí. Cách khắc phục: Đặt đối số nhiều từ trong dấu ngoặc kép: /migrate-component "Search Bar" React Vue. Khi đó $1 sẽ là Search Bar. Điều này khớp với hành vi của shell, cũng chính là mô hình tư duy mà lệnh này cố ý mô phỏng theo.

allowed-tools không được tuân thủ

Triệu chứng: Lệnh vẫn chạy nhưng Claude từ chối gọi các công cụ mà bạn tưởng rằng mình đã cho phép, hoặc nó gọi những công cụ không có trong danh sách. Nguyên nhân: Do phân tách bằng dấu phẩy thay vì dấu cách. Cách khắc phục: Đổi allowed-tools: Bash, Read, Edit thành allowed-tools: Bash Read Edit. Đối với các mẫu con của công cụ, hãy định dạng thành Bash(git:*) Bash(npm:*) Read.

Lệnh không xuất hiện trong tính năng tự động hoàn thành /

Triệu chứng: Bạn nhập / và lệnh của bạn không có trong danh sách. Nguyên nhân: Vị trí tệp, thiếu frontmatter, hoặc disable-model-invocation được đặt không chính xác. Cách khắc phục: Xác nhận rằng tệp nằm tại .claude/commands/yourcmd.md (hoặc .claude/skills/yourcmd/SKILL.md) so với thư mục gốc của dự án. Xác nhận rằng frontmatter có ít nhất một trường description:. Nếu bạn đặt disable-model-invocation: true, lệnh sẽ không hiển thị với các agent khác nhưng vẫn xuất hiện trong menu / do con người nhập.

Bạn đã sửa tệp .md nhưng không có gì thay đổi

Triệu chứng: Bạn đã sửa lỗi, lưu tệp, chạy lại lệnh, nhưng vẫn gặp cùng một hành vi bị lỗi. Nguyên nhân: Claude Code lưu cache các tệp lệnh khi bắt đầu phiên làm việc. Cách khắc phục: Thoát và khởi động lại Claude Code, hoặc chạy /reload nếu phiên bản của bạn hỗ trợ lệnh này.

Claude Code đọc các tệp .md khi bắt đầu phiên làm việc. Nếu bạn chỉnh sửa một lệnh và nó 'không thay đổi', hãy khởi động lại phiên của bạn trước khi cho rằng có một lỗi nghiêm trọng hơn.

Đối với các trường hợp đặc biệt ngoài năm trường hợp này, trang issues của kho Claude Code là nơi tốt nhất để tìm kiếm. Hầu hết các lỗi thay thế kỳ lạ mà chúng tôi từng gặp đều là một biến thể nào đó của một trong các lỗi nêu trên.

Câu hỏi thường gặp: Đối số của lệnh Slash trong Claude Code

Làm cách nào để truyền đối số cho lệnh gạch chéo (slash command) của Claude Code?

Hãy nhập chuỗi đối số sau tên lệnh: /greet World. Bên trong tệp .md của lệnh, bạn có thể tham chiếu giá trị này dưới dạng $ARGUMENTS (toàn bộ chuỗi), $1 (đối số vị trí đầu tiên), hoặc $variableName (nếu bạn đã khai báo arguments: [variableName] trong frontmatter). Hệ thống sẽ thay thế token trước khi gửi prompt đến LLM.

$ARGUMENTS trong Claude Code là gì?

$ARGUMENTS là một token thay thế trong các tệp lệnh slash tùy chỉnh, được Claude Code dùng để thay bằng toàn bộ chuỗi đối số mà người dùng nhập sau tên lệnh. Nếu người dùng chạy /deploy --staging --dry-run, thì $ARGUMENTS sẽ trở thành chuỗi nguyên văn --staging --dry-run bên trong prompt đã được kết xuất, trước khi LLM kịp nhìn thấy nó.

Lệnh slash của Claude Code có thể nhận cờ kiểu CLI như --json không?

Mặc định thì không, hệ thống không có trình phân tích cờ cho các lệnh tùy chỉnh. Bạn viết --json vào $ARGUMENTS, và prompt của bạn sẽ hướng dẫn LLM phát hiện và xử lý tương ứng. Cách này hiệu quả vì Claude là trình phân tích linh hoạt với văn bản có cấu trúc. Các lệnh tích hợp sẵn như /clear và /help có cờ thực sự, nhưng các lệnh tùy chỉnh do bạn tạo chỉ tuân theo quy tắc thay thế đơn thuần.

Sự khác biệt giữa $1, $ARGUMENTS và $name trong Claude Code là gì?

$1 là đối số vị trí đầu tiên được phân tách bằng khoảng trắng ($2 là đối số thứ hai, và cứ thế tiếp tục). $ARGUMENTS là toàn bộ chuỗi đối số nguyên văn, bao gồm tất cả các thành phần vị trí và mọi cờ. $name là đối số có tên được khai báo trong trường arguments: [name] của frontmatter, hữu ích khi bạn muốn có các vị trí tự mô tả mà không cần đánh chỉ số.

argument-hint hoạt động như thế nào trong Claude Code?

argument-hint là một trường frontmatter kiểm soát nội dung mà menu tự động hoàn thành / hiển thị bên cạnh tên lệnh của bạn. Khi đặt argument-hint: <issue-number> [--priority high], chính xác mẫu đó sẽ được hiển thị sau khi người dùng gõ /. Nó chỉ phục vụ UX, không hề xác thực hay phân tích cú pháp đối số. Dù vậy, bạn vẫn nên thiết lập nó vì đây là dạng tài liệu hướng dẫn ít tốn kém nhất mà bạn từng viết.

Làm cách nào để tạo lệnh slash tùy chỉnh với nhiều đối số?

Có hai lựa chọn gọn gàng. Với đối số theo vị trí: tham chiếu $1, $2, $3 trong phần thân prompt. Với đối số đặt tên: khai báo arguments: [first, second, third] trong frontmatter và tham chiếu $first, $second, $third. Dạng đặt tên sẽ dễ đọc hơn khi có từ ba đối số trở lên. Chỉ dùng $ARGUMENTS khi bạn muốn LLM tự phân tích một chuỗi văn bản tự do nối tiếp sau các vị trí bắt buộc.

Có phải .claude/commands/ đã bị loại bỏ để nhường chỗ cho .claude/skills/?

Không. Anthropic đã hợp nhất hai hệ thống vào mùa xuân năm 2026 nhưng khẳng định rõ vẫn duy trì hoạt động của .claude/commands/*.md với các quy tắc thay thế giống hệt. Hãy dùng commands cho các tự động hóa đơn tệp và skills cho các gói đa tệp (SKILL.md kèm mẫu hoặc tài liệu tham khảo). Frontmatter như nhau, hành vi $ARGUMENTS như nhau, chỉ khác cách đóng gói. Kể từ v2.1.126, cả hai đều là những thành phần hạng nhất.

Tại sao $ARGUMENTS không được thay thế trong lệnh của tôi?

Ba nguyên nhân phổ biến nhất, theo thứ tự tần suất: lỗi viết hoa (phải là chữ hoa $ARGUMENTS, không phải $args hay $arguments), sai vị trí tệp (phải nằm trong .claude/commands/ hoặc .claude/skills/), hoặc phiên làm việc cũ (Claude Code đọc các tệp lệnh khi bắt đầu phiên, vì vậy hãy khởi động lại sau khi chỉnh sửa). Nếu cả ba đều ổn, hãy chạy /echo-args foo với ví dụ tối giản từ H2 #1 để xác định vấn đề.

Tôi có thể bắt buộc một số đối số không?

Ở cấp độ sử dụng thì không, không có cơ chế xác thực đối số bắt buộc tích hợp sẵn. Cách làm phổ biến là hướng dẫn LLM trong prompt của bạn: "Nếu $1 trống, hãy dừng lại và yêu cầu người dùng cung cấp số issue." Mô hình sẽ thực thi thỏa thuận này. Nó không hoàn hảo tuyệt đối, nhưng trong thực tế đủ tin cậy để sử dụng hàng ngày, đặc biệt khi kết hợp với một argument-hint rõ ràng.

model: trong frontmatter có ghi đè các cờ CLI không?

Có, frontmatter được ưu tiên. Nếu tệp lệnh của bạn khai báo model: claude-haiku-4, lệnh đó sẽ chạy trên Haiku bất kể người dùng đã chọn mô hình nào cho phiên làm việc. Điều này hữu ích cho các lệnh rẻ, được gọi thường xuyên mà bạn muốn giữ không chạy trên Opus. Xem hướng dẫn của chúng tôi về chuyển đổi mô hình Claude để chọn đúng biến thể cho từng loại lệnh.

Tổng kết

Bốn mẫu. Hãy chọn mẫu phù hợp với hình dạng lệnh của bạn:

  • Cờ boolean (--dry-run), ghi nó vào $ARGUMENTS, để LLM tự phát hiện.
  • Cờ giá trị (--filter <pattern>), cùng cách tiếp cận, LLM sẽ trích xuất giá trị.
  • Tham số vị trí bắt buộc + cờ tùy chọn, $1 cho phần bắt buộc, $ARGUMENTS cho phần còn lại.
  • Tham số vị trí nghiêm ngặt, $0/$1/$2 (hoặc đặt tên qua arguments:) khi mọi vị trí đều bắt buộc và có thứ tự.

Giờ đây các lệnh của bạn đã có tham số, bước tiếp theo là kết nối chúng vào quy trình làm việc của agent, hãy bắt đầu với hướng dẫn Claude Skills của chúng tôi để nâng cấp đóng gói đa tệp, hoặc xem qua các công cụ lập trình AI thay thế nếu bạn đang so sánh các harness. Dù bằng cách nào, thư mục .claude/commands/ của bạn vừa trở nên hữu ích hơn rất nhiều.

Thẻ

claude-codeslash-commandsclaude-skillsdeveloper-toolsclaude-code-arguments

Chia sẻ bài viết này

Bài viết liên quan

Thêm từ chuyên mục web-development

web-development
Jul 22, 2026

Tích hợp API HubSpot cho Công cụ Nội bộ Tùy chỉnh: Hướng dẫn Node + Python (2026)

Hướng dẫn tập trung vào mã nguồn để xây dựng tích hợp API HubSpot cho công cụ nội bộ tùy chỉnh. Xác thực bằng token ứng dụng riêng, lệnh gọi tạo liên hệ đầu tiên trong Node và Python, bộ nhận webhook được xác thực chữ ký, xử lý lỗi 429 và khung phân tích trung thực giữa tự xây dựng hay thuê ngoài.

12 min read phút đọc
Đọc
web-development
Jun 20, 2026

12 giải pháp thay thế Salesforce cho doanh nghiệp nhỏ (2026) — Bao gồm 8 cái tên ít ai nhắc đến

Bảng tổng hợp khách quan về 12 giải pháp thay thế Salesforce dành cho doanh nghiệp nhỏ, với mức giá năm 2026 đã được xác minh, quy trình ra quyết định dựa trên kịch bản mua hàng và phần phân tích trung thực về những trường hợp nên tiếp tục sử dụng Salesforce.

11 min read phút đọc
Đọc
web-development
Jun 13, 2026

7 CRM mã nguồn mở tốt nhất cho startup (Tự lưu trữ, Đã kiểm tra 2026)

Chúng tôi đã tự lưu trữ 7 CRM mã nguồn mở trên VPS thực tế và xếp hạng chúng dựa trên sao GitHub, giấy phép, API và khả năng mở rộng qua code. Twenty, EspoCRM, SuiteCRM, Odoo, Krayin và hơn thế nữa, được so sánh cho các startup năm 2026.

14 min read phút đọc
Đọc
Xem tất cả bài viết
Khởi động dự án của bạn

Sẵn sàng tạo nên điều gì đó đột phá?

Hãy biến tầm nhìn của bạn thành hiện thực. Đội ngũ của chúng tôi sẵn sàng đồng hành cùng bạn tạo ra phần mềm tạo nên sự khác biệt.

Đặt lịch gọi ý tưởng 30 phútXem dự án của chúng tôi

Công cụ hot trong kho

Claude Skills

Xem tất cả
  • New Post

    Full SEO blog pipeline: research, brief, write, validate, image, translate, publish to Sanity. Autonomous from start to finish.

  • Content Refresh

    Audit a stale post, find decay drivers, and ship a SERP-aligned refresh without losing existing rankings.

  • SEO Audit

    Site-wide SEO audit with prioritized fix list: technical, on-page, and EEAT signals.

Tự động hoá AI

Xem tất cả
  • Security Auditor

    Weekly SCA + IaC scan with prioritized fix PRs.

  • Cold Email Writer

    Generates first-touch emails grounded in one specific public detail.

  • Lead Research Agent

    Enrich an email into a profile, score fit, alert in Slack.

Công cụ hot trong kho

Claude Skills

Xem tất cả
  • New Post

    Full SEO blog pipeline: research, brief, write, validate, image, translate, publish to Sanity. Autonomous from start to finish.

  • Content Refresh

    Audit a stale post, find decay drivers, and ship a SERP-aligned refresh without losing existing rankings.

  • SEO Audit

    Site-wide SEO audit with prioritized fix list: technical, on-page, and EEAT signals.

Tự động hoá AI

Xem tất cả
  • Security Auditor

    Weekly SCA + IaC scan with prioritized fix PRs.

  • Cold Email Writer

    Generates first-touch emails grounded in one specific public detail.

  • Lead Research Agent

    Enrich an email into a profile, score fit, alert in Slack.

Dịch vụ

  • Giải pháp doanh nghiệp
  • Ứng dụng di động
  • Ứng dụng web

Giải pháp

  • Hệ thống CRM
  • Tích hợp AI
  • Giải pháp ERP
  • Voice Agent
  • Tự động hóa quy trình
  • Bảo mật thông tin

Thư viện

  • Blog
  • Dự án

Cộng đồng

  • Tự động hoá AI
  • Claude Skills

Công cụ

  • Tính phí làm ứng dụng mobile
  • Tính phí dùng OpenAI / LLM API
  • Tính phí làm MVP
  • Tính phí làm Voice AI Agent

Công ty

  • Giới thiệu
  • Cộng sự
  • Liên hệ

Pháp lý

  • Chính sách quyền riêng tư
  • Điều khoản dịch vụ
  • Chính sách cookie

Dịch vụ

  • Giải pháp doanh nghiệp
  • Ứng dụng di động
  • Ứng dụng web

Giải pháp

  • Hệ thống CRM
  • Tích hợp AI
  • Giải pháp ERP
  • Voice Agent
  • Tự động hóa quy trình
  • Bảo mật thông tin

Thư viện

  • Blog
  • Dự án

Cộng đồng

  • Tự động hoá AI
  • Claude Skills

Công cụ

  • Tính phí làm ứng dụng mobile
  • Tính phí dùng OpenAI / LLM API
  • Tính phí làm MVP
  • Tính phí làm Voice AI Agent

Công ty

  • Giới thiệu
  • Cộng sự
  • Liên hệ
Pháp lýChính sách quyền riêng tưĐiều khoản dịch vụChính sách cookie
TECHSY
© 2026 Techsy. Bảo lưu mọi quyền.