当前位置: 首页 > news >正文

Claude Code使用:如何写一个好的 CLAUDE.md

CLAUDE.md 像是你和 Claude 之间的协作契约,不是团队文档,也不是知识库,里面只放那些每次会话都得成立的事。
一开始甚至可以什么都不写。先用起来,等你发现自己老是在重复同一件事,再把它补进去。加法也不复杂,输入 # 可以把当前对话里的内容直接追加进 CLAUDE.md,或者直接告诉 Claude「把这条加到项目的 CLAUDE.md 里」,它会知道该改哪个文件。

应该放什么

  • 怎么 build、怎么 test、怎么跑(最核心)
  • 关键目录结构与模块边界
  • 代码风格和命名约束
  • 那些不明显的环境坑
  • 绝对不能干的事(NEVER 列表)
  • 压缩时必须保留的信息(Compact Instructions)

不该放什么

  • 大段背景介绍
  • 完整 API 文档
  • 空泛原则,如"写高质量代码"
  • Claude 通过读仓库即可推断的显然信息
  • 大量背景资料和低频任务知识(这些放到 Skills)

高质量模板

markdown

# Project Contract ## Build And Test - Install: `pnpm install` - Dev: `pnpm dev` - Test: `pnpm test` - Typecheck: `pnpm typecheck` - Lint: `pnpm lint` ## Architecture Boundaries - HTTP handlers live in `src/http/handlers/` - Domain logic lives in `src/domain/` - Do not put persistence logic in handlers - Shared types live in `src/contracts/` ## Coding Conventions - Prefer pure functions in domain layer - Do not introduce new global state without explicit justification - Reuse existing error types from `src/errors/` ## Safety Rails ## NEVER - Modify `.env`, lockfiles, or CI secrets without explicit approval - Remove feature flags without searching all call sites - Commit without running tests ## ALWAYS - Show diff before committing - Update CHANGELOG for user-facing changes ## Verification - Backend changes: `make test` + `make lint` - API changes: update contract tests under `tests/contracts/` - UI changes: capture before/after screenshots ## Compact Instructions Preserve: 1. Architecture decisions (NEVER summarize) 2. Modified files and key changes 3. Current verification status (pass/fail commands) 4. Open risks, TODOs, rollback notes

用起来其实不复杂:每次都要知道的放 CLAUDE.md,只对部分文件生效的放 rules,只在某类任务中需要的放 Skills。

让 Claude 维护自己的 CLAUDE.md

我最喜欢的一个技巧:每次纠正 Claude 的错误后,让它自己更新 CLAUDE.md:

“Update your CLAUDE.md so you don’t make that mistake again.”

Claude 在给自己补这类规则时其实还挺好用,用久了确实越来越少犯同样的错。不过也要定期 review,时间一长总会有些条目慢慢过时,当初有用的限制现在未必还适合,这件事后面第 14 节有个更系统的做法。

环境透明比你想象中重要

Claude Code 调用的都是真实的 shell、git、package manager 和本地配置。这里面只要有一层不透明,它就只能开始猜,一猜可靠性就掉。这不是 Claude Code 特有的问题,很多 agent 都一样。

所以我后来很快就在 terminal 里加了个 doctor 命令,把环境状态、依赖和配置情况先统一收上来,输出一份结构化的健康报告。Claude Code 开始做事前先跑一次 doctor,确实能省掉很多"环境没搞清楚就开干"的问题。
另外我还发现,假如 CLI 本身就有 init、config、reset 这类语义清楚的子命令,Claude Code 用起来会稳不少,比让它自己去猜配置文件怎么摆要靠谱。先把状态收敛住,再暴露编辑入口,顺序一反过来就很容易乱。

混合语言项目的 Hooks 实践

两套语言、两套检查,其实挺适合用 Hooks 按文件类型分别触发:

json

{"hooks":{"PostToolUse":[{"matcher":"Edit","pattern":"*.rs","hooks":[{"type":"command","command":"cargo check 2>&1 | head -30","statusMessage":"Checking Rust..."}]},{"matcher":"Edit","pattern":"*.lua","hooks":[{"type":"command","command":"luajit -b $FILE /dev/null 2>&1 | head -10","statusMessage":"Checking Lua syntax..."}]}]}}

