C
发布于 2026/09/03 · 阅读 7

Claude Code 作为日常驱动:CLAUDE.md、技能、子代理、插件和MCP

  • #Claude Code
  • #AI辅助编程
  • #开发效率
  • #工具配置
  • #CLAUDE.md
Claude Code 作为日常驱动:CLAUDE.md、技能、子代理、插件和MCP

目录

  1. Claude Code 超越基础
  2. 正确理解 .claude 目录
  3. Boris 写 CLAUDE.md 的方式 3.1 Claude Code 团队真实的 CLAUDE.md 3.2 值得学习的经典 CLAUDE.md 文件
  4. CLAUDE.local.md 作为日常驱动
  5. 深度技能 5.1 技能到底是什么 5.2 编写一个真正的技能:Go API 约定 5.3 值得安装的流行技能
  6. 构建自定义子代理 6.1 演练 /pr-review 代理 6.2 值得借鉴的流行子代理
  7. 插件与市场
  8. 不常用的 Claude Code 命令 8.1 /goal,Ralph 内置的循环
  9. MCP 作为强力工具 9.1 一个真实的 Obsidian 工作流
  10. 优化你的日常工作流
  11. Anthropic 团队的建议
  12. 资源 结语

Claude Code 是那种普通用户与深度用户之间差距巨大的工具。普通用户输入提示、接受建议,把它当作更高级的自动补全。而日常驱动者将它当作具有记忆、自定义命令、并行会话和随时间积累的项目设置的可编程代理。本指南面向第二类人,假设你已经知道在终端输入 claude 会做什么。

1. Claude Code 超越基础

一旦你不再把 Claude Code 看作一个“提示-等待”的聊天机器人,而是当作一个需要护栏的自主代理,你的工作流就会发生转变。Boris Cherny 和 Anthropic 团队最重要的原则是:给 Claude 一种验证自己工作的方法。没有这个,你就是唯一的反馈循环。有了它,Claude 会迭代直到事情真正运作,Boris 说仅此一项就能带来 2-3 倍的质量提升。

几个能改变你日常操作的模式:

  • 探索,然后计划,再编码。 计划模式(按两次 Shift+Tab)让 Claude 进入只读探索。读取文件、追踪流程、理解数据模型,然后获取计划,最后执行。小修复可跳过计划;任何涉及多个文件的事情都应使用计划。
  • 将计划模式当作设计文档。 让一个 Claude 写计划,然后启动第二个 Claude 在新会话中以高级工程师身份评审它,没有上下文偏见,从而真正发现漏洞。如果实现偏离了方向,返回计划模式并重新计划,加入验证步骤。
  • 引用,而非描述。 不要说“看看 auth 模块”,而是输入 @src/auth/login.py。不要粘贴错误,而是通过管道传递:cat error.log | claude。精确的上下文每次都能胜过模糊的描述。
  • 委派,而非结对编程。 Cat Wu(Claude Code 团队)说:“如果你像对待要委派的工程师,而不是逐行指导的结对程序员,模型表现最佳。”先写好清晰的概要,然后让它运行。
  • 编辑计划。 按 Ctrl+G 在编辑器中打开 Claude 的计划并在它继续之前进行调整。计划只是文本,所以在它变成代码前调整它。
  • 从错误中学习。 当 Claude 犯错时,在提示末尾加上“更新 CLAUDE.md 以免重复此错误”。Boris 称 Claude “从自身失败中为自己编写规则表现出奇的好”。这个习惯的复利效应超过本指南中的任何其他习惯。

2. 正确理解 .claude 目录

大多数人打开 .claude/ 一次,看到 CLAUDE.md,就再也不看了。实际上它是一个分层配置系统。

两个作用域:

  • 项目作用域 存在于仓库内的 .claude/ 中,提交到 git 以便团队共享。
  • 全局作用域 存在于 ~/.claude/ 中,适用于你机器上的所有项目。

心智模型:项目文件描述项目,全局文件描述你。

