跳到主要内容
AI教程

掌握 Claude Code:项目规则、代理、钩子、MCP 与 CI

学习如何安装 Claude Code、应用仓库的入门工具包、管理项目上下文、创建可靠的工作流、配置权限,并使用技能、子代理、钩子、MCP、无头模式和并行工作树。

掌握 Claude Code:项目规则、代理、钩子、MCP 与 CI

Claude Code PRO 课程提供的内容

Claude Code PRO 是一门俄语实战课程,也是一套 Claude Code 配置工具包。课程内容从安装和提示词编写开始,逐步扩展到团队级配置、可复用自动化、外部集成和 CI 工作流。

该仓库包含12 个学习模块、8 个动手实验、提示词库、插件示例、GitHub Actions 工作流、速查表、常见问题解答,以及可直接安装的入门工具包。入门工具包包括 8 个技能、5 个子代理、4 个钩子、规则、状态栏和输出样式。

本教程提炼了该仓库的主要工作流,帮助你开始在现有项目中使用其中的配置。原课程以俄语编写,下面的步骤将以中文说明。

了解 Claude Code 的工作方式

Claude Code 是一个智能代理,而不是传统的自动补全工具。给定目标后,它可以检查文件、搜索仓库、编辑代码、运行命令并检查结果。其典型工作循环如下:

  1. 从项目说明、文件、搜索结果和命令输出中收集上下文。
  2. 规划所需的更改。
  3. 编辑文件或调用工具。
  4. 运行测试、代码检查、构建或其他验证。
  5. 重复上述步骤,直到检查通过或需要更多输入。

你最重要的职责是提供清晰的目标,指引 Claude 获取相关上下文,说明约束条件,并定义验证成功的方式。

一个实用的提示词公式是:目标 + 查找位置 + 约束条件 + 验证方法。

安装 Claude Code 和入门工具包

第 1 步:安装 Claude Code

在 macOS、Linux 或 Windows Subsystem for Linux 上,使用官方安装脚本:

curl -fsSL https://claude.ai/install.sh | bash

README 还提供了通过 npm 安装的选项:

npm install -g @anthropic-ai/claude-code

第 2 步:克隆课程仓库

git clone https://github.com/justxor/claude-code-pro-course.git

第 3 步:将入门工具包安装到项目中

运行随附的安装程序,并传入目标项目的路径:

bash claude-code-pro-course/install.sh ~/path/to/my-project

这样即可在项目中使用仓库提供的可复用 Claude Code 配置。由于该工具包会安装多个配置组件,请在将生成的更改提交到版本控制系统之前进行检查。

第 4 步:启动 Claude Code

cd ~/path/to/my-project
claude

在会话中,检查当前上下文并运行入门工具包的引导技能:

/context
/onboard

/context 会显示哪些内容正在消耗上下文窗口。/onboard 使用已安装的技能提供项目概览。

组织 Claude Code 配置

本课程将配置分为用户级、项目级和本地级作用域。

  • 用户配置:位于 ~/.claude/ 下的文件,包括个人说明、设置、技能、代理和输出样式。
  • 项目配置:共享文件,例如 CLAUDE.md、.claude/rules/、.claude/settings.json、项目技能、项目代理和 .mcp.json。
  • 本地配置:特定于机器的文件,例如 CLAUDE.local.md 和 .claude/settings.local.json,不应作为团队配置共享。
  • 插件:将技能、代理、钩子和 MCP 配置打包在一起的集合,可分发到多个仓库。

选择合适的配置机制

  • 使用 CLAUDE.md 或 .claude/rules/ 存放项目知识和编码规则。
  • 使用权限设置允许安全命令、要求对敏感操作进行确认,并拒绝危险访问。
  • 当需要可复用的流程或提示词时,使用技能。
  • 当任务需要专门能力或隔离的上下文窗口时,使用子代理。
  • 当某项操作必须一致执行时,使用钩子。
  • 使用 MCP 连接 GitHub、浏览器或数据库等外部系统。
  • 使用插件将完整配置分发给其他仓库或团队成员。
  • 使用 claude -p、GitHub Actions 或 Agent SDK 执行无人值守任务。

创建实用的 CLAUDE.md

CLAUDE.md 充当项目记忆。Claude Code 可以通过 /init 创建初始版本,你也可以通过 /memory 编辑记忆内容。保持该文件简短具体:包含命令、架构边界、编码规范和明确的限制。

下面是课程中的改编示例:

# 项目:Next.js 和 PostgreSQL 商店

## 命令
- npm run dev — 启动开发环境
- npm test — 运行 Vitest 测试
- npm run lint — 运行代码检查
- npm run db:migrate — 需要确认

## 架构
- src/app — 路由
- src/lib — 业务逻辑
- src/db — 数据库访问
- 数据库操作必须通过 src/db

