1 CLAUDE.md

1.1 使用场景

  • 适用于整个项目的布局、构建命令、约定
  • 适用于整个项目的需要重复更正的规则和纪要

1.2 文件位置

范围位置目的
用户指令~/.claude/CLAUDE.md所有项目的个人偏好
项目指令./CLAUDE.md或./.claude/CLAUDE.md项目的团队共享指令
本地指令./CLAUDE.local.md项目的个人特定偏好,可添加到.gitignore

1.3 编写建议

  • 不超过200行:超过200行的文件会消耗更多上下文并分散注意力,降低遵守度。
  • @path/to/import 导入其他文件:导入的文件在启动时自动展开并加载到上下文中。递归导入的最大深度为4。

1.4 参考文献

参考文献

2 skills

2.1 使用场景

  • 定义做某种特定场景的使用习惯/工作流
  • 定义使用某种特定工具的教程

2.2 文件位置

范围位置目的
用户指令~/.claude/skills所有项目的个人技能
项目指令./.claude/skills/项目的团队共享技能

在~/.claude/plugins/caches/<插件名称>/skills中还包含一些插件集成的技能也会被读取,但这是Claude Code插件系统自动管理的,一般无需手动干预

2.3 示例

txt~/.claude/skills/summarize-changes/SKILL.md
---
description: Summarizes uncommitted changes and flags anything risky. Use when the user asks what changed, wants a commit message, or asks to review their diff.
---
 
## Current changes
 
!`git diff HEAD`
 
## Instructions
 
Summarize the changes above in two or three bullet points, then list any risks you notice such as missing error handling, hardcoded values, or tests that need updating. If the diff is empty, say there are no uncommitted changes.

2.4 参考文献

参考文献

3 rules

3.1 使用场景

  • 需要针对特定路径编写特定的、具体的项目约定(代码风格、组织结构)

3.2 文件位置

范围位置目的
用户指令~/.claude/rules/所有项目的个人规则偏好
项目指令./.claude/rules/项目团队共享的规则偏好

3.3 示例

以下是针对项目中src/api任意文件夹下的任意ts文件生效的规则。

txt./claude/rules/api.md
---
paths:
  - "src/api/**/*.ts"
---
 
# API 开发规则
 
- 所有 API 端点必须包括输入验证
- 使用标准错误响应格式
- 包括 OpenAPI 文档注释

3.4 参考文献

参考文献

4 Hooks

4.1 使用场景

  • 需要在某一场景下一定要执行某一动作,不会因为模型注意力涣散导致漏执行。(例如在会话结束后一定执行脚本检测是否需要代码审查)
  • 需要实时记录执行过程
事件什么时候触发
SessionStart当一个会话开始或恢复时
Setup启动Claude Code带有 —init-only, —init 或 —maintenance 在 -p 模式. CI或脚本中的一次性准备时
UserPromptSubmitClaude Code处理它前、提交一个prompt后
UserPromptExpansion用户类型命令扩展进提示词中时、在发送给模型之前。:可以在此时取消添加扩展
PreToolUse工具调用执行前:可以在此时禁止使用这个工具
PermissionRequest工具调用需要权限请求时
PermissionDenied自动模式拒绝了工具调用时:包括没有分类器决定的拒绝情况,使用JSON的hookSpecificOutput.retry: true来告诉模型,它可能会重试被拒绝的工具调用。当分类器未产生决定时,会忽略retry
PostToolUse工具调用成功后
PostToolUseFailure工具调用失败后
PostToolBatch并行工具调用完整批量解析后,下一次模型调用前
NotificationClaude Code发送通知时
MessageDisplay展示assistant消息文本时
SubagentStart派生子agent时
SubagentStop子agent结束时
TaskCreated通过TaskCreate创建任务时
TaskCompleted任务被标记为完成时
Stop模型结束响应时
StopFailure由于API错误结束了一轮循环(turn)时
TeammateIdle当agent团队 队友即将闲置时
InstructionsLoaded当CLAUDE.md or .claude/rules/*.md文件加载进上下文时
ConfigChange当一个配置文件在对话时变更时
CwdChanged当工作目录变更时:例如当执行了cd命令。对于像direnv一样的响应式环境管理很有用。
DirectoryAdded在会话过程中通过/add-dir或者SDK register_repo_root控制请求添加了一个工作目录时
FileChanged当一个在磁盘上被监控的文件变更时:matcher字段指定监听哪个文件名
WorktreeCreate通过—worktree,isolation: “worktree”创建工作分支时:为后台会话创建工作树时,会替换默认的Git行为
WorktreeRemove在会话退出、子agent结束或删除后台会话后移除工作树时
PreCompact上下文压缩前
PostCompact上下文压缩完成后
ElicitationMCP服务在工具调用期间需要用户输入时
ElicitationResult用户对MCP启发(机器学习过程)做出响应后,且响应被发送回服务器前
SessionEnd当一个会话终止时

4.2 参考文献

参考文献

5 自动记忆

~/.claude/projects/<project>/memory/
├── MEMORY.md          # 简洁索引,加载到每个会话
├── debugging.md       # 关于调试模式的详细笔记
├── api-conventions.md # API 设计决策
└── ...                # Claude 创建的任何其他主题文件

其中的MEMORY.md充当记忆目录的索引。

5.1 启用或禁用自动记忆

  • 环境变量CLAUDE_CODE_DISABLE_AUTO_MEMORY=1
  • 配置:
json
{
  "autoMemoryEnabled": false
}

5.2 存储位置

~/.claude/projects/<project>/memory/

可自定义记忆存储路径:

json
{
  "autoMemoryDirectory": "~/my-custom-memory-dir"
}

参考文献