文件作用域提交作用
CLAUDE.md项目和全局每次会话加载的指令
CLAUDE.local.md仅项目否,gitignore你的私有项目笔记
settings.json项目和全局权限、钩子、环境变量、模型默认值
settings.local.json仅项目个人覆盖,自动 gitignore
.mcp.json仅项目团队共享的 MCP 服务器
skills/<name>/SKILL.md项目和全局通过 /name 调用的可重用提示
commands/*.md项目和全局单文件斜杠命令
agents/*.md项目和全局子代理定义
rules/*.md项目和全局主题范围内的指令,可选路径限制

典型布局:

my-repo/
├── .claude/
│   ├── settings.json
│   ├── agents/
│   │   ├── pr-review.md
│   │   └── test-writer.md
│   ├── skills/
│   │   └── api-conventions/SKILL.md
│   └── rules/
│       ├── frontend.md        # 路径限制到 src/frontend/
│       └── migrations.md      # 路径限制到 db/migrations/
├── CLAUDE.md                  # 已检查,团队共享
├── CLAUDE.local.md            # gitignore,个人
└── .mcp.json                  # 团队共享的 MCP 服务器

几个容易忽略的点:

  • CLAUDE.md 会级联。 在单体仓库中,当你在 billing 服务中工作时,root/CLAUDE.mdroot/services/billing/CLAUDE.md 都会加载。对于不同文件夹有不同约定的代码库非常强大。
  • rules/*.md 按路径限制。 特定于 migrations 文件夹的指导不应放在 CLAUDE.md 中膨胀每个会话,而应放在 .claude/rules/migrations.md 中并加上 glob。
  • 技能优于命令。 .claude/commands/*.md.claude/skills/<name>/SKILL.md 都创建斜杠命令,但技能支持辅助文件、禁用模型调用、允许的工具和代理覆盖。新工作应放在 skills/。
  • 清理。 运行 claude project purge ~/path/to/repo --dry-run 查看 Claude 为项目保存的本地状态,在移交笔记本电脑前很有用。

3. Boris 写 CLAUDE.md 的方式

CLAUDE.md 在每次会话开始时加载。搞错了,Claude 会重复同样的错误。搞对了,同样的提示会产生明显更好的输出。

Boris 直接指出两件比其余更重要的事:

  • 保持简短。 长文件会埋没重要规则。对每一行问:“删除这行会导致 Claude 犯错吗?”如果不是,就删掉。
  • 让 Claude 为自己编写规则。 每当 Claude 做错事,告诉它:“更新 CLAUDE.md 以免重复此错误。”Claude 非常擅长将自己的错误提炼成精确的规则。坚持几周,这个文件就会成为项目所有陷阱的精选列表。

3.1 Claude Code 团队真实的 CLAUDE.md

Boris 分享了 Claude Code 团队在其仓库中实际使用的 CLAUDE.md。整个团队每周多次贡献:

# Development Workflow
**Always use `bun`, not `npm`.**

# 1. Make changes
# 2. Typecheck (fast)
bun run typecheck
# 3. Run tests
bun run test -- -t "test name"   # Single suite
bun run test:file -- "glob"      # Specific files
# 4. Lint before committing
bun run lint:file -- "file1.ts"
bun run lint
# 5. Before creating PR
bun run lint:claude && bun run test

这就是整个文件。Claude 无法猜测的构建命令、确切的顺序、单测试调用、PR 前的例行程序。没有风格偏好,没有代码库游览,没有陈词滥调。

Boris 还在 PR 评论中使用 @claude 让 Claude 直接提交规则:

 nit: use a string literal, not a ts enum
 @claude add to CLAUDE.md to never use enums, always prefer literal unions

他称之为“复利工程”,每次 PR 审查都成为 CLAUDE.md 的改进。

一个遵循相同哲学的模板:

# Code style
- Use ES modules (import/export), not CommonJS (require)

# Workflow
- Always use `bun`, not `npm`
- Run `bun run typecheck` before claiming done
- Never push to main directly. Always open a PR.

# Architecture
- All API routes go through src/api/middleware/auth.ts
- New database queries go in src/db/queries/. No inline raw SQL.

# Gotchas
- `User` and `UserRecord` are distinct types. UserRecord is the DB row, User is the runtime object.
- `formatCurrency` assumes USD. For international use `formatCurrencyByLocale`.

“Gotchas”部分才是魔法。每个条目都是 Claude 犯过的错误,在发生的瞬间被捕获。

什么不该放在 CLAUDE.md 中:标准语言约定、逐文件代码库描述、长教程、API 文档、任何经常变化的东西。

技巧: 像 IMPORTANT 或 YOU MUST 这样的词能提高遵循度。谨慎使用它们以保持分量。你可以通过 @path 语法导入其他文件来保持 CLAUDE.md 简短同时引入细节:See @README.md for project overview and @package.json for scripts. @~/.claude/my-preferences.md

3.2 值得学习的经典 CLAUDE.md 文件

  • mattpocock/skills CLAUDE.md:技能编写和测试的约定
  • anthropics/claude-code-action:Anthropic 自己的仓库,与内部工具同等对待
  • awesome-claude-code:跨语言生态系统的数十个公开 CLAUDE.md 文件链接
  • claudelog.com:按技术栈组织的社区示例

4. CLAUDE.local.md 作为日常驱动

CLAUDE.local.md 与 CLAUDE.md 相邻,以相同方式加载,但永远不会离开你的机器。将其添加到 .gitignore。

我使用它的方式:每次打开 PR 后,评审者会留下评论。我尝试记住它们,但我一看到就立即倾倒到 CLAUDE.local.md 中。随着时间的推移,它变成了一个针对我最常收到的反馈的个人化规则文件。

# Personal review notes (private)
# From PR feedback
- New SQS consumers need a DLQ and alarms in the same PR
- Use `Optional<T>` over null returns
- Tests for new endpoints must include the auth-failure case
- Prefer named tuples over plain dicts for return types with 3+ fields

# My own quirks to correct
- Stop using `console.log`; use the project logger instead
- Always update the OpenAPI spec when adding endpoints

每次会话加载后,Claude 已经知道要包含 auth-failure 测试和更新 OpenAPI 规范,无需我提及。几周内,我 PR 上的挑剔评论明显减少了。

技巧: 将两个部分明确分开:项目特定反馈和个人需要纠正的习惯。混合使用会使以后修剪文件更困难。 技巧: 几周后修剪。已经成为肌肉记忆的东西可以去掉。文件应该捕获仍在学习的内容,而不是你已经自动完成的事情。

5. 深度技能

技能让 Claude Code 从“一个能做任何事的代理”变成“一个为你的项目特别擅长做某些事情的代理”。它们是可重用专业知识的单元。

5.1 技能到底是什么

技能是 .claude/skills/<name>/(项目)或 ~/.claude/skills/<name>/(全局)下的文件夹,包含带有 frontmatter 和指令的 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 in two or three bullet points, then list any risks: missing error handling, hardcoded values, tests that need updating.

保存到 ~/.claude/skills/summarize-changes/SKILL.md/summarize-changes 就在每个会话中可用。

技能强大的三件事:

  • 渐进式披露。 Claude 在会话开始时只加载 frontmatter 描述(每个约 100 token)。完整的 SKILL.md 和辅助文件仅在技能真正需要时才加载。
  • 技能是文件夹,不是文件。 捆绑模板、参考文档、脚本、配置。SKILL.md 只是入口点。
  • 内联 shell。! 开头的行运行命令并在调用时注入输出。

Frontmatter 支持有用的额外功能:

---
name: my-skill
description: When to use this skill
disable-model-invocation: true   # 仅当用户显式键入 /my-skill 时运行
allowed-tools: Read, Grep, Bash
agent: read-only
---

技巧: 对于有副作用的技能使用 disable-model-invocation: true。你希望 /ship 仅在显式键入时部署,而不是在 Claude 认为相关时。

5.2 编写一个真正的技能:Go API 约定

一个完整的技能,用于 Go 服务团队,涵盖约定、陷阱和新的 HTTP 处理程序的脚手架……

(注:原文在此处截断,但根据上下文,后续应包含一个实际的 SKILL.md 示例和说明。由于无法获取完整内容,翻译到此为止。)

7 阅读0 评论0 点赞

评论

登录 / 注册即可发布评论!
暂无评论,成为第一个发表评论的用户吧。