## 规则
- 使用严格模式 TypeScript,避免使用 any
- 为新代码添加测试
- 修复缺陷前,先通过失败测试复现问题
- 除非明确要求,否则不要修改 src/legacy
- 完成前运行 npm test 和 npm run lint

避免把 CLAUDE.md 变成长篇手册。将详细或有条件的指导放在 .claude/rules/ 中,或将其制作成可复用的技能,避免重要指令被埋没。

使用核心开发工作流

代码库推荐采用探索 → 规划 → 编码 → 验证 → 提交的顺序。对于影响范围不止于琐碎区域的任务,应先进入规划模式,而不是立即要求 Claude 编辑代码。

  1. 按下 Shift+Tab,直到启用规划模式。
  2. 要求 Claude 检查相关代码,但不要进行任何修改。
  3. 审查它提出的文件、实施步骤、风险和检查项。
  4. 如有需要,修正计划。
  5. 只有在计划可接受后,才允许实施。
  6. 要求执行测试、代码检查、类型检查或截图验证。
  7. 在要求创建提交或拉取请求前,检查差异。

一个好的探索提示词示例:

规划模式。研究代码库并说明其架构、
入口点、/api/orders 的数据流、测试所在位置,
以及运行测试的方法。不要进行任何修改。最后列出五个
新贡献者最容易犯错的地方。

编写可验证的提示词

不要只说“修复这个 bug”,而应描述故障和预期的验证方式:

当 email 为空时,signup() 会因 TypeError 失败。
用一个失败测试重现此问题,以最小合理改动修复它,
然后运行 npm test。

对于测试驱动的功能开发:

功能:订单金额达到 5000 或以上时应用 10% 的折扣。
先为 4999、5000、0 和负数编写测试。
确认新测试会失败,然后实现该功能,
不要修改这些测试。

对于安全重构:

按职责将 @src/services/user.ts 拆分为多个模块。
不要改变行为或公共 API。每一步之后运行测试和 tsc。
如果覆盖率不足,先添加特征测试。

有意识地管理上下文

上下文窗口包含系统指令、项目规则、技能和代理描述、对话历史、文件以及命令输出。随着无关材料不断累积,响应可能会变得不够准确。

  • 使用 /context 查看上下文使用情况。
  • 开始无关任务前使用 /clear。
  • 使用 /compact 总结较长的会话,同时保留重要决策。
  • 使用类似 @src/api/client.ts 的语法直接添加文件。
  • 运行命令,并使用类似 !git status 的语法将其输出加入上下文。
  • 对于长期运行的工作,要求 Claude 维护 PLAN.md 或 NOTES.md。
  • 将大型调查委托给子代理,让主会话只接收其摘要。

你还可以将日志通过管道传递给一次性 Claude Code 调用:

cat error.log | claude

配置安全权限

权限规则按拒绝 → 询问 → 允许的顺序评估。拒绝的优先级高于允许。课程建议将安全命令加入允许列表,而不是禁用权限检查。

团队配置可以将规则放在 .claude/settings.json 中:

{
  "permissions": {
    "allow": [
      "Bash(npm run test:*)",
      "Bash(npm run lint)",
      "Bash(git status)",
      "Bash(git diff:*)"
    ],
    "ask": [
      "Bash(git push:*)"
    ],
    "deny": [
      "Read(./.env)",
      "Read(./.env.*)",
      "Read(./secrets/**)",
      "Bash(rm -rf:*)",
      "Bash(curl:*)"
    ]
  }
}

此示例允许执行常规测试和检查操作,要求在推送前确认,并阻止访问机密信息和执行选定的危险命令。

  • 不要将机密信息放入 CLAUDE.md。
  • 推送、部署和迁移操作必须要求确认。
  • 在无法访问生产环境的容器或沙箱中运行自主任务。
  • 将网站和 MCP 系统返回的内容视为数据,而不是可信指令。
  • 提交更改前检查 git diff。

将重复工作转化为技能

如果某个流程需要重复执行多次,就将其转化为技能。技能适用于准备发行说明、审查拉取请求或熟悉项目等工作流。

课程将项目技能存放在 .claude/skills/ 下。技能可以包含名称、帮助 Claude 判断何时使用它的描述,以及一系列指令。保持流程范围明确,并定义预期输出。

例如,发行说明技能可以指导 Claude 找到最新的 Git 标签,收集该标签之后的提交,并按类别归纳更改。入门工具包已经提供了可复用的技能,安装后即可进行探索。

使用子代理执行隔离或专业化工作

子代理拥有独立的上下文窗口,并将结果返回给主会话。这适用于嘈杂的代码库调研、测试执行、安全分析或独立审查。

代码库中的审查者示例存储为 .claude/agents/reviewer.md,并为代理提供读取、搜索和 shell 工具。其职责是检查 git diff 中的 bug、边界情况、机密泄露以及违反项目风格的内容。