每次编辑完立刻知道有没有编译错误,比"跑了一堆才发现最开始就挂了"舒服得多。

完整的工程化布局参考

假如有同学想给自己项目配一套比较完整的 Claude Code 工程布局,可以参考这个结构,不用全做,按需裁剪:

Project/ ├── CLAUDE.md ├── .claude/ │ ├── rules/ │ │ ├── core.md │ │ ├── config.md │ │ └── release.md │ ├── skills/ │ │ ├── runtime-diagnosis/ # 统一收集日志、状态和依赖 │ │ ├── config-migration/ # 配置迁移回滚防污 │ │ ├── release-check/ # 发布前校验、smoke test │ │ └── incident-triage/ # 线上故障分诊 │ ├── agents/ │ │ ├── reviewer.md │ │ └── explorer.md │ └── settings.json └── docs/ └── ai/ ├── architecture.md └── release-runbook.md

全局约束(CLAUDE.md)、路径约束(rules)、工作流(skills)和架构细节各归各位,Claude Code 跑起来会稳很多。假如你同时维护多个项目,可以把稳定的个人基线放在 ~/.claude/,各项目的差异放在项目级 .claude/,通过同步脚本分发,不同项目之间就不会互相污染了。

常见反模式

http://www.jsqmd.com/news/622595/

相关文章:

  • 闲置购物卡回收攻略:轻松变现你的沃尔玛购物卡! - 团团收购物卡回收
  • 分析惠驰舒适家实力如何,江苏地区其性价比高不高 - 工业推荐榜
  • Qt桌面应用集成AI:开发一个带PyTorch模型推理功能的跨平台图像处理软件
  • Tessent MBIST实战:从Memory分组策略到DFTspec优化配置
  • Python3.11镜像场景应用:一键搭建AI实验环境,支持PyTorch/TensorFlow
  • Qwen-Image-Edit自动化测试:图像质量评估体系构建
  • Cassandra集群配置详解:从cassandra.yaml文件到种子节点(seed)的保姆级解读
  • Listen1音乐聚合:打破平台壁垒,一站式畅听全网免费音乐
  • Qwen2.5-7B-Instruct快速入门:vLLM部署+Chainlit界面一步到位
  • 终极魔兽争霸3兼容性解决方案:WarcraftHelper 完全指南 [特殊字符]
  • 如何快速上手空洞骑士模组管理:Lumafly的完整入门指南
  • OBS多平台直播插件完整指南:如何一键实现多平台同步推流
  • SMUDebugTool:解锁AMD Ryzen处理器性能潜力的专业调试工具
  • Harness engineering 深度解析
  • 零流程税时代:效率取代规模,成为终极竞争壁垒
  • NVIDIA Profile Inspector深度解析:解锁显卡驱动隐藏性能的终极解决方案
  • 【数据结构与算法】第37篇:图论(一):图的存储结构(邻接矩阵与邻接表)
  • AssetStudio终极指南:免费开源工具助你轻松提取Unity游戏资源
  • 三场正交视角下中日二次元文化异化与文明底层逻辑研判报告
  • 【世纪龙科技】虚拟实训:新能源汽车动力总成拆装检测好帮手
  • 5个Sunshine游戏流媒体常见错误及其终极解决方案
  • 深入浅出 RAG:万物皆可向量化 (Embedding) 与 Spring AI + pgvector 实战
  • Zynq SPI信号连接终极指南:从理论到实践的14线解析
  • 教育科技重塑:个性化学习系统的质量——软件测试从业者的专业视角
  • 软件分享-第一期:SBTI人格测试软件
  • 解放双手的3大智能方案:MAA自动化助手让明日方舟日常任务一键完成
  • 如何高效部署ViGEmBus虚拟手柄驱动:Windows游戏控制终极解决方案
  • R 4.5机器学习服务化实战(Shiny+plumber+Docker三重加固):从本地训练到K8s集群一键部署
  • A-47 矿山井下通信应用
  • 艾尔登法环帧率解锁与优化工具:全面提升游戏体验的完整指南