Claude Code 作为日常驱动:CLAUDE.md、技能、子代理、插件和MCP
- #Claude Code
- #AI辅助编程
- #开发效率
- #工具配置
- #CLAUDE.md
目录
- Claude Code 超越基础
- 正确理解 .claude 目录
- Boris 写 CLAUDE.md 的方式 3.1 Claude Code 团队真实的 CLAUDE.md 3.2 值得学习的经典 CLAUDE.md 文件
- CLAUDE.local.md 作为日常驱动
- 深度技能 5.1 技能到底是什么 5.2 编写一个真正的技能:Go API 约定 5.3 值得安装的流行技能
- 构建自定义子代理 6.1 演练 /pr-review 代理 6.2 值得借鉴的流行子代理
- 插件与市场
- 不常用的 Claude Code 命令 8.1 /goal,Ralph 内置的循环
- MCP 作为强力工具 9.1 一个真实的 Obsidian 工作流
- 优化你的日常工作流
- Anthropic 团队的建议
- 资源 结语
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.md和root/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 示例和说明。由于无法获取完整内容,翻译到此为止。)
评论