CLAUDE.md文件结构与Skill定义规范

掌握CLAUDE.md的编写规范

一、CLAUDE.md文件概述

CLAUDE.md是Claude Code的项目级指令文件,放置于项目根目录或~/.claude/目录中。当开发者在项目目录中启动Claude Code时,Claude Code会自动读取该文件,从中获取项目的上下文信息、编码规范、约束条件和自定义Skill定义。CLAUDE.md采用标准的Markdown格式,同时支持一套特殊的语法扩展——主要是YAML格式的Skills定义块——使得Claude Code能通过斜杠命令快速调用项目特定的功能。

本质上,CLAUDE.md充当了"项目大脑"的角色,它告诉Claude Code这个项目是什么、代码怎么写、有哪些规则必须遵守,以及可以通过哪些快捷命令来执行常见任务。一个结构良好的CLAUDE.md能显著提升Claude Code在项目中的工作质量和效率。

核心要点:CLAUDE.md是Claude Code理解项目上下文的核心文件,编写质量直接影响AI辅助编码的效果。

二、CLAUDE.md的基本结构

一个标准的CLAUDE.md文件包含以下几个主要部分:

1. 项目概述

位于文件的开头部分,用自然语言描述项目的名称、定位、主要功能和技术栈。Claude Code通过这部分快速了解"这是一个什么项目"。例如可以说明项目是前端应用还是后端服务,使用什么框架和语言,主要的架构模式是什么。

2. 编码规范

定义代码风格、命名约定、架构规则和团队约定。例如变量命名采用camelCase还是snake_case,React组件使用函数式还是类组件,测试框架和覆盖率要求等。这部分可以引用项目中的.eslintrc、.prettierrc等配置文件。

3. 约束条件(Build/Test/Lint/Format命令)

这部分定义了Claude Code在执行操作时必须遵守的硬性规则。常见的约束包括:build command(构建命令,Claude Code在需要重新构建项目时会自动调用)、test command(测试命令,用于运行测试验证代码正确性)、lint command(代码检查命令)、format command(代码格式化命令)。这些约束确保AI生成的代码符合项目的质量要求。

注意:约束条件中的命令在Claude Code的全局配置中定义,如果CLAUDE.md中也定义了同名约束,CLAUDE.md中的定义会覆盖全局配置。

4. Skills定义

Skills是CLAUDE.md最强大的特性之一。它允许开发者定义自定义的斜杠命令,通过简单的命令触发复杂的提示词模板。例如定义一个/test命令来运行测试并分析结果,或者定义一个/review命令来进行代码审查。Skills定义使用YAML格式,位于文件末尾的## skills节点下。

总结:CLAUDE.md的四大结构模块——项目概述(What)、编码规范(How)、约束条件(Rules)、Skills定义(Shortcuts)——共同构成了Claude Code高效工作的基础。

三、Skills的YAML定义格式

Skills定义是CLAUDE.md中最体现灵活性的部分。它采用YAML格式的数组结构,每个Skill包含以下几个字段:

字段名 类型 是否必填 说明
name 字符串 Skill的显示名称,在斜杠命令列表中会展示给用户
command 字符串 触发Skill的斜杠命令名称(不带斜杠前缀)
prompt 字符串 Skill执行时发送给Claude的提示词模板,支持多行文本
description 字符串 可选描述文本,帮助用户理解该Skill的用途

以下是一个完整的CLAUDE.md Skills定义示例:

# CLAUDE.md Skills定义示例 ## skills - name: 运行测试 command: test prompt: | 在项目中运行测试并分析结果... - name: 代码审查 command: code-review prompt: | 对以下代码进行审查...

在这个示例中,定义了两个Skill:运行测试(对应/test命令)和代码审查(对应/code-review命令)。每个Skill都包含一个多行的prompt模板,当用户在Claude Code中输入对应的斜杠命令时,对应的prompt会被发送给Claude,指导它以特定的方式完成任务。

技巧:prompt字段支持多行文本(使用YAML的|符号),可以编写非常详细的指令模板。建议在prompt中包含具体的输出格式要求、需要考虑的边界情况、以及期望的检查清单。

四、多Level的CLAUDE.md

CLAUDE.md支持多层级配置,在不同的位置放置CLAUDE.md文件可以控制不同的作用范围:

项目级 CLAUDE.md
放在项目根目录,定义该项目特有的Skills和规范。只对该项目生效,是团队协作的标准配置方式。
用户级 CLAUDE.md
放在~/.claude/目录,定义个人通用的Skills和偏好。对所有项目生效,适合配置个人工作流模板。
合并执行
Claude Code会合并项目级和用户级的CLAUDE.md,将两者的Skills列表合并在一起。用户可以使用所有层级定义的斜杠命令。
优先级覆盖
当项目级和用户级定义了同名的命令时,项目级的Skill会优先执行。这允许项目强制覆盖用户的个人偏好。

这种多层级设计非常灵活:团队可以在项目级CLAUDE.md中定义与项目紧密相关的Skill(如"部署到测试环境"、"运行项目特定测试"),而开发者可以在用户级CLAUDE.md中定义个人常用的通用Skill(如"创建React组件"、"编写API文档")。两级合并后,开发者既能使用项目提供的标准化工具,又能保留个人工作流习惯。

实践建议:项目级CLAUDE.md应该只包含项目相关的内容,不要放入个人偏好。个人通用的Skills放在~/.claude/CLAUDE.md中,实现关注点分离。

五、编写高质量CLAUDE.md的最佳实践

编写高质量的CLAUDE.md需要遵循一些重要的原则,以下是经过实践检验的最佳实践:

1. 保持简洁聚焦

CLAUDE.md不是文档手册,不需要面面俱到。聚焦于Claude Code实际需要的信息:项目的核心上下文、必须遵守的规则、和常用的操作命令。避免将整个项目的README内容复制进来,Claude Code会自动读取项目中的关键配置文件。

2. 使用清晰一致的命名

Skill的命令名称应该简洁、直观、符合直觉。使用连字符(-)分隔多个单词,保持团队内部统一的命名风格。例如run-testsexecute-all-unit-tests-and-integration-tests更合适。

3. 为每个Skill提供描述

建议为每个Skill添加description字段,哪怕只有一句话。当用户在Claude Code中输入斜杠时,description会作为命令的说明文字显示,帮助用户快速理解每个命令的用途。

4. 避免prompt过于冗长

Skill的prompt应该清晰明了,但不必事无巨细。过长的prompt反而会稀释关键信息。建议将prompt控制在合理长度,聚焦于任务的目标和输出格式要求。如果确实需要很长的指令,可以考虑拆分为多个Skill。

5. 定期审查和更新Skills

随着项目演进,一些Skill可能变得过时或不准确。建议定期审查CLAUDE.md中的Skills列表,删除不再需要的Skill,更新prompt中的项目特定信息(如文件路径、API地址等),确保每个Skill都能正常工作。

6. 团队共享标准模板

对于团队项目,建议创建一份标准的CLAUDE.md模板,包含项目通用的章节结构、编码规范和约束条件。每个开发者可以在此基础之上添加个人级别的Skills。这能确保所有团队成员使用一致的AI辅助工作流。

推荐做法:将CLAUDE.md纳入版本管理,通过代码审查来保证其质量。每次修改CLAUDE.md都应该像修改源代码一样经过review流程。

核心总结:优秀的CLAUDE.md = 简明扼要的项目概述 + 可执行的约束条件 + 精心设计的Skills命令集。它不是写一次就完事的文档,而是伴随项目持续进化的"AI协作手册"。