一句话区分
- Slash Command:你主动触发的快捷指令(你输
/commit,它跑) - Hook:系统在特定事件自动触发的脚本(Claude 一写文件,就自动跑格式化)
一个是人按的按钮,一个是自动化陷阱。
Slash Command
是啥
在 .claude/commands/ 目录放一个 md 文件,文件名就是命令名。你在 Claude Code 里输入 /文件名 就执行它。
来源:claude-code-docs/hooks.md + awesome-claude-code 仓库 resources/slash-commands/ 下 22 个社群贡献样例。
最简样例
.claude/commands/commit.md:
请帮我做一次规范提交:
1. git status 查看变更
2. git diff 理解改动
3. 生成合理的 commit message
4. git add 然后 commit你输入 /commit,Claude 就执行这段。
Boris 的用法(tip 7)
“Boris uses slash commands for workflows he does many times a day.”
Boris 团队的 slash command 都 check 进 git(.claude/commands/ 目录),全团队共享。典型例子:/commit-push-pr(一条龙)。
22 个社群样例里的高频命令
扫了 awesome-claude-code 里 22 个社群贡献的 slash command md,出现频率最高的:
/commit(规范提交)/create-pr(生成 PR)/create-prd(生成产品需求文档)/optimize(代码优化)/fix-github-issue(处理 GitHub issue)/todo(管理任务清单)
这些可以直接拿来用。
Hook
是啥
在 .claude/settings.json 里注册的事件监听器。事件发生 → 自动跑你写的 shell 命令。
来源:claude-code-docs/hooks-guide.md + claude-code-docs/hooks.md。
常见事件
官方 hooks-guide 列出的事件类型:
| 事件 | 什么时候触发 |
|---|---|
PreToolUse | Claude 准备用工具前 |
PostToolUse | Claude 用完工具后 |
UserPromptSubmit | 你刚输入 prompt 时 |
Stop | Claude 结束一轮回答时 |
Notification | 需要你注意时(如权限请求) |
Boris 的做法(tip 9)
Boris 团队用 PostToolUse hook 自动格式化代码:
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{
"type": "command",
"command": "bun run format || true"
}
]
}
]意思:每次 Claude Write 或 Edit 了文件,自动跑 bun run format。Boris 的解释(tip 9):
“Claude generates well-formatted code 90% of the time, the hook catches edge cases to prevent CI failures.”
判断用哪个(决策速查)
| 场景 | 选 |
|---|---|
| 我想有个快捷命令重复用 | Slash Command |
| 我想 AI 做完某事自动加一步 | Hook (PostToolUse) |
| 我想在 AI 开始做某事前拦截 | Hook (PreToolUse) |
| 我想记录 AI 每次回答的日志 | Hook (Stop) |
陈彬视角
Slash Command 是”把你常做的事变成一个词”——门槛低,收益高,没用过的人第一个月就该上 3-5 个。
Hook 有个隐形门槛:你要会写 shell 命令。大多数非程序员到这一步会卡住。正确做法:前 3 个月只用 Slash Command,Hook 等你真正遇到”同一件事我已经手动做了 5 遍”的时候再上。过早上 Hook 会让你的 settings.json 变成黑魔法,自己都不敢改。
关联
- CLAUDE.md 完全解读(hook 注册在 settings.json,但规则对应的为啥要这样写在 CLAUDE.md)
- Agent vs Skill vs Workflow(Slash Command ≈ 轻量 Skill 的触发器)