前言

前面对Claude Code CLI有了基本了解,对MCP配置做了详细探索,今天继续对Claude Code CLI 自定义命令配置做下深度探索和使用。对往期内容感兴趣的小伙伴也可以看往期内容:

当前版本

1.0.128 (Claude Code)

自定义命令类型

在前面我们知道,自定义命令也是分 项目命令 和 个人(全局)命令 2种的,对自定义命令范围还不了解的小伙伴可以看往期内容:Claude Code CLI初体验

  • 项目命令:作用于指定项目,需要在 项目根目录/.claude/commands/ 目录下创建以 .md 结尾的Markdown文件

  • 个人(全局)命令:作用于所有项目,需要在 ~/.claude/commands/ 目录下创建以 .md 结尾的Markdown文件

创建全局自定义命令文件 ~/.claude/commands/todo-list.md,提示词内容如下:

<span leaf="">查看@todo.md中的任务

进入其它工作区,启动Claude Code CLI,输入 /todo-list 可以看到定义的全局自定义命令

图片

创建项目自定义文件 /Users/claude-code-cli/.claude/commands/todo-list1.md 输入相同提示词,重启Claude Code CLI,在 claude-code-cli 工作区可以查看自定义命令

图片

在 gemini-cli 工作区是无法查看的

图片

普通命令

首先在项目根目录创建 .claude/commands  文件夹,在文件夹中创建一个 project-info.md 文件,输入如下提示词:

<span leaf="">分模块输出当前项目信息

带参数命令

单参数

除了可以自定义纯文本提示词命令,我们也可以自定义接收参数的自定义命令,通过 $ARGUMENTS 参数占位符可以将动态值传递给命令。

首先看一个简单的例子,通过“今天、明天”等参数获取日期信息,我们可以这么写:

<span leaf="">$ARGUMENTS 是几月几号,星期几

图片

重启Claude Code CLI,在Claude Code CLI中输入 / 就可以看到刚刚定义的date-info 命令

图片

输入 /data-info 今天/明天 可以看到 $ARGUMENTS 参数占位符将我们输入的日期代词传递给了自定义命令并为我们准确输出了日期信息

<span leaf="">/data-info 今天      

图片

多参数

$ARGUMENTS 参数占位符也可以动态接收多个参数,我们定义一个查询天气的自定义命令,提示词内容如下:

<span leaf="">输出 $ARGUMENTS 的 $ARGUMENTS 信息

图片

重启Claude Code CLI,使用 /weather-info 命令并传入对应参数

图片

目前使用的模型不支持联网,没有拿到天气信息,但是可以看到AI准确得到了我们想要查询的是 今天的天气信息 内容

图片

位置参数

除了使用 $ARGUMENTS 参数占位符,Claude Code CLI中也支持通过 $1、$2 等位置参数占位符类似Shell脚本等参数取值方式。

以上面的天气示例为例,也可以写成以下方式:

<span leaf="">输出 $1 的 $2 信息

图片

重启Claude Code CLI,使用 /weather-info 命令并传入对应参数

图片

可以看到AI最终得到的上下文信息也是准确的,是我们想要表达的 明天的天气信息 内容

图片

Bash命令

Claude Code CLI自定义命令中允许我们在执行自定义命令前执行Bash命令,输出包含在自定义命令上下文中,前提是我们需要包含Bash命令执行的权限。

创建 commands/cmd-shell.md 文件,实现一个简单的文件内容输出功能,输入提示词:

<span leaf="">## 任务

图片

重启Claude Code CLI,使用 /cmd-shell 调用自定义命令,可以看到自定义命令输出了文件列表并输出了todo.md文件的内容

图片

创建 commands/git-commit.md 文件,输入如下提示词:

<span leaf="">---

图片

重启Claude Code CLI,使用 /git-commit 调用自定义命令

图片

执行完成后,我们将得到一个根据修改自动提交的commit

图片

文件引用

使用 @ 前缀引用文件,引用文件路径以当前执行自定义命令的路径为起始,即使自定义命令定义在全局,依然可以查看调用命令路径下的todo.md任务

创建 项目根目录/.claude/commands/todo-list.md 文件,输入如下提示词:

<span leaf="">查看@todo.md中的任务

图片

在项目根目录创建 todo.md 文件,随便写点任务列表

图片

重启Claude Code CLI,使用 /todo-list 调用自定义命令

图片

可以看到准确读取并输出了工作区下的 todo.md 的任务待办内容

图片

嵌套命令

Claude Code CLI自定义命令也支持自定义嵌套命令,即可以为自定义命令添加分组,以上面git commit为例,将git-commit.md移动到 项目根目录/.claude/commands/git/git-commit.md

图片

重启Claude Code CLI,输入 / 即可看到git-commit命令

图片

通过 /git:git-commit 调用嵌套命令

图片

思考模式

斜杠命令可以通过包含 扩展思考关键词 来触发扩展思考,在Claude Code CLI中有4种思考预算级别:think < think hard< think harder < ultrathink

使用也很简单,只需要在提示词后加入 think hard 等思考等级

图片

重启Claude Code CLI,输入 /think-hard 9.11和9.9在不同场景大小比较 调用自定义命令

图片

Frontmatter

Claude Code CLI的自定义命令使用Markdown文件后缀和语法定义,也同样支持frontmatter,除了上面看到的 allowed-tools 和 description,还有 argument-hint 和 model 属性

  • allowed-tools:命令可以使用的工具列表

  • argument-hint:命令的预期参数示例,例如:argument-hint: add [tagId]

  • description:命令简要说明

  • model:命令执行使用的模型,不配置使用默认模型

比如我们实现一个根据输入内容创建git commit的自定义命令,首先创建一个 git-commit-message.md 文件,输入如下内容:

<span leaf="">---

图片

重启Claude Code CLI,输入 /git-commit-message 查看命令信息

图片

我们也可以将 argument-hint 中的内容换成任意我们需要的内容

图片

调用Agent

创建 commands/code-reviewer.md 文件,输入提示词内容:

<span leaf="">使用`code-reviewer`agent review我最近修改的内容

图片

重启Claude Code CLI,输入 /code-reviewer 执行命令

图片

就可以看到在执行自定义命令过程中调用了 code-reviewer  agent来完成code reviewer

图片


点击关注,及时接收最新消息