深入了解Claude Code CLI自定义命令 --知识铺
前言
前面对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
点击关注,及时接收最新消息
- 原文作者:知识铺
- 原文链接:https://index.zshipu.com/stock003/post/20251022/%E6%B7%B1%E5%85%A5%E4%BA%86%E8%A7%A3Claude-Code-CLI%E8%87%AA%E5%AE%9A%E4%B9%89%E5%91%BD%E4%BB%A4/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com