Claude Code 自定义斜杠命令怎么写(含传参)

2026-06-17

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 怎么写(规划中)是一套思路——都是把团队的隐性知识固化成文件。

怎么验证命令生效

写完一个命令,按这几步确认:

  1. 在 Claude Code 里输入 /,看候选列表里有没有出现你的命令名。
  2. 没出现:检查文件是否在正确的 commands/ 目录、后缀是不是 .md
  3. 命令展开后参数没替换:检查占位符拼写($ARGUMENTS 全大写、$1 是数字)。
  4. 改了文件不生效:部分情况需要重新触发命令列表,以官方文档为准。

几个能直接抄走的常用命令

下面这些放进 .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 编程教程大全 把基本功打扎实。

想系统学会用 AI?报名体系课或加入会员,照着学、照着用。