Claude Code 自定义斜杠命令怎么写(含传参)
Claude Code 斜杠命令,就是把一段你反复要敲的提示词,存成一个 markdown 文件,之后输入 /命令名 一键调用的快捷指令。 它不是什么隐藏黑科技——本质就是”提示词模板 + 一个名字”,但它能把你团队里那些”每次都要叮嘱 AI 的话”沉淀成可复用、可共享、可传参的工具。
这篇带你从零写出第一个斜杠命令,讲透 $1 $2 $ARGUMENTS 三种传参写法,分清项目级和用户级两种作用域该放哪,最后给几个能直接抄走的常用命令。已经在用 Claude Code 的同学,看完就能把自己的工作流固化下来。
原理:一个 markdown 文件 = 一个命令
斜杠命令的机制简单到出人意料:Claude Code 启动时会扫描特定目录下的 .md 文件,每个文件名就变成一个 / 命令,文件内容就是这个命令展开后塞给模型的提示词。
也就是说:
- 你在
commands/目录放一个review.md,就自动有了/review命令。 - 你输入
/review,Claude Code 就把review.md的正文当作你的指令发出去。 - 文件内容是纯 markdown / 纯文本,没有任何编程,会写字就会写命令。
理解了这点,后面所有花样都只是”在这个 markdown 里写什么”的问题。机制是长青的,具体目录名和高级字段以官方文档为准。
第一步:写出你的第一个命令
在项目根目录建立命令目录,放一个文件:
mkdir -p .claude/commands
新建 .claude/commands/explain.md,写上:
请用通俗中文解释下面这段代码的作用、潜在 bug 和可优化点,
分「做什么 / 风险 / 建议」三段输出,每段不超过 5 行。
保存后回到 Claude Code,输入 / 就能在候选里看到 /explain。选中它,再把代码贴进去,Claude 就会按你写好的格式来回答。
这就是最小可用的斜杠命令——固定一段你常用的指令,省得每次重复打字。
三种传参:$1、$2 和 $ARGUMENTS
光固定提示词还不够,真正好用的命令要能接收参数。Claude Code 用占位符来接收你在命令后面跟的内容,主要有两类写法。
$ARGUMENTS:接住后面所有内容
$ARGUMENTS 代表你打在命令名之后的全部文字。比如 fix.md 写成:
请定位并修复这个问题:$ARGUMENTS
给出最小改动的 diff,并说明根因。
你输入 /fix 登录按钮点击没反应,那句”登录按钮点击没反应”就会整段替换掉 $ARGUMENTS。适合参数是一整句话、不需要拆开的场景。
$1 $2 $3:按位置拆分参数
当你想把参数拆成几个字段时,用位置参数 $1 $2 $3,分别对应命令后面用空格隔开的第 1、2、3 个词。比如 commit.md:
用 $1 类型、$2 范围写一条规范的 git commit message,
正文描述本次改动,遵循 Conventional Commits。
输入 /commit feat 登录模块,则 $1=feat、$2=登录模块。适合参数结构固定、分多个槽位的命令。
下面这张表帮你快速选型:
| 你的需求 | 用哪个 | 例子 |
|---|---|---|
| 参数是一整段自然语言 | $ARGUMENTS | /fix 修复这个崩溃日志…… |
| 参数要拆成几个固定字段 | $1 $2 $3 | /commit feat 登录模块 |
| 既要分槽位又要兜底 | 两者混用 | $1 取类型,$ARGUMENTS 留描述 |
一句话判断:结构化就用 $1/$2,自由文本就用 $ARGUMENTS,拿不准先用 $ARGUMENTS。 具体占位符是否还支持更多写法,以官方文档为准。
项目级 vs 用户级:命令放哪儿
同一个命令,放在不同目录,作用范围完全不同。这是初学者最容易踩的概念。
| 作用域 | 存放位置 | 谁能用 | 适合放什么 |
|---|---|---|---|
| 项目级 | 项目里的 .claude/commands/ | 当前项目所有协作者 | 跟这个仓库强相关的命令(部署、测试、本项目代码规范) |
| 用户级 | 你个人主目录下的 .claude/commands/ | 你在任何项目里都能用 | 个人通用习惯(解释代码、写 commit、翻译) |
判断口诀: 想让队友一起用、想随项目进版本库 → 放项目级;只是你自己的个人偏好、跨项目复用 → 放用户级。
项目级命令是团队协作的杀手锏:把它 git 提交进仓库,新人 clone 下来就自动拥有了团队约定好的全套命令,相当于把”团队怎么用 AI 干活”写进了代码库。这点和 CLAUDE.md 怎么写(规划中)是一套思路——都是把团队的隐性知识固化成文件。
怎么验证命令生效
写完一个命令,按这几步确认:
- 在 Claude Code 里输入
/,看候选列表里有没有出现你的命令名。 - 没出现:检查文件是否在正确的
commands/目录、后缀是不是.md。 - 命令展开后参数没替换:检查占位符拼写(
$ARGUMENTS全大写、$1是数字)。 - 改了文件不生效:部分情况需要重新触发命令列表,以官方文档为准。
几个能直接抄走的常用命令
下面这些放进 .claude/commands/ 就能用,按需改文案:
/review(代码审查)
审查当前改动(git diff),重点找:空指针、边界条件、并发、安全。
按「严重 / 一般 / 建议」分级列出,每条给出文件和修复思路。
/test(补测试)
为 $ARGUMENTS 补充单元测试,覆盖正常路径和至少两个边界。
沿用本项目现有测试框架与命名风格。
/cn(翻译润色)
把以下内容翻译成自然的简体中文技术文档语气:$ARGUMENTS
保留代码与专有名词不译。
/pr(生成 PR 描述)
根据当前分支的改动,写一份 PR 描述:背景、改了什么、如何测试、风险点。
把命令写好后,下一步往往是让它调起更复杂的工作流——比如配合 Claude Code 子智能体(subagent)(规划中)做多步骤任务,让一个命令触发一整套分工协作。斜杠命令是入口,子智能体是马力。
常见问题
斜杠命令和直接打提示词有什么区别? 功能上没区别,命令只是把提示词存起来复用。一次性的需求直接打字;每天要重复说的话,就值得做成命令省事,还能共享给团队。
斜杠命令能写代码逻辑、调 API 吗? 命令本身只是 markdown 提示词模板,不执行代码,它做的是”组织好指令交给模型”。真要跑外部能力,那是 MCP、子智能体等机制的事,命令可以作为它们的触发入口。
为什么我建的命令在 / 列表里看不到?
九成是三个原因:文件没放在正确的 commands/ 目录、后缀不是 .md、或文件名带了非法字符。先确认路径和后缀,再重试。
项目级和用户级命令同名了听谁的? 通常按就近原则,项目级会覆盖同名的用户级命令,让仓库约定优先。具体优先级以官方文档为准——实践上尽量别让两边重名,省得困惑。
传参一定要用 $1 $2 吗?
不一定。多数命令用 $ARGUMENTS 接整句就够了;只有当参数明确分成几个固定字段(如类型、范围、文件名)时,$1 $2 才更清爽。
👉 看看我们的 AI 编程实战体系课,或逛 AI 编程教程大全 把基本功打扎实。