一、/命令:
新手/powerup 新手教程
/model; /config; /effort; /permissions
alt + t 开启当前session是否额外思考
alt+m 权限切换
Esc Esc 回滚状态
/tasks 查看后台任务,运行命令 +& 可以后台测试
/remote-control 远程操控
/teleport 将远程历史结果等拉到本地
/status 查看状态
/context 查看上下文使用情况
/compact 传递指令怎么进行上下文压缩,比如保留xx计划
/diff opens an interactive viewer for uncommitted changes — useful for reviewing what Claude has done before committing.
/doctor checks installation health
二、Memory:
-
/init 生成CLAUDE.md; /memory在线修改, CLAUDE.md三级 repo/home/ per-directory overrides
-
对于较大的项目,可以将指令拆分成 .claude/rules/.md 文件。规则可以是全局的项目,也可以用 Frontmatter 范围到路径。一条带有路径的规则:src/api/**/.ts 只有在 Claude 处理匹配文件时才会激活:
paths: src/api/**/*.ts
---
All API endpoints must validate input with Zod. Return 400 with field-level errors on validation failure.
- CLAUDE_CODE_NEW_INIT=1; CLAUDE_CODE_DISABLE_AUTO_MEMORY=1; 默认自动维护memory;
- 记住某件事,就自然地问,比如“记住API测试需要Redis。”如果你想把它写进 CLAUDE.md,可以明确要求Claude把它加进去。
三、Project Setup:
- 代码开始进行init;
- CLAUDE.md怎么写:
A good `CLAUDE.md` is concise and specific. Aim for under 200 lines per file. Every line should be relevant to nearly every session — if something only matters for one feature, put it in a path-scoped rules file instead. The most valuable sections are: tech stack and versions, development commands (install, test, build, lint), naming conventions that aren’t obvious, and known gotchas that would trip up a new developer.
eg:
# Project: Payment Service
## Stack
- Node.js 20, TypeScript 5, PostgreSQL 15
- Express for API, Prisma for ORM, Jest for tests
## Commands
- `npm run dev` — start with hot reload
- `npm test` — run test suite
- `npm run migrate` — apply pending migrations
- `npm run lint` — ESLint + Prettier check
## Conventions
- All monetary values stored as integers (cents)
- Use `Result<T, E>` pattern for error handling, never throw in service layer
- Database columns: snake_case; TypeScript: camelCase
- 三层配置文件:
.claude/settings.local.json, .claude/settings.json, ~/.claude/settings.json
四、Commands in Depth
进阶命令
当上下文不够时组合命令:
/context
/compact focus on the auth refactor
/branch
/rename auth-refactor-v2
/export auth-refactor-v2.md
claude code 内置skills:
/simplify:指的是对最近修改的文件进行代码质量审查,同时启动多个并行的审查代理,每个代理专注于不同的审查方面(如安全性、性能、可读性等)。
/batch <instruction>: 对大量文件进行大规模修改,会先规划工作流程,确保变更有序进行。使用隔离的 Git 工作树,以避免对主分支造成干扰,确保操作安全。能够协调验证过程,并支持以拉取请求(PR)为导向的后续跟进,提高协作效率。
/loop 5m check deploy status:以5分钟为间隔周期性执行“检查部署状态”的操作。
会按设定的时间间隔反复运行一个提示或检查任务。 这种重复检查机制特别适用于监控耗时较长的后台操作(如部署、构建等)的状态变化。
/debug:该命令用于启用详细日志记录,帮助诊断Claude行为或工具使用过程中出现的问题。
/claude-api:该命令用于加载项目所用语言的Anthropic SDK参考文档,当检测到项目中导入了@anthropic-ai/sdk或Python的anthropic包时会自动激活。
eg:
/simplify
/batch add JSDoc comments to all public functions in src/
/loop 2m check if the build finished
/debug
Fast Mode
使 Claude Opus 4.6 的速度约为 2.5 倍,但token更多;不会降低质量,有次数限制,但/effort会降低质量;{快速模式符号↯}
eg:
/fast # toggle on/off
/fast on # explicitly enable
/fast off # explicitly disable
五、快捷键:
Ctrl+O :实时查看工具调用和思考步骤
/btw:用于提出一个附加问题或补充信息,不会将其加入对话历史,适合用于核实事实或询问语法细节,避免干扰当前对话上下文。
Ctrl+B:将正在运行的bash命令或代理任务置于后台执行,使用户可以在不中断任务的情况下继续向Claude发出其他指令。
Ctrl+X Ctrl+K:官方快捷键,用于终止所有在后台运行的代理任务
/insights :生成会话分析报告,包含统计数据,说明已完成的任务。
六、Skills
.claude/skills/code-review/
├── SKILL.md # Instructions (required)
├── templates/
│ └── review-checklist.md
└── scripts/
└── analyze-metrics.py
技能描述存储:上下文1%+8000字符;更多通过辅助文件引入:比如
For the full review checklist, see [templates/review-checklist.md](templates/review-checklist.md).
SKILL.md 通过bash读入,不超过500行,超过的建议加到单个文件中引入;
!command 举例:
name: pr-summary
description: Summarize pull request changes. Use when asked to review or summarize a PR.
context: fork
agent: Explore
---
## PR context
- Diff: !`gh pr diff`
- Comments: !`gh pr view --comments`
- Changed files: !`gh pr diff --name-only`
Summarize the intent and key changes in this pull request.
技能调用:
disable-model-invocation: true; 模型不能自动调用skill,deploys, pushes, sends等操作
user-invocable: false,用户不调用,让模型调用
paths: 接受一个 YAML 格式的通配符列表,用于限定技能适用的范围。工作目录匹配这些通配符时,技能才会被加载
eg:
---
name: api-generator
description: Generate REST API endpoints from schema definitions.
paths: ["src/**/*.ts", "tests/**"]
---
七、Hooks
定义:
在 Claude Code 会话中特定事件触发时自动执行的脚本,用于响应系统事件并执行预设操作。
它们通过标准输入(stdin)接收 JSON 格式的输入数据,以便获取事件相关信息。
它们通过退出码和标准输出(stdout)返回 JSON 格式的执行结果,实现与系统通信。
钩子架构与配置
钩子在设置文件中通过一个名为 hooks 的键进行配置。
每个事件都包含一个匹配器数组,每个匹配器又包含一个钩子定义数组。
匹配器字段是一个正则表达式模式,用于匹配工具名称——‘Bash’ 仅精确匹配该工具名,‘Write|Edit’ 匹配其中任意一个,‘’ 匹配所有工具,'mcp__github__.’ 匹配所有以 mcp__github__ 开头的 GitHub MCP 工具。
eg:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "python3 \"$CLAUDE_PROJECT_DIR/.claude/hooks/validate-bash.py\"",
"timeout": 10
}
]
}
]
}
}
Matchers也支持一个条件性的if字段(v2.1.85),该字段使用权限规则语法进一步过滤钩子触发的时机。
虽然matcher通过名称选择工具,但if可将范围缩小到该工具的特定调用。
当您只关注工具调用的子集时这很有用——例如,仅拦截git push命令而不对每次Bash调用都执行操作。
eg:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"if": "Bash(git push*)",
"hooks": [
{
"type": "command",
"command": "/path/to/check-push.sh"
}
]
}
]
}
}
Claude Code 支持30多个钩子事件。日常工作中最有用的有:
PreToolUse(在工具运行前进行验证,可阻止执行)
PostToolUse(在工具执行后观察或响应,可添加上下文)
UserPromptSubmit(在 Claude 处理用户输入前拦截输入)
Stop(在 Claude 完成响应时执行检查)
(PermissionRequest), 还有用于权限处理的事件
notifications, 通知事件
subagent lifecycle (SubagentStart, SubagentStop)子代理生命周期事件; failures (PostToolUseFailure, StopFailure),故障事件
config changes, 配置变更事件;
file watching (FileChanged) 文件监视事件;
context compaction (PreCompact, PostCompact), 上下文压缩事件; worktree management 工作树管理事件。
多个新事件扩展了钩子可响应的范围。
CwdChanged(v2.1.83)在工作目录变更时触发,支持类似 direnv 的动态环境管理——例如,当 Claude 进入项目目录时自动加载环境变量。
TaskCreated(v2.1.84)在使用 TaskCreate 工具时触发,可用于记录或验证新任务的创建。
WorktreeCreate(v2.1.84)在创建工作树代理时触发,并支持 type: ‘http’ 类型的远程通知——适用于在并行工作开始时向外部服务发送警报。
Elicitation(v2.1.76)在 MCP 服务器通过交互式对话请求任务中的结构化用户输入时触发,可拦截并修改该请求内容,在展示给用户前进行调整。
ElicitationResult(v2.1.76)在用户对 MCP 的 elicitation 响应后触发,可拦截并覆盖响应内容,在发送回 MCP 服务器前进行修改。
“PreCompact” 是一个事件名称,指在 Claude Code 执行对话压缩以释放上下文空间之前触发的钩子事件。
它在压缩操作正式开始前运行,允许开发者或系统在关键时刻介入处理。
该事件可用于阻止压缩操作的进行,例如当需要保存当前状态、向用户发出警告或拒绝可能丢失关键信息的自动压缩时。
事件的 matcher 字段用于判断触发原因:当值为 ‘manual’ 时表示用户手动执行了 /compact 命令;当值为 ‘auto’ 时表示系统因上下文容量已满而自动触发了压缩。
若要阻止压缩发生,可通过返回退出码 2 或使用 JSON 决策负载(payload)来实现,例如:
{
"hooks": {
"PreCompact": [
{
"matcher": "auto",
"hooks": [
{ "type": "command", "command": "./scripts/snapshot-context.sh" }
]
}
]
}
}
钩子返回: {"decision": "block", "reason": "active refactor in flight"}
钩子脚本通过 stdin 接收 JSON。Python 钩子的读法是这样的:
import json, sys
data = json.load(sys.stdin)
tool_name = data.get("tool_name", "")
tool_input = data.get("tool_input", {})
退出码0表示成功,需从标准输出(stdout)中解析JSON格式的输出结果。
退出码2表示阻断性错误,Claude会停止运行,并显示你标准错误(stderr)中的信息。
其他任何退出码均表示非阻断性警告,仅在详细模式(verbose mode)下显示。
钩子(Hook)的常见分类和典型应用方式
在执行写入或编辑操作后触发的工具使用后钩子,用于自动化后续处理。
系统会自动调用指定的格式化程序来整理内容。 确保 Claude 的输出始终整洁,表示无论用户输入如何,最终输出都会保持良好的排版和结构。
eg:
#!/bin/bash
INPUT=$(cat)
FILE=$(echo "$INPUT" | python3 -c "import sys,json; print(json.load(sys.stdin).get('tool_input',{}).get('file_path',''))")
case "$FILE" in
*.ts|*.tsx|*.js) prettier --write "$FILE" 2>/dev/null ;;
*.py) black "$FILE" 2>/dev/null ;;
*.go) gofmt -w "$FILE" 2>/dev/null ;;
esac
exit 0
安全扫描在写入时使用PostToolUse和additionalContext输出警告Claude关于它刚刚写入的可能机密信息, 例如
SECRET_PATTERNS = [
(r"api[_-]?key\s*=\s*['\"][^'\"]+['\"]", "Potential hardcoded API key"),
(r"password\s*=\s*['\"][^'\"]+['\"]", "Potential hardcoded password"),
]
# ... check content, then:
output = {"hookSpecificOutput": {"hookEventName": "PostToolUse",
"additionalContext": f"Security warnings: {'; '.join(warnings)}"}}
print(json.dumps(output))
使用PreToolUse和正则表达式检查以及退出代码2来阻止危险命令:
BLOCKED = [(r"\brm\s+-rf\s+/", "Blocking dangerous rm -rf /")]
for pattern, message in BLOCKED:
if re.search(pattern, command):
print(message, file=sys.stderr)
sys.exit(2)
Advanced: Prompt Hooks and Component Scope
提示钩子和作用域
prompt 钩子
对于Stop和SubagentStop停止事件,prompt 类型的钩子使用LLM来评估任务完成情况。LLM阅读对话并返回一个关于是否让Claude停止或继续工作的结构化决策。这对于具有明确完成标准的工作任务来说非常强大。
eg:
{
"hooks": {
"Stop": [
{
"hooks": [
{
"type": "prompt",
"prompt": "Check: 1) Were all files modified? 2) Do tests pass? 3) Is the PR description updated? If anything is missing, explain what.",
"timeout": 30
}
]
}
]
}
}
agent 钩子
钩子类型 “agent” 会派生一个子代理进行评估——与提示钩子(单轮)不同,代理钩子可以使用工具并执行多步推理。当检查需要读取文件或运行命令时使用此功能。
钩子也可以通过hooks frontmatter字段针对单个技能和代理进行范围限定。一个技能的前置工具使用钩子仅在执行该技能时触发:
eg:
---
name: production-deploy
hooks:
PreToolUse:
- matcher: "Bash"
hooks:
- type: command
command: "./scripts/production-safety-check.sh"
once: true
---
once:true: 只在会话中运行一次钩子,而不是在每次匹配工具使用时都运行。这对于只需要发生一次的设置检查很有用。
2 个帖子 - 1 位参与者