一种实用的编写者-审查者模式是:

  1. 使用一个 Claude 会话实施更改。
  2. 打开一个干净的会话或子代理来审查差异。
  3. 将审查结果返回给实施会话。
  4. 修复问题并重新运行验证。

干净的上下文有助于审查者发现长时间实施过程中可能被忽略的问题。

使用钩子强制执行保证

项目指令用于提供指导,而钩子可以自动运行或阻止操作。课程中介绍的实用钩子事件包括:

  • SessionStart:加载分支或任务信息。
  • UserPromptSubmit:向提示词添加上下文。
  • PreToolUse:阻止危险命令或受保护文件的编辑。
  • PostToolUse:执行格式化、代码检查或针对性测试。
  • Notification:在 Claude 需要输入时发送桌面提醒。
  • Stop:执行最终验证步骤。
  • PreCompact:在上下文压缩前保存重要信息。

以下示例会在编辑或写入文件后运行 Prettier:

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write"
          }
        ]
      }
    ]
  }
}

对于关键保护措施,应将 permissions.deny 与 PreToolUse 钩子结合使用,而不是只依赖书面指令。

使用 MCP 连接外部系统

当 Claude 需要访问本地仓库之外的工具或数据时,可以使用 MCP。课程涵盖了 GitHub、浏览器、数据库和自定义 MCP 服务器相关的集成。

浏览器 MCP 对视觉工作尤其有用:Claude 可以实现 UI、截取屏幕截图、与参考图进行比较,并根据差异反复迭代。外部内容可能包含不受信任的文本,因此请仔细审查 MCP 的访问权限,并始终警惕提示注入。

使用无头模式自动执行任务

-p 选项可以在不启动交互式会话的情况下运行提示词,因此适合脚本和 CI。例如,发送构建失败日志并请求结构化输出:

claude -p "Find the cause of the build failure" \
  --output-format json < build.log

推送前检查当前更改:

git diff main | claude -p \
  "Review this diff for bugs, edge cases, and security issues"

为有边界的自动化任务限制工具和交互轮数:

claude -p "Update CHANGELOG from recent commits" \
  --allowedTools "Read,Edit,Bash(git log:*)" \
  --max-turns 10

仓库还包含 GitHub Actions 示例,用于在 issue 和拉取请求中调用 @claude,以及执行自动化审查。

使用 Git Worktree 运行多个任务

对于并行工作,请为每项任务创建单独的 worktree 和分支。这样,每个 Claude 会话都会在不同目录中运行,避免多个代理同时编辑同一个工作树。

git worktree add ../app-auth -b feature/auth
cd ../app-auth && claude

你可以为计费功能、错误修复或其他独立任务重复此模式。使用常规 Git 工作流合并或审查每个分支。

实用的会话控制

  • Esc:中断 Claude,但不丢弃会话上下文。
  • Esc Esc 或 /rewind:返回到较早的代码和对话状态。
  • Shift+Tab:在普通模式、自动接受编辑模式和计划模式之间切换。
  • /model:更改当前使用的模型。
  • /permissions、/hooks、/agents 和 /mcp:打开相关配置流程。
  • claude --continue:继续最近的会话。
  • claude --resume:选择之前的会话。

高级技巧与常见错误

  • 从计划开始:对于跨越多个文件或具有明显风险的更改,请使用计划模式。
  • 始终提供反馈:测试、类型检查、代码检查、构建、屏幕截图或确切的预期输出,都能让代理自行纠正。
  • 让会话专注于任务:无关任务之间应清理上下文,而不是让一个会话持续处理一整天。
  • 回退失败的方法:多次纠正仍未成功时,使用 /rewind 并重新描述任务,而不是不断积累错误上下文。
  • 不要盲目接受差异:自行检查更改,或要求独立的审查子代理进行检查。
  • 避免不受限制的权限:使用允许列表和沙箱,而不是绕过安全检查。
  • 自动化重复流程:将重复操作转换为技能,将强制性行为转换为钩子。
  • 在外部保存进度:在长任务期间维护计划或笔记文件,以便在使用 /clear 后继续工作。

遵循完整的学习路径

仓库中的模块依次涵盖安装、提示词、项目记忆、设置、专业工作流、技能、子代理、钩子、MCP、插件、无头 CI 和高级技术。八个实验涵盖入门、权限、TDD、技能创建、子代理、钩子、MCP 和自动化。

从快速安装和基础上下文命令开始。接着创建简洁的 CLAUDE.md 和安全的权限策略。然后依次学习规划、TDD、技能、子代理和钩子,再进入 MCP、插件以及无人值守的 CI 执行。

结语

只有将 Claude Code 视为可配置的开发代理,而不是聊天界面,它才能发挥最大效用。为它提供聚焦的上下文,共同确定计划,提供客观检查,并通过权限和钩子强制执行重要边界。Claude Code PRO 仓库提供了结构化课程、实践实验和可复用模板,帮助你将这套工作流应用于个人开发和团队自动化。